Always create dynamic sections for -E/--dynamic-list
In embedded environments, including boot loaders, the non-PIC executable needs to export its symbols to modules loaded in the future. We should always create dynamic sections for -E/--dynamic-list. bfd/ PR ld/19617 * elflink.c (elf_link_add_object_symbols): Always create dynamic sections for -E/--dynamic-list. ld/ PR ld/19617 * testsuite/ld-elf/pr19617.s: New file. * testsuite/ld-elf/pr19617a.d: Likewise. * testsuite/ld-elf/pr19617b.d: Likewise. * testsuite/ld-elf/pr19617c.d: Likewise.
This commit is contained in:
parent
06ea285dcb
commit
bf89386a86
@ -1,3 +1,9 @@
|
||||
2016-02-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/19617
|
||||
* elflink.c (elf_link_add_object_symbols): Always create dynamic
|
||||
sections for -E/--dynamic-list.
|
||||
|
||||
2016-02-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf64-x86-64.c (elf_backend_omit_section_dynsym): New. Defined
|
||||
|
@ -3598,11 +3598,14 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
|
||||
/* If we are creating a shared library, create all the dynamic
|
||||
sections immediately. We need to attach them to something,
|
||||
so we attach them to this BFD, provided it is the right
|
||||
format and is not from ld --just-symbols. FIXME: If there
|
||||
format and is not from ld --just-symbols. Always create the
|
||||
dynamic sections for -E/--dynamic-list. FIXME: If there
|
||||
are no input BFD's of the same format as the output, we can't
|
||||
make a shared library. */
|
||||
if (!just_syms
|
||||
&& bfd_link_pic (info)
|
||||
&& (bfd_link_pic (info)
|
||||
|| info->export_dynamic
|
||||
|| info->dynamic)
|
||||
&& is_elf_hash_table (htab)
|
||||
&& info->output_bfd->xvec == abfd->xvec
|
||||
&& !htab->dynamic_sections_created)
|
||||
|
@ -1,3 +1,11 @@
|
||||
2016-02-18 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR ld/19617
|
||||
* testsuite/ld-elf/pr19617.s: New file.
|
||||
* testsuite/ld-elf/pr19617a.d: Likewise.
|
||||
* testsuite/ld-elf/pr19617b.d: Likewise.
|
||||
* testsuite/ld-elf/pr19617c.d: Likewise.
|
||||
|
||||
2016-02-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* Makefile.am (CXX_FOR_TARGET): Check for the presence of an
|
||||
|
19
ld/testsuite/ld-elf/pr19617.s
Normal file
19
ld/testsuite/ld-elf/pr19617.s
Normal file
@ -0,0 +1,19 @@
|
||||
.data
|
||||
.global bar
|
||||
bar:
|
||||
.type bar,"object"
|
||||
.long 0
|
||||
.text
|
||||
.type start,"function"
|
||||
.global start
|
||||
start:
|
||||
.type _start,"function"
|
||||
.global _start
|
||||
_start:
|
||||
.type __start,"function"
|
||||
.global __start
|
||||
__start:
|
||||
.type main,"function"
|
||||
.global main
|
||||
main:
|
||||
.long 0
|
12
ld/testsuite/ld-elf/pr19617a.d
Normal file
12
ld/testsuite/ld-elf/pr19617a.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: pr19617.s
|
||||
#ld: -E
|
||||
#readelf : --dyn-syms --wide
|
||||
|
||||
Symbol table '\.dynsym' contains [0-9]+ entries:
|
||||
+Num: +Value +Size Type +Bind +Vis +Ndx Name
|
||||
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND +
|
||||
#...
|
||||
+[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +[0-9]+ +start
|
||||
#...
|
||||
+[0-9]+: +[a-f0-9]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +bar
|
||||
#pass
|
10
ld/testsuite/ld-elf/pr19617b.d
Normal file
10
ld/testsuite/ld-elf/pr19617b.d
Normal file
@ -0,0 +1,10 @@
|
||||
#source: pr19617.s
|
||||
#ld: --dynamic-list-data
|
||||
#readelf : --dyn-syms --wide
|
||||
|
||||
Symbol table '\.dynsym' contains [0-9]+ entries:
|
||||
+Num: +Value +Size Type +Bind +Vis +Ndx Name
|
||||
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND +
|
||||
#...
|
||||
+[0-9]+: +[a-f0-9]+ +0 +OBJECT +GLOBAL +DEFAULT +[0-9]+ +bar
|
||||
#pass
|
8
ld/testsuite/ld-elf/pr19617c.d
Normal file
8
ld/testsuite/ld-elf/pr19617c.d
Normal file
@ -0,0 +1,8 @@
|
||||
#source: pr19617.s
|
||||
#ld: --dynamic-list-data
|
||||
#readelf : --dyn-syms --wide
|
||||
|
||||
#failif
|
||||
#...
|
||||
+[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +[0-9]+ +start
|
||||
#...
|
Loading…
Reference in New Issue
Block a user