Commit Graph

46 Commits

Author SHA1 Message Date
Pedro F. Giffuni
bc38441579 GCC: Add a new option "-fstack-protector-strong"
This includes additional functions to be protected: those that
have local array definitions, or have references to local frame
addresses. This is a new option in GCC-4.9 that was relicensed
by Han Shen from Google under GPLv2 for OpenBSD.

Obtained from:	OpenBSD (2014-01-14)
MFC after:	2 weeks
2015-07-30 14:31:09 +00:00
Pedro F. Giffuni
5c3c610835 gcc: clean some warnings from -Wformat-security
Obtained from:	Apple GCC 4.2 - 5646 (Radar 5764921)
MFC after:	1 week
2013-12-20 20:57:13 +00:00
Pedro F. Giffuni
2bd5e058b7 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)

Reference:
[1] http://gcc.gnu.org/viewcvs/gcc/trunk/?pathrev=126700

Obtained from:	gcc pre4.3 (GPLv2) branch
MFC after:	3 weeks
2013-11-21 16:38:57 +00:00
Tim Kientzle
acf8ebb0e9 Implement -print-file-name=include (which is undocumented
but used by some Linux boot loaders).  This option prints
out the directory holding the include files needed by
a freestanding program.  The default implementation of
this doesn't work on FreeBSD because of the different
include file layout.  But it's easy to implement:
just return /usr/include (or the cross-compiling equivalent).

Reviewed by:	kan
MFC after:	1 week
2012-02-10 05:05:42 +00:00
Alexander Kabaev
7a6bf861d6 Disable shared libgcc use for profiled builds. GNU linker pulls symbols
out of libgcc_s.so.1 somehow and fails to record DT_NEEED dependency
when linking with profiled libraries despite --ld-as-needed option.
2007-05-28 23:02:56 +00:00
Alexander Kabaev
be54bacbaf Merge local FreeBSD changes. 2007-05-19 02:23:49 +00:00
Alexander Kabaev
f2d5255ddd Resolve conflicts after GCC 3.4.6 20060825 import. 2006-08-26 21:37:21 +00:00
Alexander Kabaev
c3cbf7fdb9 Merge conflicts for GCC 3.4.4. 2005-06-03 04:02:20 +00:00
Alexander Kabaev
4babd86df3 Merge FreeBSD modifications into gcc 3.4.2-prerelease:
1.{2,15}      FREEBSD_NATIVE.
  1.21          "GCC_OPTIONS".
  1.{16,25,27}  Cross-compiling issues.
  1.38		Correct priority for GCC_EXEC_PREFIX.
2004-07-28 04:05:09 +00:00
Alexander Kabaev
57ec9907bc Use correct priority parameter value in add_prefix from corresponding
enum instead of passing literal 0. This fixes gcc invocations with
GCC_EXEC_PREFIX environment set.

Submitted By:	Geoff Morrison
PR:		gnu/53476
2003-11-13 22:40:05 +00:00
Alexander Kabaev
b4b53e1576 Merge revs 1.{2,15} (FREEBSD_NATIVE); 1.21 ("GCC_OPTIONS"); 1.{16,25,27}
(cross compiling issues).
2003-11-07 03:23:43 +00:00
Alexander Kabaev
cf9a9a701d Merge FreeBSD modifications into gcc 3.3.1-prerelease:
1.{2,15}	FREEBSD_NATIVE.
  1.21		"GCC_OPTIONS".
  1.{16,25,27}	Cross-compiling issues.
2003-07-11 04:45:39 +00:00
Alexander Kabaev
6f20e984fc Merge FreeBSD modifications into gcc 3.2.2 release:
1.{2,15}     FREEBSD_NATIVE.
  1.21         "GCC_OPTIONS".
  1.{16,25,27} Cross-compiling issues.
2003-02-10 06:03:16 +00:00
David E. O'Brien
8c5f736449 main() changed its argv declaration, so follow suit in some FBSD added code. 2003-01-29 05:16:58 +00:00
David E. O'Brien
8648049b51 Merge revs 1.{2,15} (FREEBSD_NATIVE); 1.21 ("GCC_OPTIONS"); 1.{16,25,27}
(cross compiling issues) into GCC 3.2.1 release.

Note revs 1.{5,13} (ELF and objformat support) are OBE with the a.out dike-out.
2002-12-04 15:57:11 +00:00
David E. O'Brien
f685377c2e 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
2002-11-26 18:25:20 +00:00
David E. O'Brien
be70d88803 ELF low-level toolchain bits now live in /usr/bin, not /usr/libexec/elf. 2002-10-12 01:39:46 +00:00
Alexander Kabaev
2a4b2c4b2e Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.\\{2,15\\}     FREEBSD_NATIVE
  1.\\{5,13\\}     ELF, and objformat support
  1.\\{16,23,25\\} Better cross building control
  1.21           'GCC_OPTIONS'
  1.27           cross-arch MD_EXEC_PREFIX fixes
                 cc -print-search-dir fixes
  1.28           Read specs from /usr/libdata/gcc/specs, if available

Approved by:	obrien
2002-10-10 04:49:03 +00:00
Alexander Kabaev
a8a3b181ed Merge FreeBSD modifications into gcc 3.2.1-prerelease:
1.\{2,15\}     FREEBSD_NATIVE
  1.\{5,13\}     ELF, and objformat support
  1.\{16,23,25\} Better cross building control
  1.21           'GCC_OPTIONS'
  1.27           cross-arch MD_EXEC_PREFIX fixes
                 cc -print-search-dir fixes
  1.28           Read specs from /usr/libdata/gcc/specs,
                 if available

Approved by:	obrien
2002-09-01 21:03:33 +00:00
David E. O'Brien
74d3af89ef Read specs from /usr/libdata/gcc/specs if it exists. 2002-06-06 00:49:58 +00:00
Ruslan Ermilov
35abacef2a MD_EXEC_PREFIX doesn't work for the cross-arch compiler.
The change also makes the `cc -print-search-dirs' output
sane (the pre-3.1 way) in the non-cross case.

Draft reviewed by:	obrien
2002-05-16 15:22:58 +00:00
David E. O'Brien
aa12b755c1 Merge revs 1.{2,15} (FREEBSD_NATIVE); 1.{5,13} (ELF, and objformat support);
1.{16,23,25} (better cross building control); 1.21 ("GCC_OPTIONS")
into the GCC 3.1 prerelease.
2002-05-09 22:02:01 +00:00
David E. O'Brien
fcd0ff585f Allow for better control over the GCC front-end when building a cross
compiler.

* Undo the diking out of cross compiler logic from gcc.c rev 1.16.
* Add the `CROSS_STARTFILE_PREFIX' knob.
* Add our own definition of `STANDARD_INCLUDE_DIR'.  This should have been
  included in freebsd-native.h rev 1.5.
2002-03-05 00:17:24 +00:00
David E. O'Brien
a84e77fb7b Allow one to specify a STANDARD_EXEC_PREFIX for GCC (but not BINUTILS) bits. 2002-03-03 04:18:00 +00:00
David E. O'Brien
7486111210 Better granularity of the FREEBSD_NATIVE #ifdef's. 2002-03-02 09:58:48 +00:00
David E. O'Brien
adb423b12d Merge revs 1.{2,15} (FREEBSD_NATIVE); 1.{5,13} (ELF, and objformat support);
1.16 (allow specification of TOOLS_PREFIX); 1.21 ("GCC_OPTIONS")
into GCC 3.1-snap.

Note that rev 1.20 was fixed in the stock GCC 3 sources.
2002-02-06 02:53:38 +00:00
David E. O'Brien
872825029c Support the environmental var "GCC_OPTIONS". Which can hold a set of
default options for GCC.  These options are interpreted first and can be
overwritten by explicit command line parameters.  This provides one way of
adding [temporary] options to your world build w/o editing /etc/make.conf.
2001-05-29 09:54:45 +00:00
David E. O'Brien
0e907ffc9a Merge gcc-2.95.3-test3 changes onto mainline. Bump FreeBSD cc version. 2001-02-17 08:35:00 +00:00
David E. O'Brien
f0ae320070 Merge gcc.2.95.3-test1 changes onto mainline 2001-01-03 17:17:01 +00:00
David E. O'Brien
40a121a27c Merge conflicts. 2000-03-09 10:11:08 +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
a3d6eca585 Reduce the FreeBSD custom hacks to gcc.c by using the GCC provided methods
of changing the search dirs.  This also removes an used search dir,
removes unneeded redundancy, and a bugus dir we enherited on the i386
by baseing off of svr4.h.

We went from:
	install: /usr/libexec/(null)
	programs: /usr/libexec/<OBJFORMAT>/:/usr/libexec/:/usr/bin/:/usr/libexec/
	libraries: /usr/libdata/gcc/:/usr/libexec/:/usr/ccs/lib/:/usr/lib/

to:
	install: /usr/libexec/(null)
	programs: /usr/libexec/<OBJFORMAT>/:/usr/libexec/
	libraries: /usr/libexec/:/usr/lib/
1999-12-22 05:00:28 +00:00
David E. O'Brien
7849745722 Provide complete coverage in switch statement to quiet -Wall. 1999-12-18 09:56:15 +00:00
David E. O'Brien
cd423b136e * Use getobjformat() rather than manually do what it does.
* Don't conditional based on i386, but generalize to all FreeBSD arch's.
* Don't be a.out-centric, but generalize to handle other possible future
  formats.

Submitted by:	marcel (partial)
1999-11-29 10:41:21 +00:00
David E. O'Brien
5e4f33b57d Structure field name changed. 1999-11-03 12:33:56 +00:00
David E. O'Brien
844fd17cbc Merge the FREEBSD_NATIVE and ELF/a.out support into GCC 2.95.1. 1999-10-26 09:13:47 +00:00
Bruce Evans
e6413fc21c Merge from ../egcs/gcc/gcc.c rev.1.5:
Don't exclude directories that the linker is "known" to search (/lib
and /usr/lib) when deciding whether to pass certain paths to the
linker.  Under FreeBSD, the linker is actually known to never search
/lib and to only search /usr/lib in the elf case.  Not passing the
paths causes at best causes confusing differences for cross compiling.
This change is conditional on FREEBSD_NATIVE but should be absolute.
1999-09-13 15:50:16 +00:00
David E. O'Brien
e9a76e02f7 This brings rev 1.2 (FREEBSD_NATIVE) and rev 1.5 (mixed ELF/aout support)
into EGCS 1.1.2.
1999-08-29 23:53:46 +00:00
Peter Wemm
135b45b1ac a.out is default 1999-01-16 08:51:46 +00:00
John Birrell
8472e43276 Change /etc/objectformat to /etc/objformat. Last chance 'cause it's E-day.
Suggested by: jdp
1998-08-30 20:40:29 +00:00
Peter Wemm
df320ec9d3 Only do a.out/elf switching on i386 family 1998-03-09 04:13:31 +00:00
Peter Wemm
9cb13c2344 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
1998-03-08 05:29:49 +00:00
Peter Wemm
300fb94053 correct vfork()/exit() to vfork()/_exit(). This is far more important
now that vfork() actually works in FreeBSD for the first time.

Spotted by: se
1997-04-25 06:42:57 +00:00
Peter Wemm
8988623bce check for /usr/libdata/gcc/specs and use it if it exists. 1997-02-22 15:21:40 +00:00
Peter Wemm
f7f03b3cbc When running native on freebsd (ie: in /usr/bin, /usr/libexec, not the
gnu-style /usr/local/lib/gcc* layout), only search the paths that
exist for the modules (cc1, cc1plus , cc1obj etc)

Also, update an error message.
1996-09-18 06:45:17 +00:00
Peter Wemm
a4cd5630b0 Import of unmodified (but trimmed) gcc-2.7.2. The bigger parts of the
non-i386, non-unix, and generatable files have been trimmed, but can easily
be added in later if needed.

gcc-2.7.2.1 will follow shortly, it's a very small delta to this and it's
handy to have both available for reference for such little cost.

The freebsd-specific changes will then be committed, and once the dust has
settled, the bmakefiles will be committed to use this code.
1996-09-18 05:35:50 +00:00