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.
This commit is contained in:
H.J. Lu 2014-08-27 07:39:48 -07:00
parent 2536ee9d03
commit 29a9f53e85
5 changed files with 30 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -1,3 +1,9 @@
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.
2014-08-26 Jiong Wang <jiong.wang@arm.com>
* ld-aarch64/copy-relocs-so.s: New test file.

View File

@ -183,6 +183,10 @@ set i386tests {
{"TLS IE->LE transition" "-melf_i386" ""
"--32" {tlsie1.s}
{{objdump -dwr tlsie1.dd}} "tlsie1"}
{"PR ld/17313 (1)" "-melf_i386" ""
"--32" {zero.s} {} ""}
{"PR ld/17313 (2)" "-melf_i386 -shared --just-symbols=tmpdir/zero.o" ""
"--32" {lea1.s} {} "libpr17313.so"}
}
# So as to avoid rewriting every last test case here in a nacl variant,

View File

@ -136,6 +136,10 @@ set x86_64tests {
{"build 32-bit object with 33 locals" "-melf_x86_64 -e 0" "" "--32" {32bit.s} {{ ld incompatible.l }} "dummy" }
{"build 64-bit object" "-melf_x86_64 -e 0 --defsym foo=1" "" "--64" {64bit.s} {} "dummy" }
{"link mixed objects" "-melf_x86_64 -e 0 tmpdir/32bit.o tmpdir/64bit.o" "" "" {} { { ld incompatible.l } } "mixed"}
{"PR ld/17313 (1)" "-melf_x86_64" ""
"--64" {dummy.s} {} ""}
{"PR ld/17313 (2)" "-melf_x86_64 -shared --just-symbols=tmpdir/dummy.o" ""
"--64" {lea1.s} {} "libpr17313.so"}
}
# So as to avoid rewriting every last test case here in a nacl variant,