Commit Graph

483 Commits

Author SHA1 Message Date
skrll
44521a9e2e Implement MD_DO_NOT_NEED_FALLTHRU for i386.
Reviewed by christos.
2006-08-25 12:44:19 +00:00
skrll
bc3a3e7751 Tidy up for MD_DO_NOT_NEED_FALLTHRU.
Discussed with cherry.
2006-07-18 21:18:23 +00:00
ross
7e22c74b0c Nothing from <machine/asm.h> is even used here, so don't include it.
This was the only place in the system where asm.h contents were seen
by the compiler and hence the only reason why asm.h had to conform
to C syntax. This previously limited asm.h to a cpp constructs and
comments.
2006-07-07 19:57:29 +00:00
ross
ce3a138bcc add missing .globl's in new direct fallthru .init .fini 2006-07-06 22:31:55 +00:00
ross
d0531274ae Conform to new world order where .init/.fini fallthru code
assembly appears directly inside _init().
2006-07-05 18:03:00 +00:00
cherry
b8ee9baf67 First round at ia64 csu 2006-07-02 17:15:22 +00:00
ross
28dc42c889 fix comment 2006-07-01 01:39:17 +00:00
ross
bbf630ab7c powerpc64 assembly for .init / .fini 2006-06-30 22:49:50 +00:00
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
e487cf62f5 add a .globl to MD_SECTION_PROLOGUE so that the symbol is exported.
this fixes build problems with GCC4 (which will use smaller/faster call
methods for local/static functions) and is the right thing anyway.
2006-06-12 22:05:49 +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
065d43d6c4 Revert previous changes which are unnecessary now the _DYNAMIC is marked
weak.
2006-05-17 17:08:54 +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
christos
f32828209d Back out accidental commit that changed -I- 2006-05-17 17:02:16 +00:00
christos
6f1784f6d3 Fool gcc to compare against a null variable instead of the NULL constant
so that it does not optimize the &_DYNAMIC == NULL away. Idea from Matt.
2006-05-17 17:01:12 +00:00
christos
94b00d6e09 Avoid weak symbol related bug with _DYNAMIC not being referenced in the
code at all for gcc-4. Fixes statically linked binaries, but the fix is
bogus.
2006-05-17 16:39:25 +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
0db47b5ca1 bare asm -> __asm 2005-12-24 21:51:51 +00:00
perry
8b7a2f14e9 __asm__ -> __asm 2005-12-24 21:38:40 +00:00
perry
4e11af46bc Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete. 2005-12-24 21:11:15 +00:00
skrll
b7ddf5b9cb Copyright Maintenance 2005-05-21 06:46:34 +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
08456b0802 Use ANSI function decls. 2004-08-26 21:23:06 +00:00
thorpej
5c50ce218e Remove the "allows linking without crtbegin / crtend" hack. 2004-08-26 21:21:33 +00:00
thorpej
b979dc154e Use ANSI function decls. 2004-08-26 21:21:05 +00:00
thorpej
54fe33a634 Use ANSI function decls. 2004-08-26 21:09:52 +00:00
thorpej
a41fd2dbc8 - Use ANSI function decls.
- Use __used__, not __unused__ attribute for ___start().
2004-08-26 21:07:14 +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
rearnsha
29efdff284 Temporary hack to work around ld problems when linking Thumb
applications where the linker does not correctly insert an
interworking veneer.
2004-08-21 12:12:28 +00:00
chs
ddc1ca7bcb map the data segment with PROT_EXEC since the PLT lives there. 2004-08-07 21:33:04 +00:00
skrll
5e2026a163 Add code code for .init and .fini section fallthroughs and regression
test.
2004-05-18 19:19:34 +00:00
skrll
c007da99a0 Update for ELF. 2004-05-17 10:44:22 +00:00
skrll
f01797a30f Fix typos so that we define _start and __start.
The linker script gets the right entry point now.
2004-04-30 08:11:37 +00:00
skrll
337520b409 Include bsd.own.mk before testing MKPIC 2004-03-09 20:04:00 +00:00
simonb
216a472c99 Use -fPIC only if MKPIC isn't "no". 2004-02-14 08:41:58 +00:00
simonb
fb8a44d89d Don't build lcrt.o (version of crt0.o that looks in /libexec/ for the
shared linker) if we have MKPIC=no.
2004-02-14 07:48:37 +00:00
matt
69f9c8b092 Add MD_CALL_STATIC_FUNCTION. This allows crt* to compiled with -g. 2003-12-22 21:05:01 +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
8acea4b2c0 Make {g|s|l}crt0.o depend on crt.o and remove the non-standand .afterdepend
translation.
2003-11-11 11:35:03 +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
agc
b2b49933f4 Move Matt Green's code from a 4-clause to a 3-clause licence by removing
the advertising clause. Diffs provided in PR 22396 by Joel Baker, the changes
were confirmed to the board by Matt Green.
2003-10-13 14:22:20 +00:00
matt
3e272c0b2a Deal with the new toolchain. 2003-10-06 05:28:05 +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
uwe
fa9c69303e Fix previous. s/_start/___start/ in the declaration as well. 2003-07-05 23:50:28 +00:00
marcus
bcd3ee1e02 Provide entry point as both _start and __start, like i386 port does. 2003-07-05 22:51:12 +00:00
thorpej
c2048dc2a3 Don't need sysident.h here anymore; crti provides it. 2003-05-31 19:41:24 +00:00
scw
aa018ec72e Add a work-around for an SH5 binutils bug which results in bogus
GOT offsets in the PIC-compiled crt0 of statically linked binaries.
2003-04-01 10:20:38 +00:00
scw
89380eb358 Add PIC support. 2003-03-24 14:32:57 +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
scw
699eeb228c The temporary asm trampoline code is no longer needed. 2002-12-06 17:06:06 +00:00
scw
098d74e947 Fix the alignment of the MD_SECTION_PROLOGUE. 2002-12-06 17:05:14 +00:00
thorpej
f343e6c086 If EXTERNAL_TOOLCHAIN is defined, don't build crtbegin/crtend. 2002-11-26 19:27:09 +00:00
thorpej
df201a40b9 Correct a comment. 2002-11-23 17:23:51 +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
bc4956ce1c Fix the _init and _fini function prologues for ABICALLS. Make sure
the functions are aligned to a 32-bit boundary, otherwise some pretty
colorful lossage can result.
2002-11-23 01:44:13 +00:00
thorpej
6a088e4e31 Fix typo. 2002-11-22 16:47:20 +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
itohy
cbb1f0fb0f MKDYNAMICROOT for a.out 2002-11-12 14:33:48 +00:00
itohy
5b3e8cb3f2 Do not print \0 at the end of error message. 2002-11-12 14:26:10 +00:00
thorpej
303696ca38 Fix signed/unsigned comparison warnings. 2002-11-11 00:44:43 +00:00
grant
291ac7e9c4 don't include machine/asm.h (make this build again). 2002-09-19 01:24: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
matt
b79865a0af To make things clearer, use register prefixes in asm() code. 2002-07-29 21:54:35 +00:00
scw
c7b95fdc37 Use an assembler trampoline to call the real start entrypoint, at least
until we switch to the native toolchain.
2002-07-10 13:13:47 +00:00
scw
59474a8c82 NetBSD, meet the SH-5 cpu.
SH-5, meet NetBSD.

Let's hope this is the start of a long and fruitful relationship. :-)

This code, funded by Wasabi Systems, adds initial support for the
Hitachi SuperH(tm) SH-5 cpu architecture to NetBSD.

At the present time, NetBSD/evbsh5 only runs on a SH-5 core simulator
which has no simulated devices other than a simple console. However, it
is good enough to get to the "root device: " prompt.

Device driver support for Real SH-5 Hardware is in place, particularly for
supporting the up-coming Cayman evaluation board, and should be quite
easy to get running when the hardware is available.

There is no in-tree toolchain for this port at this time. Gcc-current has
rudimentary SH-5 support but it is known to be buggy. A working toolchain
was obtained from SuperH to facilitate this port. Gcc-current will be
fixed in due course.

The SH-5 architecture is fully 64-bit capable, although NetBSD/evbsh5 has
currently only been tested in 32-bit mode. It is bi-endian, via a boot-
time option and it also has an "SHcompact" mode in which it will execute
SH-[34] user-land instructions.

For more information on the SH-5, see www.superh.com. Suffice to say it
is *not* just another respin of the SH-[34].
2002-07-05 13:31:28 +00:00
fredette
43c563a3dd A new crt0.c for hppa, with support for dynamic linking. 2002-07-01 15:56:41 +00:00
matt
0ec15f80cc Allow this to compile under gcc-current. No multiline strings for asm. 2002-06-09 06:18:34 +00:00
thorpej
8bbbfff0a1 Remove __LEADING_UNDERSCORE case. 2002-06-08 17:27:25 +00:00
fredette
02ac1ae2f0 Added hppa support (some of it incomplete) to lib/csu, lib/libc,
and lib/libkvm.
2002-06-06 20:31:19 +00:00
fvdl
e4b98ed506 Add init/fini handling. 2002-06-06 19:18:22 +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
7f350cba6c Don't use multi-line string literals. 2002-06-05 02:51:03 +00:00
wiz
da0b574ae0 Comment out token after #endif. 2002-05-16 19:30:41 +00:00
matt
858f46fb43 Define _SDA(2)_BASE_ as [] which is more correct. 2002-05-09 20:32:59 +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
wiz
15d53d85be ${MACHINE_ARCH} != "arm32" is always true now, so remove it from an if. 2002-05-02 16:42:53 +00:00
matt
e18dedbd2f switch from addis R,0,... to the simplified mnemonic of lis which is
typically used for this.
2002-04-26 23:28:53 +00:00
kleink
3f1a2352b7 Use __weak_extern() for _SDA_BASE_ and _SDA2_BASE_ declarations. 2002-04-17 17:36:13 +00:00
matt
036d79bb12 Make sure to initialize GPR13/GPR2 appropriately for the Small Data Area
pointer as described in the SVR4 PPC ABI.  Though GPR2 is defined by the
SVR4 PPC ABI as system-reserved, the EABI (Embedded API) changes its use
to be the Small Data Area 2 register (const small data).  Since powerpc
under NetBSD doesn't use R2 in the kernel (yet), support it as well.
2002-04-17 13:32:42 +00:00
skrll
2d0a923dcd Correct some comments. 2002-04-08 22:17:37 +00:00
jmc
c03ef26393 Don't make ___start static as gcc can't tell it's referenced and complains. 2002-04-04 08:22:11 +00:00
eeh
41065b740e Don't need start' in crt0.o any more. ld expects _start' as the entry
symbol, while gcc likes `__start'.
2002-03-29 18:11:55 +00:00
matt
0ce5ca145f Change to use a register prefix. 2002-02-24 01:06:18 +00:00
matthias
21fb786623 Declare the global register variable kps_strings before including anything
as this needs to be done before any function is defined (and there seems
to be a function definition in one of the include files).
2002-02-22 13:46:30 +00:00
mrg
829b76292e fix multiline string literal. from gcc3 2002-02-11 06:08:23 +00:00
thorpej
e4217fbfe4 Pass the rtld object and ps_strings to _start() properly. From Marcus. 2002-02-03 23:57:19 +00:00
thorpej
ec206ac99b Multi-line string literals are not in ISO-C. 2002-01-23 03:55:33 +00:00