aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2014-08-27 07:39:48 -0700
committerH.J. Lu <hjl.tools@gmail.com>2014-08-27 07:39:48 -0700
commit29a9f53e857c5d55df852d0a5d5c41a9247c16a2 (patch)
treeaf3cf46d6e4fbfca19597e7966eb0e027d6896d8 /bfd
parent2536ee9d03cb7c4af97bf4b29429bef3c30652c2 (diff)
downloadfsf-binutils-gdb-29a9f53e857c5d55df852d0a5d5c41a9247c16a2.zip
fsf-binutils-gdb-29a9f53e857c5d55df852d0a5d5c41a9247c16a2.tar.gz
fsf-binutils-gdb-29a9f53e857c5d55df852d0a5d5c41a9247c16a2.tar.bz2
Don't attach dynamic sections to input from ld --just-symbols
bfd/ PR ld/17313 * elflink.c (elf_link_add_object_symbols): Don't attach dynamic sections to input from ld --just-symbols. 2014-08-27 H.J. Lu <hongjiu.lu@intel.com> PR ld/17313 * ld-i386/i386.exp (i386tests): Add tests for PR ld/17313. * ld-x86-64/x86-64.exp (x86_64tests): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elflink.c15
2 files changed, 16 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 9635195..3f81ba4 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2014-08-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR ld/17313
+ * elflink.c (elf_link_add_object_symbols): Don't attach dynamic
+ sections to input from ld --just-symbols.
+
2014-08-26 DJ Delorie <dj@redhat.com>
* elf32-rl78.c (rl78_elf_relax_section): Disambiguate test for
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 658e584..c1e7948 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -3339,6 +3339,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
bfd_size_type old_dynstr_size = 0;
size_t tabsize = 0;
asection *s;
+ bfd_boolean just_syms;
htab = elf_hash_table (info);
bed = get_elf_backend_data (abfd);
@@ -3442,15 +3443,20 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
}
}
+ just_syms = ((s = abfd->sections) != NULL
+ && s->sec_info_type == SEC_INFO_TYPE_JUST_SYMS);
+
add_needed = TRUE;
if (! dynamic)
{
/* If we are creating a shared library, create all the dynamic
sections immediately. We need to attach them to something,
so we attach them to this BFD, provided it is the right
- format. FIXME: If there are no input BFD's of the same
- format as the output, we can't make a shared library. */
- if (info->shared
+ format and is not from ld --just-symbols. FIXME: If there
+ are no input BFD's of the same format as the output, we can't
+ make a shared library. */
+ if (!just_syms
+ && info->shared
&& is_elf_hash_table (htab)
&& info->output_bfd->xvec == abfd->xvec
&& !htab->dynamic_sections_created)
@@ -3470,8 +3476,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
/* ld --just-symbols and dynamic objects don't mix very well.
ld shouldn't allow it. */
- if ((s = abfd->sections) != NULL
- && s->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
+ if (just_syms)
abort ();
/* If this dynamic lib was specified on the command line with