Commit graph

78 commits

Author SHA1 Message Date
Tijl Coosemans
911127a0d6 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
Warner Losh
cd2ae2532f 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
Warner Losh
e8dce5b9b3 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
Juli Mallett
8da70fdc42 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
Juli Mallett
5619a3e4bf 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
David E. O'Brien
680e78b305 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
Warner Losh
56ac80ce81 Make little endian compiles produce little endian binaries on mips.
Submitted by:	neel@
2010-03-05 21:24:41 +00:00
David Schultz
14b55f2f95 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
Alexander Kabaev
afb57df680 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
Alexander Kabaev
04d56e6287 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
Warner Losh
a817992dfc 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
David E. O'Brien
8df64a7d4f We don't need this library any more. 2002-06-04 19:45:09 +00:00
David E. O'Brien
3cdd876f04 Bmake bits for Gcc 3.1.
Partially made possible by:	Wilko.Bulte@compaq.com
2002-05-10 08:54:50 +00:00
David E. O'Brien
baef823236 The GCC target name does not always match our platform's name.
MFC: rev 1.61 (needed a different way to keep from multiple inclusion)
2002-05-07 01:26:58 +00:00
David E. O'Brien
e5ccba11ac 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
David E. O'Brien
9e3b001017 Bmake bits for GCC 3.1. 2002-04-06 23:18:01 +00:00
David E. O'Brien
fda035bb2c MFC: remove 2.6.3 cc_int shlib cruft and s/GNU_ARCH/TARGET_ARCH/g. 2002-04-04 18:30:57 +00:00
David E. O'Brien
5ccf2039e4 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
David E. O'Brien
0f0016ae39 Remove some 1996 GCC 2.6.3 cruft for building a shared cc_int lib. 2002-04-03 03:18:15 +00:00
David E. O'Brien
fd6d292255 Properly get the version number after the 2.95.4 upgrade. 2002-03-21 01:34:56 +00:00
David E. O'Brien
3a7789cfeb Working changes for GCC 3.0.2. 2001-12-18 03:11:35 +00:00
David E. O'Brien
d549989694 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
David E. O'Brien
370d222b7f Remove MIPS support.
It has rotted quite badly and no one has provided updates for it.
2001-04-11 00:12:48 +00:00
David E. O'Brien
5064dbba95 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
David E. O'Brien
77765d0b13 Add comment about a requirement in using a 64-bit `long' on i386. 2000-11-10 16:56:38 +00:00
David E. O'Brien
c8a1d5ccc3 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 Price
dc886d4d77 Enable Haifa on sparc64 as well. 2000-04-02 22:51:02 +00:00
David E. O'Brien
658cec5b94 Move some cflag contents down to where they are acutally used. 2000-03-13 09:12:36 +00:00
David E. O'Brien
9c8a631de5 Merge cc_drv into cc_int. Merge more shared files into cc_int. 2000-01-24 20:12:05 +00:00
David E. O'Brien
253745e1fc 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
David E. O'Brien
8496474adb Fix cut-n-paste braino. 1999-12-22 05:34:56 +00:00
David E. O'Brien
636e7b0455 Another style nit. 1999-12-22 02:16:21 +00:00
David E. O'Brien
6a36d46ee4 * 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
David E. O'Brien
f4d206c621 * 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
David E. O'Brien
665fb296a7 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
David E. O'Brien
4f095fcfa7 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
David E. O'Brien
e91a7e08cf Allow sub-Makefile's to determine the version of the OS we are make'ing on. 1999-11-17 07:42:40 +00:00
David E. O'Brien
eb33411e9b Cut over the system compiler from from EGCS 1.1.2 to GCC 2.95.2. 1999-11-15 04:16:19 +00:00
David E. O'Brien
d0248b64a3 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 Wemm
9b7a44a60e $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
David E. O'Brien
b08a091980 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
David E. O'Brien
c4dfebb2a6 Only use Bison to generate cc1plus's parse code. 1999-08-01 15:44:51 +00:00
David E. O'Brien
33f62e7951 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
David E. O'Brien
62562698d8 Use Yacc rather than Bison. 1999-07-28 07:22:08 +00:00
David E. O'Brien
52ae8152fa 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
David E. O'Brien
a834cf28a5 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
David E. O'Brien
b414fa0fb0 Move HAVE_CONFIG_H define to global cc/ Makefile so all can share the benifits. 1999-04-18 09:42:56 +00:00
David E. O'Brien
1e2318cd6a *** empty log message *** 1999-04-18 09:41:49 +00:00
David E. O'Brien
0af4cf134e Include the parent Makefile.inc so we get a proper BINDIR definition.
As explained by:	bde
1999-04-18 09:36:11 +00:00
Peter Wemm
8961398416 Clean up some stuff that's no longer used. 1999-04-08 15:43:36 +00:00