diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-06-13 13:04:56 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-06-13 13:04:56 -0700 |
commit | b27685f2016c510d03ac9a64f7b04ce8efcf95c4 (patch) | |
tree | 7e43b79b7f20a99f4581372ebb87e42bc430f184 /ld/ldlang.c | |
parent | 01ec7a272201de84be1ca2c557e58d97891f288c (diff) | |
download | gdb-b27685f2016c510d03ac9a64f7b04ce8efcf95c4.zip gdb-b27685f2016c510d03ac9a64f7b04ce8efcf95c4.tar.gz gdb-b27685f2016c510d03ac9a64f7b04ce8efcf95c4.tar.bz2 |
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.
Diffstat (limited to 'ld/ldlang.c')
-rw-r--r-- | ld/ldlang.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/ld/ldlang.c b/ld/ldlang.c index f8e4f52..eb4ba9e 100644 --- a/ld/ldlang.c +++ b/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, |