On Thu, 4 Jan 2001, John Van Horne wrote:
> This is the same script that worked fine when we were using
> egcs-mips-linux-1.0.3a and binutils-mips-linux-2.8.1. Have
> there been any changes in the linker that would affect how
> we write our linker script?
It's possible the linker emits unnecessary sections. Try the following
patch to see if it helps.
--
+ Maciej W. Rozycki, Technical University of Gdansk, Poland +
+--------------------------------------------------------------+
+ e-mail: macro@ds2.pg.gda.pl, PGP key available +
2000-11-30 Ralf Baechle <ralf@gnu.org>
* elf32-mips.c (elf32_mips_merge_private_bfd_data): Always permit
BFDs containing no sections or empty .text, .data or .bss sections
to be merged, regardless of their flags.
diff -urN binutils-cygnus/bfd/elf32-mips.c binutils/bfd/elf32-mips.c
--- binutils-cygnus/bfd/elf32-mips.c Sat Oct 14 14:21:14 2000
+++ binutils/bfd/elf32-mips.c Thu Nov 30 16:13:09 2000
@@ -2475,6 +2475,8 @@
flagword old_flags;
flagword new_flags;
boolean ok;
+ boolean null_input_bfd = true;
+ asection *sec;
/* Check if we have the same endianess */
if (_bfd_generic_verify_endian_match (ibfd, obfd) == false)
@@ -2512,6 +2514,27 @@
old_flags &= ~EF_MIPS_NOREORDER;
if (new_flags == old_flags)
+ return true;
+
+ /* Check to see if the input BFD actually contains any sections.
+ If not, its flags may not have been initialised either, but it cannot
+ actually cause any incompatibility. */
+ for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+ {
+ /* Ignore synthetic sections and empty .text, .data and .bss sections
+ which are automatically generated by gas. */
+ if (strcmp (sec->name, ".reginfo")
+ && strcmp (sec->name, ".mdebug")
+ && ((!strcmp (sec->name, ".text")
+ || !strcmp (sec->name, ".data")
+ || !strcmp (sec->name, ".bss"))
+ && sec->_raw_size != 0))
+ {
+ null_input_bfd = false;
+ break;
+ }
+ }
+ if (null_input_bfd)
return true;
ok = true;
|