Toolchain adaptation for ARM MINIX support
This commit is contained in:
parent
13c63491af
commit
b86af8be0b
12 changed files with 146 additions and 57 deletions
|
@ -26,7 +26,7 @@ touch-genfiles:
|
|||
|
||||
.mfs.o:
|
||||
${_MKTARGET_CREATE}
|
||||
${OBJCOPY} -Ibinary -B${MACHINE_ARCH} -O${MACHINE_GNU_PLATFORM} $< $@
|
||||
${OBJCOPY} -Ibinary -B${MACHINE_CPU} -O${MACHINE_GNU_PLATFORM} $< $@
|
||||
|
||||
CLEANFILES+= ../ramdisk/image
|
||||
../ramdisk/image: .PHONY
|
||||
|
|
|
@ -168,7 +168,7 @@ diff -r -x CVS -N -U 3 dist.orig/ld/emulparams/armelf_minix.sh dist/ld/emulparam
|
|||
@@ -0,0 +1,3 @@
|
||||
+. ${srcdir}/emulparams/armelf.sh
|
||||
+. ${srcdir}/emulparams/elf_minix.sh
|
||||
+OUTPUT_FORMAT="elf32-littlearm-minix"
|
||||
+OUTPUT_FORMAT="elf32-littlearm"
|
||||
diff -r -x CVS -N -U 3 dist.orig/ld/emulparams/elf_i386_minix.sh dist/ld/emulparams/elf_i386_minix.sh
|
||||
--- dist.orig/ld/emulparams/elf_i386_minix.sh 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ dist/ld/emulparams/elf_i386_minix.sh 2012-10-31 17:47:37.869917589 +0100
|
||||
|
|
1
external/gpl3/gcc/fetch.sh
vendored
1
external/gpl3/gcc/fetch.sh
vendored
|
@ -39,6 +39,7 @@ then
|
|||
cat ../patches/* | patch -p1 && \
|
||||
cp ../files/minix.h gcc/config/ && \
|
||||
cp ../files/minix-spec.h gcc/config/ && \
|
||||
cp ../files/arm-minix.h gcc/config/arm/minix.h && \
|
||||
cp ../files/i386-minix.h gcc/config/i386/minix.h && \
|
||||
cp ../files/gcov-minix-fs-wrapper.h gcc/
|
||||
fi
|
||||
|
|
69
external/gpl3/gcc/files/arm-minix.h
vendored
Normal file
69
external/gpl3/gcc/files/arm-minix.h
vendored
Normal file
|
@ -0,0 +1,69 @@
|
|||
/* Definitions for StrongARM running FreeBSD using the ELF format
|
||||
Copyright (C) 2001, 2004, 2007 Free Software Foundation, Inc.
|
||||
Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published
|
||||
by the Free Software Foundation; either version 3, or (at your
|
||||
option) any later version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
||||
#undef MINIX_TARGET_CPU_CPP_BUILTINS
|
||||
#define MINIX_TARGET_CPU_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
TARGET_BPABI_CPP_BUILTINS(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
/************************[ Target stuff ]***********************************/
|
||||
|
||||
/* Define the actual types of some ANSI-mandated types.
|
||||
Needs to agree with <machine/ansi.h>. GCC defaults come from c-decl.c,
|
||||
c-common.c, and config/<arch>/<arch>.h. */
|
||||
|
||||
/* arm.h gets this wrong for FreeBSD. We use the GCC defaults instead. */
|
||||
|
||||
#undef SIZE_TYPE
|
||||
#define SIZE_TYPE "unsigned int"
|
||||
|
||||
#undef PTRDIFF_TYPE
|
||||
#define PTRDIFF_TYPE "int"
|
||||
|
||||
#undef WCHAR_TYPE
|
||||
#define WCHAR_TYPE "int"
|
||||
|
||||
/* Little endian by default */
|
||||
#undef TARGET_ENDIAN_DEFAULT
|
||||
#define TARGET_ENDIAN_DEFAULT 0
|
||||
|
||||
/* Use by default the new abi and calling standard */
|
||||
#undef ARM_DEFAULT_ABI
|
||||
#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
|
||||
|
||||
/* Fixed-sized enum by default (-fno-short-enums) */
|
||||
#undef CC1_SPEC
|
||||
#define CC1_SPEC \
|
||||
"%{!fshort-enums:%{!fno-short-enums:-fno-short-enums}} "
|
||||
|
||||
/* This defaults us to little-endian. */
|
||||
#ifndef TARGET_ENDIAN_DEFAULT
|
||||
#define TARGET_ENDIAN_DEFAULT 0
|
||||
#endif
|
||||
|
||||
#undef SUBTARGET_CPU_DEFAULT
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_cortexa8
|
||||
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fputs (" (MINIX/arm ELF EABI)", stderr);
|
41
external/gpl3/gcc/files/i386-minix.h
vendored
41
external/gpl3/gcc/files/i386-minix.h
vendored
|
@ -36,7 +36,7 @@ Boston, MA 02110-1301, USA. */
|
|||
} \
|
||||
while (0)
|
||||
|
||||
#define TARGET_VERSION fprintf (stderr, " (i386 MINIX/ELF)");
|
||||
#define TARGET_VERSION fprintf (stderr, " (MINIX/i586 ELF)");
|
||||
|
||||
/* Override the default comment-starter of "/". */
|
||||
#undef ASM_COMMENT_START
|
||||
|
@ -71,43 +71,6 @@ Boston, MA 02110-1301, USA. */
|
|||
#undef WCHAR_TYPE_SIZE
|
||||
#define WCHAR_TYPE_SIZE (TARGET_64BIT ? 32 : BITS_PER_WORD)
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS /* i386.h bogusly defines it. */
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "minix_dynamic_linker", MINIX_DYNAMIC_LINKER }
|
||||
|
||||
#undef STARTFILE_SPEC
|
||||
#define STARTFILE_SPEC MINIX_STARTFILE_SPEC
|
||||
|
||||
#undef ENDFILE_SPEC
|
||||
#define ENDFILE_SPEC MINIX_ENDFILE_SPEC
|
||||
|
||||
/* Provide a LINK_SPEC appropriate for MINIX. Here we provide support
|
||||
for the special GCC options -static and -shared, which allow us to
|
||||
link things in one of these three modes by applying the appropriate
|
||||
combinations of options at link-time. We like to support here for
|
||||
as many of the other GNU linker options as possible. But I don't
|
||||
have the time to search for those flags. I am sure how to add
|
||||
support for -soname shared_object_name. H.J.
|
||||
|
||||
I took out %{v:%{!V:-V}}. It is too much :-(. They can use
|
||||
-Wl,-V.
|
||||
|
||||
When the -shared link option is used a final link is not being
|
||||
done. */
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "\
|
||||
%{p:%nconsider using `-pg' instead of `-p' with gprof(1)} \
|
||||
%{v:-V} \
|
||||
%{assert*} %{R*} %{rpath*} %{defsym*} \
|
||||
%{shared:-Bshareable %{h*} %{soname*}} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker %(minix_dynamic_linker) }} \
|
||||
%{static:-Bstatic}} \
|
||||
%{symbolic:-Bsymbolic}"
|
||||
|
||||
/* A C statement to output to the stdio stream FILE an assembler
|
||||
command to advance the location counter to a multiple of 1<<LOG
|
||||
bytes if it is within MAX_SKIP bytes.
|
||||
|
@ -130,3 +93,5 @@ Boston, MA 02110-1301, USA. */
|
|||
|
||||
#undef DEFAULT_PCC_STRUCT_RETURN
|
||||
#define DEFAULT_PCC_STRUCT_RETURN 0
|
||||
|
||||
#define SUBTARGET32_DEFAULT_CPU "i586"
|
||||
|
|
32
external/gpl3/gcc/files/minix-spec.h
vendored
32
external/gpl3/gcc/files/minix-spec.h
vendored
|
@ -90,13 +90,40 @@ Boston, MA 02110-1301, USA. */
|
|||
(similar to the default, except no -lg, and no -p). */
|
||||
|
||||
#define MINIX_LIB_SPEC " \
|
||||
%{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \
|
||||
%{pthread: %eThe -pthread option is only supported on MINIX when gcc \
|
||||
is built with the --enable-threads configure-time option.} \
|
||||
%{!shared: \
|
||||
%{!pg: -lc} \
|
||||
%{pg: -lc_p} \
|
||||
}"
|
||||
|
||||
/* Provide a LINK_SPEC appropriate for MINIX. Here we provide support
|
||||
for the special GCC options -static and -shared, which allow us to
|
||||
link things in one of these three modes by applying the appropriate
|
||||
combinations of options at link-time. We like to support here for
|
||||
as many of the other GNU linker options as possible. But I don't
|
||||
have the time to search for those flags. I am sure how to add
|
||||
support for -soname shared_object_name. H.J.
|
||||
|
||||
I took out %{v:%{!V:-V}}. It is too much :-(. They can use
|
||||
-Wl,-V.
|
||||
|
||||
When the -shared link option is used a final link is not being
|
||||
done. */
|
||||
|
||||
#define MINIX_LINK_SPEC " \
|
||||
%{p:%nconsider using `-pg' instead of `-p' with gprof(1) } \
|
||||
%{v:-V} \
|
||||
%{assert*} %{R*} %{rpath*} %{defsym*} \
|
||||
%{shared:-Bshareable %{h*} %{soname*}} \
|
||||
%{!shared: \
|
||||
%{!static: \
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker %(minix_dynamic_linker) }} \
|
||||
%{static:-Bstatic}} \
|
||||
%{symbolic:-Bsymbolic}"
|
||||
|
||||
|
||||
/* Under MINIX, just like on NetBSD, the normal location of the various
|
||||
* *crt*.o files is the /usr/lib directory. */
|
||||
|
||||
|
@ -106,3 +133,6 @@ is built with the --enable-threads configure-time option.} \
|
|||
#define STANDARD_STARTFILE_PREFIX_1 "/usr/lib/"
|
||||
|
||||
#define MINIX_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
|
||||
|
||||
#define MINIX_SUBTARGET_EXTRA_SPECS \
|
||||
{ "minix_dynamic_linker", MINIX_DYNAMIC_LINKER }
|
||||
|
|
9
external/gpl3/gcc/files/minix.h
vendored
9
external/gpl3/gcc/files/minix.h
vendored
|
@ -52,6 +52,14 @@ Boston, MA 02110-1301, USA. */
|
|||
#undef LIB_SPEC
|
||||
#define LIB_SPEC MINIX_LIB_SPEC
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC MINIX_LINK_SPEC
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS MINIX_SUBTARGET_EXTRA_SPECS
|
||||
|
||||
#undef SUBTARGET_CPP_SPEC
|
||||
#define SUBTARGET_CPP_SPEC MINIX_CPP_SPEC
|
||||
|
||||
/************************[ Target stuff ]***********************************/
|
||||
|
||||
|
@ -69,3 +77,4 @@ Boston, MA 02110-1301, USA. */
|
|||
This ensures the configuration knows our system correctly so we can link
|
||||
with libraries compiled with the native cc. */
|
||||
#undef NO_DOLLAR_IN_LABEL
|
||||
|
||||
|
|
8
external/gpl3/gcc/lib/libgcc/arch/earm.mk
vendored
8
external/gpl3/gcc/lib/libgcc/arch/earm.mk
vendored
|
@ -4,11 +4,19 @@
|
|||
#
|
||||
G_INCLUDES=-I. -I. -I${GNUHOSTDIST}/gcc -I${GNUHOSTDIST}/gcc/. -I${GNUHOSTDIST}/gcc/../include -I./../intl -I${GNUHOSTDIST}/gcc/../libcpp/include -I${GNUHOSTDIST}/gcc/../libdecnumber -I${GNUHOSTDIST}/gcc/../libdecnumber/dpd -I../libdecnumber
|
||||
G_LIB2ADD=${GNUHOSTDIST}/gcc/config/arm/bpabi-netbsd.c ${GNUHOSTDIST}/gcc/config/arm/unaligned-funcs.c
|
||||
.if !defined(__MINIX)
|
||||
G_LIB2ADDEH=${GNUHOSTDIST}/gcc/config/arm/unwind-arm.c ${GNUHOSTDIST}/gcc/config/arm/libunwind.S ${GNUHOSTDIST}/gcc/config/arm/pr-support.c ${GNUHOSTDIST}/gcc/unwind-c.c
|
||||
.endif # !defined(__MINIX)
|
||||
G_LIB2ADD_ST=
|
||||
.if !defined(__MINIX)
|
||||
G_LIB1ASMFUNCS=_thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi _thumb1_case_uhi _thumb1_case_si _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _lshrdi3 _ashrdi3 _ashldi3 _arm_negdf2 _arm_addsubdf3 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 _arm_negsf2 _arm_addsubsf3 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 _arm_fixsfsi _arm_fixunssfsi _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf _clzsi2 _clzdi2 _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod _floatundisf
|
||||
.else
|
||||
G_LIB1ASMFUNCS=_thumb1_case_sqi _thumb1_case_uqi _thumb1_case_shi _thumb1_case_uhi _thumb1_case_si _umodsi3 _modsi3 _dvmd_tls _bb_init_func _call_via_rX _interwork_call_via_rX _lshrdi3 _ashrdi3 _ashldi3 _arm_negdf2 _arm_cmpdf2 _arm_unorddf2 _arm_fixunsdfsi _arm_negsf2 _arm_cmpsf2 _arm_unordsf2 _arm_fixunssfsi _arm_floatdidf _arm_floatdisf _arm_floatundidf _arm_floatundisf _clzsi2 _clzdi2 _aeabi_lcmp _aeabi_ulcmp _aeabi_ldivmod _aeabi_uldivmod _floatundisf
|
||||
.endif # !defined(__MINIX)
|
||||
G_LIB1ASMSRC=arm/lib1funcs.asm
|
||||
.if !defined(__MINIX)
|
||||
G_LIB2_DIVMOD_FUNCS=_divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
|
||||
.endif # !defined(__MINIX)
|
||||
G_LIB2FUNCS_ST=_eprintf __gcc_bcmp
|
||||
G_LIB2FUNCS_EXTRA=${GNUHOSTDIST}/gcc/config/arm/bpabi-netbsd.c ${GNUHOSTDIST}/gcc/config/arm/unaligned-funcs.c
|
||||
G_LIBGCC2_CFLAGS=-O2 -DIN_GCC -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fno-inline -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED
|
||||
|
|
24
external/gpl3/gcc/patches/0001-minix.patch
vendored
24
external/gpl3/gcc/patches/0001-minix.patch
vendored
|
@ -10,23 +10,25 @@ diff -r -x CVS -N -U 3 dist.orig/gcc/config.gcc dist/gcc/config.gcc
|
|||
# The BPABI long long divmod functions return a 128-bit value in
|
||||
# registers r0-r3. Correctly modeling that requires the use of
|
||||
# TImode.
|
||||
@@ -808,7 +808,7 @@
|
||||
tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/bpabi.h"
|
||||
tmake_file="arm/t-arm arm/t-arm-elf"
|
||||
case ${target} in
|
||||
- arm*-*-eabi*)
|
||||
+ arm*-*-eabi* | arm*-*-minix*)
|
||||
tm_file="$tm_file arm/eabi.h newlib-stdint.h"
|
||||
tmake_file="${tmake_file} arm/t-bpabi"
|
||||
@@ -814,6 +814,12 @@
|
||||
extra_options="${extra_options} arm/eabi.opt"
|
||||
@@ -1148,6 +1148,14 @@
|
||||
use_gcc_stdint=wrap
|
||||
;;
|
||||
+ arm*-*-minix*)
|
||||
+ tm_file="$tm_file arm/eabi.h newlib-stdint.h minix-spec.h minix.h arm/minix.h"
|
||||
+ tmake_file="${tmake_file} arm/t-bpabi"
|
||||
+ extra_options="${extra_options} arm/eabi.opt"
|
||||
+ use_gcc_stdint=wrap
|
||||
+ ;;
|
||||
arm*-*-symbianelf*)
|
||||
tm_file="${tm_file} arm/symbian.h"
|
||||
# We do not include t-bpabi for Symbian OS because the system
|
||||
@@ -1148,6 +1154,12 @@
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
|
||||
tmake_file="${tmake_file} i386/t-crtstuff"
|
||||
;;
|
||||
+i[34567]86-*-minix)
|
||||
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h minix-spec.h minix.h i386/minix.h"
|
||||
+# tmake_file="t-slibgcc-elf-ver t-minix i386/t-minix"
|
||||
+# use_fixproto=yes
|
||||
+ gas=yes
|
||||
+ gnu_ld=yes
|
||||
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
|
||||
|
|
|
@ -28,10 +28,9 @@ AFLAGS+=-D__ASSEMBLY__
|
|||
CPPFLAGS+= -fno-builtin -Wall -Wno-sign-compare
|
||||
|
||||
.if ${MACHINE_ARCH} == "i386"
|
||||
CPPFLAGS+= -march=i586
|
||||
CPUFLAGS+= -march=i586
|
||||
.elif ${MACHINE_ARCH} == "arm"
|
||||
CPPFLAGS+= -march=armv7-a
|
||||
CPPFLAGS+= -D__minix
|
||||
CPUFLAGS+= -march=armv7-a -mfloat-abi=softfp
|
||||
.endif
|
||||
|
||||
# LSC In the current state there is too much to be done
|
||||
|
|
|
@ -713,10 +713,13 @@ SHLIB_VERSION_FILE?= ${.CURDIR}/shlib_version
|
|||
# GNU sources and packages sometimes see architecture names differently.
|
||||
#
|
||||
GNU_ARCH.coldfire=m68k
|
||||
# MINIX/arm default
|
||||
GNU_ARCH.earm=arm
|
||||
GCC_CONFIG_ARCH.earm=armv7-a
|
||||
GNU_ARCH.earmeb=armeb
|
||||
GNU_ARCH.i386=i486
|
||||
GCC_CONFIG_ARCH.i386=i486
|
||||
# MINIX/intel default
|
||||
GNU_ARCH.i386=i586
|
||||
GCC_CONFIG_ARCH.i386=i586
|
||||
GCC_CONFIG_TUNE.i386=nocona
|
||||
GCC_CONFIG_TUNE.x86_64=nocona
|
||||
GNU_ARCH.m68000=m68010
|
||||
|
|
|
@ -2,6 +2,9 @@
|
|||
.include <bsd.own.mk>
|
||||
|
||||
# LSC Static linking, order matters!
|
||||
# We can't use --start-group/--end-group as they are not supported by our
|
||||
# version of clang.
|
||||
|
||||
# 1. No default libs
|
||||
LDADD+= -nodefaultlibs
|
||||
|
||||
|
|
Loading…
Reference in a new issue