mirror of
https://github.com/GaloisInc/macaw.git
synced 2024-11-22 23:32:15 +03:00
macaw-base: Support loading R_ARM_COPY ELF relocations
We already have support for `R_X86_64_COPY` relocations, so adding support for `R_ARM_COPY` on the AArch32 side is straightforward. This is related to #47, although this is not a full fix for the issue.
This commit is contained in:
parent
87129af093
commit
560f292d16
@ -579,7 +579,7 @@ relaTargetX86_64 _ symtab rel addend _isRel =
|
|||||||
Elf.R_X86_64_COPY -> do
|
Elf.R_X86_64_COPY -> do
|
||||||
sym <- resolveRelocationSym symtab (Elf.relSym rel)
|
sym <- resolveRelocationSym symtab (Elf.relSym rel)
|
||||||
when (addend /= 0) $ do
|
when (addend /= 0) $ do
|
||||||
throwError$ RelocationUnsupportedType (show (Elf.relType rel))
|
throwError $ RelocationUnsupportedType (show (Elf.relType rel))
|
||||||
pure $ Relocation { relocationSym = sym
|
pure $ Relocation { relocationSym = sym
|
||||||
, relocationOffset = 0
|
, relocationOffset = 0
|
||||||
, relocationIsRel = False
|
, relocationIsRel = False
|
||||||
@ -690,6 +690,18 @@ relaTargetARM32 end msegIndex symtab rel addend relFlag =
|
|||||||
, relocationEndianness = end
|
, relocationEndianness = end
|
||||||
, relocationJumpSlot = True
|
, relocationJumpSlot = True
|
||||||
}
|
}
|
||||||
|
Elf.R_ARM_COPY -> do
|
||||||
|
sym <- resolveRelocationSym symtab (Elf.relSym rel)
|
||||||
|
when (addend /= 0) $ do
|
||||||
|
throwError $ RelocationUnsupportedType (show (Elf.relType rel))
|
||||||
|
pure $ Relocation { relocationSym = sym
|
||||||
|
, relocationOffset = 0
|
||||||
|
, relocationIsRel = False
|
||||||
|
, relocationSize = 4
|
||||||
|
, relocationIsSigned = False
|
||||||
|
, relocationEndianness = end
|
||||||
|
, relocationJumpSlot = False
|
||||||
|
}
|
||||||
tp -> do
|
tp -> do
|
||||||
throwError $ RelocationUnsupportedType (show tp)
|
throwError $ RelocationUnsupportedType (show tp)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user