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]

Re: [patch] add missing mips .bss.* section support


Patch checked in. Thanks.

-- Jeff J.

James E Wilson wrote:

I noticed this while trying to get libmudflap working for a mips-elf
embedded target.  I was using the newlib-1.13.0 release.  It is missing
support for the .sbss.* and .bss.* sections.  libmudflap is compiled
with the -fdata-sections option, and so this results in linker errors
(relocation overflow) if the linker script doesn't handle .sbss sections
correctly.  Richard Sandiford fixed the .sbss.* problem in mainline
newlib, but the .bss.* support is still missing.

Building a mips-elf toolchain, and running the testsuite, I see that
this patch fixes 96 libstdc++ failures.  This is essentially the same
problem as my last patch, except with an updated toolchain, i.e.
gcc-4.1.x instead of gcc-4.0.1.  Now the compiler is using .bss.* COMDAT
sections instead of .gnu.linkonce.bss.* sections, and is failing for the
same reason previously described.  So we need to support both types of
bss sections in the linker scripts.

This patch adds the missing .bss.* support to all of the mips linker
scripts in libgloss. The idt.ld script change was tested with a full
mips-elf toolchain build and make check. It fixes 96 libstdc++
failures, and there were no regressions. The other linker script
changes were tested with one simple testcase, to verify that I didn't
get a linker script parsing error.


------------------------------------------------------------------------

2005-09-30 James E Wilson <wilson@specifix.com>

	* mips/array.ld, mips/cfe.ld, mips/ddb-kseg0.ld, mips/ddb.ld,
	mips/dve.ld, mips/idt.ld, mips/idt32.ld, mips/idt64.ld,
	mips/idtecoff.ld, mips/jmr3904app-java.ld, mips/jmr3904app.ld,
	jmr3904dram-java.ld, mips/jmr3904dram.ld, mips/lsi.ld, mips/nullmon.ld,
	mips/pmon.ld: Add support for .bss.* sections.

Index: array.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/array.ld,v
retrieving revision 1.6
diff -p -p -r1.6 array.ld
*** array.ld 23 Sep 2005 15:51:10 -0000 1.6
--- array.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 172,177 ****
--- 172,178 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: cfe.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/cfe.ld,v
retrieving revision 1.8
diff -p -p -r1.8 cfe.ld
*** cfe.ld 23 Sep 2005 15:51:10 -0000 1.8
--- cfe.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 130,135 ****
--- 130,136 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: ddb-kseg0.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/ddb-kseg0.ld,v
retrieving revision 1.8
diff -p -p -r1.8 ddb-kseg0.ld
*** ddb-kseg0.ld 23 Sep 2005 15:51:10 -0000 1.8
--- ddb-kseg0.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 124,129 ****
--- 124,130 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: ddb.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/ddb.ld,v
retrieving revision 1.8
diff -p -p -r1.8 ddb.ld
*** ddb.ld 23 Sep 2005 15:51:10 -0000 1.8
--- ddb.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 124,129 ****
--- 124,130 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: dve.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/dve.ld,v
retrieving revision 1.8
diff -p -p -r1.8 dve.ld
*** dve.ld 23 Sep 2005 15:51:10 -0000 1.8
--- dve.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 125,130 ****
--- 125,131 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: idt.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/idt.ld,v
retrieving revision 1.9
diff -p -p -r1.9 idt.ld
*** idt.ld 23 Sep 2005 15:51:10 -0000 1.9
--- idt.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 131,136 ****
--- 131,137 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: idt32.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/idt32.ld,v
retrieving revision 1.7
diff -p -p -r1.7 idt32.ld
*** idt32.ld 23 Sep 2005 15:51:10 -0000 1.7
--- idt32.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 133,138 ****
--- 133,139 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: idt64.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/idt64.ld,v
retrieving revision 1.7
diff -p -p -r1.7 idt64.ld
*** idt64.ld 23 Sep 2005 15:51:10 -0000 1.7
--- idt64.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 132,137 ****
--- 132,138 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: idtecoff.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/idtecoff.ld,v
retrieving revision 1.5
diff -p -p -r1.5 idtecoff.ld
*** idtecoff.ld 23 Sep 2005 15:51:10 -0000 1.5
--- idtecoff.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 90,95 ****
--- 90,96 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: jmr3904app-java.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/jmr3904app-java.ld,v
retrieving revision 1.7
diff -p -p -r1.7 jmr3904app-java.ld
*** jmr3904app-java.ld 23 Sep 2005 15:51:10 -0000 1.7
--- jmr3904app-java.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 90,95 ****
--- 90,96 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. += 0x2000 ; /* 8k bytes of stack. */
Index: jmr3904app.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/jmr3904app.ld,v
retrieving revision 1.8
diff -p -p -r1.8 jmr3904app.ld
*** jmr3904app.ld 23 Sep 2005 15:51:10 -0000 1.8
--- jmr3904app.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 123,128 ****
--- 123,129 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
. += 0x2000 ; /* 8k bytes of stack. */
Index: jmr3904dram-java.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/jmr3904dram-java.ld,v
retrieving revision 1.7
diff -p -p -r1.7 jmr3904dram-java.ld
*** jmr3904dram-java.ld 23 Sep 2005 15:51:10 -0000 1.7
--- jmr3904dram-java.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 92,97 ****
--- 92,98 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: jmr3904dram.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/jmr3904dram.ld,v
retrieving revision 1.7
diff -p -p -r1.7 jmr3904dram.ld
*** jmr3904dram.ld 23 Sep 2005 15:51:10 -0000 1.7
--- jmr3904dram.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 89,94 ****
--- 89,95 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: lsi.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/lsi.ld,v
retrieving revision 1.7
diff -p -p -r1.7 lsi.ld
*** lsi.ld 23 Sep 2005 15:51:10 -0000 1.7
--- lsi.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 123,128 ****
--- 123,129 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: nullmon.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/nullmon.ld,v
retrieving revision 1.8
diff -p -p -r1.8 nullmon.ld
*** nullmon.ld 23 Sep 2005 15:51:10 -0000 1.8
--- nullmon.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 125,130 ****
--- 125,131 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}
Index: pmon.ld
===================================================================
RCS file: /cvs/src/src/libgloss/mips/pmon.ld,v
retrieving revision 1.8
diff -p -p -r1.8 pmon.ld
*** pmon.ld 23 Sep 2005 15:51:10 -0000 1.8
--- pmon.ld 30 Sep 2005 18:32:42 -0000
*************** SECTIONS
*** 125,130 ****
--- 125,131 ----
.bss : {
_bss_start = . ;
*(.bss)
+ *(.bss.*)
*(.gnu.linkonce.b.*)
*(COMMON)
}




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