aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2001-10-03 15:11:48 +0000
committerAlan Modra <amodra@gmail.com>2001-10-03 15:11:48 +0000
commit8bd621d8835d2e6a99bd50ae8d18328ab06951ba (patch)
treea0054f75aa1f3e7c025bba18a46dc592f6129521
parent181ddcac374ea90e61502925bbea23934eaa3275 (diff)
downloadgdb-8bd621d8835d2e6a99bd50ae8d18328ab06951ba.zip
gdb-8bd621d8835d2e6a99bd50ae8d18328ab06951ba.tar.gz
gdb-8bd621d8835d2e6a99bd50ae8d18328ab06951ba.tar.bz2
Add support for -z nocopyreloc.
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/elf32-i386.c7
-rw-r--r--include/ChangeLog4
-rw-r--r--include/bfdlink.h4
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/NEWS3
-rw-r--r--ld/emultempl/elf32.em2
-rw-r--r--ld/ld.texinfo6
8 files changed, 34 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c1ce396..d898b1d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2001-10-03 Vassili Karpov <malc@pulsesoft.com>
+
+ * elf32-i386.c (elf_i386_adjust_dynamic_symbol): Handle nocopyreloc.
+
2001-10-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* elf64-mips.c (elf_backend_may_use_rela_p): New define.
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 719a209..e249304 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -1127,6 +1127,13 @@ elf_i386_adjust_dynamic_symbol (info, h)
if ((h->elf_link_hash_flags & ELF_LINK_NON_GOT_REF) == 0)
return true;
+ /* If -z nocopyreloc was given, we won't generate them either. */
+ if (info->nocopyreloc)
+ {
+ h->elf_link_hash_flags &= ~ELF_LINK_NON_GOT_REF;
+ return true;
+ }
+
eh = (struct elf_i386_link_hash_entry *) h;
for (p = eh->dyn_relocs; p != NULL; p = p->next)
{
diff --git a/include/ChangeLog b/include/ChangeLog
index 99bd932..030ebfe 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2001-10-03 Vassili Karpov <malc@pulsesoft.com>
+
+ * bfdlink.h (struct bfd_link_info): Add nocopyreloc field.
+
2001-09-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* libiberty.h (reconcat): New function.
diff --git a/include/bfdlink.h b/include/bfdlink.h
index 9ada606..0865594 100644
--- a/include/bfdlink.h
+++ b/include/bfdlink.h
@@ -294,6 +294,10 @@ struct bfd_link_info
and sorted so that relocs against the same symbol come together. */
boolean combreloc;
+ /* True if executable should not contain copy relocs.
+ Setting this true may result in a non-sharable text segment. */
+ boolean nocopyreloc;
+
/* How many spare .dynamic DT_NULL entries should be added? */
unsigned int spare_dynamic_tags;
};
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 29b2647..819f5fa 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2001-10-03 Vassili Karpov <malc@pulsesoft.com>
+
+ * emultempl/elf32.em (parse_args): Handle -z nocopyreloc.
+ * NEWS: Mention -z nocopyreloc.
+ * ld.texinfo (Options): Describe nocopyreloc.
+
2001-10-03 Alan Modra <amodra@bigpond.net.au>
* configure: Regenerate.
diff --git a/ld/NEWS b/ld/NEWS
index 27dc891..70997ef 100644
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -1,4 +1,7 @@
-*- text -*-
+* Support for -z nocopyreloc in the x86 ELF linker, which disables
+ production of copy relocs. Warning: using this option may result in
+ non-sharable applications.
* Support for -z combreloc in the ELF linker, which puts dynamic
relocations against the same symbol together, so that dynamic linker
diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em
index f2011ce..c9cf50d 100644
--- a/ld/emultempl/elf32.em
+++ b/ld/emultempl/elf32.em
@@ -1517,6 +1517,8 @@ cat >>e${EMULATION_NAME}.c <<EOF
link_info.combreloc = true;
else if (strcmp (optarg, "nocombreloc") == 0)
link_info.combreloc = false;
+ else if (strcmp (optarg, "nocopyreloc") == 0)
+ link_info.nocopyreloc = true;
/* What about the other Solaris -z options? FIXME. */
break;
EOF
diff --git a/ld/ld.texinfo b/ld/ld.texinfo
index 0b67ae1..9b10cc6 100644
--- a/ld/ld.texinfo
+++ b/ld/ld.texinfo
@@ -840,8 +840,9 @@ for Solaris compatibility.
@item -z @var{keyword}
The recognized keywords are @code{initfirst}, @code{interpose},
@code{loadfltr}, @code{nodefaultlib}, @code{nodelete}, @code{nodlopen},
-@code{nodump}, @code{now}, @code{origin}, @code{combreloc} and
-@code{nocombreloc}. The other keywords are
+@code{nodump}, @code{now}, @code{origin}, @code{combreloc}, @code{nocombreloc}
+and @code{nocopyreloc}.
+The other keywords are
ignored for Solaris compatibility. @code{initfirst} marks the object
to be initialized first at runtime before any other objects.
@code{interpose} marks the object that its symbol table interposes
@@ -858,6 +859,7 @@ of this object will ignore any default library search paths.
@code{combreloc} combines multiple reloc sections and sorts them
to make dynamic symbol lookup caching possible.
@code{nocombreloc} disables multiple reloc sections combining.
+@code{nocopyreloc} disables production of copy relocs.
@kindex -(
@cindex groups of archives