Add arm{,eb}--netbsdelf-eabi support. (still evolving)
This commit is contained in:
parent
27d763f8ca
commit
602e0146d8
3
external/gpl3/gcc/dist/config.sub
vendored
3
external/gpl3/gcc/dist/config.sub
vendored
@ -125,7 +125,8 @@ esac
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
|
||||
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
|
||||
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | \
|
||||
netbsd*-gnu* | netbsd*-eabi* | \
|
||||
kopensolaris*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
|
21
external/gpl3/gcc/dist/gcc/config.gcc
vendored
21
external/gpl3/gcc/dist/gcc/config.gcc
vendored
@ -722,11 +722,28 @@ arm*-*-freebsd*)
|
||||
tmake_file="${tmake_file} arm/t-arm arm/t-strongarm-elf"
|
||||
;;
|
||||
arm*-*-netbsdelf*)
|
||||
tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h arm/netbsd-elf.h"
|
||||
tmake_file="${tmake_file} arm/t-arm arm/t-netbsd"
|
||||
tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h"
|
||||
case ${target} in
|
||||
armeb*) tm_defines="${tm_defines} TARGET_ENDIAN_DEFAULT=MASK_BIG_END" ;;
|
||||
esac
|
||||
tmake_file="${tmake_file} arm/t-arm"
|
||||
case ${target} in
|
||||
arm*-*-netbsdelf-*eabi)
|
||||
tm_file="$tm_file arm/bpabi.h arm/netbsd-elf.h arm/netbsd-eabi.h"
|
||||
tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi"
|
||||
tmake_file="$tmake_file arm/t-netbsd-eabi"
|
||||
# The BPABI long long divmod functions return a 128-bit value in
|
||||
# registers r0-r3. Correctly modeling that requires the use of
|
||||
# TImode.
|
||||
need_64bit_hwint=yes
|
||||
# The EABI requires the use of __cxa_atexit.
|
||||
default_use_cxa_atexit=yes
|
||||
;;
|
||||
*)
|
||||
tm_file="$tm_file arm/netbsd-elf.h"
|
||||
tmake_file="$tmake_file arm/t-netbsd"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
arm*-*-netbsd*)
|
||||
tm_file="arm/aout.h arm/arm.h netbsd.h netbsd-aout.h arm/netbsd.h"
|
||||
|
@ -20,9 +20,11 @@
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Use the AAPCS ABI by default. */
|
||||
#undef ARM_DEFAULT_ABI
|
||||
#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
|
||||
|
||||
/* Assume that AAPCS ABIs should adhere to the full BPABI. */
|
||||
#undef TARGET_BPABI
|
||||
#define TARGET_BPABI (TARGET_AAPCS_BASED)
|
||||
|
||||
/* BPABI targets use EABI frame unwinding tables. */
|
||||
|
90
external/gpl3/gcc/dist/gcc/config/arm/netbsd-eabi.h
vendored
Normal file
90
external/gpl3/gcc/dist/gcc/config/arm/netbsd-eabi.h
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
/* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
|
||||
Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
|
||||
Contributed by Wasabi Systems, Inc.
|
||||
|
||||
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/>. */
|
||||
|
||||
/* Run-time Target Specification. */
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fputs (" (NetBSD/arm ELF EABI)", stderr);
|
||||
|
||||
/* Default to armv5t so that thumb shared libraries work.
|
||||
The ARM10TDMI core is the default for armv5t, so set
|
||||
SUBTARGET_CPU_DEFAULT to achieve this. */
|
||||
#undef SUBTARGET_CPU_DEFAULT
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
|
||||
|
||||
/* This defaults us to little-endian. */
|
||||
#ifndef TARGET_ENDIAN_DEFAULT
|
||||
#define TARGET_ENDIAN_DEFAULT 0
|
||||
#endif
|
||||
|
||||
/* TARGET_BIG_ENDIAN_DEFAULT is set in
|
||||
config.gcc for big endian configurations. */
|
||||
#undef TARGET_LINKER_EMULATION
|
||||
#if TARGET_ENDIAN_DEFAULT == MASK_BIG
|
||||
#define TARGET_LINKER_EMULATION "armelfb_nbsd_eabi"
|
||||
#else
|
||||
#define TARGET_LINKER_EMULATION "armelf_nbsd_eabi"
|
||||
#endif
|
||||
|
||||
#undef MULTILIB_DEFAULTS
|
||||
|
||||
/* Default it to use ATPCS with soft-VFP. */
|
||||
#undef TARGET_DEFAULT
|
||||
#define TARGET_DEFAULT \
|
||||
(MASK_APCS_FRAME \
|
||||
| TARGET_ENDIAN_DEFAULT)
|
||||
|
||||
#undef ARM_DEFAULT_ABI
|
||||
#define ARM_DEFAULT_ABI ARM_ABI_AAPCS_LINUX
|
||||
|
||||
#undef TARGET_OS_CPP_BUILTINS
|
||||
#define TARGET_OS_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
TARGET_BPABI_CPP_BUILTINS(); \
|
||||
NETBSD_OS_CPP_BUILTINS_ELF(); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#undef SUBTARGET_CPP_SPEC
|
||||
#define SUBTARGET_CPP_SPEC NETBSD_CPP_SPEC
|
||||
|
||||
#undef SUBTARGET_EXTRA_ASM_SPEC
|
||||
#define SUBTARGET_EXTRA_ASM_SPEC \
|
||||
"-matpcs %{!mabi=*|mabi=aapcs*:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
|
||||
|
||||
/* Default to full VFP if -mhard-float is specified. */
|
||||
#undef SUBTARGET_ASM_FLOAT_SPEC
|
||||
#define SUBTARGET_ASM_FLOAT_SPEC \
|
||||
"%{mhard-float:{!mfpu=*:-mfpu=vfp}} \
|
||||
%{mfloat-abi=hard:{!mfpu=*:-mfpu=vfp}}"
|
||||
|
||||
#undef SUBTARGET_EXTRA_SPECS
|
||||
#define SUBTARGET_EXTRA_SPECS \
|
||||
{ "subtarget_extra_asm_spec", SUBTARGET_EXTRA_ASM_SPEC }, \
|
||||
{ "subtarget_asm_float_spec", SUBTARGET_ASM_FLOAT_SPEC }, \
|
||||
{ "netbsd_link_spec", NETBSD_LINK_SPEC_ELF }, \
|
||||
{ "netbsd_entry_point", NETBSD_ENTRY_POINT },
|
||||
|
||||
#define NETBSD_ENTRY_POINT "__start"
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC \
|
||||
"-X %{mbig-endian:-EB} %{mlittle-endian:-EL} \
|
||||
%(netbsd_link_spec)"
|
@ -40,6 +40,7 @@
|
||||
#undef ARM_DEFAULT_ABI
|
||||
#define ARM_DEFAULT_ABI ARM_ABI_ATPCS
|
||||
|
||||
#undef TARGET_OS_CPP_BUILTINS
|
||||
#define TARGET_OS_CPP_BUILTINS() \
|
||||
do \
|
||||
{ \
|
||||
@ -52,7 +53,7 @@
|
||||
|
||||
#undef SUBTARGET_EXTRA_ASM_SPEC
|
||||
#define SUBTARGET_EXTRA_ASM_SPEC \
|
||||
"-matpcs %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
|
||||
"-matpcs %{mabi=aapcs*:-meabi=4} %{fpic|fpie:-k} %{fPIC|fPIE:-k}"
|
||||
|
||||
/* Default to full VFP if -mhard-float is specified. */
|
||||
#undef SUBTARGET_ASM_FLOAT_SPEC
|
||||
|
28
external/gpl3/gcc/dist/gcc/config/arm/t-netbsd-eabi
vendored
Normal file
28
external/gpl3/gcc/dist/gcc/config/arm/t-netbsd-eabi
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
# Copyright (C) 2005, 2009 Free Software Foundation, Inc.
|
||||
#
|
||||
# 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/>.
|
||||
|
||||
# Use a version of div0 which raises SIGFPE, and a special __clear_cache.
|
||||
#LIB1ASMFUNCS += \
|
||||
# _ashldi3 _ashrdi3 _divdi3 _floatdidf _udivmoddi4 _umoddi3 \
|
||||
# _udivdi3 _lshrdi3 _moddi3 _muldi3 _negdi2 _cmpdi2 \
|
||||
# _fixdfdi _fixsfdi _fixunsdfdi _fixunssfdi _floatdisf \
|
||||
# _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
|
||||
# _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
|
||||
# _fixsfsi _fixunssfsi
|
||||
LIB1ASMFUNCS += \
|
||||
_floatundisf
|
Loading…
Reference in New Issue
Block a user