[llvm] r293224 - [obj2yaml] Produce correct output for invalid relocations.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 27 11:29:56 PST 2017
Oh, I don't mean or expect the files to be bit by bit identical. What I
was referring to is that a relocation without a symbol turns into a
relocation with a symbol with an empty name.
Cheers,
Rafael
Davide Italiano <davide at freebsd.org> writes:
> On Fri, Jan 27, 2017 at 10:27 AM, Rafael Avila de Espindola
> <rafael.espindola at gmail.com> wrote:
>> Passing the result object back via yam2obj will produce a different
>> result, no?
>>
>
> A bit. I may be wrong, but I think you can obtain an isomorphism even
> without this change (as sections are laid out differently).
>
> Both files contain the 'correct' reloc, which was the purpose of the test:
>
> $ objdump -r array.o
> RELOCATION RECORDS FOR [.text]:
> OFFSET TYPE VALUE
> 0000000000000000 R_X86_64_NONE *ABS*
>
> $ objdump -r reverse.o
> RELOCATION RECORDS FOR [.text]:
> OFFSET TYPE VALUE
> 0000000000000000 R_X86_64_NONE *ABS*
>
> We now create `.shstrtab` in the inverted relocatable (which doesn't
> appear in the original object).
>
> $ readelf -S array.o
> Section Headers:
> [Nr] Name Type Address Offset
> Size EntSize Flags Link Info Align
> [ 0] NULL 0000000000000000 00000000
> 0000000000000000 0000000000000000 0 0 0
> [ 1] .text PROGBITS 0000000000000000 000001c0
> 0000000000000005 0000000000000000 AX 0 0 4
> [ 2] .rela.text RELA 0000000000000000 000001c8
> 0000000000000018 0000000000000018 3 1 8
> [ 3] .symtab SYMTAB 0000000000000000 000001e0
> 0000000000000060 0000000000000018 4 2 8
> [ 4] .strtab STRTAB 0000000000000000 00000240
> 0000000000000044 0000000000000000 0 0 1
> [ 5] .shstrtab STRTAB 0000000000000000 00000284
> 0000000000000026 0000000000000000 0 0 1
>
> $ readelf -S reverse.o
> Section Headers:
> [Nr] Name Type Address Offset
> Size EntSize Flags Link Info Align
> [ 0] NULL 0000000000000000 00000000
> 0000000000000000 0000000000000000 0 0 0
> [ 1] .strtab STRTAB 0000000000000000 00000040
> 0000000000000070 0000000000000000 0 0 1
> [ 2] .text PROGBITS 0000000000000000 000000b0
> 0000000000000005 0000000000000000 AX 0 0 4
> [ 3] .rela.text RELA 0000000000000000 000000b8
> 0000000000000018 0000000000000018 4 2 8
> [ 4] .symtab SYMTAB 0000000000000000 000000d0
> 0000000000000060 0000000000000018 1 2 8
>
> Even without the `.shstrtabe` section emitted, the order of the
> section header is different in the two executables, so I don't think
> you were obtaining the original object back anyway.
>
> --
> Davide
More information about the llvm-commits
mailing list