Commit Graph

89 Commits

Author SHA1 Message Date
Hidetoshi Shimokawa
766b710e3a Remove 'SET_ASM_OP' macro, which is unused now and rather harmful
for recent egcs.
1999-06-10 12:05:48 +00:00
John Polstra
d36a530801 Fix typo (#unset where #undef was meant). 1999-05-21 04:56:32 +00:00
David E. O'Brien
395b1ec416 Consistantly protect "#define FOO ..." with "#undef FOO". 1999-05-20 08:30:48 +00:00
David E. O'Brien
2898537149 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.
1999-04-30 19:12:51 +00:00
David E. O'Brien
e53bca4f44 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
1999-04-28 18:48:08 +00:00
David E. O'Brien
3f1ea226c9 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.
1999-04-27 19:29:44 +00:00
David E. O'Brien
512a10fde7 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.
1999-04-27 15:43:56 +00:00
David E. O'Brien
1030a4e631 Use new FBSD_SWITCH_TAKES_ARG' and FBSD_WORD_SWITCH_TAKES_ARG'. 1999-04-22 17:45:24 +00:00
David E. O'Brien
61d2d44398 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.
1999-04-22 17:45:01 +00:00
David E. O'Brien
073f9b19ff Support linking against libgcc_r.
Submitted by:	Luoqi Chen <luoqi@chen.ml.org>
1999-04-14 00:25:45 +00:00
Bruce Evans
b3827ce345 Removed unconditional definitions of __ELF__. They were redundant for
elf and wrong for i386-aout.
1999-04-08 13:57:13 +00:00
David E. O'Brien
2f494cb24f Merge shared LIB_SPEC into share config header. 1999-04-08 07:49:24 +00:00
David E. O'Brien
44109b462f merge alpha/freebsd-elf.h into alpha/freebsd.h
Submitted by:	Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
1999-04-08 07:48:49 +00:00
David E. O'Brien
dd03234d28 Mispelled global option in usage. 1999-04-06 13:09:24 +00:00
David E. O'Brien
6c499bb15a Fix space padding that was causing a problem in creating the final
CPP_PREDEFINES.
1999-04-04 22:46:18 +00:00
David E. O'Brien
bf098f1e3f * 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)
1999-04-03 23:26:03 +00:00
David E. O'Brien
1eb80b4532 Bump __FreeBSD_cc_version to 400002 in case we need to know we are using
EGCS at some point.

Submitted by:	jdp
1999-04-03 02:18:13 +00:00
David E. O'Brien
3b7a861fcf Alpha architecture config files.
Obtained from:	adapted from Hidetoshi Shimokawa <simokawa@FreeBSD.ORG>'s
		alpha suppliment to the Egcs port.
1999-03-30 07:47:06 +00:00
David E. O'Brien
32b91f49ab Base configuration file for all FreeBSD targets. 1999-03-30 07:36:36 +00:00
Poul-Henning Kamp
aca6858651 Remove the linker-set hack we used for BB profiling. 1999-03-21 12:28:14 +00:00
David E. O'Brien
992d0ff19f Update __FreeBSD__ and __FreeBSD_cc_version to be consistant with
__FreeBSD_version

Forgotten by: Eivind and Some anonymous release engineer
1999-01-22 11:09:00 +00:00
Peter Wemm
135b45b1ac a.out is default 1999-01-16 08:51:46 +00:00
Martin Cracauer
38db74296d Compile threaded proframs with -D_THREAD_SAFE, not -D_THREADSAFE 1998-12-15 16:43:14 +00:00
John Polstra
34ff484bfc 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.
1998-10-29 22:11:08 +00:00
John Polstra
98bf848b69 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
1998-10-29 04:27:06 +00:00
Warner Losh
a556fde0bc Add alpha-*=freebsd* to configure 1998-09-09 17:07:36 +00:00
John Polstra
5584f22bb3 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.
1998-09-07 23:32:00 +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
Bruce Evans
0f79d73473 Support printf format checking of FreeBSD kernel formats %[Dbrz].
This is enabled by the undocumented option -fformat-extensions.
This option should be named better and/or give more control over
the extensions.

Fixed a message - don't warn about the field width when it's the
precision that has the wrong type.  Didn't fix excessive checking
for the precision relative to the type - ANSI requires both to be
ints, but gcc permits the field width to be either int or unsigned
int.
1998-08-24 06:33:52 +00:00
Bruce Evans
d983fa4305 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.
1998-08-02 14:57:00 +00:00
John Polstra
3bc25faee6 Add support for a new archetype "printf0" for the "format" function
attribute.  It is like the existing "printf" archetype, except that
it doesn't complain if the format string is a null pointer.  See
the node "Function Attributes" in the GCC info pages if you don't
know what this is all about.

This change will allow us to add format string checking for the
err(3) family of functions.
1998-07-15 04:22:45 +00:00
Bruce Evans
c15a5b80be Fixed printf format errors. 1998-06-30 19:53:09 +00:00
John Birrell
6e2f2fe480 Add LIB_SPEC (same as on i386) so that gcc knows about libc_r. 1998-06-08 10:58:36 +00:00
Peter Wemm
4af3a821f1 -pg was causing a link with -lc_r... :-]
Submitted by:  Dmitry Khrustalev <dima@xyzzy.machaon.ru>
PR: 6287
1998-04-13 14:12:34 +00:00
John Birrell
2161ed1f46 Document the FreeBSD specific options from LIB_SPEC. 1998-04-10 09:19:11 +00:00
John Birrell
6db4691d19 Ouch, my local cvs walloped the version I thought I was committing.
Here is what I intended.
1998-03-14 03:02:19 +00:00
John Birrell
1de944af88 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.
1998-03-13 21:12:12 +00:00
John Birrell
0f471b05f9 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.
1998-03-11 20:56:24 +00:00
John Birrell
37aebf7ed2 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.
1998-03-10 06:47:14 +00:00
Peter Wemm
42fcd1ffa9 Both our a.out (hacked) gas and the binutils gas support .weak
Prompted by: bde
1998-03-09 04:47:58 +00:00
Peter Wemm
df320ec9d3 Only do a.out/elf switching on i386 family 1998-03-09 04:13:31 +00:00
Peter Wemm
3f39463468 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!!).
1998-03-09 03:26:57 +00:00
Peter Wemm
b51cdb1e8b Spell -Bshareable correctly... :-] 1998-03-08 16:09:57 +00:00
Peter Wemm
a2034fc036 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.
1998-03-08 13:26:15 +00:00
Peter Wemm
9ed6fc5562 Cosmetic cleanup for a.out asm generation.. Don't put the end-of-file
markers that the stabs-in-elf system uses.
1998-03-08 12:47:45 +00:00
Peter Wemm
178576c62f Put the function stabs in traditional order on a.out, or gdb doesn't see
function local variables.
1998-03-08 11:54:04 +00:00
Peter Wemm
ebdff85b87 Add hooks for John Birrell's kernel thread support library.
Submitted by: John Birrell <jb@cimlogic.com.au>
1998-03-08 05:33:24 +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
John Birrell
2e56a2ce82 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.
1998-01-12 02:53:28 +00:00
John Birrell
0f4140c055 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.
1998-01-11 04:39:46 +00:00