Mercurial > ecos-v2_0-branch
changeset 795:db69ea2c9293
Update various .ld and .ldi files to cope with C++ and fix some typos.
Also add a test program for C++ support to infra package.
See individual ChangeLogs for details.
line wrap: on
line diff
--- a/packages/hal/calmrisc16/core/current/ChangeLog +++ b/packages/hal/calmrisc16/core/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/calm16_core.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/calm16_core.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2001-06-08 Jonathan Larmour <jlarmour@redhat.com> * include/var_cache.h: Correctly indicate absence of cache.
--- a/packages/hal/calmrisc16/core/current/src/calm16_core.ld +++ b/packages/hal/calmrisc16/core/current/src/calm16_core.ld @@ -49,7 +49,11 @@ ENTRY(_reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 0x40 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -283,7 +287,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/calmrisc32/core/current/ChangeLog +++ b/packages/hal/calmrisc32/core/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/calm32_core.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/calm32_core.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2001-06-08 Jonathan Larmour <jlarmour@redhat.com> * include/var_cache.h: Correctly indicate absence of cache.
--- a/packages/hal/calmrisc32/core/current/src/calm32_core.ld +++ b/packages/hal/calmrisc32/core/current/src/calm32_core.ld @@ -49,7 +49,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 0x40 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -283,7 +287,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/frv/arch/current/ChangeLog +++ b/packages/hal/frv/arch/current/ChangeLog @@ -1,3 +1,15 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/frv.ld: + Added .eh_frame to data section. This is a stopgap fix to allow + C++ programs that define exceptions to link and run. It does not + allow them to actually throw exceptions, since that depends on + compiler changes that have not been made. Further, more + far-reaching, linker script changes will also be needs when that + happens. + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2003-01-31 Mark Salter <msalter@redhat.com> * src/hal_syscall.c (hal_syscall_handler): Let generic syscall code
--- a/packages/hal/frv/arch/current/src/frv.ld +++ b/packages/hal/frv/arch/current/src/frv.ld @@ -44,7 +44,11 @@ ENTRY(_start) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -126,6 +130,7 @@ GROUP(libtarget.a libgcc.a) __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \ __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \ *(.sdata*) \ + *(.eh_frame) \ . = ALIGN (8); *(.2ram.*) \ /* Global pointer stuff */ \ . = ALIGN(8); _gp = . + 2048; __global = _gp; \
--- a/packages/hal/h8300/h8300h/current/ChangeLog +++ b/packages/hal/h8300/h8300h/current/ChangeLog @@ -1,3 +1,15 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/h8300_h8300h.ld: + Added .eh_frame to data section. This is a stopgap fix to allow + C++ programs that define exceptions to link and run. It does not + allow them to actually throw exceptions, since that depends on + compiler changes that have not been made. Further, more + far-reaching, linker script changes will also be needs when that + happens. + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2002-08-14 Yoshinori Sato <qzb04471@nifty.ne.jp> * include/mod_regs_wdt.h: New file. Providing watchdog hardware data.
--- a/packages/hal/h8300/h8300h/current/src/h8300_h8300h.ld +++ b/packages/hal/h8300/h8300h/current/src/h8300_h8300h.ld @@ -44,9 +44,11 @@ ENTRY(CYG_LABEL_DEFN(_start)) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) - - +#endif #define ALIGN_LMA 4 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -113,6 +115,7 @@ GROUP(libtarget.a libgcc.a) CYG_LABEL_DEFN(__DTOR_LIST__) = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) CYG_LABEL_DEFN(__DTOR_END__) = ABSOLUTE (.); \ CYG_LABEL_DEFN(_GOT_START) = ABSOLUTE (.); CYG_LABEL_DEFN(_GLOBAL_OFFSET_TABLE_) = ABSOLUTE (.) + 32768; CYG_LABEL_DEFN(_SDA_BASE_) = ABSOLUTE (.); \ *(.got.plt) *(.got) CYG_LABEL_DEFN(_GOT_END_) = ABSOLUTE (.); \ + *(.eh_frame) \ *(.dynamic) *(.sdata*) *(.sbss*) } \ > _region_ \ CYG_LABEL_DEFN(__rom_data_start) = LOADADDR (.data); \
--- a/packages/hal/i386/arch/current/ChangeLog +++ b/packages/hal/i386/arch/current/ChangeLog @@ -1,3 +1,9 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/i386.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2003-01-31 Mark Salter <msalter@redhat.com> * src/hal_syscall.c (hal_syscall_handler): Let generic syscall code
--- a/packages/hal/i386/arch/current/src/i386.ld +++ b/packages/hal/i386/arch/current/src/i386.ld @@ -53,7 +53,11 @@ ENTRY(_start) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
--- a/packages/hal/i386/pc/current/ChangeLog +++ b/packages/hal/i386/pc/current/ChangeLog @@ -1,3 +1,8 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * include/pkgconf/mlt_i386_pc_rom.ldi: Brought list of sections up + to date with other files. + 2003-01-22 Jonathan Larmour <jifl@eCosCentric.com> * include/pkgconf/hal_i386_pc.h: Old file. Remove.
--- a/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_rom.ldi +++ b/packages/hal/i386/pc/current/include/pkgconf/mlt_i386_pc_rom.ldi @@ -19,6 +19,9 @@ SECTIONS SECTION_rodata1 (rom, ALIGN (0x8), LMA_EQ_VMA) SECTION_rodata (rom, ALIGN (0x8), LMA_EQ_VMA) SECTION_data (ram, 0x02000, FOLLOWING(.rodata)) + SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTION_gcc_except_table (ram, ALIGN (0x1), LMA_EQ_VMA) + SECTION_rel__got (ram, ALIGN (0x1), LMA_EQ_VMA) SECTION_sbss (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_bss (ram, ALIGN (0x10), LMA_EQ_VMA) CYG_LABEL_DEFN(__pci_window) = ALIGN(0x10); . = CYG_LABEL_DEFN(__pci_window) + 0x64000;
--- a/packages/hal/m68k/arch/current/src/m68k.ld +++ b/packages/hal/m68k/arch/current/src/m68k.ld @@ -45,7 +45,11 @@ ENTRY(__exception_reset) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 4 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -111,6 +115,7 @@ GROUP(libtarget.a libgcc.a) __GOT_START = ABSOLUTE(.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768); \ _SDA_BASE_ = ABSOLUTE(.); *(.got.plt) *(.got) \ __GOT_END__ = ABSOLUTE(.); *(.dynamic) \ + *(.eh_frame) \ /* We want the small data sections together, so single-instruction */ \ /* offsets can access them all, and initialized data all before */ \ /* uninitialized, so we can shorten the on-disk segment size. */ \
--- a/packages/hal/mips/idt32334/current/ChangeLog +++ b/packages/hal/mips/idt32334/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_idt32334.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/mips_idt32334.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2003-02-13 Tim Michals <t.michals@attbi.com> 2003-02-13 Jonathan Larmour <jifl@eCosCentric.com>
--- a/packages/hal/mips/idt32334/current/src/mips_idt32334.ld +++ b/packages/hal/mips/idt32334/current/src/mips_idt32334.ld @@ -62,7 +62,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif /* FIXME: The MLT should pass in the required alignment since it must be * the same as the VMA's alignment. As a result of this bug, all the MIPS32 @@ -330,7 +334,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/mips/mips32/current/ChangeLog +++ b/packages/hal/mips/mips32/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_mips32.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/mips_mips32.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2003-02-27 Nick Garnett <nickg@calivar.com> * cdl/hal_mips_mips32.cdl: Changed CYGPKG_HAL_MIPS_GDB_REPORT_CP0
--- a/packages/hal/mips/mips32/current/src/mips_mips32.ld +++ b/packages/hal/mips/mips32/current/src/mips_mips32.ld @@ -50,7 +50,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif /* FIXME: The MLT should pass in the required alignment since it must be * the same as the VMA's alignment. As a result of this bug, all the MIPS32 @@ -302,7 +306,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/mips/mips64/current/ChangeLog +++ b/packages/hal/mips/mips64/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_mips64.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/mips_mips64.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2002-05-24 Jesper Skov <jskov@redhat.com> * include/var_arch.h: Removed HAL_DIAG_IRQ_CHECK. It's not
--- a/packages/hal/mips/mips64/current/src/mips_mips64.ld +++ b/packages/hal/mips/mips64/current/src/mips_mips64.ld @@ -50,7 +50,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif /* FIXME: The MLT should pass in the required alignment since it must be * the same as the VMA's alignment. As a result of this bug, all the MIPS64 @@ -302,7 +306,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/mips/rm7000/var/current/ChangeLog +++ b/packages/hal/mips/rm7000/var/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_rm7000.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/mips_rm7000.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2001-08-09 Jonathan Larmour <jlarmour@redhat.com> * include/var_intr.h: Move HAL_INTERRUPT_ interrupt controller
--- a/packages/hal/mips/rm7000/var/current/src/mips_rm7000.ld +++ b/packages/hal/mips/rm7000/var/current/src/mips_rm7000.ld @@ -50,7 +50,11 @@ ENTRY(reset_vector) #if defined(EXTRAS) INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif /* FIXME: The MLT should pass in the required alignment since it must be * the same as the VMA's alignment. As a result of this bug, all the @@ -288,7 +292,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/mips/tx39/current/ChangeLog +++ b/packages/hal/mips/tx39/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_tx39.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/mips_tx39.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2000-10-20 Jesper Skov <jskov@redhat.com> * include/var_cache.h (HAL_DCACHE_INVALIDATE_ALL): Move volatile
--- a/packages/hal/mips/tx39/current/src/mips_tx39.ld +++ b/packages/hal/mips/tx39/current/src/mips_tx39.ld @@ -50,7 +50,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif /* FIXME: The MLT should pass in the required alignment since it must be * the same as the VMA's alignment. As a result of this bug, all the JMR3904 @@ -299,7 +303,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/mips/tx49/current/ChangeLog +++ b/packages/hal/mips/tx49/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_tx49.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + +2003-04-09 Jonathan Larmour <jifl@eCosCentric.com> + + * src/mips_tx49.ld: + Fix .gnulinkonce.s -> .gnu.linkonce.s typo. + 2000-12-05 Jesper Skov <jskov@redhat.com> * include/var_cache.h (HAL_MIPS_CACHE_INSN_USES_LSB): The TX49
--- a/packages/hal/mips/tx49/current/src/mips_tx49.ld +++ b/packages/hal/mips/tx49/current/src/mips_tx49.ld @@ -50,7 +50,11 @@ ENTRY(reset_vector) #if defined(EXTRAS) && defined(CYGPKG_IO) INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif /* FIXME: The MLT should pass in the required alignment since it must be * the same as the VMA's alignment. As a result of this bug, all the REF4955 @@ -287,7 +291,7 @@ GROUP(libtarget.a libgcc.a) #define SECTION_sdata(_region_, _vma_, _lma_) \ .sdata _vma_ : _lma_ \ { \ - FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnulinkonce.s*) \ + FORCE_OUTPUT; *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) \ } > _region_ #define SECTION_lit8(_region_, _vma_, _lma_) \
--- a/packages/hal/mips/upd985xx/current/ChangeLog +++ b/packages/hal/mips/upd985xx/current/ChangeLog @@ -1,3 +1,9 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/hal_mips_upd985xx.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2002-04-02 Hugo Tyson <hmt@redhat.com> 2002-04-02 Anssi Pulkkinen <anssi.pulkkinen@ascom.com>
--- a/packages/hal/mips/upd985xx/current/src/hal_mips_upd985xx.ld +++ b/packages/hal/mips/upd985xx/current/src/hal_mips_upd985xx.ld @@ -45,7 +45,11 @@ OUTPUT_FORMAT("elf32-bigmips", "elf32-bi #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
--- a/packages/hal/mips/vr4300/current/ChangeLog +++ b/packages/hal/mips/vr4300/current/ChangeLog @@ -1,3 +1,9 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mips_vr4300.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2001-12-05 Nick Garnett <nickg@redhat.com> * include/variant.inc: Add ifdef around cache clearing code to
--- a/packages/hal/mips/vr4300/current/src/mips_vr4300.ld +++ b/packages/hal/mips/vr4300/current/src/mips_vr4300.ld @@ -45,7 +45,11 @@ OUTPUT_FORMAT("elf32-bigmips", "elf32-bi #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
--- a/packages/hal/mn10300/am31/current/ChangeLog +++ b/packages/hal/mn10300/am31/current/ChangeLog @@ -1,3 +1,13 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mn10300_am31.ld: + Added .eh_frame to data section. This is a stopgap fix to allow + C++ programs that define exceptions to link and run. It does not + allow them to actually throw exceptions, since that depends on + compiler changes that have not been made. Further, more + far-reaching, linker script changes will also be needs when that + happens. + 2003-03-14 Bart Veer <bartv@ecoscentric.com> * src/mn10300_am31.ld: add entries for debug sections, needed by
--- a/packages/hal/mn10300/am31/current/src/mn10300_am31.ld +++ b/packages/hal/mn10300/am31/current/src/mn10300_am31.ld @@ -109,6 +109,7 @@ GROUP(libtarget.a libgcc.a) __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \ _GOT_START = ABSOLUTE (.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE (.) + 32768; _SDA_BASE_ = ABSOLUTE (.); \ *(.got.plt) *(.got) _GOT_END_ = ABSOLUTE (.); \ + *(.eh_frame) \ *(.dynamic) *(.sdata*) *(.sbss*) } \ > _region_ \ __rom_data_start = LOADADDR (.data); \
--- a/packages/hal/mn10300/am33/current/ChangeLog +++ b/packages/hal/mn10300/am33/current/ChangeLog @@ -1,3 +1,15 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/mn10300_am33.ld: + Added .eh_frame to data section. This is a stopgap fix to allow + C++ programs that define exceptions to link and run. It does not + allow them to actually throw exceptions, since that depends on + compiler changes that have not been made. Further, more + far-reaching, linker script changes will also be needs when that + happens. + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2003-03-14 Bart Veer <bartv@ecoscentric.com> * src/mn10300_am33.ld: add entries for debug sections, needed by
--- a/packages/hal/mn10300/am33/current/src/mn10300_am33.ld +++ b/packages/hal/mn10300/am33/current/src/mn10300_am33.ld @@ -45,7 +45,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 4 @@ -109,6 +113,7 @@ GROUP(libtarget.a libgcc.a) __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \ _GOT_START = ABSOLUTE (.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE (.) + 32768; _SDA_BASE_ = ABSOLUTE (.); \ *(.got.plt) *(.got) _GOT_END_ = ABSOLUTE (.); \ + *(.eh_frame) \ *(.dynamic) *(.sdata*) *(.sbss*) } \ > _region_ \ __rom_data_start = LOADADDR (.data); \
--- a/packages/hal/powerpc/arch/current/ChangeLog +++ b/packages/hal/powerpc/arch/current/ChangeLog @@ -1,3 +1,14 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/powerpc.ld: + Added .eh_frame to data section. This is a stopgap fix to allow + C++ programs that define exceptions to link and run. It does not + allow them to actually throw exceptions, since that depends on + compiler changes that have not been made. Further, more + far-reaching, linker script changes will also be needs when that + happens. + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. 2003-01-03 Gary Thomas <gary@mlbassoc.com> * include/hal_mem.h (CYGARC_MEMDESC_NOCACHE_PA): New macro which
--- a/packages/hal/powerpc/arch/current/src/powerpc.ld +++ b/packages/hal/powerpc/arch/current/src/powerpc.ld @@ -53,7 +53,11 @@ ENTRY(__exception_reset) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -119,6 +123,7 @@ GROUP(libtarget.a libgcc.a) __GOT_START = ABSOLUTE(.); _GLOBAL_OFFSET_TABLE_ = ABSOLUTE(. + 32768); \ _SDA_BASE_ = ABSOLUTE(.); *(.got.plt) *(.got) \ __GOT_END__ = ABSOLUTE(.); *(.dynamic) \ + *(.eh_frame) \ /* We want the small data sections together, so single-instruction */ \ /* offsets can access them all, and initialized data all before */ \ /* uninitialized, so we can shorten the on-disk segment size. */ \
--- a/packages/hal/sh/arch/current/ChangeLog +++ b/packages/hal/sh/arch/current/ChangeLog @@ -1,3 +1,8 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/sh.ld: + Added entry for .stack section in data section. + 2003-01-31 Mark Salter <msalter@redhat.com> * src/hal_syscall.c (hal_syscall_handler): Let generic syscall code
--- a/packages/hal/sh/arch/current/src/sh.ld +++ b/packages/hal/sh/arch/current/src/sh.ld @@ -94,6 +94,7 @@ GROUP(libtarget.a libgcc.a) . = ALIGN(8); \ KEEP(*( SORT (.ecos.table.*))) ; \ . = ALIGN(4); \ + *(.stack) \ } > _region_ \ CYG_LABEL_DEFN(_rom_data_start) = LOADADDR(.data); \ CYG_LABEL_DEFN(_ram_data_end) = .; PROVIDE(_ram_data_end = .); \
--- a/packages/hal/sparc/arch/current/ChangeLog +++ b/packages/hal/sparc/arch/current/ChangeLog @@ -1,3 +1,9 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/sparc.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2002-10-19 Jonathan Larmour <jifl@eCosCentric.com> Patch from Jiri Gaisler:
--- a/packages/hal/sparc/arch/current/src/sparc.ld +++ b/packages/hal/sparc/arch/current/src/sparc.ld @@ -42,7 +42,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
--- a/packages/hal/sparclite/arch/current/ChangeLog +++ b/packages/hal/sparclite/arch/current/ChangeLog @@ -1,3 +1,9 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/sparclite.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2002-04-29 Jonathan Larmour <jlarmour@redhat.com> * src/vectors.S:
--- a/packages/hal/sparclite/arch/current/src/sparclite.ld +++ b/packages/hal/sparclite/arch/current/src/sparclite.ld @@ -42,7 +42,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
--- a/packages/hal/synth/arch/current/ChangeLog +++ b/packages/hal/synth/arch/current/ChangeLog @@ -1,3 +1,9 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/synth.ld: + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2003-03-30 Bart Veer <bartv@ecoscentric.com> * src/synth_intr.c (synth_auxiliary_xchgmsg): fix typo reported
--- a/packages/hal/synth/arch/current/src/synth.ld +++ b/packages/hal/synth/arch/current/src/synth.ld @@ -53,7 +53,11 @@ ENTRY(_start) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 8 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
--- a/packages/hal/v85x/ceb_v850/current/ChangeLog +++ b/packages/hal/v85x/ceb_v850/current/ChangeLog @@ -1,3 +1,8 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * include/pkgconf/mlt_v85x_v850_ceb_ram.ldi: + Added SECTION_ram_vectors(). + 2002-05-28 Jonathan Larmour <jlarmour@redhat.com> * include/hal_platform_setup.h: Correctly calculate wait states based
--- a/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi +++ b/packages/hal/v85x/ceb_v850/current/include/pkgconf/mlt_v85x_v850_ceb_ram.ldi @@ -14,6 +14,7 @@ SECTIONS SECTIONS_BEGIN CYG_LABEL_DEFN(__reserved) = 0xfc0000; . = CYG_LABEL_DEFN(__reserved) + 0x4000; SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA) + SECTION_ram_vectors (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA) SECTION_rodata1 (ram, ALIGN (0x4), LMA_EQ_VMA)
--- a/packages/hal/v85x/v850/current/ChangeLog +++ b/packages/hal/v85x/v850/current/ChangeLog @@ -1,3 +1,15 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * src/v85x_v850.ld: + Added .eh_frame to data section. This is a stopgap fix to allow + C++ programs that define exceptions to link and run. It does not + allow them to actually throw exceptions, since that depends on + compiler changes that have not been made. Further, more + far-reaching, linker script changes will also be needs when that + happens. + Added libsupc++.a to GROUP() directive for GCC versions later than + 3.0. + 2002-05-23 Jesper Skov <jskov@redhat.com> * cdl/hal_v85x_v850.cdl: Don't run cache tests.
--- a/packages/hal/v85x/v850/current/src/v85x_v850.ld +++ b/packages/hal/v85x/v850/current/src/v85x_v850.ld @@ -51,7 +51,11 @@ ENTRY(reset_vector) #ifdef EXTRAS INPUT(extras.o) #endif +#if (__GNUC__ >= 3) +GROUP(libtarget.a libgcc.a libsupc++.a) +#else GROUP(libtarget.a libgcc.a) +#endif #define ALIGN_LMA 4 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1)) @@ -126,6 +130,7 @@ GROUP(libtarget.a libgcc.a) KEEP(*( SORT (.ecos.table.*))) ; \ ___CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) ___CTOR_END__ = ABSOLUTE (.); \ ___DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) ___DTOR_END__ = ABSOLUTE (.); \ + *(.eh_frame) \ *(.dynamic) *(.sdata*) *(.sbss*) } \ > _region_ \ ___rom_data_start = LOADADDR (.data); \
--- a/packages/infra/current/ChangeLog +++ b/packages/infra/current/ChangeLog @@ -1,3 +1,30 @@ +2003-04-10 Nick Garnett <nickg@balti.calivar.com> + + * tests/cxxsupp.cxx: Added this test program to check that basic + C++ support is present. It checks that pure virtual functions can + be defined, that new and delete are present and functional, and + that calls to as-yet undefined inline functions work. Most of + these are linker and runtime system issues, so the actual run of + the program is almost a non-event. + + * cdl/infra.cdl: + Added CYGFUN_INFRA_DUMMY_ABORT and CYGFUN_INFRA_DUMMY_STRLEN + options to control inclusion of dummy abort() and strlen() + functions. These are needed to be present by the compiler's C++ + runtime system, although they should never be called. + Added CYGPKG_INFRA_TESTS to define test programs. + Added CYGPKG_INFRA_LDFLAGS_REMOVE and CYGPKG_INFRA_LDFLAGS_ADD to + modify the linkage options for the infra package + tests. Specifically they remove the --gc-sections option and make + all linker warning fatal. This is necessary if cxxsupp.cxx is to + test what it needs correctly. + + * src/abort.cxx: Added this dummy implementation of abort() to + satisfy references in the C++ runtime system. + + * src/strlen.cxx: Added this dummy implementation of strlen() to + satisfy references in the C++ runtime system. + 2003-03-27 Bart Veer <bartv@ecoscentric.com> * src/pure.cxx, cdl/infra.cdl: new function __cxa_pure_virtual(),
--- a/packages/infra/current/cdl/infra.cdl +++ b/packages/infra/current/cdl/infra.cdl @@ -178,6 +178,39 @@ cdl_package CYGPKG_INFRA { } # ======================================================================== + + cdl_option CYGFUN_INFRA_DUMMY_ABORT { + display "Provide dummy abort() function" + requires !CYGINT_ISO_EXIT + default_value { CYGINT_ISO_EXIT == 0 } + compile abort.cxx + description " + This option controls the inclusion of a dummy abort() function. + Parts of the C and C++ compiler runtime systems contain references + to abort(), particulary in the C++ exception handling code. It is + not possible to eliminate these references, so this dummy function + in included to satisfy them. It is not expected that this function + will ever be called, so its current behaviour is to simply loop." + } + + # ======================================================================== + + cdl_option CYGFUN_INFRA_DUMMY_STRLEN { + display "Provide dummy strlen() function" + requires !CYGINT_ISO_STRING_STRFUNCS + default_value { CYGINT_ISO_STRING_STRFUNCS == 0 } + compile strlen.cxx + description " + This option controls the inclusion of a dummy strlen() function. + Parts of the C and C++ compiler runtime systems contain references + to strlen(), particulary in the C++ exception handling code. It is + not possible to eliminate these references, so this dummy function + in included to satisfy them. While it is not expected that this function + will ever be called, it is functional but uses the simplest, smallest + algorithm. There is a faster version of strlen() in the C library." + } + + # ======================================================================== # Debugging-related miscellania. define_proc { @@ -245,5 +278,35 @@ cdl_package CYGPKG_INFRA { building the eCos infra package. These flags are removed from the set of global flags if present." } + + cdl_option CYGPKG_INFRA_LDFLAGS_REMOVE { + display "Suppressed linker flags" + flavor data + no_define + default_value { "-Wl,--gc-sections" } + description " + This option modifies the set of linker flags for + building the eCos infra package tests. These flags are removed from + the set of global flags if present." + } + + cdl_option CYGPKG_INFRA_LDFLAGS_ADD { + display "Additional linker flags" + flavor data + no_define + default_value { "-Wl,--fatal-warnings" } + description " + This option modifies the set of linker flags for + building the eCos infra package tests. These flags are added to + the set of global flags if present." + } + + cdl_option CYGPKG_INFRA_TESTS { + display "Infra package tests" + flavor data + no_define + calculated { "tests/cxxsupp" } + } + } }
