[patch] add missing mips .bss.* section support
Jeff Johnston
jjohnstn@redhat.com
Mon Oct 3 17:43:00 GMT 2005
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)
> }
>
>
More information about the Newlib
mailing list