diff options
-rw-r--r-- | bfd/ChangeLog | 4 | ||||
-rw-r--r-- | bfd/elf32-i386.c | 7 | ||||
-rw-r--r-- | include/ChangeLog | 4 | ||||
-rw-r--r-- | include/bfdlink.h | 4 | ||||
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/NEWS | 3 | ||||
-rw-r--r-- | ld/emultempl/elf32.em | 2 | ||||
-rw-r--r-- | ld/ld.texinfo | 6 |
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. @@ -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 |