History log of /freebsd-10.1-release/contrib/gcc/config/
Revision Date Author Comments
272461 03-Oct-2014 gjb

Copy stable/10@r272459 to releng/10.1 as part of
the 10.1-RELEASE process.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


270606 25-Aug-2014 ian

MFC r268994: C++ exception/unwind handling fix

Add FreeBSD to the list of environments that needs to handle R_ARM_TARGET2
relocations in unwind data as pc-relative indirect references.

Note that the commit log for r269792 incorrectly claims that it includes
this change, but I apparently fumbled it somehow, so this is the real MFC.


270099 17-Aug-2014 dim

MFC r269948:

Supplement r259111 by also using correct casts in gcc's emmintrin.h for
the first argument of the following builtin function:

* __builtin_ia32_psrlqi128() takes __v2di instead of __v4si

This should fix the following errors when building the graphics/webp
port with base gcc:

lossless_sse2.c:403: error: incompatible type for argument 1 of '__builtin_ia32_psrlqi128'
lossless_sse2.c:404: error: incompatible type for argument 1 of '__builtin_ia32_psrlqi128'

Reported by: Jos Chrispijn <ports@webrz.net>


265728 09-May-2014 pfg

MFC r265231:

gcc: fix strict alignment.

From the OpenBSD log:

x86-64 ABI requires arrays greater than 16 bytes to be aligned to
16byte boundary. However, GCC 16-byte aligns arrays of >=16 BITS,
not BYTES.

This diff improves bug detectability for code which has local arrays
of [16 .. 127] bits: in those cases SSP will now detect even 1-byte
overflows.

Obtained from: OpenBSD (CVS rev 1.4)


260573 12-Jan-2014 pfg

MFC r260310:

libcpp: misc fixes from Apple's GCC.

Fixes some bugs detected by Apple:
#error with unmatched quotes
pragma mark

Obtained from: Apple GCC 4.2 - 5553


260455 08-Jan-2014 pfg

MFC r259873:

gcc: small enhancements for the arm support.

fixes GCC-PR target/31152

Obtained from: gcc 4.3 (rev. r118461, 125973: GPLv2)


260395 07-Jan-2014 pfg

MFC r259841

gcc: Add ability to generate DWARF pubtypes section if
DEBUG_PUBTYPES_SECTION is defined.

Obtained from: gcc 4.3 (rev. 118826; GPLv2)


260139 31-Dec-2013 pfg

MFC r259525, r259526, r259529

gcc: small merges from upstream

fix ICE in rs6000 when using -fno-trapping-math.
Solves GCC-PR target/30485

Solve GCC issues:
PR middle-end/32602
PR middle-end/32603

Updates the to documentation and processing improvement.

Obtained from: gcc 4.3 (rev. 120902, 120902, 119427, 126278, 126422;
GPLv2)


260074 30-Dec-2013 pfg

MFC r259005, r259092:

gcc: Add -flax-vector-conversions
gcc: new fvisibility-ms-compat option

These are useful for compatibility with newwer gcc and clang.

Obtained from: gcc 4.3 (rev. 120572, 120688, 126088; GPLv2)


259947 27-Dec-2013 pfg

gcc: Merge upstream changes.

Include types in error message for build_binary_op.

Mostly cosmetic changes, to reduce differences with Apple's gcc.

Obtained from: gcc 4.3 (rev. 120611, 124839, 125239; GPLv2)


259583 19-Dec-2013 pfg

MFC r258651, r258943:
gcc: Altivec register adjustments from Apple.
gcc: On rs6000 update sp_offset depending only on size.

Tested by: Justin Hibbits
Obtained from: gcc pre-4.3 (rev. 124763, 125116; GPLv2)


259563 18-Dec-2013 pfg

MFC r258428, r258445

gcc: another round of merges from the gcc pre-43 branch.

Bring The following revisions from the gcc43 branch[1]:

118360, 118361, 118363, 118576, 119820,
123906, 125246, and 125721.

They all have in common that the were merged long ago
into Apple's gcc and should help improve the general
quality of the compiler and make it easier to bring
new features from Apple's gcc42.

For details please review the additions to the files:
gcc/ChangeLog.gcc43
gcc/cp/ChangeLog.gcc43 (new, adds previous revisions)

Fix crosscompilation (r258445 by andreast)
Reference:
[1] http://gcc.gnu.org/viewcvs/gcc/trunk/?pathrev=126700

Obtained from: gcc pre4.3 (GPLv2) branch
MFC after: 3 weeks


259268 12-Dec-2013 pfg

MFC r258081, r258138, r258143, r258179, r258157, r258204, 258205,
r258206, r258207, r258321

This is a series of commits inspired on Google's gcc-4.2.1 for
Android that were taken from the gcc pre-4.3 under the GPLv2.

gcc: Backport fixes for -W parentheses in C++
This fixes GCC 19564.
gcc: merge rs6000 change from FSF pre-gcc43
Don't set MASK_PPC_GFXOPT for 8540 or 8548.
Merge vrp-tree fix from gcc-4.3
Fix missed conversion from / to >> (GCC PR32521)
Merge in GCCr120505 to include definition of TREE_OVERFLOW_P
gcc: warn about integer overflow in constant expressions in the C++ frontend.
gcc: Add a new option -Wvla to warn variable length array.
libcpp: preprocessor speedup patches from upstream gcc.
gcc: add femit-struct-debug support to reduce Reduce dwarf debug size
gcc: Fix postreload-gcse treatment of call-clobbered registers.
gcc: Record some previous commits in the ChangeLog.gcc43 file.


259216 11-Dec-2013 dim

MFC r259111:

Use correct casts in gcc's emmintrin.h for the first arguments of the
following builtin functions:

* __builtin_ia32_pslldi128() takes __v4si instead of __v8hi
* __builtin_ia32_psllqi128() takes __v2di instead of __v8hi
* __builtin_ia32_psradi128() takes __v4si instead of __v8hi

This should fix the following errors when building the LINT kernel with
gcc:

sys/crypto/aesni/aesni_wrap.c:191: error: incompatible type for argument 1 of
'__builtin_ia32_psradi128'
sys/crypto/aesni/aesni_wrap.c:195: error: incompatible type for argument 1 of
'__builtin_ia32_pslldi128'


256281 10-Oct-2013 gjb

Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


255361 07-Sep-2013 andrew

On ARM EABI double precision floating point values are stored in the
endian the CPU is in, i.e. little-endian on most ARM cores.

This allows ARMv4 and ARMv5 boards to boot with the ARM EABI.


255185 03-Sep-2013 jmg

add support to gcc for AES and PCLMUL intrinsics... This addes the
-maes option, but not the -mpclmul option as I ran out of bits in
the 32 bit flags field... You can -D__PCLMUL__ to get this, but it
won't be compatible w/ clang and modern gcc...

Reviewed by: -current, -toolchain


255096 31-Aug-2013 andrew

Implement _Unwind_GetIP and _Unwind_GetIPInfo as functions as that is what
we expect on FreeBSD. The implementation is based on the existing macros.


255095 31-Aug-2013 andrew

Bring in gcc r128087 to add support for _Unwind_Backtrace on ARM. This is
prior to the licence change so is under the GPLv2.


251212 01-Jun-2013 pfg

GCC: bring back experimental support for amdfam10/barcelona CPUs.

Initial support for the AMD amdfam10 chipsets has been available in the
gcc43 branch under GPLv2. AMD and some linux distributions (OpenSUSE) did
a backport of the amdfam10 support and made it available.

This is a revised subset of the support initially brought in in r236962
and later reverted. The collateral efects seem to have disappeared but
it is still recommended to set the CPUTYPE with caution.

Reviewed by: jkim (ages ago)
MFC after: 3 weeks


250392 08-May-2013 dim

For some reason, the gcc intrinsics header tmmintrin.h was imported with
two copies of itself pasted together. Remove the extraneous copy.

MFC after: 3 days


246317 04-Feb-2013 andrew

Add #undef TARGET_DEFAULT back as it shouldn't have been removed in r245539


246314 04-Feb-2013 andrew

Allow the unwind functions int libgcc_s to interact correctly with libthr.

_Unwind_ForcedUnwind in libgcc_s takes as one of it's parameters a stop
function to tell it when to stop unwinding. One of the stop function's
parameters is a _Unwind_Exception_Class. On most architectures this is an
int64_t, however on ARM EABI the gcc developers have made this a char array
with 8 items. While both of these take the same space they are passed into
the stop function differently, an int64_t is passed in in registers r2 and
r3, while the char[8] is passed in as a pointer to the first item in
register r2.

Because libthr expects the value to be an int64_t we would get incorrect
results when it passes a function that take an int64_t but libgcc passes in
a pointer to a char array including crashing.

The fix is to update libgcc_s to make it pass an int64_t to the stop
function and to libstdc++ as it expects _Unwind_Exception_Class to be an
array.


245952 26-Jan-2013 pfg

Clean some 'svn:executable' properties in the tree.

Submitted by: Christoph Mallon
MFC after: 3 days


245539 17-Jan-2013 andrew

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.


245413 14-Jan-2013 andrew

Switch the default CPU to an arm9. This removes compiler support for the
unsupported 26-bit addressing mode. This change is required for moving to
the ARM EABI.


244276 15-Dec-2012 andrew

Don't define CTORS_SECTION_ASM_OP and DTORS_SECTION_ASM_OP on arm when
built with clang. When these are defined the lists are defined similar to:

asm(".section .ctors");
STATIC func_ptr __CTOR_LIST__[1] = { (func_ptr) (-1) };
asm(".section .dtors");
STATIC func_ptr __DTOR_LIST__[1] = { (func_ptr) (-1) };

The problem is clang will move the two arrays out of the .ctors and .dtors
sections causing these sections to contain a single null address. By not
defining these macros we use the version of the code that places the arrays
is their sections by using __attribute__((section(".ctors"))) and similar
for .dtors.

Submitted by: Daisuke Aoyama <aoyama AT peach.ne.jp>


242182 27-Oct-2012 kan

Follow clang lead and include mm_malloc.h only in hosted configurations.

This makes the use of intrinsics easier in kernel environment, according
to the submitter.

Requested by: jmg


239272 15-Aug-2012 gonzo

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>


238472 15-Jul-2012 kib

Pass --enable-new-dtags to the linker invocation by default. If
desired, one can turn off the generation of post-ELF standard dtags by
overriding it with --disable-new-dtags after the default switch.

Immediate effect of the change is that -rpath path is now stored both
in DT_RPATH and DT_RUNPATH tags, which is the right way to provide
rpath for dynamic linker supporting DT_RUNPATH per specification.

Reviewed by: kan
MFC after: 1 month


237099 14-Jun-2012 marius

Merge r236137 from x86:
Enable GNU hash generation for dynamic ELF binaries.


237021 13-Jun-2012 pfg

Revert r236962 - Experimental amdfam10/barcelona support.

The patches are unexpectedly causing gcc to fail while
building ports/graphics/ImageMagick even when the cpu
flags are not used.

Reported by: Andreas Tobler


236962 12-Jun-2012 pfg

Add experimental support for amdfam10/barcelona from the GCC 4.3 branch.

Initial support for the AMD barcelona chipsets has been available in the
gcc43 branch under GPLv2 but was not included when the Core 2 support
was brought to the system gcc.

AMD and some linux distributions (OpenSUSE) did a backport of the amdfam10
support and made them available. Unfortunately this is still experimental
and while it can improve performance, enabling the CPUTYPE may break some
C++ ports (like clang).

Special care was taken to make sure that the patches predate the GPLv3
switch upstream.

Tested by: Vladimir Kushnir
Reviewed by: mm
Approved by: jhb (mentor)
MFC after: 2 weeks


236329 30-May-2012 marius

Merge r236137 from x86:
Enable GNU hash generation for dynamic ELF binaries.

While at it, sync the order of options with x86 and pass along the verbose
flag.


236137 27-May-2012 kib

Enable gnu hash generation for dynamic ELF binaries on x86.

Reviewed by: kan


235623 18-May-2012 pfg

Bring in a subset of gcc fixes that were back ported to
the GCC 4.1 branch and are available under GPLv2.

2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>

PR rtl-optimization/33822
* rtl.h (REG_OFFSET): Fix comment.
* var-tracking.c (INT_MEM_OFFSET): New macro.
(var_mem_set): Use it.
(var_mem_delete_and_set): Likewise.
(var_mem_delete): Likewise.
(vt_get_decl_and_offset): Likewise.
(offset_valid_for_tracked_p): New predicate.
(count_uses): Do not track locations with invalid offsets.
(add_uses): Likewise.
(add_stores): Likewise.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=129972

2007-11-16 Richard Guenther <rguenther@suse.de>
PR middle-end/34030
* fold-const.c (fold_binary): Use correct types for folding
1 << X & Y to Y >> X & 1.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=130242

2008-01-14 Eric Botcazou <ebotcazou@adacore.com>

PR rtl-optimization/31944
* cse.c (remove_pseudo_from_table): New function.
(merge_equiv_classes): Use above function to remove pseudo-registers.
(invalidate): Likewise
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=131524

2008-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>

Backport:
2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>

PR middle-end/33826
* ipa-pure-const (static_execute): Added code to keep recursive
functions from being marked as pure or const.
* ipa-utils (searchc): Fixed comment.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=131807

2008-02-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>

Backport:
2007-08-02 Nathan Froyd <froydnj@codesourcery.com>

PR middle-end/25445
* varasm.c (default_binds_local_p_1): Consult flag_whole_program
if we are compiling with -fPIC.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132061

2008-02-04 Richard Guenther <rguenther@suse.de>

PR middle-end/33631
* expr.c (count_type_elements): Give for unions instead of
guessing.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132101

2008-02-14 Alan Modra <amodra@bigpond.net.au>

PR target/34393
* config/rs6000/rs6000.md (restore_stack_block): Force operands[1]
to a reg.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=132309

2008-03-25 Richard Guenther <rguenther@suse.de>

Backport from mainline:
2008-02-12 Richard Guenther <rguenther@suse.de>

PR middle-end/35163
* fold-const.c (fold_widened_comparison): Use get_unwidened in
value-preserving mode. Disallow final truncation.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133509

2008-11-30 Eric Botcazou <ebotcazou@adacore.com>

PR target/38287
* config/sparc/sparc.md (divsi3 expander): Remove constraints.
(divsi3_sp32): Add new alternative with 'K' for operand #2.
(cmp_sdiv_cc_set): Factor common string.
(udivsi3_sp32): Add new alternative with 'K' for operand #2.
Add TARGET_V9 case.
(cmp_udiv_cc_set): Factor common string.
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142298

Reviewed by: mm
Approved by: jhb (mentor)
MFC after: 1 week


234855 30-Apr-2012 gonzo

Unbreak jemalloc build with MALLOC_PRODUCTION set. New jemalloc version
uncovered MIPS-related gcc bug described in
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33256

The patch was obtained from r128198 in gcc-4_1-branch, which is GPLv2,
so it's OK to merge it.


233397 23-Mar-2012 gonzo

Disable IRIX compatibility flags for DWARF code generator. IRIX-compatible
DWARF code is not compatible with CTF tools


229715 06-Jan-2012 andreast

Silence a warning about redefinition of TARGET_ELF on powerpc.


227739 19-Nov-2011 andreast

Rename the linker emulation name for powerpc and powerc64. This is needed that
we can also use the upstream binutils linker where we have to have a unique
name for the FreeBSD emulation.


227586 16-Nov-2011 andreast

Copy over the ASM_DECLARE_FUNCTION_SIZE macro from linux64.h. This macro
declares the proper size of a function. Without this macro recent GNU as will
complain about with:
'Error: .size expression for main does not evaluate to a constant.'

Up to now we produce this:

.L.main:
....
.size main, .-main

With the macro defined the output is this:

.L.main:
....
.size main,.-.L.main

This affects only the 64-bit compiler.
Tested with world and kernel on both, 32 and 64-bit powerpc.


227391 09-Nov-2011 fabient

Import gcc fix for -fstack-protector that produces segfaulting
binaries on arm/armel.

Related gcc bug:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35965

PR: 161128
MFC after: 1 week


226430 16-Oct-2011 stefanf

Adjust posix_memalign() prototype to match what we define in stdlib.h for
C++ compilation.

PR: standards/147210


220150 29-Mar-2011 mm

Upgrade of base gcc and libstdc++ to the last GPLv2-licensed revision
(rev. 127959 of gcc-4_2-branch).

Resolved GCC bugs:
c++: 17763, 29365, 30535, 30917, 31337, 31941, 32108, 32112, 32346,
32898, 32992
debug: 32610, 32914
libstdc++: 33084, 33128
middle-end: 32563
rtl-optimization: 33148
tree-optimization: 25413, 32723
target: 32218

Tested by: pointyhat (miwi)
Obtained from: gcc (gcc-4_2-branch up to rev. 127959)
PR: gnu/153298, gnu/153959, gnu/154385
MFC after: 1 month


219711 17-Mar-2011 mm

Backport missing tunings for -march=core2:
- enable extra 80387 mathematical constants (ext_80387_constants) [1]
- enable compare and exchange 16 bytes (cmpxchg16b) [2]

Verified against llvm-gcc (and apple gcc)

Obtained from: gcc-4.3 (ref. svn revs. 119260 [1], 121140 [2]; GPLv2)
MFC after: 2 weeks


219697 16-Mar-2011 mm

Fix -march/-mtune=native autodetection for Intel Core 2 CPUs

Obtained from: gcc 4.3 (partial rev. 119454; GPLv2)
MFC after: 2 weeks


219639 14-Mar-2011 mm

Backport SSSE3 instruction set support to base gcc.
Enabled by default for -march=core2

Obtained from: gcc 4.3 (rev. 117958, 121687, 121726, 123639; GPLv2)
MFC after: 2 weeks


219534 11-Mar-2011 marius

Now that TLS is supported for sparc64 by both binutils 2.17.50 committed
in r218822 and rtld(1) committed in r219533 turn on TLS support in GCC.


219374 07-Mar-2011 mm

Backport Intel Core 2 and AMD Geode CPU types from gcc-4.3 (GPLv2)
These options are supported in this shape in all newer GCC versions.

PR: gnu/155308
Obtained from: gcc 4.3 (rev. 118090, 118973, 120846; GPLv2)
MFC after: 2 weeks


218895 20-Feb-2011 mm

Backport svn r124339 from gcc 4.3 and add opteron-sse3, athlon64-sse3
and k8-sse3 cpu-types for -march=/-mtune= gcc options.
These new cpu-types include the SSE3 instruction set that is supported
by all newer AMD Athlon 64 and Opteron processors.
All three cpu-types are supported by clang and all gcc versions
starting with 4.3 SVN rev 124339 (at that time GPLv2 licensed).

PR: gnu/154906
Discussed with: kib, kan, dim
Obtained from: gcc 4.3 (r124339, GPLv2 licensed)
MFC after: 2 weeks


218824 18-Feb-2011 nwhitehorn

Turn off default generation of userland dot symbols on powerpc64 now that
we have a binutils that supports it. Kernel dot symbols remain on to assist
DDB.


217396 14-Jan-2011 kib

Configure gcc to emit .note.GNU-stack for both 32 and 64 bits PowerPC.
Mark gcc-provided asm files as not requiring executable stack.

It seems that non-FreeBSD ABIs for powerpc64 claim stack non-executable.
Due to this, rs6000_elf_end_indicate_exec_stack() only emit the note for
32 bit target. I decided not to change FreeBSD ABI and patch
emit the notes for both variants.

Reviewed and tested by: nwhitehorn


217098 07-Jan-2011 kib

Make gcc emit the .note.GNU-stack section into the assembler files.

Reviewed by: kan


215841 25-Nov-2010 dim

Now that the fix for gcc PR 20218 is applied, and hidden attributes
actually work, linking of libgcc_s.so.1 on ia64 will fail with:

unwind-ia64.So(.text+0x1762): In function `_Unwind_FindEnclosingFunction':
: undefined reference to `_Unwind_FindTableEntry'
unwind-ia64.So(.text+0x1d82): In function `uw_frame_state_for':
: undefined reference to `_Unwind_FindTableEntry'
/usr/bin/ld: libgcc_s.so.1: hidden symbol `_Unwind_FindTableEntry' isn't defined

Repair this by not hiding the _Unwind_FindTableEntry symbol; on FreeBSD,
it is in libc, not in libgcc.

Silence from: current@


215840 25-Nov-2010 dim

Apply backported fix for gcc PR 20218. This makes __attribute__
((visibility ("hidden"))) work properly, and fixes building devel/glib20
with newer binutils.

Silence from: current@


213185 26-Sep-2010 nwhitehorn

Check for NULL link registers as found in initial stack frames when doing
stack unwinding, instead of naively trying to check the instruction at
that location. This fixes signal handling in threaded applications after
recent changes regarding unwinding in libthr. While here, clean up our
MD_FROB_UPDATE_CONTEXT() implementation a little.


209867 10-Jul-2010 nwhitehorn

Teach our toolchain how to generate 64-bit PowerPC binaries. This fixes
a variety of bugs in binutils related to handling of 64-bit PPC ELF,
provides a GCC configuration for 64-bit PowerPC on FreeBSD, and
associated build systems tweaks.

Obtained from: projects/ppc64


208737 02-Jun-2010 jmallett

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


204772 05-Mar-2010 imp

Tweak the linker spec a smidge.
Correct a typo.


204762 05-Mar-2010 imp

Add support for o32 (when it isn't the default), n32, n64, and o64 to
the linker spec. Provide the ability to have a default ABI that's
different than o32 (again, for all 4).

Submitted by: C. Jayachandran (JC) with tweaks for o64/o32 by me


204616 03-Mar-2010 imp

Also define _MIPS_ISA here.

Submitted by: jmallet@


204549 02-Mar-2010 imp

Bring in more built-in defines from NetBSD
a few #defines from JC.

# tested only with o32 at the moment

Submitted by: C. Jayachandran (CJ)
Obtained from: NetBSD


201855 08-Jan-2010 imp

Merge r194519 from projects/mips to head by hand:

r194519 | gonzo | 2009-06-19 17:28:26 -0600 (Fri, 19 Jun 2009) | 3 lines
- set -mabicalls and -msoft-float as a default in order to
simplify building ports


200038 02-Dec-2009 kib

Properly support -fPIE by linking PIE binaries with specially-built
Scrt1.o instead of crt1.o, since the later is built as non-PIC.

Separate i386-elf crt1.c into the pure assembler part and C code,
supplying all data extracted by assembler stub as explicit parameters [1].
Hide and localize _start1 symbol used as an interface between asm and
C code.

In collaboration with: kan
Inspired by: PR i386/127387 [1]
Prodded and tested by: rdivacky [1]
MFC after: 3 weeks


198344 21-Oct-2009 jhb

Change gcc to assume a default machine architecture of 486 instead of 386
on "i386". Doing it in the compiler is deemed to be less fragile then
attempting to provide a default -march setting via bsd.cpu.mk. FreeBSD
itself has not supported plain 386 CPUs since 5.x.

Suggested by: kan
Requested by: rdivacky
MFC after: 1 month


195697 14-Jul-2009 kan

Second attempt at eliminating .text relocations in shared libraries
compiled with stack protector.

Use libssp_nonshared library to pull __stack_chk_fail_local symbol into
each library that needs it instead of pulling it from libc. GCC
generates local calls to this function which result in absolute
relocations put into position-independent code segment, making dynamic
loader do extra work every time given shared library is being relocated
and making affected text pages non-shareable.

Reviewed by: kib
Approved by: re (kib)


192599 22-May-2009 des

Expand $FreeBSD$


191517 26-Apr-2009 ed

Remove empty directories from the HEAD.

Discussed with: developers, imp


182907 10-Sep-2008 obrien

If arm.h is going to define WCHAR_TYPE, don't assume WCHAR_TYPE_SIZE
doesn't already have a definition.

Reported by: imp


182654 01-Sep-2008 obrien

We're not quite ready for the full %(endian_spec).


182644 01-Sep-2008 obrien

Add __unix__. Tweak __KPRINTF_ATTRIBUTE__ while I'm here.


182627 01-Sep-2008 obrien

Add FreeBSD/MIPS support to GCC.


182579 31-Aug-2008 obrien

Turn cc_tools/Makefile and Makefile.tgt into a "linear" read. Shared
parts of the configuration aren't duplicated, and arch-specific exceptions
are made "in-place". Also clean up the FreeBSD/amd64 config a little.


181534 10-Aug-2008 das

Make -mfancy-math-387 the default on FreeBSD, as it is on most other
operating systems. Previously, gcc would inhibit the generation of
fsqrt, fsin, and several other floating point instructions, for the
benefit of the old in-kernel math emulator, which was removed over 5
years ago.


180079 28-Jun-2008 obrien

White space fixes.


180078 28-Jun-2008 obrien

Reduce diff to vendor.


174482 09-Dec-2007 marius

Allow the targeted CPU type to be set via -mcpu instead of
limiting to the hardcoded equivalent of -mcpu=ultrasparc.

PR: 109510
MFC after: 3 months


171836 14-Aug-2007 kan

Update locally changed files to GCC 4.2.1.

Approved by: re (kensmith)


171835 14-Aug-2007 kan

Merge files that are no longer carry FreeBSD local changes.

Approved by: re (kensmith)


171826 14-Aug-2007 kan

This commit was generated by cvs2svn to compensate for changes in r171825,
which included commits to RCS files with non-trunk default branches.


169819 21-May-2007 cognet

FreeBSD expects VFP, so use that as the default FPU.

Reviewed by: kan


169711 19-May-2007 kan

Merge arm-freebsd.h.diff directly into the target file. Maintaining
separate patch is much more painful than taking this file off the
vendor branch.


169709 19-May-2007 kan

This commit was generated by cvs2svn to compensate for changes in r169708,
which included commits to RCS files with non-trunk default branches.


169707 19-May-2007 kan

Remove files that are not part of GCC distribution anymore.


169706 19-May-2007 kan

Update configuration files for GCC 4.2.


169705 19-May-2007 kan

Merge local FreeBSD changes for -mno-align-long-strings.


169699 19-May-2007 kan

FreeBSD uses unchanged versions of this files.


169690 19-May-2007 kan

This commit was generated by cvs2svn to compensate for changes in r169689,
which included commits to RCS files with non-trunk default branches.


161660 26-Aug-2006 kan

Resolve conflicts after GCC 3.4.6 20060825 import.


161652 26-Aug-2006 kan

This commit was generated by cvs2svn to compensate for changes in r161651,
which included commits to RCS files with non-trunk default branches.


151887 30-Oct-2005 obrien

Locate __FreeBSD_cc_version's value beside __FreeBSD__'s value to make it
easier to keep them in sync.


151857 29-Oct-2005 obrien

Catch up with FreeBSD 7.


151775 27-Oct-2005 rodrigc

Submitted following patch to FSF GCC:

* freebsd-spec.h (FBSD_TARGET_OS_CPP_BUILTINS):
Use builtin_define_with_int_value() instead of
adding a new check for every new major FreeBSD version.

Motivated by: simon
Discussed with: obrien, kan


148163 19-Jul-2005 obrien

Fix bug where GCC thought athlon-tbird had SSE support.


147823 07-Jul-2005 scottl

Patch the freebsd spec file for PowerPC so that PIC code builds correctly.
This allows FreeBSD/PPC to build and run out of stock CVS sources. This
also takes the file off of the vendor branch.

Submitted by: kan, grehan
Approved by: re, kan


146939 03-Jun-2005 kan

Enable handling of MS-compatible packing push and pop pragmas. This change was
inadvertedly left out of the last import.


146915 03-Jun-2005 kan

Fix a typo from previos commit.


146909 03-Jun-2005 kan

Catch up with changes in BDX_OUTPUT_[LR]BRAC callers.


146908 03-Jun-2005 kan

Merge conflicts for GCC 3.4.4.


146906 03-Jun-2005 kan

Stock files.


146896 03-Jun-2005 kan

This commit was generated by cvs2svn to compensate for changes in r146895,
which included commits to RCS files with non-trunk default branches.


134097 21-Aug-2004 obrien

Enter the long awaited start of FreeBSD 6.0!


133583 12-Aug-2004 kan

This commit was generated by cvs2svn to compensate for changes in r133582,
which included commits to RCS files with non-trunk default branches.


132857 29-Jul-2004 kan

Remove obsolete ASM_FINAL_SPEC definition.

Reported by: green


132746 28-Jul-2004 kan

Update sparc64 MD bits to GCC 3.4.2-prerelease.


132745 28-Jul-2004 kan

Merge FreeBSD changes into GCC 3.4.2-prerelease:
1.2 Tweaks to make this file live beside our hacked config.


132744 28-Jul-2004 kan

Merge r1.10 (-mno-align-long-strings) and r1.11 (make LONG_TYPE_SIZE
overridable from the command line).


132743 28-Jul-2004 kan

Merge r1.11 (-mno-align-long-strings).


132742 28-Jul-2004 kan

Update Amd64 MD bits for GCC 3.4.2-prerelease.


132741 28-Jul-2004 kan

Update i386 MD bits for GCC 3.4.2-prerelease.


132740 28-Jul-2004 kan

Update Alpha config MD bits for GCC 3.4.2-prerelease.


132739 28-Jul-2004 kan

Merge FreeBSD modifications into gcc 3.4.2-prerelease:
1.8 Change symbol values to match freebsd.h.


132738 28-Jul-2004 kan

Update MI config bits for GCC 3.4.2-prerelease.


132737 28-Jul-2004 kan

Update for GCC 3.4.2. Bump __FreeBSD_cc_version_ and use correct ELF
interpreter on FreeBSD 5.x series.


132727 28-Jul-2004 kan

Use stock GCC versions on these files.


132719 28-Jul-2004 kan

This commit was generated by cvs2svn to compensate for changes in r132718,
which included commits to RCS files with non-trunk default branches.


130744 19-Jun-2004 obrien

Grrr. our rev 1.19 (FSF GCC rev 1.579) is causing some problems on 32-bit
systems. So only use the rev 1.19 (FSF GCC rev 1.579) change on 64-bit
systems.


130711 19-Jun-2004 obrien

Merge FSF GCC rev 1.579 change ((x86_output_mi_thunk): Don't pass MEM to
%P0, just SYMBOL_REF) into GCC 3.3.3. This fixes the bad C++ thunks code
generation building Firefox on AMD64.

Submitted by: Sean McNeil <sean@mcneil.com>


125231 30-Jan-2004 deischen

Make gcc -pthread link to -lpthread instead of -lc_r.


124152 05-Jan-2004 kan

This commit was generated by cvs2svn to compensate for changes in r124151,
which included commits to RCS files with non-trunk default branches.


123715 22-Dec-2003 kan

Fix ASM_OUTPUT_LABELREF to deal with TSL model prefixes GCC
started to use internally. They need to be stripped before
the name of the label or symbol is printed.


123561 16-Dec-2003 obrien

One might want to correctly generate 32-bit code on an Opteron.

Submitted by: peter


123546 15-Dec-2003 obrien

Consistently define __LP64__ on all our 64-bit platforms.


122432 10-Nov-2003 deischen

Remove a comment stating that -pthread isn't supported.


122194 07-Nov-2003 kan

Merge r1.11 (-mno-align-long-strings).


122193 07-Nov-2003 kan

Merge r1.10 (-mno-align-long-strings) and r1.11 (make LONG_TYPE_SIZE
overridable from the command line).


122190 07-Nov-2003 kan

No FreeBSD-local changes in these files.


122181 07-Nov-2003 kan

This commit was generated by cvs2svn to compensate for changes in r122180,
which included commits to RCS files with non-trunk default branches.


120312 21-Sep-2003 deischen

The ports freeze may take longer than anticipated. Instead of
waiting for it to be delayed, temporarily back out the -pthread
removal until the freeze is lifted.

Freeze possibly taking longer than necessary: will
Requested by: kris


120006 12-Sep-2003 obrien

Bump __FreeBSD_cc_version for (1) 5.1 (post-mortem) (2) -pthread changes.


119720 03-Sep-2003 deischen

Remove the -pthread option (in FreeBSD versions 500016 and greater) as
threatened over 2 years ago.

Why? -pthread was a hack to prevent linking to both libc and libc_r
and became unecessary when libc_r became free of libc. Now that we
have multiple thread libraries from which to choose, it is more confusing
because you can't link to more than one threads library at a time.
Things like autoconf and libtool sometimes detect -pthread and
also -lc_r, and in conjunction with ports usage of ${PTHREAD_LIBS},
really wacky things ensue when PTHREAD_LIBS is set to another
threads library. This might not be so bad if the build broke
when this happens, but it doesn't and you don't know it until
funny things happen when you run the application (or use an
affected library).

Reviewed by: obrien


119642 01-Sep-2003 deischen

Backout rev 1.10.

Requested by: obrien


119621 31-Aug-2003 deischen

Remove -pthread as a compiler option. It was deprecated 2.5 years
ago, but not removed.

No reply from: threads, kan, obrien


119414 24-Aug-2003 obrien

Reformat FBSD_{START,END}FILE_SPEC to FSF coding standards.
Use these in our i386, amd64, and alpha platforms.


119257 22-Aug-2003 kan

This commit was generated by cvs2svn to compensate for changes in r119256,
which included commits to RCS files with non-trunk default branches.


119016 17-Aug-2003 gordon

Tell the toolchain to look for rtld in /libexec instead of /usr/libexec.


117694 17-Jul-2003 obrien

This file became OBE when we went to GCC 3.


117479 12-Jul-2003 kan

Do not override FP rounding options for 32bit platforms. amd64 doesn't
need this.


117420 11-Jul-2003 kan

Update for GCC 3.3.1-prerelease.


117419 11-Jul-2003 kan

Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.8 Change symbol values to match freebsd.h.


117418 11-Jul-2003 kan

Update for 3.3.1-prerelease.


117417 11-Jul-2003 kan

Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.4 Look into right directory when linking 32-bit binaries.


117412 11-Jul-2003 kan

Merge FreeBSD changes into GCC 3.3.1-prerelease:
1.2 Tweaks to make this file live beside our hacked config.


117408 11-Jul-2003 kan

Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.11 -mno-align-long-strings.


117407 11-Jul-2003 kan

Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.10 -mno-align-long-strings.
1.11 Allow the specification of LONG_TYPE_SIZE on the command line.


117404 11-Jul-2003 kan

FreeBSD uses stock versions of these GCC files.


117396 11-Jul-2003 kan

This commit was generated by cvs2svn to compensate for changes in r117395,
which included commits to RCS files with non-trunk default branches.


114842 08-May-2003 obrien

I goofed in rev 1.59 (a.out support axing) and missed getting FUNCTION_PROFILER
fully clean. This resulted in inserted garbage into the produced assembly code
when the gcc -pg and -fPIC options are used together.

PR: i386/50598
Submitted by: Don Lewis <truckman@freebsd.org>


114083 26-Apr-2003 obrien

We're changing the platform name from x86[_-]86 to amd64.


114078 26-Apr-2003 obrien

Fix the LINK_SPEC. Our i386 32-bit emulation name changed.
We also need to look in the proper directory for 32-bit libs.


114077 26-Apr-2003 obrien

Remove the last vestiges (I hope) of the mixed ELF/a.out support.
As a plus we can use the stock CC1_SPEC and ASM_SPEC for AMD64.


113420 13-Apr-2003 kan

Teach gcc how to put unitialized data into BSS on FreeBSD.


112681 26-Mar-2003 kan

This commit was generated by cvs2svn to compensate for changes in r112680,
which included commits to RCS files with non-trunk default branches.


110629 10-Feb-2003 kan

Merge FreeBSD modifications into gcc 3.2.2 release:
1.10 -mno-align-long-strings.
1.11 Allow the specification of LONG_TYPE_SIZE on the command line.


110628 10-Feb-2003 kan

Merge FreeBSD modifications into gcc 3.2.2 release:
1.11 -mno-align-long-strings.
Note the change 1.15 is not needed anymore.


110612 10-Feb-2003 kan

This commit was generated by cvs2svn to compensate for changes in r110611,
which included commits to RCS files with non-trunk default branches.


108173 22-Dec-2002 kan

Fix a bug in GCC which effectively prevents DEFAULT_PCC_STRUCT_RETURN from
having any effect. This restores a calling convention traditionally used
by FreeBSD/i386 and which is expected by a number of assembly sources
in libc.

Reviewed by: obrien
Approved by: re (rwatson)


107647 05-Dec-2002 obrien

_NIH, __NIH__, __N_I_H__, __nih__, _niH_.

*sigh* GCC developers can't seem to make up their mind which pre-defined arch
symbols are the official ones. So make them, and the Sparc64 using Martians
happy with every permutation.

This fixes f77 and possibly changes some 'long long' handling.

Approved by: re(bmah)


107605 04-Dec-2002 obrien

Update HEAD with FSF branch 3.2.1 release files.


107604 04-Dec-2002 obrien

Use pure stock files.


107599 04-Dec-2002 obrien

Fix typo to sync with FSF sources.


107598 04-Dec-2002 obrien

Merge revs 1.10 (-mno-align-long-strings) and 1.11 (LONG_TYPE_SIZE override)
into Gcc 3.2.1 release.


107597 04-Dec-2002 obrien

Merge rev 1.11 (-mno-align-long-strings) into Gcc 3.2.1 release.


107591 04-Dec-2002 obrien

This commit was generated by cvs2svn to compensate for changes in r107590,
which included commits to RCS files with non-trunk default branches.


107589 04-Dec-2002 obrien

This commit was generated by cvs2svn to compensate for changes in r107588,
which included commits to RCS files with non-trunk default branches.


107540 03-Dec-2002 obrien

Add spaces around FBSD_ENDFILE_SPEC as it is used in string concatenation.

Approved by: re(bmah)


107286 26-Nov-2002 obrien

Remove our custom mixed ELF/a.out support. This means the base compiler
now only produce ELF objects. It also makes us closer to stock GCC, and
simplifies the set of changes we still need from stock GCC on every import.

Applauded by: peter
Approved by: re


106442 05-Nov-2002 obrien

Sync with the stock FSF 3.2 file. This adds TRANSFER_FROM_TRAMPOLINE,
which is needed in order for nexted C functions to work.


104768 10-Oct-2002 kan

Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.10 -mno-align-long-strings
1.11 Allow the specification of LONG_TYPE_SIZE on the command line.

Approved by: obrien


104767 10-Oct-2002 kan

Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.11 -mno-align-long-strings

Approved by: obrien


104753 10-Oct-2002 kan

This commit was generated by cvs2svn to compensate for changes in r104752,
which included commits to RCS files with non-trunk default branches.


103446 17-Sep-2002 kan

This commit was generated by cvs2svn to compensate for changes in r103445,
which included commits to RCS files with non-trunk default branches.


103261 12-Sep-2002 obrien

Emacs decides between v8 and v9 based on "__arch64__". So define it.

Desired by: tmm


103259 12-Sep-2002 obrien

Remove some debugging cruft I accidently committed with rev 1.4.


103258 12-Sep-2002 obrien

Try to detect support for the `long long' type so that ANSI-C[89] clean
code will know not to try to use `long long'.
Unfortunately the GCC spec parser will not allow us to properly detect the
"iso9899:1990" and "iso9899:199409" forms of the acceptable -std= arguments,
because of the ':' in the -std argument. :-( I have left them in the spec
as a place holder in hopes someone knows a way to make the detection of
them work.

Desired by: wollman


103117 09-Sep-2002 obrien

Bump __FreeBSD_cc_version for gcc 3.1-prerelease -> 3.2.1-snap upgrade.


102802 01-Sep-2002 kan

Use the stock 3.2.1-prerelease file.

Approved by: obrien


102801 01-Sep-2002 kan

Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.10 -mno-align-long-strings
1.11 Allow the specification of LONG_TYPE_SIZE on the command line.

Approved by: obrien


102800 01-Sep-2002 kan

Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.11 -mno-align-long-strings

Approved by: obrien


102799 01-Sep-2002 kan

Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.8 Change symbol values to match freebsd.h

Approved by: obrien


102798 01-Sep-2002 kan

Use the stock 3.2.1-prerelease file.

Approved by: obrien


102781 01-Sep-2002 kan

This commit was generated by cvs2svn to compensate for changes in r102780,
which included commits to RCS files with non-trunk default branches.


99884 12-Jul-2002 obrien

Fix C++ exception handling. GCC was using the older BSD DBX register numbers
rather than the ELF ABI/SVR4 ones in its DWARF unwinding.

Submitted by: Alexander Kabaev <ak03@gte.com>


99883 12-Jul-2002 obrien

When I decided to use a stock dbxout.c rather than merge the rev 1.2 change
(put the function stabs in traditional order on a.out, or gdb doesn't see
function local variables), I failed to remove the related knobs here.

Effectively were overrode the ELF-wide definition in elfos.h w/o providing
new infrastructure. This is what caused GDB to fail to debug applications
compiled and linked with -stabs. This is because GCC was unconditionally
inserts .stabs instruction for functions after the function body. GDB was
getting confused because what it thinks is function beginning address is
actually function ending address.

Submitted by: Alexander Kabaev <ak03@gte.com>


98599 21-Jun-2002 obrien

Tweaks to make these files live beside our hacked config.


98597 21-Jun-2002 obrien

Tweaks for the 64-bit compiler.


98572 21-Jun-2002 obrien

BDE prefers this organization.

Submitted by: bde


98096 10-Jun-2002 obrien

cvs -j -j gave me two copies of TARGET_VERSION and I didn't notice
it before committing.


97943 06-Jun-2002 obrien

Match the DBX_OUTPUT_MAIN_SOURCE_FILE_END definition in dbxelf.h.

Bug found by: bde


97912 06-Jun-2002 obrien

Allow the specification of LONG_TYPE_SIZE on the command line.

Submitted by: bde


97911 06-Jun-2002 obrien

Implement "-mno-align-long-strings" which prevents pessimization of strings
for space. -Os could do this, but it was easy to hack an MD version.
This saves a whole 32 bytes in boot2, so I think it is worth using it.
(keep how much worse gcc 3.2 will compile boot2...)

Submitted by: bde (minus gcc 3.2 commentary)


97910 06-Jun-2002 obrien

Didn't get them all in revision 1.50.


97908 06-Jun-2002 obrien

Fix excessive alignment for the aout case, and unbreak genassym for that case.
Our aout linker has alignment hacks and doesn't need gcc to do anything special.

Tested for a year by: bde :-)


97907 06-Jun-2002 obrien

Tidy do-while.

Requested by: bde


97827 04-Jun-2002 obrien

The brokenness in ix86_expand_clrstr is quite visible when you
compare the function with ix86_expand_movstr.

Submitted by: Tor Egge


97543 30-May-2002 obrien

Seems we are not ready for revision 1.8.


97532 30-May-2002 obrien

Make our default predefines ANSI clean.


96466 12-May-2002 obrien

do-while ASM_OUTPUT_ALIGN to enable its use in more places.


96447 12-May-2002 obrien

Fixes for building a.out bits.

Submitted by: bde


96362 10-May-2002 obrien

Add tweaks needed when using as the system compiler.


96341 10-May-2002 obrien

Change symbol values to match freebsd.h to avoid warnings.


96331 10-May-2002 obrien

Remove files not part of GCC 3.1.


96294 09-May-2002 obrien

Use the stock (3.1 pre) file.


96293 09-May-2002 obrien

Use the stock file for now (but leave a note behind about our OBE changes).


96291 09-May-2002 obrien

Use the stock (3.1) file.


96290 09-May-2002 obrien

We use the stock (3.1) file.


96264 09-May-2002 obrien

This commit was generated by cvs2svn to compensate for changes in r96263,
which included commits to RCS files with non-trunk default branches.


96187 07-May-2002 obrien

Alpha MD bits for Gcc 3.1.


96144 07-May-2002 obrien

Comment a knob.


96143 07-May-2002 obrien

The default ASM_OUTPUT_ADDR_DIFF_ELT will now handle our mixed a.out/ELF.


95811 30-Apr-2002 obrien

MI bits for Gcc 3.1.


95810 30-Apr-2002 obrien

i386 MD bits for Gcc 3.1.

These are totally untested. Do these work? Hell if I know, I have yet to
bootstrap using these bits. But people want them, so here they are.


95349 24-Apr-2002 obrien

Style changes to reduce diff to things I did in the FSF repo.


95348 24-Apr-2002 obrien

Fix bug where we were loosing our platform-wide ASM_COMMENT_START
definition due to pollution in i386/unix.h.


93298 27-Mar-2002 obrien

GCC 3.1 uses crtstuff.c on Alpha now. [yay!]


93263 27-Mar-2002 obrien

Switch register numbers for DWARF2_DEBUG also.


91221 25-Feb-2002 obrien

Use the default 'ld' emulation rather than hard coding it.
For FreeBSD, 'ld' 2.12.0 uses a different emulation than in the past.
So this change makes the upgrade easier.


90286 06-Feb-2002 obrien

Use the stock [3.l-snap] version of this.


90285 06-Feb-2002 obrien

Use the stock [3.1-snap] file.


90284 06-Feb-2002 obrien

Use the stock file for now.

The changes from GCC 2.95.3 to 3.1 are large and it is hard to figure
out how to apply our changes. Once BDE can properly test GCC 3.1 he'll
add back in our changes.


90283 06-Feb-2002 obrien

Merge the stock gcc-3.1_snap file onto HEAD.


90076 01-Feb-2002 obrien

This commit was generated by cvs2svn to compensate for changes in r90075,
which included commits to RCS files with non-trunk default branches.


90029 31-Jan-2002 obrien

MFC: gcc.295/config/alpha/freebsd.h revision 1.12:
Remove our definition for FUNCTION_PROFILER as it is wrong.

Note that "jsr $28,_mcount" is a macro for
ldq $27, _mcount($29) !literal!1
jsr $28, ($27), _mcount !lituse_jsr!1

1. The call to _mcount is added by alpha_expand_prologue after we load the gp.
Our _mcount uses $27 for the incoming address, unlike OSF/1 and Linux,
which use $28. This probably doesn't matter since we probably don't use $27
within _mcount itself.
2. You can't use this insn with _mcount because it uses the PLT, which clobbers
the return address in $28. Note that the prologue_mcount pattern carefully
avoids adding the lituse_jsr relocation so that we call through the GOT
directly.

Submitted by: Richard Henderson <rth@redhat.com>


89885 27-Jan-2002 peter

This commit was generated by cvs2svn to compensate for changes in r89884,
which included commits to RCS files with non-trunk default branches.


81867 17-Aug-2001 obrien

Re-initialize gp after a jsr.

When rtld runs the .fini section in a shared lib (C++), the code in
question from .../contrib/gdb/config/alpha/crtbegin.asm first calls
__do_globals_dtors_aux and then __do_frame_takedown. Unfortunately, the
value of gp after a jsr is undefined and in this case had changed from before
the call, probably as a result of calling code in some other shared library.
The normal calling convention for alpha is to re-initialize gp using
'ldgp gp,0(ra)' after a jsr instruction but in this case no such
re-initialization is done. This leads to a bogus value being read for the
address of __do_frame_takedown and a quick segfault.

Submitted by: dfr
Obtained from: GCC 3.0


76601 14-May-2001 obrien

Make it easy for people to use define DWARF2 exceptions unwinding.
If "WANT_DWARF2_UNWIND" you get it. Note that this is a different C++ ABI
than the FreeBSD default. So you will need to recompile all your C++ apps
that uses exceptions if you turn this on. I am adding it here for Yahoo!'s
use and for those that want to be early adopters to what I will make as the
default with the GCC 3.0 import.


76499 12-May-2001 obrien

Choose the right LIB_SPEC for threads based on "__FreeBSD_version".
This allows someone with an older -current to update their compiler [only].

Inspired by: Loren James Rittle <rittle@rsch.comm.mot.com>


74479 19-Mar-2001 obrien

Remove some files that are no longer in the FSF branch.


74478 19-Mar-2001 obrien

Merge gcc-2.95.3 changes onto mainline. Update FreeBSD changes to converge
with changes made in the FSF tree.


73325 02-Mar-2001 obrien

Change "NO_PROFILE_DATA" to "NO_PROFILE_COUNTERS" to match the commit by
the FSF/GCC people in the stock 2.97 source that is like our custom change
modulo the conditional compilation symbol.


73305 02-Mar-2001 obrien

Move the obvious bits of mixed ELF and a.out support down into this MD
header to reduce the difference of our sources to the stock GNU/FSF ones.
While the mix binary format support was nice to have in the FreeBSD MI
header as a frame work, it just clutters up too much and makes the FreeBSD
MI header more different from the FSF/GNU stock one than it needs to be.


73304 02-Mar-2001 obrien

Push as much as was easy of the mixed ELF & a.out support for the i386
into the i386 MD FreeBSD header. Also comment tweaking, continuation line
style changes, and other minor changes to make this closer to the latest
FSF/GNU 3.0 sources (to reduce my headache when 3.0 is imported).


73243 28-Feb-2001 obrien

Stylistic changes mirroring ones done in the FSF/GNU 3.0 development sources.


72564 17-Feb-2001 obrien

Merge gcc-2.95.3-test3 changes onto mainline. Bump FreeBSD cc version.


72563 17-Feb-2001 obrien

This commit was generated by cvs2svn to compensate for changes in r72562,
which included commits to RCS files with non-trunk default branches.


72151 08-Feb-2001 obrien

Bump __FreeBSD_cc_version to 500002 to show the -pthread option change.


71646 25-Jan-2001 jdp

Make the "-pthread" option work again, now that libc_r has to be
linked in addition to libc rather than instead of libc.

Ideally, "-pthread" would now be equivalent to adding "-lc_r" to the
end of the link command. But it is slightly different in this
implementation. Adding "-lc_r" to the link command would produce a
"ld" command line containing this:

... -lc_r /usr/lib/libgcc.a -lc /usr/lib/libgcc.a ...

but this implementation of the "-pthread" option produces this:

... /usr/lib/libgcc.a -lc_r -lc /usr/lib/libgcc.a ...

It would be possible to make them identical, but that doesn't fit
as nicely into GCC's way of doing things. I don't think the ordering
change will make any difference in practice.


70639 03-Jan-2001 obrien

Merge gcc.2.95.3-test1 changes onto mainline


70636 03-Jan-2001 obrien

This commit was generated by cvs2svn to compensate for changes in r70635,
which included commits to RCS files with non-trunk default branches.


68601 11-Nov-2000 obrien

Properly format the SUBTARGET_SWITCHES so that ``gcc -v --help'' prints
them out.

PR: 19326
Submitted by: Naohiko Tsuji <yakisoba@f2.dion.ne.jp>


68452 07-Nov-2000 obrien

Remove the -kthread option that matched [sort of] the LinuxThreads port.
This option depended on bits not part of the base system and required
people to install the LinuxThreads port in a manner non-consistent with
the workings of our Ports Collection.
The directions for properly linking with LinuxThreads are given by that
port at install time.

Requested by: jasone


67965 30-Oct-2000 obrien

Start using crt[in].o to adhear to the ELF ABI
(and crtstuff.c's requirements).


60968 27-May-2000 obrien

This commit was generated by cvs2svn to compensate for changes in r60967,
which included commits to RCS files with non-trunk default branches.


60776 22-May-2000 obrien

Do not use DWARF2 unwinding mechanisms for C++ exceptions on all of our
platforms.


60731 20-May-2000 obrien

ASM_DECLARE_OBJECT_NAME and ASM_FINISH_DECLARE_OBJECT are ELF MI routines
to generate the special .type and .size directives which are used to set
the corresponding fields of the linker symbol table entries in the ELF
object file. As such they are not i386-specific and thus belong in our
MI header. Otherwise on the Alpha we don't properly give the type and
size of dynamic symbols. Bintuil versions past 2.9.1 warn of this and
w/o this change, `ld' generates a lot of warnings during a `make world'.


58478 23-Mar-2000 obrien

Clean up the FreeBSD configuration files -- includes removing the usage
of svr4.h on the i386, and moving all the shared arch neutral bits into
the FreeBSD general config header.


58469 23-Mar-2000 obrien

This is FreeBSD version 5.0.


56810 29-Jan-2000 obrien

Fix our -mprofiler-epilogue code.

"The problem is that egcs/gcc-2.95's reorganisation of the prologue and
epilogue code to use rtl instead of output_asm_insn() completely broke our
hooks. rtl is emitted in a different order, only after optimisation, while
output_asm_insn() is emitted immediately. rtl is presumably used so that
the prologue and epilogue can be optimised.

I couldn't find any good examples to copy. gcc's own
FUNCTION_BLOCK_PROFILER still uses output_asm_insn() and seems to be
completely broken. One of the XXX comments points to this.

IIRC, the hacks here basically arrange to emit magic label names; then when
the magic names are output, they are transformed into prologue and epilogue
code."

Submitted by: bde


56700 27-Jan-2000 obrien

Bump __FreeBSD_version and __FreeBSD_cc_version due to the C++ ABI change
in GCC 2.95.2 from -fvtable-thunks to -fno-vtable-thunks by default.


56576 25-Jan-2000 obrien

Do not use "DEFAULT_VTABLE_THUNKS". The bugs that have existed since
EGCS 1.x have not been worked out. And with 4.0 RELEASE comming quickly
we need C++ to be stable and usable.


56391 22-Jan-2000 obrien

Merge in the restore pic register fix from the vendor branch.

PR: 3441
Submitted by: Mark Diekhans <markd@Grizzly.COM>


56386 22-Jan-2000 obrien

This commit was generated by cvs2svn to compensate for changes in r56385,
which included commits to RCS files with non-trunk default branches.


54813 19-Dec-1999 obrien

Use symbolic values rather than constants in TARGET_DEFAULT.

Submitted by: bde on -current


54807 19-Dec-1999 obrien

Use a unified CPP_SPEC.


54665 16-Dec-1999 obrien

Fix my CPP_SPEC synatax screwup.

Totally pissed at self: obrien


54630 15-Dec-1999 obrien

Remove the defining of __i486__ baesd on TARGET_CPU_DEFAULT and !m386 or m486.


53661 24-Nov-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r53660,
which included commits to RCS files with non-trunk default branches.


53658 24-Nov-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r53657,
which included commits to RCS files with non-trunk default branches.


53655 24-Nov-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r53654,
which included commits to RCS files with non-trunk default branches.


53262 17-Nov-1999 obrien

* Remove a trailing ";" from a macro.
* Style cleanup.


53260 17-Nov-1999 obrien

This temperary file can die now.


53188 15-Nov-1999 obrien

Fix a minor bogon.


53179 15-Nov-1999 obrien

Undo rev 1.13 (define "OBSTACK_CHUNK_SIZE" as getpagesize()).
It causes internal compiler errors and sig 11's with GCC 2.95.2.


53177 15-Nov-1999 obrien

Add rev 1.2 profiling tweaks, to GCC 2.95.2.


53176 15-Nov-1999 obrien

Use the stock 2.95.2 file here.

I cannot determine if our previous (rev 1.2) changes for ObjC are still
appropriate.


53175 15-Nov-1999 obrien

Bump __FreeBSD_cc_version due to the compiler upgrade.


53149 14-Nov-1999 obrien

Make cross-compilation work for Alpha on i386 machines.
Note that the optimizer has a bug somewhere. This means that only -O0
works at this time.

Submitted by: marcel


53148 14-Nov-1999 obrien

Remove 'SET_ASM_OP' macro, which is unused now and rather harmful
for recent Egcs 1.1.x.

Submitted by: simokawa


53147 14-Nov-1999 obrien

Changes for Alpha and EGCS.
* Commonalities with i386, moved to a FreeBSD wide config file.
* Major additions to this file were adapted from Hidetoshi Shimokawa
<simokawa@FreeBSD.ORG>'s Alpha suppliment to the Egcs 1.1.2 port.


53110 12-Nov-1999 marcel

Make cross-compilation work for Alpha on i386 machines. Note that
the optimizer has a bug somewhere. This means that only -O0 works
at this time.


52751 01-Nov-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r52750,
which included commits to RCS files with non-trunk default branches.


52297 16-Oct-1999 obrien

Use this stock version of this.


52296 16-Oct-1999 obrien

Use the stock file here. I cannot determine if our previous (rev 1.2)
changes for ObjC are still appropriate.


52295 16-Oct-1999 obrien

Use stock file here.


52294 16-Oct-1999 obrien

Bring our profiling tweaks from rev 1.2 into GCC 2.95.1.


52285 16-Oct-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r52284,
which included commits to RCS files with non-trunk default branches.


52269 15-Oct-1999 obrien

Register the fact we want expand_main_function() to invoke __main.


52142 12-Oct-1999 obrien

Remove a useless blank line, I accidently added.


52113 10-Oct-1999 obrien

Move RCS tag to our normal place.


52112 10-Oct-1999 obrien

Style cleanups:
* be consistant on protecting "#define FOO"s with "#undef FOO".
* be consistant that macro params are upper case, and commas are followed
by a space in the macro definition
* protect macro param expansion by ()'s
* break long lines
* line continuations chars to consistant column
* remove trailing spaces


52111 10-Oct-1999 obrien

Remove things common to all FreeBSD platforms. They will now live in a
FreeBSD wide config file.

This includes "WORD_SWITCH_TAKES_ARG" & "SWITCH_TAKES_ARG". Platforms
such as FreeBSD/MIPS will need to override these two defintions, but it
can #undef them and define them approapiately.


51411 19-Sep-1999 obrien

Bring our profiling tweaks into EGCS 1.1.2.


51410 19-Sep-1999 obrien

"COMMENT_BEGIN" is no longer used.


51409 19-Sep-1999 obrien

Support linking against libgcc_r.

Submitted by: Luoqi Chen <luoqi@chen.ml.org>


51408 19-Sep-1999 obrien

This should get us the same functionality we had with GCC 2.7.2.1.

* Support for our dual ELF/a.out building ability
* Our custom ASM_* definitions
* Our custom debugger and profiling related definitions
* Our custom STARTFILE/ENDFILE specs

* The stock EGCS 1.1.2 freebsd-elf.h file depended on
egcs-1.1.2/gcc/config/linux.h, which included "svr4.h". We will
include "svr4.h" via our "tm.h" definition. So add the few bits
from "linux.h" we actually needed.

* Using our current crtbegin.o/crtend.o we cannot support the DWARF2
unwinding mechanisms. In the future we will switch to the
non-sjlj-exceptions type exception machanism. However the `make world'
bootstrap problems with the EGCS crtstuff.c must be overcome first.

* Our a.out gas doesn't "know" to use NOP's for aligns while in the text
section. Thus the a.out alignment generation needed tweaking from
what we did with GCC 2.7.2. [from BDE]

* The definition of SUPPORTS_ONE_ONLY prevents the compiler from trying
to use "linkonce" sections for a.out. The definition of
NO_DBX_FUNCTION_END we had causes it to avoid .stabs symbols that the
assembler cannot handle for a.out. [from JDP]

* The previous "EXCEPTION_SECTION_FUNCTION" is the wrong name for EGCS.
It also needed tweaking for EGCS. [from JDP]

Also bump __FreeBSD_cc_version to 400002 in case we need to know we are
using EGCS at some point.


51406 19-Sep-1999 obrien

Use the stock EGCS version of this.


50654 30-Aug-1999 obrien

Use the stock EGCS 1.1.2 file here. Our previous changes are OBE.
(code change by rev 1.3 has been removed, and 1.2 is not needed since
contrib/gcc/cp/except.c is now the stock one)


50650 30-Aug-1999 obrien

Use the stock EGCS 1.1.2 file here. I cannot determine if our previous
changes for ObjC are still appropriate.


50647 30-Aug-1999 obrien

This brings rev 1.2 into EGCS 1.1.2. Also tweaks gleemed from EGCS
ChangeLog's. Note that rev 1.3 changes (HOST_PTR_PRINTF) was not
brought into EGCS 1.1.2 as that is the default.


50398 26-Aug-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r50397,
which included commits to RCS files with non-trunk default branches.


50080 20-Aug-1999 obrien

* Consistantly surround macro parameters with ()
* Consistantly put spaces after "," in macro param lists
* Consistantly align continuation characters.
* Don't need to supply all variations of __FOO__ in CPP_PREDEFINES,
gcc will do that for us.


50048 19-Aug-1999 obrien

Move two of the DBX config directives to the common configuration header.
Also simply CPP_PREDEFINES a little.


49854 15-Aug-1999 obrien

Move "WORD_SWITCH_TAKES_ARG" & "SWITCH_TAKES_ARG" to the general spec file
since their definitions were identical. FreeBSD/MIPS will need to override
these two defintions, but it can #undef them and define them approapiately.


49853 15-Aug-1999 obrien

Move "LIBGCC_SPEC" to freebsd-native.h as it is not approapiate for
submitting to the GCC mainainers for folding into the stock GCC.


48744 10-Jul-1999 obrien

This commit was generated by cvs2svn to compensate for changes in r48743,
which included commits to RCS files with non-trunk default branches.


48475 02-Jul-1999 obrien

* The OBSTACK_CHUNK_SIZE #define was in the "Code generation parameters"
section rather than the "Miscellaneous parameters" where it belongs.

* Clarify what we are locating using the -m rule.

Submitted by: bde


48474 02-Jul-1999 obrien

The GNU standard about putting 2 spaces after sentences in comments
was not consistantly followed.

Submitted by: bde


48302 28-Jun-1999 obrien

Define "OBSTACK_CHUNK_SIZE" as getpagesize().
Our malloc can allocte pagesized blocks efficiently and the EGCS default size
of 4072 bytes is not optimal.

Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>


47866 10-Jun-1999 simokawa

Remove 'SET_ASM_OP' macro, which is unused now and rather harmful
for recent egcs.


47352 21-May-1999 jdp

Fix typo (#unset where #undef was meant).


47333 20-May-1999 obrien

Consistantly protect "#define FOO ..." with "#undef FOO".


46211 30-Apr-1999 obrien

Turn DEFAULT_VTABLE_THUNKS back on. It caused problems with undefined symbols
in libstdc++.

Until I have a chance to look at what that problem is and to carefully consider
the upgrade issues of turning it back on at a later date if we leave it turned
off for any extended peroid of time.


46157 28-Apr-1999 obrien

Rather than hack config/freebsd.h to contain our hacks for a native compiler,
just include them in tm.h (as built from cc/cc_tools/Makefile).

This will reduce the diffs from the vendor sources.

Excellent idea by: jdp


46122 27-Apr-1999 obrien

Simplify the definition of FBSD_SWITCH_TAKES_ARG, and make sure
SWITCH_TAKES_ARG isn't defined (which svr4.h does) when we assign our
definition to it.


46118 27-Apr-1999 obrien

Wait until EGCS 1.2 to use more efficient ``thunks'' to implement C++ vtables.
While I have yet to hear of any problems with us using thunks. The EGCS
mailing list notes some have problems with it and not using them are a
safer default. People wanting to use them, can set the appropiate
compiler flag.


45941 22-Apr-1999 obrien

Use new `FBSD_SWITCH_TAKES_ARG' and `FBSD_WORD_SWITCH_TAKES_ARG'.


45940 22-Apr-1999 obrien

Move `SWITCH_TAKES_ARG' to `FBSD_SWITCH_TAKES_ARG' and `WORD_SWITCH_TAKES_ARG'
to `FBSD_WORD_SWITCH_TAKES_ARG' which allows architectures to tweak these
values if needed.


45670 14-Apr-1999 obrien

Support linking against libgcc_r.

Submitted by: Luoqi Chen <luoqi@chen.ml.org>


45474 08-Apr-1999 bde

Removed unconditional definitions of __ELF__. They were redundant for
elf and wrong for i386-aout.


45458 08-Apr-1999 obrien

Merge shared LIB_SPEC into share config header.


45457 08-Apr-1999 obrien

merge alpha/freebsd-elf.h into alpha/freebsd.h

Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>


45379 06-Apr-1999 obrien

Mispelled global option in usage.


45317 04-Apr-1999 obrien

Fix space padding that was causing a problem in creating the final
CPP_PREDEFINES.


45277 03-Apr-1999 obrien

* Protect ourselves from any previously defined options.
* Turn on DEFAULT_VTABLE_THUNKS. (it is the default anyway, I'm just being
explicit about it, in case it causes us trouble it might be easier for
someone to notice it this way)


45253 03-Apr-1999 obrien

Bump __FreeBSD_cc_version to 400002 in case we need to know we are using
EGCS at some point.

Submitted by: jdp


45137 30-Mar-1999 obrien

Alpha architecture config files.

Obtained from: adapted from Hidetoshi Shimokawa <simokawa@FreeBSD.ORG>'s
alpha suppliment to the Egcs port.


45135 30-Mar-1999 obrien

Base configuration file for all FreeBSD targets.


43052 22-Jan-1999 obrien

Update __FreeBSD__ and __FreeBSD_cc_version to be consistant with
__FreeBSD_version

Forgotten by: Eivind and Some anonymous release engineer


40736 29-Oct-1998 jdp

Per request from ache, change the numbering scheme of __FreeBSD_cc_version.
Its form is now like __FreeBSD_version, with the FreeBSD revision in
the top digits.


40715 29-Oct-1998 jdp

Add a new predefined preprocessor symbol "__FreeBSD_cc_version",
with a numeric value that describes the feature level of the
compiler. This can be used to check for the presence/absence of
FreeBSD-specific compiler features. The value is a decimal number
whose digits have the form VRRRRFF, where:

V = Compiler vendor. 0 (elided) means gcc.
RRRR = Vendor's version number, e.g., 2721 for the current
gcc version (2.7.2.1).
FF = FreeBSD-specific revision level. 00 means the stock
compiler from the vendor.

The value of "__FreeBSD_cc_version" is hard-coded in
"src/contrib/gcc/config/i386/freebsd.h" and must be incremented
when new FreeBSD-specific compiler features are added. I considered
simply picking up the value of FreeBSD_version from <osreldate.h>.
But that would break cross compiles of gcc.

PR: Part of the fix for gnu/8452
Suggested by: bde


38928 07-Sep-1998 jdp

Make profiling work for ELF. gprof now autodetects the format of
the executable file, so it will work for both a.out and ELF format
files. I have split the object format specific code into separate
source files. It's cleaner than it was before, but it's still
pretty crufty.

Don't cheat on your make world for this update. A lot of things
have to be rebuilt for it to work, including the compiler and all
of the profiled libraries.


38021 02-Aug-1998 bde

Fixed printf format errors. gcc should have a macro HOST_PTR_PRINTF_TYPE
to go with its HOST_PTR_PRINTF[_FORMAT], since if %p is wrong for the
format then `void *' is probably wrong for the type.


37312 30-Jun-1998 bde

Fixed printf format errors.


36769 08-Jun-1998 jb

Add LIB_SPEC (same as on i386) so that gcc knows about libc_r.


35168 13-Apr-1998 peter

-pg was causing a link with -lc_r... :-]

Submitted by: Dmitry Khrustalev <dima@xyzzy.machaon.ru>
PR: 6287


34570 14-Mar-1998 jb

Ouch, my local cvs walloped the version I thought I was committing.
Here is what I intended.


34559 13-Mar-1998 jb

On i386, freebsd.h and freebsd-elf.h have been merged to combine
aout and elf support. freebsd-elf.h died as a result, so the BINFORMAT
test for elf in src/gnu/usr.bin/cc/cc_tool/Makefile will need to
use freebsd.h, not freebsd-elf.h. That means that alpha will have to
go the same way. The new alpha/freebsd.h has the alpha/freebsd-elf.h
definitions merged in.


34490 11-Mar-1998 jb

Nuke crti.o from the STARTFILE_SPEC again. No asm code is needed on alpha.

Add the define that lets gas know how to ".set" and enable pragmas
so that #pragma weak will work.


34451 10-Mar-1998 jb

Change the LINK_SPEC to specify the same runtime loader as used on
i386-elf because that is what will be used for FreeBSD/Alpha.

Change the STARTFILE_SPEC to match the non-aout version of i386 so
that the csu files can be built in exactly the same way as i386-elf.
This means that FreeBSD/Alpha departs from NetBSD/Alpha which uses
crt0 and crtbegin/crtend. Since i386-aout uses crt0, I guess it was
decided that i386-elf should use crt1. i386-elf also references
crti and with this change, so does FreeBAS/Alpha.

I think it is important for FreeBSD to have a consistent implementation
across architectures and since ELF is quite compatible (ignoring
differences in 32 and 64 bits), gcc might as well be configured the
same.

Another change is that the entry symbol is _start, not __start as
in NetBSD.


34363 09-Mar-1998 peter

Both our a.out (hacked) gas and the binutils gas support .weak

Prompted by: bde


34349 09-Mar-1998 peter

Don't disable the use of $ in assembler labels.. It changes libstdc++
and libg++ so that they won't work with existing binaries (including
netscape!!).


34314 08-Mar-1998 peter

Spell -Bshareable correctly... :-]


34285 08-Mar-1998 peter

svr4.h defines ASM_IDENTIFY_GCC, but neglects to define
ASM_IDENTIFY_LANGUAGE. Use the osfrose.h method, because gdb assumes
'C' by default, so there's no need to further clutter the symbol table.


34284 08-Mar-1998 peter

Cosmetic cleanup for a.out asm generation.. Don't put the end-of-file
markers that the stabs-in-elf system uses.


34269 08-Mar-1998 peter

Put the function stabs in traditional order on a.out, or gdb doesn't see
function local variables.


34230 08-Mar-1998 peter

Add hooks for John Birrell's kernel thread support library.

Submitted by: John Birrell <jb@cimlogic.com.au>


34229 08-Mar-1998 peter

First round of changes to support generation of assembler for the old
a.out gas and the binutils gas (elf or a.out) with a single compiler.

This uses other infrastructure not yet committed, in order to support
both a.out and elf it needs to be able to get to both a.out and elf
gas, ld, libs, crt* etc. So for now, the support is pretty much dormant.

The new freebsd.h file is based on the old freebsd-elf.h file (which has a
long lineage, right back through linux and svr4 files). The change is
pretty dramatic from a gcc internals standpoint as it overrides a lot of
definitions in order to generate different output based on target mode.
There is potential for screw-ups, so please be on the lookout - gcc's
configuration mechanism wasn't really meant for this kind of thing.
It's believed to compile world etc just fine under both a.out and elf, can
handle global constructors and destructors, handles the differences in
a.out and elf stabs, and what sections things like exceptions go in.

The initial idea came from i386/osfrose.h which is a dual rose/elf format
target. These two are not as diverse as a.out and elf it would seem.

The cc front-end uses external configuration to determine default object
format (still being thrashed out, so read the source if you want to see
it so far), and has a '-aout' and '-elf' override command line switch.
There are some other internal switches that can be accessed, namely -maout,
-mno-aout, -munderscores and -mnounderscores. The underscore and local
symbol prefixing rules are controllable seperately to the output format.
(ie: it's possible to generate a.out without the _ prefixes on symbols and
also to generate elf with the _ prefixes. This isn't quite optimal, but
does seem to work pretty well, except the linkers don't always recognise
the local symbols without their normal names)

The default format is a.out (still), nobody should see any major changes.

With both elf and a.out tools and libraries installed:

[1:26pm]/tmp-223> cc -elf -o hello hello.c
peter@beast[1:27pm]/tmp-224> file hello
hello: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically linked, not stripped
[1:27pm]/tmp-225> ./hello
hello world!

[1:27pm]/tmp-226> cc -aout -o hello hello.c
[1:27pm]/tmp-227> file hello
hello: FreeBSD/i386 compact demand paged dynamically linked executable not stripped
1:27pm]/tmp-228> ./hello
hello world!

Since my co-conspirators put a lot of effort into this too, I'll add them
so they can share the blame^H^H^H^H^Hglory. :-)

Reviewed by: sos, jdp


32455 12-Jan-1998 jb

Upgrade the cpp pre-defines to include -Dunix. Turns out we need that
to compile m4.

And don't just define __FreeBSD__, but define it as -D__FreeBSD__=3
like on i386.


32424 11-Jan-1998 jb

Add the alpha MD files for gcc to product ELF for FreeBSD/Alpha.

See freebsd.h and freebsd-elf.h for the silly comment that cgd@netbsd.org
wanted me to add about his claim that uncommented source files that
have been publicly available for ftp for nearly a year; that are
configuration patches to a GPL'ed program; are owned by his previous
employer who refuses to release them. Well... I did as he said. As if
that makes a difference!

At this point we've got cpp, gcc, g++ ported to FreeBSD/Alpha so all
the code that uses __FreeBSD__ is correctly pre-processed. Yay.

I'll commit the bootstrap makefile next to let others play, then on
to libc.


28882 29-Aug-1997 peter

Merge in some of my changes with John's. I've used this to build
an ELF system. I'm not sure about some of the things here. We definately
need to go back and rationalize this.


28846 28-Aug-1997 jdp

Add the necessary defines to the freebsd-elf configuration so that
it can be built via BINFORMAT=elf in the environment. Most likely
some of the directory defines such as STANDARD_EXEC_PREFIX will
change again soon, as we settle on the proper locations for the
various components.

Note, the build still fails when it tries to compile libgcc2.c
using the ELF compiler, unless arrangements have been made for the
compiler to find the ELF assembler instead of the a.out assembler.


25733 12-May-1997 peter

The -pthread option was added to freebsd.h but missed from freebsd-elf.h


25400 03-May-1997 jb

Let gcc know about libc_r. Use -pthread to link against libc_r instead
of libc.


24758 09-Apr-1997 jdp

Make "gcc -shared" work properly for building shared libraries. An
up-to-date version of c++rt0.o is necessary for this to work right.

Closes PR gnu/3035: gcc -shared flag is broken.


24658 05-Apr-1997 jdp

Disallow "-p" when linking, with a diagnostic that recommends using
"-pg" and gprof(1) instead. FreeBSD does not support plain "-p" or
prof(1).

Plain "-p" is still allowed when just compiling. In the compile
phase, "-p" is identical "-pg". It is used by <bsd.lib.mk> for
building profiled object files.


24295 26-Mar-1997 jdp

Update the value of "__FreeBSD__" to 3 for the ELF compiler.


24257 25-Mar-1997 asami

-current is now 3.0. NOT a 2.2 candidate. :)


23076 24-Feb-1997 obrien

Undo rev 1.4 of freebsd.h and 1.2 freebsd-elf.h, where I added
_BSD4_4 as a predefined symbol. People on the lists generally didn't care
for it.


22809 16-Feb-1997 obrien

Add _BSD4_4 as a predefined symbol.
Peter Dufault (dufault@hda.com) suggested this is the most approate symbol
to use.

2.2-R candidate.


19194 26-Oct-1996 peter

Apparently this patch fixes the objc backend on the i386 platforms.
Without this, compiled programs die with FP errors.

This is originally credited to: jlemon@netcom.com (Jonathan Lemon), and
has been forwarded to me by quite a few of people.


18659 03-Oct-1996 jdp

Fix a bug that caused incorrect PIC code to be generated for exceptions.
The symptom was an assembler warning

"GOT relocation burb: `___EXCEPTION_TABLE__' should be global"

followed (sometimes) by a core dump. The fix makes the compiler
generate the correct GOTOFF addressing for that symbol, rather than the
GOT addressing it was emitting before.

Warning: There is still at least one serious bug in the i386 exception
code for PIC. The exception code that is generated clobbers the GOT
register (%ebx) and then tries to use it later. That leads to core
dumps at program execution time. I know where the problem is, but I do
not have a fix for it at this time. Until it is fixed, exceptions will
not work in PIC code. This is a general problem for all i386 platforms;
it is not specific to FreeBSD.


18604 01-Oct-1996 peter

Activate the .weak code generation for libgcc.a and g++ now that it works.


18349 18-Sep-1996 peter

Merge in freebsd-specific changes


18348 18-Sep-1996 peter

Add in hooks to produce assembler output suitable for binutils+elf
Obtained from: John Polstra <jdp@freebsd.org>, from his elfkit.


18337 18-Sep-1996 peter

This commit was generated by cvs2svn to compensate for changes in r18336,
which included commits to RCS files with non-trunk default branches.


18335 18-Sep-1996 peter

This commit was generated by cvs2svn to compensate for changes in r18334,
which included commits to RCS files with non-trunk default branches.