summaryrefslogtreecommitdiff
path: root/ld/ld.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2017-08-06 08:18:53 -0700
committerH.J. Lu <hjl.tools@gmail.com>2017-08-06 08:19:04 -0700
commita4819f54c0006554179631189131080be859eefb (patch)
treef6058c1da96aa3065bba0be6352946163aa5186d /ld/ld.h
parente2a084f2c152f6358ba926df22a313d3ef8d8509 (diff)
Treat common symbol as undefined for --no-define-common
When --no-define-common is used to build shared library, treat common symbol as undefined so that common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution. --no-define-common is only allowed when building a shared library. bfd/ PR ld/21903: * elflink.c (elf_link_add_object_symbols): Treat common symbol as undefined for --no-define-common. include/ PR ld/21903: * bfdlink.h (bfd_link_info): Add inhibit_common_definition. ld/ PR ld/21903: * ld.h (command_line): Remove inhibit_common_definition. * ldgram.y: Replace command_line.inhibit_common_definition with link_info.inhibit_common_definition. * ldlang.c (lang_common): Likewise. * lexsup.c (parse_args): Likewise. * ldmain.c (main): Only allow --no-define-common with -shared. * testsuite/ld-elf/pr21903.s: New file. * testsuite/ld-elf/pr21903a.d: Likewise. * testsuite/ld-elf/pr21903b.d: Likewise. * testsuite/ld-elf/pr21903c.d: Likewise. * testsuite/ld-elf/pr21903d.d: Likewise. * testsuite/ld-elf/pr21903e.d: Likewise.
Diffstat (limited to 'ld/ld.h')
-rw-r--r--ld/ld.h3
1 files changed, 0 insertions, 3 deletions
diff --git a/ld/ld.h b/ld/ld.h
index 162e156f08..c6fa1247f0 100644
--- a/ld/ld.h
+++ b/ld/ld.h
@@ -132,9 +132,6 @@ typedef struct
/* 1 => assign space to common symbols even if `relocatable_output'. */
bfd_boolean force_common_definition;
- /* 1 => do not assign addresses to common symbols. */
- bfd_boolean inhibit_common_definition;
-
/* If TRUE, build MIPS embedded PIC relocation tables in the output
file. */
bfd_boolean embedded_relocs;