From c4561f251d9b43a720afedb13d11b961e502f2ff Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 18 Mar 2003 18:16:43 +0000 Subject: 2003-03-18 Till Straumann PR 356/bsps * bsp_specs, start/Makefile.am, startup/linkcmds This patch makes RTEMS/powerpc/shared EABI compliant. Declare all linker-script defined addresses as variables of unknown size and not as short objects like 'int', 'void*' etc. This prevents the compiler from generating a relocation who assumes the existence of an __rtems_end object in one of the short data areas (which would result in a linker error). --- c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog | 13 +++++++++++++ c/src/lib/libbsp/powerpc/motorola_powerpc/bsp_specs | 2 +- .../libbsp/powerpc/motorola_powerpc/start/Makefile.am | 18 +++++++++++------- .../libbsp/powerpc/motorola_powerpc/startup/linkcmds | 4 +++- 4 files changed, 28 insertions(+), 9 deletions(-) (limited to 'c') diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog index 7364b16ebf..cb030b49e5 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog @@ -1,3 +1,16 @@ +2003-03-18 Till Straumann + + PR 356/bsps + * bsp_specs, start/Makefile.am, startup/linkcmds + This patch makes RTEMS/powerpc/shared EABI compliant. + Declare all linker-script defined addresses as + variables of unknown size and not as short objects + like 'int', 'void*' etc. + This prevents the compiler from generating a relocation + who assumes the existence of an __rtems_end object in + one of the short data areas (which would result in a + linker error). + 2003-03-06 Ralf Corsepius * configure.ac: Remove AC_CONFIG_AUX_DIR. diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/bsp_specs b/c/src/lib/libbsp/powerpc/motorola_powerpc/bsp_specs index 299fef913f..7aa7045a3f 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/bsp_specs +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/bsp_specs @@ -14,7 +14,7 @@ %{!qnolinkcmds: -T linkcmds%s}}} *startfile: -%{!qrtems: %(old_startfile)} %{!nostdlib: %{qrtems: ecrti%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}}} diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/start/Makefile.am b/c/src/lib/libbsp/powerpc/motorola_powerpc/start/Makefile.am index a4fc652bb6..74d402ace2 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/start/Makefile.am +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/start/Makefile.am @@ -4,7 +4,7 @@ VPATH = @srcdir@:@srcdir@/../../shared/start -S_FILES = start.S +S_FILES = start.S rtems_crti.S S_O_FILES = $(S_FILES:%.S=$(ARCH)/%.$(OBJEXT)) OBJS = $(S_O_FILES) @@ -15,18 +15,22 @@ include $(top_srcdir)/../../../../../../automake/lib.am # # (OPTIONAL) Add local stuff here using += # - -install-data-local: $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT) - @$(mkinstalldirs) $(DESTDIR)$(bsplibdir) - $(INSTALL_DATA) $< $(DESTDIR)$(bsplibdir) +bsplib_DATA = $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT) +bsplib_DATA += $(PROJECT_RELEASE)/lib/rtems_crti.$(OBJEXT) $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT): $(ARCH)/start.$(OBJEXT) $(INSTALL_DATA) $< $@ +$(PROJECT_RELEASE)/lib/rtems_crti.$(OBJEXT): $(ARCH)/rtems_crti.$(OBJEXT) + $(INSTALL_DATA) $< $@ + TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/start$(LIB_VARIANT).$(OBJEXT) +TMPINSTALL_FILES += $(PROJECT_RELEASE)/lib/rtems_crti.$(OBJEXT) + +all-local: $(ARCH) $(OBJS) $(ARCH)/start.$(OBJEXT) $(ARCH)/rtems_crti.$(OBJEXT) $(TMPINSTALL_FILES) -all-local: $(ARCH) $(OBJS) $(ARCH)/start.$(OBJEXT) $(TMPINSTALL_FILES) +$(OBJS): $(ARCH) -.PRECIOUS: $(ARCH)/start.$(OBJEXT) +.PRECIOUS: $(ARCH)/start.$(OBJEXT) $(ARCH)/rtems_crti.$(OBJEXT) include $(top_srcdir)/../../../../../../automake/local.am diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/startup/linkcmds b/c/src/lib/libbsp/powerpc/motorola_powerpc/startup/linkcmds index a5e515dc08..0e88c3664e 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/startup/linkcmds @@ -53,7 +53,7 @@ SECTIONS .rela.sdata2 : { *(.rela.sdata2) } > CODE .rela.sbss2 : { *(.rela.sbss2) } > CODE - .init : { _init = .; KEEP(*(.init)) } > CODE + .init : { KEEP(*(.init)) } > CODE .text : { @@ -97,6 +97,7 @@ SECTIONS .fini_array : { *(.fini_array) } >CODE PROVIDE (__fini_array_end = .); +_SDA2_BASE_ = __SDATA2_START__ + 0x8000; .sdata2 : { *(.sdata2) *(.gnu.linkonce.s2.*) } >CODE .sbss2 : { *(.sbss2) *(.gnu.linkonce.sb2.*) } >CODE .eh_frame : { *.(eh_frame) } >CODE @@ -191,6 +192,7 @@ SECTIONS /* 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. */ +_SDA_BASE_ = __SDATA_START__ + 0x8000; .sdata : { *(.sdata) *(.gnu.linkonce.s.*) } >CODE _edata = .; PROVIDE (edata = .); -- cgit v1.2.3