aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
authorVivek Das Mohapatra <vivek@collabora.com>2020-12-14 17:25:52 +0000
committerAlan Modra <amodra@gmail.com>2020-12-15 18:45:03 +1030
commitc3805e4cef747655e15f620afe6279a96d8c3fae (patch)
treec572a957057fc28fff4c6c0fe77995a5b94ed1db /ld
parent6a0a0dd0cc43765d8e5e277aeaaf169a863f2315 (diff)
downloadbinutils-c3805e4cef747655e15f620afe6279a96d8c3fae.zip
binutils-c3805e4cef747655e15f620afe6279a96d8c3fae.tar.gz
binutils-c3805e4cef747655e15f620afe6279a96d8c3fae.tar.bz2
Document -z unique/-z nounique in the ld man page and help output
* ld.texi (Options): Document -z unique and -z nounique. * lexsup.c (elf_shlib_list_options): Likewise.
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog2
-rw-r--r--ld/ld.texi10
-rw-r--r--ld/lexsup.c4
3 files changed, 16 insertions, 0 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 3db7fc6..9a0ff59 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -2,6 +2,8 @@
* emultempl/elf.em (gld${EMULATION_NAME}_handle_option):
Parse -z unique / -z nounique options.
+ * ld.texi (Options): Document -z unique and -z nounique.
+ * lexsup.c (elf_shlib_list_options): Likewise.
2020-12-14 Howard Chu <hyc@symas.com>
diff --git a/ld/ld.texi b/ld/ld.texi
index 51c51a3..88b1687 100644
--- a/ld/ld.texi
+++ b/ld/ld.texi
@@ -1306,6 +1306,16 @@ Specify that the dynamic loader should modify its symbol search order
so that symbols in this shared library interpose all other shared
libraries not so marked.
+@item unique
+@itemx nounique
+When generating a shared library or other dynamically loadable ELF
+object mark it as one that should (by default) only ever be loaded once,
+and only in the main namespace (when using @code{dlmopen}). This is
+primarily used to mark fundamental libraries such as libc, libpthread et
+al which do not usually function correctly unless they are the sole instances
+of themselves. This behaviour can be overridden by the @code{dlmopen} caller
+and does not apply to certain loading mechanisms (such as audit libraries).
+
@item lazy
When generating an executable or shared library, mark it to tell the
dynamic linker to defer function call resolution to the point when
diff --git a/ld/lexsup.c b/ld/lexsup.c
index 78b1834..1d01833 100644
--- a/ld/lexsup.c
+++ b/ld/lexsup.c
@@ -2022,6 +2022,10 @@ elf_shlib_list_options (FILE *file)
fprintf (file, _("\
-z interpose Mark object to interpose all DSOs but executable\n"));
fprintf (file, _("\
+ -z unique Mark DSO to be loaded at most once by default, and only in the main namespace\n"));
+ fprintf (file, _("\
+ -z nounique Don't mark DSO as a loadable at most once\n"));
+ fprintf (file, _("\
-z lazy Mark object lazy runtime binding (default)\n"));
fprintf (file, _("\
-z loadfltr Mark object requiring immediate process\n"));