Commit Graph

70 Commits

Author SHA1 Message Date
Alexander Kabaev
2286fe7635 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)
2009-07-14 21:19:13 +00:00
Alexander Kabaev
d48890cfb8 Back out previous revision until better tested fix is ready.
Approved by: re (impliciti, by approving previos check-in)
2009-06-29 01:33:59 +00:00
Alexander Kabaev
a162c9ae9c Eliminate .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 everys
time given shared library is being relocated and making affected text pages
non-shareable.

Reviewed by:        kib
Approved by:        re (kensmith)
2009-06-28 23:51:39 +00:00
Jung-uk Kim
455cc6ec70 Honor WITHOUT_INSTALLLIB in some places. 2009-02-13 16:51:36 +00:00
Warner Losh
ca7da4c058 MFP4: Add mips to the list of soft-float platforms. 2008-09-19 03:09:36 +00:00
Warner Losh
bfb4b856d3 Prefer the patch in p4 to the patch in svn as it properly sorts the
architectures alphabetically.
2008-09-19 01:35:34 +00:00
David E. O'Brien
4bdc01a9f9 Add FreeBSD/MIPS support to GCC. 2008-09-01 18:46:03 +00:00
Rafal Jaworowski
56ae1bed48 Let PowerPC world optionally build with -msoft-float. For FPU-less PowerPC
variations (e500 currently), this provides a gcc-level FPU emulation and is an
alternative approach to the recently introduced kernel-level emulation
(FPU_EMU).

Approved by:	cognet (mentor)
MFp4:		e500
2008-02-24 19:22:53 +00:00
Alexander Kabaev
a602382caf Remove comment that was added by mistakes and which prevented _eprintf
and gcc_bcmp to be added to static libgcc.a.

Approved by:	re (kensmith)
2007-08-14 20:49:57 +00:00
Alexander Kabaev
afb57df680 Update bmake glue to build GCC 4.2.
Also:
        Switch FreeBSD to use libgcc_s.so.1.

        Use dl_iterate_phdr to locate shared objects' exception frame
        info instead of depending on older register_frame_info machinery.
        This allows us to avoid depending on libgcc_s.so.1 in binaries
        that do not use exception handling directly. As an additional
        benefit it breaks circular libc <=> libgcc_s.so.1 dependency too.

        Build newly added libgomp.so.1 library, the runtime support
        bits for OpenMP.

        Build LGPLed libssp library. Our libc provides our own
        BSD-licensed SSP callbacks implementation, so this library
        is only built to benefit applications that have hadcoded
        knowledge of libssp.so and libssp_nonshared.a. When linked
        in from command line, these libraries override libc
        implementation.
2007-05-19 04:25:59 +00:00
Olivier Houchard
ca8022c580 Don't build the libgcc with functions already included in the libc to
unbreak the build.
We'll switch back to the libgcc functions and get rid of the libsoftfloat
later.
2006-10-12 16:43:15 +00:00
Ruslan Ermilov
5740a2b62d Convert NO_PROFILE and NO_LIB32 to new style. 2006-03-18 21:37:05 +00:00
Ruslan Ermilov
ab7a294721 NODOCCOMPRESS -> NO_DOCCOMPRESS
NOINFO -> NO_INFO
NOINFOCOMPRESS -> NO_INFOCOMPRESS
NOLINT -> NO_LINT
NOPIC -> NO_PIC
NOPROFILE -> NO_PROFILE
2004-12-21 09:33:47 +00:00
Ruslan Ermilov
a35d88931c For variables that are only checked with defined(), don't provide
any fake value.
2004-10-24 15:33:08 +00:00
Alexander Kabaev
06f7731a1e Add missing patch which was forgotten during GCC 3.4.2 import. libgcc.a
gets most of it content back now, when symbols from LIB2FUNCS are actually
compiled.

Noticed by: Steve Kargl <gk at troutmask dot apl dot washington dot edu>
Pointy hat to: kan
2004-08-04 03:13:51 +00:00
Alexander Kabaev
81efba8c9e Bmake glue for GCC 3.4.2-prerelease. 2004-07-28 05:27:21 +00:00
Alexander Kabaev
4346430319 Add unwind-c.c file required for -fexceptions in C sources. 2003-07-11 05:29:11 +00:00
Ruslan Ermilov
5497021b71 Catch up with bsd.lib.mk,v 1.143. 2003-06-30 19:11:20 +00:00
Peter Wemm
0800731a79 Build/install the PIC version of libgcc (libcc_pic.a) for use by shared
libraries that do exception unwinding.
2003-06-13 22:07:39 +00:00
Peter Wemm
224af215a6 Zap now-unused SHLIB_MINOR 2002-09-28 00:25:32 +00:00
Peter Wemm
66422f5b7a Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports.  As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL.  It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha
2002-09-17 01:49:00 +00:00
David E. O'Brien
a443e96e31 Fix the sparc64 build and make the LIB1ASMSRC handling more robust. 2002-05-18 09:46:12 +00:00
Poul-Henning Kamp
d2f7f45a57 Improve chances that we correctly compile LIB1ASMSRC on all architectures.
sparc64 looked for the nonexistent sparc64/lb1spc.asm file instead
of the sparc/lb1spc.asm file.

arm probably looked for arm/arm/lib1funcs.asm instead of arm/lib1funcs.asm
ia64 probably looked for ia64/ia64/lib1funcs.asm instead of ia64/lib1funcs.asm

i386 and alpha don't seen to use the LIB1ASMSRC.
2002-05-18 09:21:42 +00:00
Peter Wemm
aff1ee31b8 Move LIB1ASMFUNCS from the SYMS variable and explicitly add it to OBJS
later.  Otherwise make will try and build the supposedly assembler .o
files from libgcc2.c - which does not work too well (the .o's have no
content)

Reviewed by:	obrien
2002-05-17 08:59:13 +00:00
David E. O'Brien
03083777d9 Post rev 1.39, the PowerPC specific additions to OBJS was getting lost. 2002-05-17 04:18:33 +00:00
David E. O'Brien
d781910a94 bsd.lib.mk now understands what to do with .asm files.
So we can refer to these files by their real name vs. playing tricks
renaming them during the build.
2002-05-17 03:08:15 +00:00
David E. O'Brien
357228d788 Properly build lb1spc.asm on Sparc64. 2002-05-12 14:05:58 +00:00
David E. O'Brien
be60db5891 I was not strict enough with my ordering of things to satisfy make(1) nieve
symbol evaluation which causes it to be very sensitive to macro ordering.
2002-05-12 12:44:04 +00:00
David E. O'Brien
e20b0b7333 [Ab]use LDFLAGS rather than CFLAGS.
BDE tells me POSIX pretends `ld' as a directly callable entity does not exist.
2002-05-10 09:32:39 +00:00
David E. O'Brien
3cdd876f04 Bmake bits for Gcc 3.1.
Partially made possible by:	Wilko.Bulte@compaq.com
2002-05-10 08:54:50 +00:00
David E. O'Brien
94083430d8 Need to build libgcc.so with -nostdlib -- otherwise we try linking with
ourself.
2002-05-10 08:52:41 +00:00
David E. O'Brien
4466867fd8 Update for GCC 3.1.
Tested on:	alpha, sparc64, i386
2002-05-07 00:55:51 +00:00
David E. O'Brien
0537668b9b It is easier for me to debug with -I's at the rear. 2002-04-20 01:27:28 +00:00
David E. O'Brien
0b3c5f4098 MFC: reorg. 2002-04-05 09:20:49 +00:00
David E. O'Brien
cdc9f8b9cd Style reorg. Also spell -fpic as determined by bsd.lib.mk. 2002-04-05 09:12:25 +00:00
David E. O'Brien
0d4ffb0f07 Working changes for GCC 3.0.2.
We now fake out the native libgcc.mk + GNU autoconf'ed Makefile.
This gives us the flexability we will need to support our new arches
(StrongARM, Sparc64, PowerPC, and IA-64).  If this new way proves to
be too much a hassle, I still have a close-to-being-finished version
that is more like the 2.95 version of this file.
2001-12-18 03:05:22 +00:00
David E. O'Brien
3f6014e672 Use a unified libgcc rather than a seperate one for threaded and
non-threaded programs.  This provides threaded programs with the
needed exception frame symbols.

parts submitted by:	Max Khon <fjoe@iclub.nsu.ru>
PR:	23252
2001-01-06 06:16:31 +00:00
David E. O'Brien
c8a1d5ccc3 Scoot things over to the temporary *.295 source while I do major construction
on the mainline sources.
2000-06-04 06:56:23 +00:00
David E. O'Brien
ac419355a1 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.
2000-03-23 10:18:26 +00:00
David E. O'Brien
a8d46c3a99 Pay attention to the "KEEP THIS IN SYNC" comment, and sync the `tm.h'
header with src/gcc/usr.bin/cc/cc_tools/Makefile.
1999-11-17 07:20:27 +00:00
David E. O'Brien
eb33411e9b Cut over the system compiler from from EGCS 1.1.2 to GCC 2.95.2. 1999-11-15 04:16:19 +00:00
David E. O'Brien
0ff494e258 Cosmetic change to match cc_tools/Makefile 1999-11-15 00:49:35 +00:00
Bruce Evans
87d902672f Fixed the hack for using "../libgcc/Makefile" in libgcc_r/Makefile.
${LIB} was wrong at dependency-parsing time, so dependencies for
libgcc_r*.a were wrong.  This somehow worked right, except libgcc_r*.a
were always out of date.
1999-10-03 02:43:20 +00:00
Peter Wemm
9b7a44a60e $Id$ -> $FreeBSD$ 1999-08-27 23:37:10 +00:00
David E. O'Brien
7372c43413 Purely cosmetic changes -- fix Id's 1999-08-16 04:27:28 +00:00
David E. O'Brien
61f6abe41d alpha/freebsd-elf.h has been merged with alpha/freebsd.h 1999-04-08 08:39:16 +00:00
David E. O'Brien
339895b8a0 Don't require gcc/config/${MACHINE_ARCH}/xm-freebsd.h when we already know
the contents of it.  Instead create it, so all arch's are consistent.
1999-04-08 08:19:28 +00:00
David E. O'Brien
3da8ad7260 Conditionalize one more i386'ism. 1999-04-04 20:47:33 +00:00
David E. O'Brien
8c1efc3ea6 Attempt to creating the right ``tm.h'' file for the Alpha. 1999-04-04 20:41:50 +00:00
David E. O'Brien
18ff6ae909 Minimum set of changes to switch from Gcc 2.7.2 (in contrib/gcc) to Egcs 1.1.2
(in contrib/egcs)
1999-04-04 16:36:35 +00:00