Properly convert address load of __start_XXX/__stop_XXX
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 26 Oct 2015 13:10:23 +0000 (06:10 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 26 Oct 2015 15:11:55 +0000 (08:11 -0700)
commita6af384b19c63bab4a1803c09592c5b5bd8674c2
treebe13c54b14d178b3c327ea1e372b2337980e7d95
parent7cc53fba0a4e5c316a6e86fdae28f8cc9d0f9a68
Properly convert address load of __start_XXX/__stop_XXX

Since __start_XXX and __stop_XXX symbols aren't defined when address
load is being converted, we need to check if there is an XXX output
section to get their section and value.  This patch adds a new function,
bfd_link_get_defined_symbol, to search for the XXX output section to
check if __start_XXX and __stop_XXX symbols are defined.

bfd/

PR ld/19171
* elf32-i386.c (elf_i386_convert_load): Call
bfd_link_get_defined_symbol to check if a symbol is defined.
* elf64-x86-64.c (elf_x86_64_convert_load): Call
bfd_link_get_defined_symbol to get defined symbol section and
value.
* linker.c (bfd_link_get_defined_symbol): New function.
* bfd-in2.h: Regenerated.

ld/testsuite/

PR ld/19171
* ld-i386/lea1.s: Add tests for address load of __start_XXX
and __stop_XXX.
* ld-i386/mov1.s: Likewise.
* ld-x86-64/lea1.s: Likewise.
* ld-x86-64/mov1.s: Likewise.
* ld-i386/lea1a.d: Updated.
* ld-i386/lea1b.d: Likewise.
* ld-i386/lea1c.d: Likewise.
* ld-i386/mov1a.d: Likewise.
* ld-i386/mov1b.d: Likewise.
* ld-x86-64/lea1a.d: Likewise.
* ld-x86-64/lea1b.d: Likewise.
* ld-x86-64/lea1c.d: Likewise.
* ld-x86-64/lea1d.d: Likewise.
* ld-x86-64/lea1e.d: Likewise.
* ld-x86-64/lea1f.d: Likewise.
* ld-x86-64/mov1a.d: Likewise.
* ld-x86-64/mov1b.d: Likewise.
* ld-x86-64/mov1c.d: Likewise.
* ld-x86-64/mov1d.d: Likewise.
25 files changed:
bfd/ChangeLog
bfd/bfd-in2.h
bfd/elf32-i386.c
bfd/elf64-x86-64.c
bfd/linker.c
ld/testsuite/ChangeLog
ld/testsuite/ld-i386/lea1.s
ld/testsuite/ld-i386/lea1a.d
ld/testsuite/ld-i386/lea1b.d
ld/testsuite/ld-i386/lea1c.d
ld/testsuite/ld-i386/mov1.s
ld/testsuite/ld-i386/mov1a.d
ld/testsuite/ld-i386/mov1b.d
ld/testsuite/ld-x86-64/lea1.s
ld/testsuite/ld-x86-64/lea1a.d
ld/testsuite/ld-x86-64/lea1b.d
ld/testsuite/ld-x86-64/lea1c.d
ld/testsuite/ld-x86-64/lea1d.d
ld/testsuite/ld-x86-64/lea1e.d
ld/testsuite/ld-x86-64/lea1f.d
ld/testsuite/ld-x86-64/mov1.s
ld/testsuite/ld-x86-64/mov1a.d
ld/testsuite/ld-x86-64/mov1b.d
ld/testsuite/ld-x86-64/mov1c.d
ld/testsuite/ld-x86-64/mov1d.d
This page took 0.0452 seconds and 4 git commands to generate.