This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

m68k linker scripts


When compiling C++ code it's common to get comdat sections with names 
like .bss.foo. In the final output file these should be places in .bss.  The 
libgloss m68k linker scripts don't handle these sections so ld sometimes 
places them after _end, with catastrophic results.

The attached patch fixes the linker scripts to include these sections.

Ok?

Paul

2005-12-06  Paul Brook  <paul@codesourcery.com>

libgloss/
	* m68k/bcc.ld: Add .text.*, .rodata.*, .data.* and .bss.*.
	* m68k/idp.ld: Ditto.
	* m68k/idpgdb: Ditto.
	* m68k/mvme135.ld: Ditto.
	* m68k/sbc5204.ld: Ditto.
	* m68k/sbc5206.ld: Ditto.
	* m68k/sim.ld: Ditto.
	
Index: libgloss/m68k/bcc.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/bcc.ld,v
retrieving revision 1.1
diff -u -p -r1.1 bcc.ld
--- libgloss/m68k/bcc.ld	17 Mar 2000 22:48:50 -0000	1.1
+++ libgloss/m68k/bcc.ld	6 Dec 2005 16:12:34 -0000
@@ -63,7 +63,7 @@ SECTIONS
 {
   .text :
   {
-    *(.text)
+    *(.text .text.*)
     . = ALIGN(0x4);
      __CTOR_LIST__ = .;
     ___CTOR_LIST__ = .;
@@ -77,7 +77,7 @@ SECTIONS
     *(.dtors)
      LONG(0)
     __DTOR_END__ = .;
-    *(.rodata)
+    *(.rodata .rodata.*)
     *(.gcc_except_table) 
 
     . = ALIGN(0x2);
@@ -100,7 +100,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -109,7 +109,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/idp.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/idp.ld,v
retrieving revision 1.1
diff -u -p -r1.1 idp.ld
--- libgloss/m68k/idp.ld	17 Mar 2000 22:48:50 -0000	1.1
+++ libgloss/m68k/idp.ld	6 Dec 2005 16:13:32 -0000
@@ -77,7 +77,7 @@ SECTIONS
   .text :
   {
     CREATE_OBJECT_SYMBOLS
-    *(.text)
+    *(.text .text.*)
 
     . = ALIGN(0x4);
     /* These are for running static constructors and destructors under ELF.  */
@@ -90,7 +90,7 @@ SECTIONS
     KEEP (*(SORT(.dtors.*)))
     KEEP (*(.dtors))
 
-    *(.rodata)
+    *(.rodata .rodata.*)
 
     . = ALIGN(0x4);
     *(.gcc_except_table) 
@@ -119,7 +119,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -128,7 +128,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/idpgdb.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/idpgdb.ld,v
retrieving revision 1.1
diff -u -p -r1.1 idpgdb.ld
--- libgloss/m68k/idpgdb.ld	10 Sep 2001 23:47:42 -0000	1.1
+++ libgloss/m68k/idpgdb.ld	6 Dec 2005 16:13:03 -0000
@@ -77,7 +77,7 @@ SECTIONS
   .text :
   {
     CREATE_OBJECT_SYMBOLS
-    *(.text)
+    *(.text .text.*)
 
     . = ALIGN(0x4);
     /* These are for running static constructors and destructors under ELF.  */
@@ -90,7 +90,7 @@ SECTIONS
     KEEP (*(SORT(.dtors.*)))
     KEEP (*(.dtors))
 
-    *(.rodata)
+    *(.rodata .rodata.*)
 
     . = ALIGN(0x4);
     *(.gcc_except_table) 
@@ -119,7 +119,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -128,7 +128,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/mvme135.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/mvme135.ld,v
retrieving revision 1.1
diff -u -p -r1.1 mvme135.ld
--- libgloss/m68k/mvme135.ld	17 Mar 2000 22:48:51 -0000	1.1
+++ libgloss/m68k/mvme135.ld	6 Dec 2005 16:14:02 -0000
@@ -64,7 +64,7 @@ SECTIONS
 {
   .text :
   {
-    *(.text)
+    *(.text .text.*)
     . = ALIGN(0x4);
      __CTOR_LIST__ = .;
     ___CTOR_LIST__ = .;
@@ -78,7 +78,7 @@ SECTIONS
     *(.dtors)
      LONG(0)
     __DTOR_END__ = .;
-    *(.rodata)
+    *(.rodata .rodata.*)
     *(.gcc_except_table) 
 
     . = ALIGN(0x2);
@@ -101,7 +101,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -110,7 +110,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/mvme162.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/mvme162.ld,v
retrieving revision 1.1
diff -u -p -r1.1 mvme162.ld
--- libgloss/m68k/mvme162.ld	17 Mar 2000 22:48:51 -0000	1.1
+++ libgloss/m68k/mvme162.ld	6 Dec 2005 16:14:36 -0000
@@ -65,7 +65,7 @@ SECTIONS
 {
   .text :
   {
-    *(.text)
+    *(.text .text.*)
     . = ALIGN(0x4);
      __CTOR_LIST__ = .;
     ___CTOR_LIST__ = .;
@@ -79,7 +79,7 @@ SECTIONS
     *(.dtors)
      LONG(0)
     __DTOR_END__ = .;
-    *(.rodata)
+    *(.rodata .rodata.*)
     *(.gcc_except_table) 
 
     . = ALIGN(0x2);
@@ -102,7 +102,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -111,7 +111,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/sbc5204.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/sbc5204.ld,v
retrieving revision 1.1
diff -u -p -r1.1 sbc5204.ld
--- libgloss/m68k/sbc5204.ld	17 Mar 2000 22:48:51 -0000	1.1
+++ libgloss/m68k/sbc5204.ld	6 Dec 2005 16:15:05 -0000
@@ -63,7 +63,7 @@ SECTIONS
 {
   .text :
   {
-    *(.text)
+    *(.text .text.*)
     . = ALIGN(0x4);
      __CTOR_LIST__ = .;
     ___CTOR_LIST__ = .;
@@ -77,7 +77,7 @@ SECTIONS
     *(.dtors)
      LONG(0)
     __DTOR_END__ = .;
-    *(.rodata)
+    *(.rodata .rodata.*)
     *(.gcc_except_table) 
 
     . = ALIGN(0x2);
@@ -100,7 +100,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -109,7 +109,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/sbc5206.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/sbc5206.ld,v
retrieving revision 1.1
diff -u -p -r1.1 sbc5206.ld
--- libgloss/m68k/sbc5206.ld	17 Mar 2000 22:48:51 -0000	1.1
+++ libgloss/m68k/sbc5206.ld	6 Dec 2005 16:15:31 -0000
@@ -63,7 +63,7 @@ SECTIONS
 {
   .text :
   {
-    *(.text)
+    *(.text .text.*)
     . = ALIGN(0x4);
      __CTOR_LIST__ = .;
     ___CTOR_LIST__ = .;
@@ -77,7 +77,7 @@ SECTIONS
     *(.dtors)
      LONG(0)
     __DTOR_END__ = .;
-    *(.rodata)
+    *(.rodata .rodata.*)
     *(.gcc_except_table) 
 
     . = ALIGN(0x2);
@@ -100,7 +100,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -109,7 +109,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;
Index: libgloss/m68k/sim.ld
===================================================================
RCS file: /var/cvsroot/src-cvs/src/libgloss/m68k/sim.ld,v
retrieving revision 1.1
diff -u -p -r1.1 sim.ld
--- libgloss/m68k/sim.ld	28 Feb 2001 18:41:57 -0000	1.1
+++ libgloss/m68k/sim.ld	6 Dec 2005 16:15:34 -0000
@@ -18,7 +18,7 @@ SECTIONS
   .text :
   {
     CREATE_OBJECT_SYMBOLS
-    *(.text)
+    *(.text .text.*)
 
     . = ALIGN(0x4);
     /* These are for running static constructors and destructors under ELF.  */
@@ -31,7 +31,7 @@ SECTIONS
     KEEP (*(SORT(.dtors.*)))
     KEEP (*(.dtors))
 
-    *(.rodata)
+    *(.rodata .rodata.*)
 
     . = ALIGN(0x4);
     *(.gcc_except_table) 
@@ -60,7 +60,7 @@ SECTIONS
   .data :
   {
     *(.shdata)
-    *(.data)
+    *(.data .data.*)
     _edata = .;
   } > ram
 
@@ -69,7 +69,7 @@ SECTIONS
     . = ALIGN(0x4);
     __bss_start = . ;
     *(.shbss)
-    *(.bss)
+    *(.bss .bss.*)
     *(COMMON)
     _end =  ALIGN (0x8);
     __end = _end;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]