Patch to keep special sections generated by mips gcc

Fred Fish fnf@specifix.com
Thu Jun 8 17:49:00 GMT 2006


New mainline versions of binutils ld strip zero length sections
by default.  This patch is needed to ensure that the special
sections generated by mips gcc are kept in the final executable.


2006-06-07  Fred Fish  <fnf@specifix.com>

	* mips/idt.ld, mips/idt32.ld, mips/idt64.ld, mips/nullmon.ld,
	mips/pmon.ld:  Keep special sections generated by mips gcc.

Index: mips/idt.ld
===================================================================
RCS file: /cvsroots/latest/src/newlib/libgloss/mips/idt.ld,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 idt.ld
--- mips/idt.ld	8 Oct 2005 19:45:24 -0000	1.1.1.1
+++ mips/idt.ld	8 Jun 2006 01:45:16 -0000
@@ -170,4 +170,15 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+
+  /* Special sections generated by gcc */
+  /* Newer GNU linkers strip by default */
+  .mdebug.abi32            0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32           0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64            0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64           0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32           0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64           0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32     0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64     0 : { KEEP(*(.gcc_compiled_long64)) }
 }
Index: mips/idt32.ld
===================================================================
RCS file: /cvsroots/latest/src/newlib/libgloss/mips/idt32.ld,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 idt32.ld
--- mips/idt32.ld	8 Oct 2005 19:45:24 -0000	1.1.1.1
+++ mips/idt32.ld	8 Jun 2006 01:45:06 -0000
@@ -172,4 +172,15 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+
+  /* Special sections generated by gcc */
+  /* Newer GNU linkers strip by default */
+  .mdebug.abi32            0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32           0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64            0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64           0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32           0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64           0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32     0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64     0 : { KEEP(*(.gcc_compiled_long64)) }
 }
Index: mips/idt64.ld
===================================================================
RCS file: /cvsroots/latest/src/newlib/libgloss/mips/idt64.ld,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 idt64.ld
--- mips/idt64.ld	8 Oct 2005 19:45:24 -0000	1.1.1.1
+++ mips/idt64.ld	8 Jun 2006 01:44:59 -0000
@@ -171,4 +171,15 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+
+  /* Special sections generated by gcc */
+  /* Newer GNU linkers strip by default */
+  .mdebug.abi32            0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32           0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64            0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64           0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32           0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64           0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32     0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64     0 : { KEEP(*(.gcc_compiled_long64)) }
 }
Index: mips/nullmon.ld
===================================================================
RCS file: /cvsroots/latest/src/newlib/libgloss/mips/nullmon.ld,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 nullmon.ld
--- mips/nullmon.ld	8 Oct 2005 19:45:24 -0000	1.1.1.1
+++ mips/nullmon.ld	8 Jun 2006 01:44:52 -0000
@@ -165,4 +165,15 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+
+  /* Special sections generated by gcc */
+  /* Newer GNU linkers strip by default */
+  .mdebug.abi32            0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32           0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64            0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64           0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32           0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64           0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32     0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64     0 : { KEEP(*(.gcc_compiled_long64)) }
 }
Index: mips/pmon.ld
===================================================================
RCS file: /cvsroots/latest/src/newlib/libgloss/mips/pmon.ld,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 pmon.ld
--- mips/pmon.ld	8 Oct 2005 19:45:24 -0000	1.1.1.1
+++ mips/pmon.ld	8 Jun 2006 01:44:38 -0000
@@ -164,4 +164,15 @@ SECTIONS
   .debug_funcnames 0 : { *(.debug_funcnames) }
   .debug_typenames 0 : { *(.debug_typenames) }
   .debug_varnames  0 : { *(.debug_varnames) }
+
+  /* Special sections generated by gcc */
+  /* Newer GNU linkers strip by default */
+  .mdebug.abi32            0 : { KEEP(*(.mdebug.abi32)) }
+  .mdebug.abiN32           0 : { KEEP(*(.mdebug.abiN32)) }
+  .mdebug.abi64            0 : { KEEP(*(.mdebug.abi64)) }
+  .mdebug.abiO64           0 : { KEEP(*(.mdebug.abiO64)) }
+  .mdebug.eabi32           0 : { KEEP(*(.mdebug.eabi32)) }
+  .mdebug.eabi64           0 : { KEEP(*(.mdebug.eabi64)) }
+  .gcc_compiled_long32     0 : { KEEP(*(.gcc_compiled_long32)) }
+  .gcc_compiled_long64     0 : { KEEP(*(.gcc_compiled_long64)) }
 }



More information about the Newlib mailing list