Commit Graph

75 Commits

Author SHA1 Message Date
simonb
842e180144 Remove the call to init_fallthru/fini_fallthru and call _init/_fini
directly for MIPS.  Making these global to keep gcc4 happy broke gcc3.
Shaves a few instructions off this path as well.

Other arches to follow with similar changes.

With much help from Nick Hudson.
2006-06-30 09:00:46 +00:00
mrg
db19e89e04 remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.
2006-06-02 22:16:18 +00:00
christos
351fa65664 Instead of using -I- -I${.CURDIR} and #include "dot_init.h", use:
-I${.CURDIR} and #include <dot_init.h>, since -I- is obsoleted in gcc-4,
and it is too confusing anyway.
2006-05-19 19:11:12 +00:00
christos
96473fa808 change __weak_extern to __weak_reference so that gcc4 works. 2006-05-18 17:54:19 +00:00
christos
e08e654f06 Mark _DYNAMIC to have attribute __weakref__, so that gcc-4 does not optimize
&_DYNAMIC == NULL away. From Matt Thomas.
2006-05-17 17:08:07 +00:00
mrg
169832563d with GCC4 we *need* to pass -fno-unit-at-a-time otherwise GCC
reorders things breaking _init() and _fini().

for i386, the {init,fini}_fallthru() functions were being output
_before_ the _init()/ _fini(), and instead of falling through to
the rest of the .init/.fini section, it would fall through to
_init()/_fini() again, and again, and again, until the stack was
exhausted.

now i386 works, but i have not checked that this works for
sparc64 as well.
2006-05-13 01:40:34 +00:00
perry
2d65de2479 bare asm -> __asm 2005-12-24 22:45:33 +00:00
perry
4e11af46bc Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 21:11:15 +00:00
thorpej
70638a64cb Error out if we try to build with GCC 3.3 or later; we should be using
the GCC-supplied crtbegin / crtend in the GCC 3.3 or later case.
2004-08-28 00:19:22 +00:00
thorpej
8d13a4aafe Switch to using GCC's supplied crtbegin / crtend files. 2004-08-28 00:18:38 +00:00
thorpej
68e26dcdb6 _strrchr()'s second argument is actually an int. 2004-08-26 21:01:12 +00:00
thorpej
352bb3a6aa Use ANSI function decls. 2004-08-26 20:57:47 +00:00
thorpej
11b5ec27b8 Remove sysident.h-related comment; that stuff is handled by crti.c these
days.
2004-08-26 20:51:27 +00:00
christos
480316c216 Make sure this still compiles with gcc-2.95. Hello vaxen! 2003-12-03 18:41:35 +00:00
lukem
3921361c6a Use __attribute__((__used__,__noinline__)) (instead of __unused__)
for __do_global_ctors_aux() and __do_global_dtors_aux(),
to fix building with gcc3 -O3.
Discussed with Matt Thomas & Christos Zoulas, and tested on alpha & i386.
2003-12-02 03:01:19 +00:00
fvdl
e367e360a4 The x86_64 assembler seems to get it wrong when assembling
_eprol@GOTPCREL, it resolved it internally as a PC-relative instruction,
getting garbage, since the needed value is in the GOT. Add a CPP hook
to export it explicitly, this makes it work. Only active on amd64. XXX
2003-11-28 23:25:54 +00:00
dsl
016359fc65 Make gcrt0.o depend on crt0.o so that it picks up the dependencies from .depend. 2003-11-11 11:32:39 +00:00
fvdl
7e7bcf4bc9 Allow platforms to define __EH_FRAME_CONST. Currently "const" for x86_64,
empty for others. x86_64 (and s390, which we do not have) have .eh_frame
as a read-only section, so __EH_FRAME_BEGIN__ and the register/deregister
functions must take a const foo *.

This also fixes an ICE in gcc 3.3.1 (see gcc PR #9552)
2003-09-07 22:27:54 +00:00
skrll
d900731978 Resolve dlsym(3) and friends directly so that dlsym(RTLD_NEXT,...) works.
Previously dlsym resolved to the version in crt0.o or libc which would
mean that the caller's shared object couldn't be determined correctly
using __builtin_return_address(0).

Mainly from FreeBSD, but adapted by me. Benefits of this solutions are:

	- backward comptibility maintained
	- existing broken binaries are fixed with a new ld.elf_so
	- __mainprog_obj can be removed from crt0.o
	- we do the same thing as FreeBSD

Fixes PR 22067.

OKed by Jason and Christos.
2003-08-12 09:18:38 +00:00
salo
99410184e7 netbsd.org->NetBSD.org 2003-07-26 19:24:24 +00:00
thorpej
c2048dc2a3 Don't need sysident.h here anymore; crti provides it. 2003-05-31 19:41:24 +00:00
ross
88929ccff1 crt{begin,end}S.o must now depend on the new crt{begin,end}S.c wrappers 2003-03-19 16:54:25 +00:00
ross
520b9c1f59 * remove .ALLSRC, which doesn't work with the new dependency tree
replaced mostly with .IMPSRC, so add .c wrappers for variant .o names

* any machine with a shared crt0.c that also uses common_elf (I didn't see
  any) will now need a reachover wrapper in .CURDIR a la crtbeginS.c

this should fix the build breakage
2003-03-19 04:31:41 +00:00
christos
e04b01c9ff Add appropriate SRCS lines so that we actually create dependencies. I've
been running with a crt0.o from last year!
2003-03-18 19:11:57 +00:00
thorpej
f343e6c086 If EXTERNAL_TOOLCHAIN is defined, don't build crtbegin/crtend. 2002-11-26 19:27:09 +00:00
thorpej
5df3ea5331 Oops, the _init() and _fini() entry points need to be in the .init
and .fini sections, respectively (same as the {init,fini}_fallthru
stubs).

This is needed on PowerPC, where otherwise the linker would be unhappy
with the relocation records for the fallthru stubs when building a
shared library.
2002-11-23 17:21:22 +00:00
thorpej
6dba3a7439 Split crtbegin/crtend into crti/crtbegin/crtend/crtn. NetBSD-specific
things like the .note.netbsd.ident section are provided by crti/crtn.
crti/crtn also provide the _init() and _fini() routines.

crtbegin/crtend now only provide support for ctors/dtors.  This paves
the way to using the "crtstuff" provided with GCC (when we upgrade to
GCC 3.3), which provides, among other things, much better C++/Java
exception handling.
2002-11-22 06:44:56 +00:00
thorpej
303696ca38 Fix signed/unsigned comparison warnings. 2002-11-11 00:44:43 +00:00
lukem
ebb6fc9eb8 Use ${NETBSDSRCDIR}/some/path instead of ${.CURDIR}/../../some/path (etc).
(Reduces make output by ~ 20%)
2002-08-19 09:41:27 +00:00
fvdl
e8d64f072a -x is too heavy-handed for removing symbols; newer versions of GNU ld
will completely delete empty local symbols with it. Use -X instead
for crt{begin,end}*.o, to keep init_fallthru hacks.
2002-06-06 19:17:01 +00:00
thorpej
6249662a70 Deal better with platforms that don't yet support shared libraries:
* Only add -fPIC if MKPIC != no.
* Only build crtbeginS and crtendS if MKPIC != no.
2002-05-05 00:45:31 +00:00
thorpej
179139677a All ELF toolchains are of the "new toolchain" variety now, so no need
to conditionalize use of .hidden symbols anymore.
2002-05-05 00:34:00 +00:00
skrll
2d0a923dcd Correct some comments. 2002-04-08 22:17:37 +00:00
thorpej
caaec27cfe * Use += to assign OBJS so that machine-dependent Makefiles can
add their own objects to the list.
* Garbage-collect an unneeded CLEANFILES assignment.
2002-01-13 19:59:26 +00:00
thorpej
d8abc59932 Add support for invoking GNU C++ local destructors in shared objects
via the __cxa_finalize() mechanism.

XXX Only enabled for new-toolchain platforms, as it requires the assembler
to support the .hidden pseudo-op.
2001-12-31 00:40:11 +00:00
thorpej
a50163af65 Build separate crt{begin,end}.o and crt{begin,end}S.o files, rather
than linking them at install time.  Forthcoming changes require different
behavior for static vs. shared object versions of these files.
2001-12-31 00:11:13 +00:00
thorpej
c41160abff Add support for registering Java classes emitted by the Java compiler
(e.g. the Java compiler in GCC 3.x) into the ".jcr" section.
2001-12-30 23:45:00 +00:00
thorpej
6027dc5536 Make sure the Dwarf2 EH frame info is 4-byte aligned. 2001-12-30 23:26:20 +00:00
lukem
65469e54b3 pull in ../../Makefile.inc 2001-11-05 15:11:40 +00:00
kristerw
031a62292d Run the entries in __CTOR_LIST__ and __DTOR_LIST__ in the order gcc expect. 2001-10-11 18:02:28 +00:00
thorpej
102df4197d Enable DWARF2 EH support. Confirmed working w/ GCC 2.95.3 on sparc
and i386.
2001-08-03 14:26:13 +00:00
thorpej
a6855eea24 Add support for DWARF2 frame unwinding/exception handling. This
should be sufficient for GCC 2.95.3, and probably GCC 3.0 as well.

Not yet enabled by default; further testing required.
2001-08-03 05:54:43 +00:00
mrg
ff68bb147c minor KNF 2001-07-17 13:28:05 +00:00
mrg
f59b9e737f set FILESDIR to "${LIBDIR}", not hard coded /usr/lib. 2001-06-07 15:22:49 +00:00
fredette
872a39428c Don't compile with -fPIC when MACHINE_ARCH is m68000. 2001-05-17 21:17:02 +00:00
ross
2d62241cb9 Reorganization of crtbegin/crtend.
o  Primary mod: alpha and i386 code for .init and .fini section fallthroughs
o  Actual fallthru is not yet enabled, see csu/{alpha,i386_elf}/Makefile
o  When enabled, should fix bin/12865 & should fix at least one WINE bug,
   see http://www.winehq.com/hypermail/wine-devel/2001/05/0021.html
o  Also, removed the function pointer hack put in to prevent gcc from
   incorrectly attempting to do short calls over section boundaries,
   on some architectures, rather, simply simply move ctors() and dtors()
   into .init and .fini.
Other notes.
o  Our crtbegin.c and crtend.c were completely in C, despite
   the fact that .init and .fini section fallthroughs require machine code.
   These modules implement the gnu ctors/dtors mechanism directly, eliminating
   in part the need for the elf .init/.fini section fallthrough. However,
   if we ever want to use the gnu-provided constructor support, we need to
   do the fallthrough, at least one program (WINE) apparently uses the
   feature independently, and other compilers may depend on the mechanism.
o  It is amusing that the previous NetBSD _init() and _fini() were put
   into the .init and .fini sections, because nothing is gained over
   plain .text if they don't fall through. Cargo cult!
o  Other elf ports will need to copy the alpha and i386 example mods.
2001-05-11 22:44:14 +00:00
matt
d71ca2d66e __syscall takes a quad_t as its first argument, not an int.
_strrchr takes an int (due to promotion) as its third arg.
don't print the null byte at the end of string.
error messages should end with a linefeed.
2000-07-03 23:01:01 +00:00
christos
3d65200a80 remove initialization of mainprog_obj from here; it is too late for .ini
sections that want to use dlopen(3).
2000-06-16 20:52:49 +00:00
cgd
db755e7c76 sweep of my licenses (userland files w/o only my copyright) for
consistency.  (no functional changes)
2000-06-14 17:24:02 +00:00
cgd
d220ca5ba3 fix up NetBSD RCS Ids to match the standard, and the leading comment as
to match as well.  No functional changes.
2000-06-14 06:48:47 +00:00