mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
ld: Don't define __start_SECNAME/__stop_SECNAME for -r
__start_SECNAME and __stop_SECNAME shouldn't be defined for "ld -r". * ldlang.c (lang_set_startof): Skip if config.build_constructors is FALSE. * testsuite/ld-elf/sizeofc.d: New file. * testsuite/ld-elf/startofc.d: Likewise.
This commit is contained in:
parent
01ec7a2722
commit
b27685f201
@ -1,3 +1,10 @@
|
||||
2017-06-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* ldlang.c (lang_set_startof): Skip if config.build_constructors
|
||||
is FALSE.
|
||||
* testsuite/ld-elf/sizeofc.d: New file.
|
||||
* testsuite/ld-elf/startofc.d: Likewise.
|
||||
|
||||
2017-06-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* testsuite/ld-elf/sizeof.d: Renamed to ...
|
||||
|
14
ld/ldlang.c
14
ld/ldlang.c
@ -5892,9 +5892,15 @@ lang_set_startof (void)
|
||||
{
|
||||
asection *s;
|
||||
char leading_char;
|
||||
bfd_boolean is_elf = (bfd_get_flavour (link_info.output_bfd)
|
||||
== bfd_target_elf_flavour);
|
||||
bfd_boolean is_elocatable = bfd_link_relocatable (&link_info);
|
||||
bfd_boolean is_elf;
|
||||
bfd_boolean is_relocatable;
|
||||
|
||||
if (!config.build_constructors)
|
||||
return;
|
||||
|
||||
is_elf = (bfd_get_flavour (link_info.output_bfd)
|
||||
== bfd_target_elf_flavour);
|
||||
is_relocatable = bfd_link_relocatable (&link_info);
|
||||
|
||||
leading_char = bfd_get_symbol_leading_char (link_info.output_bfd);
|
||||
|
||||
@ -5907,7 +5913,7 @@ lang_set_startof (void)
|
||||
secname = bfd_get_section_name (link_info.output_bfd, s);
|
||||
buf = (char *) xmalloc (10 + strlen (secname));
|
||||
|
||||
if (!is_elocatable)
|
||||
if (!is_relocatable)
|
||||
{
|
||||
sprintf (buf, ".startof.%s", secname);
|
||||
h = bfd_link_hash_lookup (link_info.hash, buf, FALSE, FALSE,
|
||||
|
12
ld/testsuite/ld-elf/sizeofc.d
Normal file
12
ld/testsuite/ld-elf/sizeofc.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: sizeof.s
|
||||
#ld: -r
|
||||
#readelf: -sW
|
||||
|
||||
Symbol table '\.symtab' 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 +NOTYPE +GLOBAL +DEFAULT +UND +__stop_scnfoo
|
||||
#...
|
||||
+[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +UND +.sizeof.scnfoo
|
||||
#pass
|
12
ld/testsuite/ld-elf/startofc.d
Normal file
12
ld/testsuite/ld-elf/startofc.d
Normal file
@ -0,0 +1,12 @@
|
||||
#source: startof.s
|
||||
#ld: -r
|
||||
#readelf: -sW
|
||||
|
||||
Symbol table '\.symtab' 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 +NOTYPE +GLOBAL +DEFAULT +UND +.startof.scnfoo
|
||||
#...
|
||||
+[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +UND +__start_scnfoo
|
||||
#pass
|
Loading…
Reference in New Issue
Block a user