Commit Graph

449 Commits

Author SHA1 Message Date
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
drochner
e757f639d2 don't include <machine/asm.h> to avoid conflicts with definitions
in <sys/cdefs.h>
2002-01-14 12:06:49 +00:00
thorpej
fd9112a780 Build and install crtfm.o (sets the Alpha FP_C in a way that GCC's
-ffast-math on Alpha expects).
2002-01-14 01:31:58 +00:00
thorpej
24ca47c4d5 * Use the new ALPHA_SET_FP_C sysarch call.
* Provide an internal sysarch entry point, so that this works
  with statically-linked programs.
2002-01-14 01:31:00 +00:00
thorpej
655925395a Support for the GCC "-ffast-math" option on the Alpha. 2002-01-13 20:05:42 +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
d605da06f0 %progbits, not @progbits (@ is a comment character in ARM assembly). 2002-01-01 01:36:21 +00:00
thorpej
7050ac9aa9 Multi-line string literals are not supported by ANSI C. 2002-01-01 01:31:06 +00:00
thorpej
5ced70565e Set ELFSIZE=64. 2002-01-01 01:14:22 +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
thorpej
5b81869561 Don't use multi-line string literals; they're not supported by ANSI C. 2001-12-30 23:23:38 +00:00
bjh21
7723559395 Quiet GCC warnings. 2001-11-08 22:23:59 +00:00
lukem
65469e54b3 pull in ../../Makefile.inc 2001-11-05 15:11:40 +00:00
skrll
6d6c931c5a This is an a.out thing and doesn't belong here. 2001-10-26 16:05:25 +00:00
scw
f768a5c42b Reduce the alignment constraint from 4 to 2. This fixes the problem where
gas(2) pads the text segment with 0x0 instead of NOP. Since m68k instructions
only need 16-bit alignment, .align 2 works just fine.
2001-10-13 09:21:50 +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
matt
eef4b63246 Make __start global. 2001-09-08 18:59:20 +00:00
bjh21
751e6fa590 Ensure that the stack is aligned to an 8-byte boundary before calling C code.
(ATPCS B-01)
2001-08-17 00:14:38 +00:00
simonb
9a68629ca6 Enlarge the stack frame to 16 bytes, and store the return address 8
bytes in instead of at the start, to leave room for a .cpload to store
the gp at offset 0 in the frame.  Allow 8 bytes for each (for mips64
one day...).

.cpload overwrite problems noted by Michael Hitch.
2001-08-16 03:44:46 +00:00
matt
ee6a16ad18 Add a secondary label called __start (makes gcc 2.95.3 happier) and rename
the internal __start to ___start.   (Since -e is not supplied by default,
this has no effect on a native build.)
2001-08-05 00:01:27 +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
wiz
e11d04474c issueing -> issuing 2001-07-26 22:55:12 +00:00
tsubai
1278735b51 .init/.fini support. 2001-07-23 20:43:31 +00:00
bjh21
71d647ec7a The common arm_elf code seems to work on arm26, so use that. 2001-07-20 13:01:13 +00:00
simonb
19211890ff Enable dot_init.h on mips, fixing .init & .fini processing. 2001-07-18 04:43:48 +00:00
mrg
6bea810c23 enable dot_init.h on both sparc & sparc64, fixing .init & .fini processing
for both platforms.  they share dot_init.h with a single #ifdef #define
difference...
2001-07-17 18:25:11 +00:00
simonb
1bc139fd41 Add but not enable correct .init/.fini handling. 2001-07-17 15:20:23 +00:00
mrg
f4bd34ec5f add but not enable correct .init/.fini handling. 2001-07-17 13:32:35 +00:00
mrg
ff68bb147c minor KNF 2001-07-17 13:28:05 +00:00
tsubai
4a0b75d5d2 Add the new .init/.fini support. 2001-07-17 12:16:43 +00:00
matt
119c72fb96 Add new init/fini to VAX ELF. 2001-07-17 06:45:46 +00:00