Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamar Christina <tamar.christina@arm.com>2017-07-05 15:02:30 +0300
committerCorinna Vinschen <corinna@vinschen.de>2017-07-05 15:41:27 +0300
commitcc142edbe7af2f7d52a80b137ac0ad141408033d (patch)
treed47177fbc7069c99737e37d0aa3701a391a8e637 /libgloss/arm
parentbfa3bbcf33a43bffb0a2d3287b1de97898a57c02 (diff)
Add the needed build system changes in order to compile and create the new libraries for Semihosting v2 for ARM.
This uses the new recursive build target in multi-build.in The new spec files are: For AArch32/ARM (m for mixed mode): - rdimon-v2m.specs - aprofile-validation-v2m.specs - aprofile-ve-v2m.specs These spec files will be using the new libraries generated by multi-build.in. Signed-off-by: Tamar Christina <tamar.christina@arm.com>
Diffstat (limited to 'libgloss/arm')
-rw-r--r--libgloss/arm/Makefile.in58
-rw-r--r--libgloss/arm/coff-rdimon-v2m.specs16
-rw-r--r--libgloss/arm/coff-rdimon.specs7
-rw-r--r--libgloss/arm/elf-aprofile-validation-v2m.specs23
-rw-r--r--libgloss/arm/elf-aprofile-validation.specs5
-rw-r--r--libgloss/arm/elf-aprofile-ve-v2m.specs22
-rw-r--r--libgloss/arm/elf-aprofile-ve.specs4
-rw-r--r--libgloss/arm/elf-rdimon-v2m.specs22
-rw-r--r--libgloss/arm/elf-rdimon.specs7
9 files changed, 147 insertions, 17 deletions
diff --git a/libgloss/arm/Makefile.in b/libgloss/arm/Makefile.in
index 3f87deae2..e1bad1710 100644
--- a/libgloss/arm/Makefile.in
+++ b/libgloss/arm/Makefile.in
@@ -29,8 +29,15 @@ MULTISRCTOP =
MULTIBUILDTOP =
MULTIDIRS =
MULTISUBDIR =
+MULTILIBNAME =
MULTIDO = true
MULTICLEAN = true
+MULTI_FLAGS_FOR_TARGET = MULTI_DEFAULT_FLAGS
+MULTI_DEFAULT_FLAGS = -DSEMIHOST_V2
+
+MULTIDIRS += semihv2m
+MULTIDIR_semihv2m_FLAGS = $(MULTI_DEFAULT_FLAGS) -DSEMIHOST_V2_MIXED_MODE
+MULTIDIR_semihv2m_NAME = -v2m
SHELL = /bin/sh
@@ -75,10 +82,12 @@ RDPMON_OBJS = ftruncate.o libcfunc.o syscalls.o trap.o truncate.o _exit.o _kill.
RDPMON_SCRIPTS = rdpmon.specs
RDPMON_INSTALL = install-rdpmon
-RDIMON_CRT0 = rdimon-crt0.o
-RDIMON_BSP = librdimon.a
+RDIMON_CRT0 = rdimon-crt0${${MULTILIBNAME}}.o
+RDIMON_BSP = librdimon${${MULTILIBNAME}}.a
RDIMON_OBJS = $(patsubst %,rdimon-%,$(RDPMON_OBJS))
-RDIMON_SCRIPTS = rdimon.specs aprofile-validation.specs aprofile-ve.specs
+RDIMON_SCRIPTS = rdimon${${MULTILIBNAME}}.specs \
+ aprofile-validation${${MULTILIBNAME}}.specs \
+ aprofile-ve${${MULTILIBNAME}}.specs
RDIMON_INSTALL = install-rdimon
CFLAGS = -g
@@ -110,6 +119,7 @@ all: ${CRT0} ${LINUX_CRT0} ${LINUX_BSP} ${REDBOOT_CRT0} ${REDBOOT_OBJS} ${RDPMON
else true; fi; \
else true; fi; \
done
+ $(MAKE) $(AM_MAKEFLAGS) all-recursive
#
# here's where we build the test programs for each target
@@ -121,33 +131,34 @@ test:
crt0.o: crt0.S
redboot-crt0.o: redboot-crt0.S
redboot-syscalls.o: redboot-syscalls.c $(srcdir)/../syscall.h
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -o $@ -c $<
rdpmon-crt0.o: crt0.S
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDP_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDP_MONITOR -o $@ -c $<
-rdimon-crt0.o: crt0.S
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+rdimon-crt0${${MULTILIBNAME}}.o: crt0.S
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-ftruncate.o: ftruncate.c
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-trap.o: trap.S
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-truncate.o: truncate.c
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-_exit.o: _exit.c
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-_kill.o: _kill.c
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-syscalls.o: syscalls.c
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
rdimon-libcfunc.o: libcfunc.c
- $(CC) $(CFLAGS_FOR_TARGET) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
+ $(CC) $(CFLAGS_FOR_TARGET) $($(MULTI_FLAGS_FOR_TARGET)) $(CFLAGS) $(INCLUDES) -DARM_RDI_MONITOR -o $@ -c $<
$(LINUX_BSP): $(LINUX_OBJS)
${AR} ${ARFLAGS} $@ $^
@@ -161,6 +172,23 @@ $(RDIMON_BSP): $(RDIMON_OBJS)
${AR} ${ARFLAGS} $@ $^
${RANLIB} $@
+# Multilib support.
+.PHONY: multi-do all-multi clean-multi install-multi
+
+all-recursive: all-multi
+clean-recursive: clean-multi
+install-recursive: install-multi
+
+# The $(MAKE) comments below are to enable parallel building.
+all-multi:
+ $(MAKE) $(AM_MAKEFLAGS) DO=all multi-do
+
+clean-multi:
+ $(MAKE) $(AM_MAKEFLAGS) DO=clean multi-do
+
+install-multi:
+ $(MAKE) $(AM_MAKEFLAGS) DO=install multi-do
+
clean mostlyclean:
rm -f a.out core *.i *.o *-test *.srec *.dis *.x $(SIM_BSP) $(IQ80310_BSP)
@rootpre=`pwd`/; export rootpre; \
@@ -172,6 +200,7 @@ clean mostlyclean:
else true; fi; \
else true; fi; \
done
+ $(MAKE) $(AM_MAKEFLAGS) clean-recursive
distclean maintainer-clean realclean: clean
rm -f Makefile config.status *~
@@ -187,6 +216,7 @@ install: ${CRT0_INSTALL} ${LINUX_INSTALL} ${REDBOOT_INSTALL} ${RDPMON_INSTALL} $
else true; fi; \
else true; fi; \
done
+ $(MAKE) $(AM_MAKEFLAGS) install-recursive
install-nano:
set -e; for x in ${NANO_SCRIPTS}; do ${INSTALL_DATA} ${srcdir}/${objtype}$$x $(DESTDIR)${tooldir}/lib${MULTISUBDIR}/$$x; done
@@ -228,3 +258,5 @@ Makefile: Makefile.in config.status @host_makefile_frag_path@
config.status: configure
$(SHELL) config.status --recheck
+
+include $(srcdir)/../multi-build.in \ No newline at end of file
diff --git a/libgloss/arm/coff-rdimon-v2m.specs b/libgloss/arm/coff-rdimon-v2m.specs
new file mode 100644
index 000000000..c0f723e9d
--- /dev/null
+++ b/libgloss/arm/coff-rdimon-v2m.specs
@@ -0,0 +1,16 @@
+# rdimon-v2m.specs
+#
+# Spec file for AArch64 baremetal newlib with version 2 of the
+# AngelAPI semi-hosting. This version is intended for AArch64/AArch32
+# mixed mode executables and as such uses the HLT trap instructions.
+#
+# This version supports extensibility through an extension mechanism.
+
+%rename link old_link
+
+*link:
+%(old_link) -lrdimon-v2m
+
+*startfile:
+rdimon-crt0-v2m%O%s
+
diff --git a/libgloss/arm/coff-rdimon.specs b/libgloss/arm/coff-rdimon.specs
index ace550614..89135cfba 100644
--- a/libgloss/arm/coff-rdimon.specs
+++ b/libgloss/arm/coff-rdimon.specs
@@ -1,3 +1,10 @@
+# rdimon.specs
+#
+# Spec file for AArch64 baremetal newlib with version 2 of the
+# AngelAPI semi-hosting using the SVC trap instruction.
+#
+# This version supports extensibility through an extension mechanism.
+
%rename link old_link
*link:
diff --git a/libgloss/arm/elf-aprofile-validation-v2m.specs b/libgloss/arm/elf-aprofile-validation-v2m.specs
new file mode 100644
index 000000000..accef99e1
--- /dev/null
+++ b/libgloss/arm/elf-aprofile-validation-v2m.specs
@@ -0,0 +1,23 @@
+# aprofile-validation-v2m.specs
+#
+# Spec file for AArch32 A profile baremetal newlib, libgloss on
+# VALIDATION platform with AngelAPI semi-hosting version 2 using the HLT
+# trap instruction.
+#
+# This Spec file is also appropriate for the foundation model.
+
+%rename link old_link
+
+*link:
+--defsym=_rdimon_vector_base=0x00000000 -Ttext-segment=0x00010000 %(old_link)
+
+%rename lib libc
+
+*libgloss:
+-lrdimon-v2m
+
+*lib:
+cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group
+
+*startfile:
+crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s}
diff --git a/libgloss/arm/elf-aprofile-validation.specs b/libgloss/arm/elf-aprofile-validation.specs
index 166a5dec6..4ef0e9510 100644
--- a/libgloss/arm/elf-aprofile-validation.specs
+++ b/libgloss/arm/elf-aprofile-validation.specs
@@ -1,7 +1,8 @@
-# aem-validation.specs
+# aprofile-validation.specs
#
# Spec file for AArch32 A profile baremetal newlib, libgloss on
-# VALIDATION platform with AngelAPI semi-hosting.
+# VALIDATION platform with AngelAPI semi-hosting version 2 using the SVC
+# trap instruction.
#
# This Spec file is also appropriate for the foundation model.
diff --git a/libgloss/arm/elf-aprofile-ve-v2m.specs b/libgloss/arm/elf-aprofile-ve-v2m.specs
new file mode 100644
index 000000000..75f380216
--- /dev/null
+++ b/libgloss/arm/elf-aprofile-ve-v2m.specs
@@ -0,0 +1,22 @@
+# aprofile-ve-v2m.specs
+#
+# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI
+# semi-hosting version 2 using the HLT trap instruction.
+#
+# This Spec file is also appropriate for the foundation model.
+
+%rename link old_link
+
+*link:
+--defsym=_rdimon_vector_base=0x80000000 -Ttext-segment=0x80010000 %(old_link)
+
+%rename lib libc
+
+*libgloss:
+-lrdimon-v2m
+
+*lib:
+cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group
+
+*startfile:
+crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s}
diff --git a/libgloss/arm/elf-aprofile-ve.specs b/libgloss/arm/elf-aprofile-ve.specs
index d94bb7a94..1461b34bf 100644
--- a/libgloss/arm/elf-aprofile-ve.specs
+++ b/libgloss/arm/elf-aprofile-ve.specs
@@ -1,7 +1,7 @@
-# aem-ve.specs
+# aprofile-ve.specs
#
# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI
-# semi-hosting.
+# semi-hosting version 2 using the SVC trap instruction.
#
# This Spec file is also appropriate for the foundation model.
diff --git a/libgloss/arm/elf-rdimon-v2m.specs b/libgloss/arm/elf-rdimon-v2m.specs
new file mode 100644
index 000000000..e4f2545a4
--- /dev/null
+++ b/libgloss/arm/elf-rdimon-v2m.specs
@@ -0,0 +1,22 @@
+# rdimon-v2m.specs
+#
+# Spec file for AArch64 baremetal newlib with version 2 of the
+# AngelAPI semi-hosting. This version is intended for AArch64/AArch32
+# mixed mode executables and as such uses the HLT trap instruction.
+#
+# This version supports extensibility through an extension mechanism.
+
+%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence
+
+*rdimon_libc:
+%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano}
+
+*rdimon_libgloss:
+%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano}
+
+*link_gcc_c_sequence:
+%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group
+
+*startfile:
+crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s}
+
diff --git a/libgloss/arm/elf-rdimon.specs b/libgloss/arm/elf-rdimon.specs
index c35061f3a..b4d020d77 100644
--- a/libgloss/arm/elf-rdimon.specs
+++ b/libgloss/arm/elf-rdimon.specs
@@ -1,3 +1,10 @@
+# rdimon.specs
+#
+# Spec file for AArch64 baremetal newlib with version 2 of the
+# AngelAPI semi-hosting using the SVC trap instruction.
+#
+# This version supports extensibility through an extension mechanism.
+
%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence
*rdimon_libc: