summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2003-03-18 18:16:43 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2003-03-18 18:16:43 +0000
commitc4561f251d9b43a720afedb13d11b961e502f2ff (patch)
tree006bc4b3e91b114047b6e43da81327d27115f17a /c/src/lib/libbsp/powerpc
parent2003-03-18 Joel Sherrill <joel@OARcorp.com> (diff)
downloadrtems-c4561f251d9b43a720afedb13d11b961e502f2ff.tar.bz2
2003-03-18 Till Straumann <strauman@slac.stanford.edu>
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).
Diffstat (limited to 'c/src/lib/libbsp/powerpc')
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog13
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/bsp_specs2
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/start/Makefile.am18
-rw-r--r--c/src/lib/libbsp/powerpc/motorola_powerpc/startup/linkcmds4
4 files changed, 28 insertions, 9 deletions
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 <strauman@slac.stanford.edu>
+
+ 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 <corsepiu@faw.uni-ulm.de>
* 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 = .);