diff --git a/c/src/lib/libbsp/powerpc/gen5200/ChangeLog b/c/src/lib/libbsp/powerpc/gen5200/ChangeLog index 6db1bab23d..bb84ea2aef 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/ChangeLog +++ b/c/src/lib/libbsp/powerpc/gen5200/ChangeLog @@ -1,6 +1,7 @@ 2007-07-10 Thomas Doerfler - * bsp_specs, startup/linkcmds: add c++ support again + * bsp_specs, startup/linkcmds, startup/linkcmds.pm520: + add c++ support again * preinstall.am: some fixes 2007-07-06 Joel Sherrill diff --git a/c/src/lib/libbsp/powerpc/gen5200/Makefile.am b/c/src/lib/libbsp/powerpc/gen5200/Makefile.am index dc0553d8e6..036f124587 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/Makefile.am +++ b/c/src/lib/libbsp/powerpc/gen5200/Makefile.am @@ -29,6 +29,11 @@ start.$(OBJEXT): start/start.S $(CPPASCOMPILE) -o $@ -c $< project_lib_DATA = start.$(OBJEXT) +EXTRA_DIST += ../../powerpc/shared/start/rtems_crti.S +rtems_crti.$(OBJEXT): ../../powerpc/shared/start/rtems_crti.S + $(CPPASCOMPILE) -o $@ -c $< +project_lib_DATA += rtems_crti.$(OBJEXT) + dist_project_lib_DATA += startup/linkcmds dist_project_lib_DATA += startup/linkcmds.brs5l dist_project_lib_DATA += startup/linkcmds.ep5200 @@ -113,7 +118,7 @@ noinst_PROGRAMS += startup.rel startup_rel_SOURCES = startup/bspclean.c ../../shared/bsplibc.c \ ../../shared/bsppost.c startup/bspstart.c ../../shared/bootcard.c \ ../../shared/sbrk.c ../shared/uboot_dump_bdinfo.c \ - ../../shared/gnatinstallhandler.c startup/cpuinit.c start/start.S + ../../shared/gnatinstallhandler.c startup/cpuinit.c startup_rel_CPPFLAGS = $(AM_CPPFLAGS) startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) diff --git a/c/src/lib/libbsp/powerpc/gen5200/bsp_specs b/c/src/lib/libbsp/powerpc/gen5200/bsp_specs index 423e6d4c91..d750e714d9 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/bsp_specs +++ b/c/src/lib/libbsp/powerpc/gen5200/bsp_specs @@ -3,7 +3,9 @@ %rename link old_link *startfile: -%{!qrtems: %(old_startfile)} %{!nostdlib: %{qrtems: ecrti%O%s rtems_crti%O%s crtbegin.o%s}} +%{!qrtems: %(old_startfile)} %{!nostdlib: %{qrtems: ecrti%O%s rtems_crti%O%s crtbegin.o%s \ +%{!qrtems_debug: start.o%s} \ +%{qrtems_debug: start_g.o%s}}} *endfile: %{!qrtems: %(old_endfile)} %{qrtems: crtend.o%s ecrtn.o%s} diff --git a/c/src/lib/libbsp/powerpc/gen5200/preinstall.am b/c/src/lib/libbsp/powerpc/gen5200/preinstall.am index 0df2cff383..eff2a6f2da 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/preinstall.am +++ b/c/src/lib/libbsp/powerpc/gen5200/preinstall.am @@ -77,6 +77,10 @@ $(PROJECT_LIB)/start.$(OBJEXT): start.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_LIB)/start.$(OBJEXT) TMPINSTALL_FILES += $(PROJECT_LIB)/start.$(OBJEXT) +$(PROJECT_LIB)/rtems_crti.$(OBJEXT): rtems_crti.$(OBJEXT) $(PROJECT_LIB)/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_LIB)/rtems_crti.$(OBJEXT) +TMPINSTALL_FILES += $(PROJECT_LIB)/rtems_crti.$(OBJEXT) + $(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds index fa18cbb721..015aa98afc 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds @@ -166,7 +166,7 @@ SECTIONS } > ram - .jcr : { KEEP (*(.jcr)) } >RAM + .jcr : { KEEP (*(.jcr)) } >ram .rel.dyn : { *(.rel.init) diff --git a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520 b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520 index 61794202f7..d65ed90f64 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520 +++ b/c/src/lib/libbsp/powerpc/gen5200/startup/linkcmds.pm520 @@ -59,7 +59,6 @@ SECTIONS /* Actual Code */ *(.text*) - *(.rodata*) *(.rodata1) @@ -136,7 +135,26 @@ SECTIONS *(rom_ver) _erodata = .; - + PROVIDE (__EXCEPT_START__ = .); + *(.gcc_except_table) + PROVIDE (__EXCEPT_END__ = .); + __GOT_START__ = .; + s.got = .; + *(.got.plt) + *(.got) + *(.got1) + PROVIDE (__GOT2_START__ = .); + PROVIDE (_GOT2_START_ = .); + *(.got2) + PROVIDE (__GOT2_END__ = .); + PROVIDE (_GOT2_END_ = .); + + PROVIDE (__FIXUP_START__ = .); + PROVIDE (_FIXUP_START_ = .); + *(.fixup) + PROVIDE (_FIXUP_END_ = .); + PROVIDE (__FIXUP_END__ = .); + /* Various possible names for the end of the .text section */ etext = ALIGN(0x10); _etext = .; @@ -147,31 +165,8 @@ SECTIONS } > ram - - PROVIDE (__EXCEPT_START__ = .); - .gcc_except_table : { *(.gcc_except_table) } >ram - PROVIDE (__EXCEPT_END__ = .); - __GOT_START__ = .; - .got : - { - s.got = .; - *(.got.plt) *(.got) - } > ram - __GOT_END__ = .; - - .got1 : { *(.got1) } >ram - PROVIDE (__GOT2_START__ = .); - PROVIDE (_GOT2_START_ = .); - .got2 : { *(.got2) } >ram - PROVIDE (__GOT2_END__ = .); - PROVIDE (_GOT2_END_ = .); - - PROVIDE (__FIXUP_START__ = .); - PROVIDE (_FIXUP_START_ = .); - .fixup : { *(.fixup) } >ram - PROVIDE (_FIXUP_END_ = .); - PROVIDE (__FIXUP_END__ = .); - + .jcr : { KEEP (*(.jcr)) } >ram + .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) @@ -211,13 +206,29 @@ SECTIONS } >ram PROVIDE (__SDATA2_START__ = .); - .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } >ram - .sbss2 : { *(.sbss2) *(.gnu.linkonce.sb2.*) } >ram + .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } >ram + .sbss2 : { *(.sbss2) *(.gnu.linkonce.sb2.*) } >ram PROVIDE (__SBSS2_END__ = .); .sbss2 : { *(.sbss2) } >ram PROVIDE (__SBSS2_END__ = .); + /* R/W Data */ + .data ( . ) : + { + . = ALIGN (4); + + data.start = .; + + *(.data) + *(.data1) + *(.data.* .gnu.linkonce.d.*) + PROVIDE (__SDATA_START__ = .); + *(.sdata*) + *(.gnu.linkonce.s.*) + data.end = .; + } > ram + __SBSS_START__ = .; .bss : { @@ -229,31 +240,6 @@ SECTIONS } > ram __SBSS_END__ = .; - - - - - /* R/W Data */ - .data ( . ) : - { - . = ALIGN (4); - - data.start = .; - - *(.data) - *(.data.rel.*) - *(.data1) - *(.data.* .gnu.linkonce.d.*) - PROVIDE (__SDATA_START__ = .); - *(.sdata*) - *(.gnu.linkonce.s.*) - data.end = .; - } > ram - - data.size = data.end - data.start; - bss.size = bss.end - bss.start; - text.size = text.end - text.start; - PROVIDE(_bss_start = ADDR(.bss)); PROVIDE(_bss_size = SIZEOF(.bss)); PROVIDE(_data_start = ADDR(.data)); @@ -278,6 +264,7 @@ SECTIONS + _WorkspaceBase = .; __WorkspaceBase = .; . += WorkSpaceSize;