Commit Graph

82 Commits

Author SHA1 Message Date
David E. O'Brien
e36ad15261 add CC' as a link to c++' for compatablity with SGI. 1998-03-08 12:27:04 +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
Bruce Evans
6acbf22513 Fixed `make -jN' for large N. The usual method of pretending that all
objects depend on all generated headers doesn't work because it gives
cyclic dependencies.  Give enough dependencies explicitly.  We no
longer need to use .SINGLESHELL for `make depend'.  .SINGLESHELL was
more of a bottleneck than usual because `make depend' makes everything.

Fixed some spelling and English errors.
1998-03-06 13:34:36 +00:00
John Birrell
3b306d567c Change MACHINE -> MACHINE_ARCH so that the design make sense on those
machines where the processor chip determines the compiler, and where
multiple machines use the same architecture.
1998-01-25 09:49:00 +00:00
John Birrell
a3f1de88b2 More i386 -> ${MACHINE} changes to make this Makefile machine
independent. It makes it look like you can get aout on alpha, but
that's just your imagination. The makefile above gives you no choice.
1998-01-11 04:13:25 +00:00
John Birrell
df13e7f694 Replace i386 references with ${MACHINE} to make this makefile almost
machine independent, with the only dependency being the binary format
to build. We only expect to build ELF on alpha although we'll need
ECOFF compatibility with Digital Unix.
1998-01-11 04:10:26 +00:00
Bruce Evans
cee45d9aa8 <bsd.prog.mk> has included ../Makefile.inc for a long time, and there
are no complications involving .PATH or dependencies, so don't include
it here.
1997-12-17 19:57:35 +00:00
Jordan K. Hubbard
97fe7f477f Changes to support full make parallelism (-j<n>) in the world
target.
Reviewed by:	<many different folks>
Submitted by:	Nickolay N. Dudorov" <nnd@nnd.itfs.nsk.su>
1997-10-05 09:40:24 +00:00
Paul Traina
72b4ef7179 NOSHARED takes a yes/YES no/NO value, not "true, false, hey mon!".
NOPIC is used to not generate a shared library, not NOSHARED.
Make NOSHARED advisory where appropriate.
Remove bogus NOSHARED (kbdio).
1997-06-29 06:03:42 +00:00
John Polstra
a6660d6035 Change a "=" to "?=" to make it easier to override the binary format
from the environment.
1997-03-28 04:45:30 +00:00
Peter Wemm
fce15c9ab3 Revert $FreeBSD$ to $Id$ 1997-02-22 15:48:31 +00:00
Jordan K. Hubbard
211253fcfd Remove incorrect use of double-negative since it means the same thing
to make but perhaps not to the human reading it.
1997-01-21 18:16:02 +00:00
Jordan K. Hubbard
1130b656e5 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
Wolfram Schneider
af20215665 Sort cross references. 1997-01-13 00:25:51 +00:00
Joshua Peck Macdonald
dfc62077a2 Add the missing annotations. 1997-01-11 02:59:52 +00:00
Peter Wemm
4023b3033b Build/install c++filt from g++, we already have all the sources and
it's and useful. (Ever tried to read 'nm' and 'ldd -v' output on a c++
object or library? :-) This filter decodes the mangled symbol names.)

Requested by: Chuck Robey <chuckr@glue.umd.edu>
1996-10-13 17:37:03 +00:00
Peter Wemm
090d47a84f Resync the libgcc functions list with the 2.7.2.1 tree. We were building
a (now) defunct routine that no longer exists (causing an empty .o file),
and were missing some others.  Some of the ones we were missing are no-ops
on the i386, so there are now 4 empty .o files.

(It seems that libc/quad has got some defunct functions now)
1996-10-01 03:47:36 +00:00
Peter Wemm
a4136bfcfc Don't build config/i386/i386.o in the src/contrib/gcc tree..... :-] 1996-10-01 03:44:29 +00:00
Bruce Evans
08eb1b8719 cpp was named ccp. 1996-09-23 16:12:38 +00:00
Peter Wemm
6f78ed368c Crude hack to work around cpp.1 doing a .so man1/cccp.1
Pointed out by: Warner Losh <imp@village.org>, PR#1667
1996-09-23 04:14:30 +00:00
Jordan K. Hubbard
926a83ef42 Nuke a trailing .endif which survived Peter's last edits. 1996-09-21 17:49:45 +00:00
Peter Wemm
8fb64f20b5 Remove the partial support for a shared -lcc_int, since it's been unusable
for a fair while.  cc1, cc1plus etc have been linked static for some time.
1996-09-21 14:27:38 +00:00
Peter Wemm
a1b588fd3f Man the lifeboats! Tie down the hatches! Red alert! Activate gcc-2.7.2.1!
(the old cc has been tagged with "gcc_2_6_3_final" so we have a reference
 point in case of unforseen disasters...)

This has the objc backend active, and I think I've managed to get the
f77 f2c support through in one piece, but I don't know fortran to test it.

A 'make world' change and libobjc commit will follow.

If you normally do 'make -DNOCLEAN world', do not do so this time, I know
it can fail with groff.

This version of gcc makes a **LOT** more warnings on our kernel.
1996-09-19 15:53:53 +00:00
Jordan K. Hubbard
526195ad0d General -Wall warning cleanup, part I.
Submitted-By: Kent Vander Velden <graphix@iastate.edu>
1996-07-12 19:08:36 +00:00
Jordan K. Hubbard
cd9a2f5c28 Bring in my changes for removing the pestilent obj links (unless you
really want them) from /usr/src.  This is the final version of the
patches, incorporating the feedback I've received from -current.
1996-06-24 04:26:21 +00:00
Poul-Henning Kamp
4fbec7bfd1 Make rules reentrant. 1996-05-28 00:34:38 +00:00
Wolfram Schneider
9fb933075e `mv'' -> `mv -f''
``rm'' -> ``rm -f''
so mv/rm may not ask for confirmation if you are not root
1996-05-07 23:19:49 +00:00
Joerg Wunsch
4e20deaab3 f2c's -krd does not work with f77 wrapper
Closes PR # gnu/1101

Submitted by:	kargl@troutmask.apl.washington.edu (Steven G. Kargl)
1996-03-27 07:46:04 +00:00
Mike Pritchard
6fad16fd59 Add some missing MLINKS, correct some cross references, correct some
file locations and some minor formatting/style problems.
1996-02-09 16:20:10 +00:00
Thomas Graichen
485a4a95e8 Reviewed by: jmz (Jean-Marc Zucconi)
added a simple man-page for our f77 (f2c/gcc driver)
1996-01-16 10:21:45 +00:00
Jordan K. Hubbard
48551fe40b Work around optimizer strength reduction bug.
Submitted by:	Richard Henderson <richard@atheist.tamu.edu>
Obtained from:	bug-gcc@prep.ai.mit.edu
1996-01-04 04:44:47 +00:00
Bruce Evans
1f4f6e61d4 Enabled my FUNCTION_PROFILER_EPILOGUE code and added option
-mprofiler-epilogue to support it and documented the option.

cc.1:
Listed all the machine-dependent options, even the temporary
debugging ones.

invoke.texi:
Fixed the sense of -mno-ieee-fp.
Sorted the machine-dependent options.
1995-12-26 01:34:39 +00:00
David Greenman
694ae82790 When building -static, link with special scrt0.o instead of crt0.o. This
reduces the text size by about 1.5Kbytes.
1995-10-18 04:28:31 +00:00
Garrett Wollman
401a157932 Make cc1plus smaller and faster as was done for cc1 by linking static. 1995-10-02 16:37:16 +00:00
David Greenman
1661971e0f Build cc1 nonshared. This actually results in it consuming 40K *less* disk
space and improves compile times by a few percent.
1995-10-01 20:16:27 +00:00
Poul-Henning Kamp
0ad2ff70ee Stop using gnumalloc. 1995-09-22 14:14:32 +00:00
Joerg Wunsch
6aefd62078 Make only a -r' flag (as opposed to -r*') special within the
LINK_SPEC.  This solves a problem with the f77 frontend where
aproviding the -r8 option (use REAL*8) caused `cc' to ``forget'' to
pass the entry point to the linker.

Closes PR #gnu/644: f77 -r8

Reviewed by:	watanabe@komadori.earth.s.kobe-u.ac.jp (Takeshi WATANABE)
1995-08-04 17:11:32 +00:00
Bruce Evans
460396d6ee Fix dependencies for gcc.info and reno.info. `make depend' doesn't handle
info files although texinfo supports @include.
1995-07-12 18:57:21 +00:00
Rodney W. Grimes
4399be3cbd Remove trailing whitespace. 1995-05-30 05:05:38 +00:00
Rodney W. Grimes
58d8a5e922 Make error message for no input files specified consistent across all
three compilers.

Submitted by:	Thomas Graichen <graichen@sirius.physik.fu-berlin.de>
1995-05-17 01:03:56 +00:00
Nate Williams
738ff67657 Gcc v2.6.3 currently has a problem with templates. Specifically, with
default switches, template functions get EXTERNAL linkage in each file
in which they occur, causing multiple definition errors during
linking.  The enclosed patch (from gnu.g++.bug) appears to solve the
problem (I enclose the accompanying message as well).

This patch fixes the multiply defined template functions bug
which was introduced in 2.6.1.

Submitted by:	"Justin T. Gibbs" <gibbs@estienne.cs.berkeley.edu>
Obtained from:  Jason Merrill at cygnus support on G++ mailing list
1995-03-17 21:24:25 +00:00
Andrey A. Chernov
4ad6de4413 Bump SHLIB_MAJOR to 263 to match ../Makefile.inc 1995-03-13 01:30:02 +00:00
Poul-Henning Kamp
0282d7a383 Don't install shared libgcc, we can't do it this way.
I will uuencode and check in to a "compat20" area the 2.0-RELEASE version.
1995-03-12 20:17:07 +00:00
Bruce Evans
dad6f71aed Remove the last vestige of COMMENT_BEGIN. 1995-03-12 11:47:20 +00:00
Bruce Evans
60ae9f8840 Undo most of the changes in the gcc-2.6.3 "upgrade"
- Don't define NO_IMPLICIT_EXTERN_C here.  It is already the default
  (defined in i386/bsd.h).
- Don't lose the fixed comment about FUNCTION_PROFILER.
- Don't lose the define of NO_PROFILE_DATA.

Replace the unused define of COMMENT_BEGIN by the less-unused define
of ASM_COMMENT_START.  COMMENT_BEGIN was only defined in i386-specific
files and was not used in any part of gcc-2.6.3.  ASM_COMMENT_START
is defined for several targets and is used for stuff that we don't
support (dwarf).
1995-03-12 11:45:12 +00:00
Poul-Henning Kamp
fd6eef4fd9 Remove a bunch of funtions that are in libc already.
Add back the shared libgcc, now that we don't use it to link against.
1995-03-12 09:37:26 +00:00
Nate Williams
c6bc11c2f6 Added support for #pragma weak.
Obtained from: NetBSD
1995-03-11 04:07:26 +00:00
Nate Williams
b18f8c1dda Updated the sources to gcc 2.6.3 with FreeBSD changes already applied.
Note: This isn't the most correct way, but it works and it's fast.
1995-03-11 03:51:44 +00:00
David Greenman
c683527908 Define LINK_LIBGCC_SPECIAL_1 so that gcc will build static with libgcc. 1995-03-10 19:39:32 +00:00
Poul-Henning Kamp
93ccf2fa5e Since we are in the gcc bashing mood anyway: Add two changes for
basic-block profiling:
1. use a .stabs(25) symbol to link all the data structures together with.
The regular method isn't safe for the kernel.
2. add a BB before the prologue and add a BB after the epilogue,  this
alows us to find the length of any counted BB.  This is a cheap and somewhat
reasonable measure of actual cost.
1995-03-10 08:24:09 +00:00