Displaying 4 results from an estimated 4 matches for "fixupoffset".
2016 Dec 07
2
Offset too large on scattered relocations
...O specific, and Ive not been able to find any
documentation on them outside of source code.
I have a couple of immediate questions, but any info would be appreciated.
* Should a check be added to ARMMachObjectWriter::RecordARMScatteredRelocation
and RecordARMScatteredHalfRelocation to ensure that FixupOffset is within
bounds?
I see a check in the x86 back end that does precisely this and was curious
why a similar check was not in place for ARM:
// Relocations are written out in reverse order, so the PAIR comes first.
if (Type == MachO::GENERIC_RELOC_SECTDIFF ||
Type == MachO::GENERIC_RELOC_...
2016 Dec 13
1
Offset too large on scattered relocations
Thanks for the response Nick,
Do you think there is value in adding the check for FixupOffset > 0xffffff
into the ARM backend? The lack of that seems like it could silently record
incorrect offsets from the assignment later in
RecordARMScatteredRelocation():
MRE.r_word0 = ((FixupOffset << 0) |
(Type << 24) |
(MovtBit << 28...
2016 Dec 07
0
Offset too large on scattered relocations
...ot been able to find any documentation on them outside of source code.
>
> I have a couple of immediate questions, but any info would be appreciated.
>
> * Should a check be added to ARMMachObjectWriter::RecordARMScatteredRelocation and RecordARMScatteredHalfRelocation to ensure that FixupOffset is within bounds?
>
> I see a check in the x86 back end that does precisely this and was curious why a similar check was not in place for ARM:
>
> // Relocations are written out in reverse order, so the PAIR comes first.
> if (Type == MachO::GENERIC_RELOC_SECTDIFF ||
>...
2013 Sep 25
1
[LLVMdev] arm64 / iOS support
...SDB);
+
+ // Offset of the relocation in the section
+ int64_t b = Layout.getFragmentOffset(Fragment) + Fixup.getOffset();
+ Offset += b - a;
+ }
+
+ if (IsPCRel && RelocType == MachO::ARM_RELOC_VANILLA)
+ Offset += 1 << Log2Size;
+
+ // See <reloc.h>.
+ uint32_t FixupOffset = Layout.getFragmentOffset(Fragment) + Fixup.getOffset();
+ unsigned Index = 0;
+ unsigned IsExtern = 0;
+ unsigned Type = 0;
+
+ if (Target.isAbsolute()) { // constant
+ // FIXME!
+ report_fatal_error("FIXME: relocations to absolute targets "
+ "not y...