+2020-07-23 Maciej W. Rozycki <macro@wdc.com>
+
+ PR ld/26288
+ * ldelf.c (ldelf_after_open): Do not reject ET_EXEC input
+ supplied with `--just-symbols'.
+ * testsuite/ld-misc/just-symbols.exp: New test script.
+ * testsuite/ld-misc/just-symbols-1.dd: New test dump.
+ * testsuite/ld-misc/just-symbols.ld: New test linker script.
+ * testsuite/ld-misc/just-symbols-0.s: New test source.
+ * testsuite/ld-misc/just-symbols-1.s: New test source.
+
2020-07-23 Maciej W. Rozycki <macro@wdc.com>
PR ld/26288
/* Do not allow executable files to be used as inputs to the link. */
for (abfd = link_info.input_bfds; abfd; abfd = abfd->link.next)
{
- if (elf_tdata (abfd) != NULL
+ if (!bfd_input_just_syms (abfd)
+ && elf_tdata (abfd) != NULL
&& elf_tdata (abfd)->elf_header != NULL
/* FIXME: Maybe check for other non-supportable types as well ? */
&& elf_tdata (abfd)->elf_header->e_type == ET_EXEC)
--- /dev/null
+# Expect script for ld --just-symbols tests.
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of the GNU Binutils.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+# MA 02110-1301, USA.
+#
+
+# SH/PE targets complain about zero VMA.
+# x86_64/PE targets hardcode VMA to 0x100000000.
+if { [istarget sh-*-pe] \
+ || [istarget x86_64-*-cygwin] \
+ || [istarget x86_64-*-mingw*] \
+ || [istarget x86_64-*-pe] \
+ || [istarget x86_64-*-pep] } {
+ return
+}
+
+run_ld_link_tests {
+ {"Object for --just-symbols test"
+ "-r -T just-symbols.ld" ""
+ ""
+ {just-symbols-0.s}
+ {}
+ "just-symbols-0.o"}
+ {"Executable for --just-symbols test"
+ "-e 0 -T just-symbols.ld" ""
+ ""
+ {just-symbols-0.s}
+ {}
+ "just-symbols-0"}
+ {"Object with --just-symbols test"
+ "-e 0 -T just-symbols.ld --just-symbols=tmpdir/just-symbols-0.o" ""
+ ""
+ {just-symbols-1.s}
+ {{objdump {-s -j .data} just-symbols-1.dd}}
+ "just-symbols-1obj"}
+ {"Executable with --just-symbols test"
+ "-e 0 -T just-symbols.ld --just-symbols=tmpdir/just-symbols-0" ""
+ ""
+ {just-symbols-1.s}
+ {{objdump {-s -j .data} just-symbols-1.dd}}
+ "just-symbols-1exe"}
+}