Move ELF section headers to end of object file
authorAlan Modra <amodra@gmail.com>
Wed, 10 Sep 2014 04:56:25 +0000 (14:26 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 10 Sep 2014 14:45:51 +0000 (00:15 +0930)
commita485e98ea0cbb61ea9da1e7858da545e0bcf1a46
treee15a62480177db22789bdaf8ac4178a571e47619
parent8efa9855823a78b8f465f39ddd8736266a6f31c4
Move ELF section headers to end of object file

Currently, section ordering differs a little for non-loaded reloc
sections output by ld -emit-relocs or ld -r and that after passing
such objects through objcopy.  Not that it really matters, but it
would be better for a simple objcopy to produce an unchanged output
object file.  Also, section headers are put somewhere in the middle of
the non-loaded sections, again slightly differently for ld and
objcopy.  This patch fixes these discrepancies and puts section
headers last, which is where gold puts them, and is where
bfd_from_remote_memory wrongly assumed they will be found.

bfd/
* elf.c (assign_file_positions_except_relocs): Move section header
placement to..
(_bfd_elf_assign_file_positions_for_relocs): ..here.  Make static.
* elf-bfd.h (_bfd_elf_assign_file_positions_for_relocs): Delete.
* elflink.c (bfd_elf_final_link): Don't call above function.
gas/testsuite/
* gas/arm/got_prel.d: Adjust for changed section header placement.
* gas/i386/ilp32/x86-64-size-1.d: Likewise.
* gas/i386/ilp32/x86-64-size-3.d: Likewise.
* gas/i386/ilp32/x86-64-size-5.d: Likewise.
* gas/i386/ilp32/x86-64-unwind.d: Likewise.
* gas/i386/size-1.d: Likewise.
* gas/i386/size-3.d: Likewise.
* gas/i386/x86-64-size-1.d: Likewise.
* gas/i386/x86-64-size-3.d: Likewise.
* gas/i386/x86-64-size-5.d: Likewise.
* gas/i386/x86-64-unwind.d: Likewise.
* gas/ia64/alias-ilp32.d: Likewise.
* gas/ia64/alias.d: Likewise.
* gas/ia64/group-1.d: Likewise.
* gas/ia64/group-2.d: Likewise.
* gas/ia64/secname-ilp32.d: Likewise.
* gas/ia64/secname.d: Likewise.
* gas/ia64/unwind-ilp32.d: Likewise.
* gas/ia64/unwind.d: Likewise.
* gas/mmix/bspec-1.d: Likewise.
* gas/mmix/bspec-2.d: Likewise.
* gas/mmix/byte-1.d: Likewise.
* gas/mmix/loc-1.d: Likewise.
* gas/mmix/loc-2.d: Likewise.
* gas/mmix/loc-3.d: Likewise.
* gas/mmix/loc-4.d: Likewise.
* gas/mmix/loc-5.d: Likewise.
* gas/tic6x/scomm-directive-4.d: Likewise.
ld/testsuite/
* ld-aarch64/emit-relocs-local-addend.d: Adjust for changed
section header placement.
* ld-aarch64/local-addend-r.d: Likewise.
* ld-mmix/bspec1.d: Likewise.
* ld-mmix/bspec2.d: Likewise.
* ld-mmix/local1.d: Likewise.
* ld-mmix/local3.d: Likewise.
* ld-mmix/local5.d: Likewise.
* ld-mmix/local7.d: Likewise.
* ld-mmix/undef-3.d: Likewise.
* ld-sh/sh64/crange3-cmpct.rd: Likewise.
* ld-sh/sh64/crange3-media.rd: Likewise.
* ld-sh/sh64/crangerel1.rd: Likewise.
* ld-sh/sh64/crangerel2.rd: Likewise.
* ld-tic6x/common.d: Likewise.
* ld-tic6x/shlib-1.rd: Likewise.
* ld-tic6x/shlib-1b.rd: Likewise.
* ld-tic6x/shlib-1r.rd: Likewise.
* ld-tic6x/shlib-1rb.rd: Likewise.
* ld-tic6x/shlib-app-1.rd: Likewise.
* ld-tic6x/shlib-app-1b.rd: Likewise.
* ld-tic6x/shlib-app-1r.rd: Likewise.
* ld-tic6x/shlib-app-1rb.rd: Likewise.
* ld-tic6x/shlib-noindex.rd: Likewise.
* ld-tic6x/static-app-1.rd: Likewise.
* ld-tic6x/static-app-1b.rd: Likewise.
* ld-tic6x/static-app-1r.rd: Likewise.
* ld-tic6x/static-app-1rb.rd: Likewise.
* ld-x86-64/ilp32-4.d: Likewise.
* ld-x86-64/split-by-file-nacl.rd: Likewise.
* ld-x86-64/split-by-file.rd: Likewise.
64 files changed:
bfd/ChangeLog
bfd/elf-bfd.h
bfd/elf.c
bfd/elflink.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/got_prel.d
gas/testsuite/gas/i386/ilp32/x86-64-size-1.d
gas/testsuite/gas/i386/ilp32/x86-64-size-3.d
gas/testsuite/gas/i386/ilp32/x86-64-size-5.d
gas/testsuite/gas/i386/ilp32/x86-64-unwind.d
gas/testsuite/gas/i386/size-1.d
gas/testsuite/gas/i386/size-3.d
gas/testsuite/gas/i386/x86-64-size-1.d
gas/testsuite/gas/i386/x86-64-size-3.d
gas/testsuite/gas/i386/x86-64-size-5.d
gas/testsuite/gas/i386/x86-64-unwind.d
gas/testsuite/gas/ia64/alias-ilp32.d
gas/testsuite/gas/ia64/alias.d
gas/testsuite/gas/ia64/group-1.d
gas/testsuite/gas/ia64/group-2.d
gas/testsuite/gas/ia64/secname-ilp32.d
gas/testsuite/gas/ia64/secname.d
gas/testsuite/gas/ia64/unwind-ilp32.d
gas/testsuite/gas/ia64/unwind.d
gas/testsuite/gas/mmix/bspec-1.d
gas/testsuite/gas/mmix/bspec-2.d
gas/testsuite/gas/mmix/byte-1.d
gas/testsuite/gas/mmix/loc-1.d
gas/testsuite/gas/mmix/loc-2.d
gas/testsuite/gas/mmix/loc-3.d
gas/testsuite/gas/mmix/loc-4.d
gas/testsuite/gas/mmix/loc-5.d
gas/testsuite/gas/tic6x/scomm-directive-4.d
ld/testsuite/ChangeLog
ld/testsuite/ld-aarch64/emit-relocs-local-addend.d
ld/testsuite/ld-aarch64/local-addend-r.d
ld/testsuite/ld-mmix/bspec1.d
ld/testsuite/ld-mmix/bspec2.d
ld/testsuite/ld-mmix/local1.d
ld/testsuite/ld-mmix/local3.d
ld/testsuite/ld-mmix/local5.d
ld/testsuite/ld-mmix/local7.d
ld/testsuite/ld-mmix/undef-3.d
ld/testsuite/ld-sh/sh64/crange3-cmpct.rd
ld/testsuite/ld-sh/sh64/crange3-media.rd
ld/testsuite/ld-sh/sh64/crangerel1.rd
ld/testsuite/ld-sh/sh64/crangerel2.rd
ld/testsuite/ld-tic6x/common.d
ld/testsuite/ld-tic6x/shlib-1.rd
ld/testsuite/ld-tic6x/shlib-1b.rd
ld/testsuite/ld-tic6x/shlib-1r.rd
ld/testsuite/ld-tic6x/shlib-1rb.rd
ld/testsuite/ld-tic6x/shlib-app-1.rd
ld/testsuite/ld-tic6x/shlib-app-1b.rd
ld/testsuite/ld-tic6x/shlib-app-1r.rd
ld/testsuite/ld-tic6x/shlib-app-1rb.rd
ld/testsuite/ld-tic6x/shlib-noindex.rd
ld/testsuite/ld-tic6x/static-app-1.rd
ld/testsuite/ld-tic6x/static-app-1b.rd
ld/testsuite/ld-tic6x/static-app-1r.rd
ld/testsuite/ld-tic6x/static-app-1rb.rd
ld/testsuite/ld-x86-64/ilp32-4.d
ld/testsuite/ld-x86-64/split-by-file-nacl.rd
ld/testsuite/ld-x86-64/split-by-file.rd