aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/elflink.h16
2 files changed, 8 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1f81b53..b454dc8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2000-09-29 NIIBE Yutaka <gniibe@chroot.org>
+
+ * elflink.h (elf_link_add_object_symbols): Don't bfd_release runpath.
+
2000-09-29 Momchil Velikov <velco@fadata.bg>
* elf.c (elf_fake_sections): Do not mark the section SHT_NOBITS if
diff --git a/bfd/elflink.h b/bfd/elflink.h
index a808673..80c5b1c 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -1191,19 +1191,11 @@ elf_link_add_object_symbols (abfd, info)
char *fnm, *anm;
/* When we see DT_RPATH before DT_RUNPATH, we have
- to free runpath. */
+ to clear runpath. Do _NOT_ bfd_release, as that
+ frees all more recently bfd_alloc'd blocks as
+ well. */
if (rpath && elf_hash_table (info)->runpath)
- {
- struct bfd_link_needed_list *nn;
- for (n = elf_hash_table (info)->runpath;
- n != NULL; n = nn)
- {
- nn = n->next;
- bfd_release (abfd, n);
- }
- bfd_release (abfd, elf_hash_table (info)->runpath);
- elf_hash_table (info)->runpath = NULL;
- }
+ elf_hash_table (info)->runpath = NULL;
n = ((struct bfd_link_needed_list *)
bfd_alloc (abfd, sizeof (struct bfd_link_needed_list)));