79 Commits

Author SHA1 Message Date
andrew
d588d5723d Remove MK_ARM_EABI, the armeb issues have been fixed. The code to support
the oabi is still in the tree, but it is expected this will be removed
as developers work on surrounding code.

With this commit the ARM EABI is the only supported supported ABI by
FreeBSD on ARMa 32-bit processors.

X-MFC after:	never
Relnotes:	yes
Differential Revision: https://reviews.freebsd.org/D876
2014-10-01 08:26:51 +00:00
imp
2118f42afd Use src.opts.mk in preference to bsd.own.mk except where we need stuff
from the latter.
2014-05-06 04:22:01 +00:00
andreast
dc7aaa00b9 Fix cross compilation after r258428.
Reviewed by:	pfg
2013-11-21 21:05:11 +00:00
andrew
9b858bb6f0 Add compiler support for the ARM EABI.
ARM EABI support is disabled by default and can be enabled by setting
WITH_ARM_EABI when building, however only the kernel-toolchain target will
work with this flag until the rest of the support is added.
2013-01-17 05:56:28 +00:00
gonzo
b501ab9dc9 Merging of projects/armv6, part 3
r238211:
Support TARGET_ARCH=armv6 and TARGET_ARCH=armv6eb

This adds a new TARGET_ARCH for building on ARM
processors that support the ARMv6K multiprocessor
extensions.  In particular, these processors have
better support for TLS and mutex operations.

This mostly touches a lot of Makefiles to extend
existing patterns for inferring CPUARCH from ARCH.
It also configures:
 * GCC to default to arm1176jz-s
 * GCC to predefine __FreeBSD_ARCH_armv6__
 * gas to default to ARM_ARCH_V6K
 * uname -p to return 'armv6'
 * make so that MACHINE_ARCH defaults to 'armv6'
It also changes a number of headers to use
the compiler __ARM_ARCH_XXX__ macros to configure
processor-specific support routines.

Submitted by:	Tim Kientzle <kientzle@freebsd.org>
2012-08-15 03:21:56 +00:00
tijl
69f9492737 Remove unused support for 64 bit long on 32 bit architectures.
It was used mainly to discover and fix some 64-bit portability problems
before 64-bit arches were widely available.

Discussed with:	bde
Approved by:	kib (mentor)
2011-01-07 22:57:31 +00:00
imp
54d5c7e86f Retire TARGET_ABI.
Implement MACHINE_ARCH=mips64e[lb] to build N64 images.  This replaces
MACHINE_ARCH=mipse[lb] TARGET_ABI=n64.

MACHINE_ARCH=mipsn32e[lb] has been added, but currently requires
WITHOUT_CDDL due to atomic issues in libzfs.  I've not investigated
this much, but implemented this to preserve as much of the TARGET_ABI
functionality that I could.  Since its presence doesn't affect the
working cases, I've kept it in for now.

Added mips64e[lb] to make universe, so more kernels build.

And I think this (finally) closes the curtain on the tbemd tree.
2011-01-07 20:26:33 +00:00
imp
c178b8695e Complete the integration of tbemd branch into head.
TARGET_BIG_ENDIAN is now completely dead, except where it was
originally supposed to be used (internally in the toolchain building).

TARGET_ARCH has changed in three cases:
(1) Little endian mips has changed to mipsel.
(2) Big endian mips has changed to mipseb.
(3) Big endian arm has changed to armeb.

Some additional changes are needed to make 'make universe' work on arm
and mips after this change, so those are commented out for now.

UPDATING information will be forthcoming.  Any remaining rough edges
will be hammered out in -current.
2010-11-10 06:39:49 +00:00
jmallett
4fa69f6443 Fix build for O32 systems without a TARGET_CPUTYPE defined. We must default to
MIPS-III because FreeBSD relies on a number of MIPS-III features; the ABI
default would be MIPS-I which we don't intend to support.  Our old default
before I switched to using the ABI default was MIPS32.
2010-06-02 21:15:00 +00:00
jmallett
ef36c6939e Add/improve mips64r2, Octeon, n32 and n64 support in the toolchain.
o) Add TARGET_ABI to the MIPS toolchain build process.  This sets the default
   ABI to one of o32, n32 or n64.  If it is not set, o32 is assumed as that is
   the current default.
o) Set the default GCC cpu type to any specified TARGET_CPUTYPE.  This is
   necessary to have a working "cc" if e.g. mips64 is specified, as binutils
   will refuse to link objects using different ISAs in some cases.
o) Add support for n32 and n64 ABIs to binutils and GCC.
o) Add additional required libgcc2 stubs for n32 and n64.
o) Add support for the "mips64r2" architecture to GCC.  Add the "octeon"
o) When static linking, wrap default libraries in --start-group and
   --end-group.  This is required for static linking to work on n64 with the
   interdependencies between libraries there.  This is what other OSes that
   support n64 seem to do, as well.
o) Fix our GCC spec to define __mips64 for 64-bit targets, not __mips64__, the
   former being what libgcc, etc., check and the latter seemingly being a
   misspelling of a hand merge from a Linux spec.
o) When no TARGET_CPUTYPE is specified at build time, make GCC take the default
   ISA from the ABI.  Our old defaults were too liberal and assumed that 64-bit
   ABIs should default to the MIPS64 ISA and that 32-bit ABIs should default to
   the MIPS32 ISA, when we are supporting or will support some systems based on
   earlier 32-bit and 64-bit ISAs, most notably MIPS-III.
o) Merge a new opcode file (and support code) from a later version of binutils
   and add flags and code necessary to support Octeon-specific instructions.
   This should also make merging opcodes for other modern architectures easier.

Reviewed by:	imp
2010-06-02 11:06:03 +00:00
obrien
32d515bca0 Non-GCC gcc compatible compilers may provide the same multimedia intrinsic
headers as GCC, but of their own implementation.  So put the GCC ones into
their own header "namespace".

Requested by:	ed
2010-05-12 19:59:32 +00:00
imp
b66fb663ce Make little endian compiles produce little endian binaries on mips.
Submitted by:	neel@
2010-03-05 21:24:41 +00:00
das
6335284962 Fix build breakage due to the interplay between r189801 and r189824.
In particular, vendor sources that aren't ready for gnu99 should
still be compiled with gnu89. (Before r189824, these would have
generated warnings if you tried to compile them in gnu99 mode,
but the warnings went unheeded due to -Wno-error.)
2009-03-14 22:50:03 +00:00
kan
ebf45ed0c9 Update bmake glue to build GCC 4.2.
Also:
        Switch FreeBSD to use libgcc_s.so.1.

        Use dl_iterate_phdr to locate shared objects' exception frame
        info instead of depending on older register_frame_info machinery.
        This allows us to avoid depending on libgcc_s.so.1 in binaries
        that do not use exception handling directly. As an additional
        benefit it breaks circular libc <=> libgcc_s.so.1 dependency too.

        Build newly added libgomp.so.1 library, the runtime support
        bits for OpenMP.

        Build LGPLed libssp library. Our libc provides our own
        BSD-licensed SSP callbacks implementation, so this library
        is only built to benefit applications that have hadcoded
        knowledge of libssp.so and libssp_nonshared.a. When linked
        in from command line, these libraries override libc
        implementation.
2007-05-19 04:25:59 +00:00
kan
f85d4141ea Minor Makefile cleanup. Do not use Makefile variables named 'version' and
'target'. Latter is problematic in particular as apparently FreeBSD's
bsd.prog.mk re-defines it under some circumstances. This causes an
unexpected failures like -dumpmachine not working for cc while working
fine for c++.

Do not re-define IN_GCC in multipe places, it gets inherited from
Makefile.in anyway.

PR:		gnu/110143
Submitted by:	usleepless at gmail
2007-03-12 00:28:06 +00:00
imp
3f3c42f60e Add additional support for generating code for the arm. There's still
a few issues in other parts of the tree, but those will be resolved
separately.

Submitted by: cogenet@
Reviewed by: kan@, obrien@
MFC After: 5 days
2006-09-18 17:08:32 +00:00
obrien
de6ca3ba07 We don't need this library any more. 2002-06-04 19:45:09 +00:00
obrien
dfe16a29fa Bmake bits for Gcc 3.1.
Partially made possible by:	Wilko.Bulte@compaq.com
2002-05-10 08:54:50 +00:00
obrien
84b82bd4fa Don't use "GCCDIR" as the multiple inclusion protector. Subdir Makefiles
may want to override GCCDIR and this gets in the way.
2002-04-23 00:10:18 +00:00
obrien
7826a0319a Get rid of GCC_ARCH, and just use plain TARGET_ARCH.
We got rid of the MIPS le/be stuff that needed this a long time ago.
2002-04-04 00:11:00 +00:00
obrien
8cae6e209f Remove some 1996 GCC 2.6.3 cruft for building a shared cc_int lib. 2002-04-03 03:18:15 +00:00
obrien
1dac03fb5e Properly get the version number after the 2.95.4 upgrade. 2002-03-21 01:34:56 +00:00
obrien
cd3f3aab8e Add the `WANT_FORCE_OPTIMIZATION_DOWNGRADE' knob. If set to an integer
value, it forces GCC to not optimize above this level.  For intance, GCC
made with "WANT_FORCE_OPTIMIZATION_DOWNGRADE=1" is a good setting for the
Alpha platform when building ports.
2001-08-16 06:05:18 +00:00
obrien
686317c48c Remove MIPS support.
It has rotted quite badly and no one has provided updates for it.
2001-04-11 00:12:48 +00:00
obrien
c6f64d9c75 Define "FREEBSD_NATIVE" in the freebsd-native header to reduce the amount
of stuff (and thus length of error output) we put on the invocation command
line.  Also follow the new FSF/GNU style of giving the symbol a value so it
can be used in `if()' statements in addition to `#if' so seldomly compiled
in code (on some platforms) gets compiled always, to help reduce bit-rot.
2001-03-02 02:56:59 +00:00
obrien
032b642254 Add comment about a requirement in using a 64-bit `long' on i386. 2000-11-10 16:56:38 +00:00
obrien
7b694b0fc3 Scoot things over to the temporary *.295 source while I do major construction
on the mainline sources.
2000-06-04 06:56:23 +00:00
steve
6ae88f375e Enable Haifa on sparc64 as well. 2000-04-02 22:51:02 +00:00
obrien
e0445c9696 Move some cflag contents down to where they are acutally used. 2000-03-13 09:12:36 +00:00
obrien
b057923619 Merge cc_drv into cc_int. Merge more shared files into cc_int. 2000-01-24 20:12:05 +00:00
obrien
c34ec3d7da Allow the specification of a prefix for gcc to find all the various bits.
If one wishes to anchor the compiler toolchain tree somewhere other than /,
all one needs to do is set "TOOLS_PREFIX" to a different rooting.

Submitted by:	marcel (in a different format and reworked by me)
1999-12-29 14:42:46 +00:00
obrien
f6e9d3853b Fix cut-n-paste braino. 1999-12-22 05:34:56 +00:00
obrien
710e9c2403 Another style nit. 1999-12-22 02:16:21 +00:00
obrien
fe78d9d4b4 * Support a non-default sized `long' data type. This allows one to easily
build the compiler with a 64-bit longs on the i386.
* Comment an important dependancy.
* Fix some style nits

Submitted by:	bde
1999-12-22 02:03:28 +00:00
obrien
e54126e848 * Remove debugging cruft that accidently got committed.
* Support mixed OBJDIR handling such .a's are properly found with a mix of
  obj subdirs both w/in and outside the source tree works.  Requested by BDE.
1999-12-22 01:56:57 +00:00
obrien
21ba2a28bd Add libcc_fbsd.a that contains libc and libiberty routines needed in
bootstraping on FreeBSD specifically.

3.2 upgrade path tested by:	marcel
1999-12-19 20:22:42 +00:00
obrien
a0fd1a8f5c Remove the `sysctl' get osversion hack. There are issues with cross-hosting
builds, Also, `sysctl' is not a build-tool and I'd rather not make it one.
3-STABLE has been updated to deal with the main reason this came in.
1999-11-20 00:28:03 +00:00
obrien
6f0a47ff70 Allow sub-Makefile's to determine the version of the OS we are make'ing on. 1999-11-17 07:42:40 +00:00
obrien
f62e7fc20c Cut over the system compiler from from EGCS 1.1.2 to GCC 2.95.2. 1999-11-15 04:16:19 +00:00
obrien
1dc4a82010 Move -I of cc_tool/ before the GCCDIR ones.
When I imported EGCS into contrib/egcs/ I failed to prune out
egcs/gcc/cp/hash.h which is generated from gxx.gperf.  Thus `cc1plus' wasn't
using the hash.h we generated by cc/cc_tools/Makefile, but rather the one in
egcs/gcc/cp/.

When I imported contrib/gcc/ I did prune gcc/cp/hash.h.  Unfortunately the
GCC maintainers weren't smart on their file nameing and there is also a
egcs/gcc/hash.h (name overloading does NOT work as well on the filesystem
as in C++...).  Due to the -I ordering we are were then picking up gcc/hash.h
when compiling `cc1plus'.
1999-10-12 20:22:38 +00:00
peter
289c0d262f $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
obrien
b3af8b5f4b Purely cosmetic cleanups.
- Id tag layout wrong.
 - "FOO =" -> "FOO=".
 - 4 space indention on continuation lines rather than a <tab>

Basic idea checked by:	bde
1999-08-16 04:10:48 +00:00
obrien
3766f18249 Only use Bison to generate cc1plus's parse code. 1999-08-01 15:44:51 +00:00
obrien
f979029f4c Go back to using Bison for now, due to `make world' breakage.
BTW, if our src/contrib/bison is upgraded from 1.25 to the current 1.27
offering, the build breaks exactly the same way....
1999-07-29 09:49:29 +00:00
obrien
ebe74fdfd5 Use Yacc rather than Bison. 1999-07-28 07:22:08 +00:00
obrien
a099f8cc73 Sorry didn't get this in the last commit: MACHINE_ARCH changes courtesy
of Warner Losh <imp@village.org>.  (he's got plans for FreeBSD mips :-))
1999-04-22 20:12:21 +00:00
obrien
c506ddebe9 Use GNU_ARCH' in most places where MACHINE_ARCH' was used. Building for
mips has some particularlies.
1999-04-22 19:35:16 +00:00
obrien
025141faad Move HAVE_CONFIG_H define to global cc/ Makefile so all can share the benifits. 1999-04-18 09:42:56 +00:00
obrien
97db6d0b10 *** empty log message *** 1999-04-18 09:41:49 +00:00
obrien
c00cfee64b Include the parent Makefile.inc so we get a proper BINDIR definition.
As explained by:	bde
1999-04-18 09:36:11 +00:00