Home | History | Annotate | only in /src/lib/csu
History log of /src/lib/csu
RevisionDateAuthorComments
 1.41 20-Apr-2021  christos Instead of compiling files with -fcommon, create an include file and declare
the 3 symbols that need to be common using an attribute. Put all the 3 symbol
definitions in libc in one place (initfini.c). Reviewed by joerg@
 1.40 22-Apr-2020  joerg Explicitly use -fcommon for globals shared between libc and CSU.
 1.39 27-Jan-2019  dholland fix duplicated chunk from merge
 1.38 27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.37 26-Jul-2018  kamil Specify NOLIBCSANITIZER in lib/csu

The low-level libraries in csu are used in non-sanitized code.
 1.36 16-Jun-2018  kamil branches: 1.36.2;
Disable MKSANITIZER in lib/csu

These low-level libraries are expected to be not touched by a sanitizer.
Every libc program not using sanitizers cannot work with sanitized csu.
 1.35 10-Aug-2014  matt branches: 1.35.22;
MKCOMPAT fixes for when compat MACHINE_CPU != normal MACHINE_CPU
 1.34 22-Apr-2014  joerg Retire USE_COMPILERCRTSTUFF=yes.
 1.33 10-Sep-2013  matt branches: 1.33.2;
Add support for a NetBSD MARCH elf note to record the MACHINE_ARCH for
which a program was compiled.
 1.32 28-Apr-2013  matt Make all earm variants use earm.
 1.31 16-Jun-2012  joerg branches: 1.31.2;
Unbreak compat.
 1.30 16-Jun-2012  joerg Allow USE_COMPILERCRTSTUFF=yes for platforms that use MACHINE_CPU !=
MACHINE_ARCH.
 1.29 31-Jan-2011  drochner branches: 1.29.4;
use of .PARSEDIR just doesn't work with .OBJDIR, replace with .CURDIR
 1.28 28-Nov-2010  skrll branches: 1.28.2;
Centralise USE_COMPILERCRTSTUFF.

PCC might need help.
 1.27 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.26 05-Jul-2010  mrg delete all the a.out csu code.
 1.25 13-Dec-2009  mrg look for ${CSU_MACHINE_ARCH}_elf directory first.
 1.24 02-May-2002  wiz branches: 1.24.40; 1.24.46;
${MACHINE_ARCH} != "arm32" is always true now, so remove it from an if.
 1.23 10-Jan-2001  enami - Fix typo
- Wrap long line
 1.22 08-Jan-2001  itojun use MACIHNE_CPU to determine architecture-dependent source code directory.
is use of exists(foo) safe enough?
TODO: many other places to fix
 1.21 04-Jan-2001  itojun sh3 split
 1.20 02-Jul-1999  simonb More trailing white space.
 1.19 19-Mar-1999  thorpej Oops, revert previous; thinko.
 1.18 19-Mar-1999  thorpej Go ahead and built c++rt0.o on all non-ELF platforms (i.e. including arm32;
the hacks to make this work have been committed).
 1.17 16-Mar-1999  thorpej Don't build c++rt.o if ELF.
 1.16 27-Feb-1999  tv This needs to use C///, not S///.
 1.15 27-Feb-1999  tv Clean up mipse[bl]->mips substitution.
 1.14 24-Feb-1999  drochner make this build again after the mips->mipse? transition
 1.13 03-Feb-1999  christos If object_fmt == elf and we have machine_elf, build that one.
 1.12 21-Jan-1999  mycroft Do not build on arm32 by default.
This is temporary.
 1.11 28-Mar-1998  cgd GC alpha's ECOFF_TOOLCHAIN make variable, and related bits. Nobody
should be using an ECOFF toolchain on NetBSD/alpha any more.
 1.10 16-Apr-1997  thorpej NetBSD/powerpc doesn't use the "generic" c++rt0.o
 1.9 23-Feb-1997  explorer Someone forgot a line continuation character
 1.8 23-Feb-1997  cgd turn Alpha's ELF_TOOLCHAIN checks to ECOFF_TOOLCHAIN checks
 1.7 18-Oct-1996  thorpej RCS id police.
 1.6 08-Oct-1996  cgd add a hack so that old- and new-toolchain alphas do the right thing:
include bsd.own.mk early on, and if !alpha or if !ELF_TOOLCHAIN,
build c++rt0.o. ELF alphas don't use the 'normal' C++ runtime startup
routines. Eventually, there should be better ways to distinguish what
toolchain and object format is in use, and the Alpha C++ startup code
changes should be merged with that used by the other ports.
 1.5 10-Jan-1994  deraadt c++ not g++
 1.4 05-Jan-1994  pk Subdirectory g++ contains C++ shared library helper routines.
 1.3 04-Dec-1993  cgd use MACHINE_ARCH to pick which crt0 to use.
 1.2 18-May-1993  cgd oops; last time i moved stuff, was to the wrong place...
don't use csu.* any more, just use *...
 1.1 18-May-1993  cgd move csu.${MACHINE} into a "csu" subdirectory.
 1.24.46.1 14-Dec-2009  mrg s/LD32DIR/MLIBDIR/ in most places, also look for CSU_MACHINE_ARCH.
 1.24.40.1 06-Jan-2011  riz Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support
 1.28.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.29.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.29.4.1 30-Oct-2012  yamt sync with head
 1.31.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.31.2.1 23-Jun-2013  tls resync from head
 1.33.2.1 10-Aug-2014  tls Rebase.
 1.35.22.2 28-Jul-2018  pgoyette Sync with HEAD
 1.35.22.1 25-Jun-2018  pgoyette Sync with HEAD
 1.36.2.1 10-Jun-2019  christos Sync with HEAD
 1.3 19-Mar-1999  thorpej Moved via repository copy to common_aout/
 1.2 27-Feb-1999  tv Add c++rt0 for arm32 with the "special" hacks. Put c++rt0.c in arm32's
own directory until it is "fixed".
 1.1 27-Oct-1997  lukem branches: 1.1.2;
use a common Makefile.csu.aout for the a.out ports
 1.1.2.2 09-Nov-1997  lukem sync with trunk (approved by thorpej)
 1.1.2.1 27-Oct-1997  lukem file Makefile.csu.aout was added on branch netbsd-1-3 on 1997-11-09 00:57:13 +0000
 1.6 22-Apr-2014  joerg Retire USE_COMPILERCRTSTUFF=yes.
 1.5 13-Jul-2013  skrll branches: 1.5.4;
crt0 actually calls ___start
 1.4 10-Jul-2013  martin Try to also document the variant using common C code - Matt, please review!
 1.3 10-Jul-2013  martin Fix typo
 1.2 24-Jun-2013  joerg Add some more clues on what is needed to add a new platform.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5.4.1 10-Aug-2014  tls Rebase.
 1.15 19-Mar-1999  thorpej Moved via repository copy to common_aout/
 1.14 28-Jan-1999  fvdl Change ld_entry handling a bit to make dl*() from init sections work.
 1.13 19-Oct-1998  matt Don't write the NUL at the end of string.
 1.12 05-Sep-1998  pk Assign my copyrights to TNF.
 1.11 25-Jul-1998  mycroft Adjust some #ifdefs.
 1.10 30-May-1998  kleink If the runtime linker does not indicate an error condition, let dlerror()
return a null pointer rather than the string returned by strerror(0).
 1.9 12-May-1998  pk Add `dladdr()' stub.
 1.8 20-Feb-1998  mycroft Fill in missing (default) mmap(2) flags.
 1.7 03-Feb-1998  perry remove obsolete register declarations
 1.6 03-Jan-1997  scottr branches: 1.6.2;
Catch up with const changes to dlopen() and dlsym() prototypes in
<dlfcn.h>. Tested on i386 and hp300 for crt0.o and ld.so, verified
other references by inspection.
 1.5 18-Oct-1996  thorpej RCS id police.
 1.4 23-Sep-1995  pk Activate interface version 4: call dlexit() at exit.
 1.3 15-Jun-1995  pk Private strrchr() not needed for scrt0.o
 1.2 04-Jun-1995  pk add dlerror() stub
 1.1 03-Jun-1995  pk Factor out common code.
 1.6.2.1 04-Feb-1999  cgd pull up rev 1.14 (via patch) from trunk (fvdl)
 1.11 19-Mar-1999  thorpej Moved via repository copy to common_aout/
 1.10 05-Sep-1998  pk Assign my copyrights to TNF.
 1.9 25-Jul-1998  mycroft Don't pull in param.h (and therefore don't pull in unistd.h).
 1.8 25-Jul-1998  mycroft Revert previous incorrect change.
 1.7 24-Jul-1998  veego Fix the protoype of __syscall: s/int/quad_t/
 1.6 12-May-1998  pk Include <dlfcn.h> before <link.h>
 1.5 07-Dec-1996  mycroft Add a __ps_strings variable here, initialized to 0.
 1.4 18-Oct-1996  thorpej RCS id police.
 1.3 15-Jun-1995  pk Private strrchr() not needed for scrt0.o
 1.2 05-Jun-1995  pk #include <dlfcn.h>, and <string.h> too.
 1.1 03-Jun-1995  pk Factor out common code.
 1.3 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.2 27-Dec-2018  christos Enable initfini array support for everyone.
 1.1 10-Aug-2014  matt branches: 1.1.4; 1.1.26;
Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
 1.1.26.1 10-Jun-2019  christos Sync with HEAD
 1.1.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 10-Aug-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 10-Aug-2014  matt branches: 1.1.4; 1.1.24; 1.1.26;
Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
 1.1.26.1 10-Jun-2019  christos Sync with HEAD
 1.1.24.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 10-Aug-2014  tls file crt0.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1 10-Aug-2014  matt branches: 1.1.4;
Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
 1.1.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 10-Aug-2014  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1 10-Aug-2014  matt branches: 1.1.4;
Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
 1.1.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 10-Aug-2014  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1 10-Aug-2014  matt branches: 1.1.4;
Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
 1.1.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 10-Aug-2014  tls file crti.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1 10-Aug-2014  matt branches: 1.1.4;
Preliminary files for AARCH64 (64-bit ARM) support.
Enough for a distribution build.
 1.1.4.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.4.1 10-Aug-2014  tls file crtn.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.3 24-Jan-2016  christos Undo previous; the lossage is more basic.
 1.2 24-Jan-2016  christos Alpha needs _KERNTYPES
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10;
Add crtstuff for alpha. Compile tested only.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10; 1.1.30; 1.1.32;
Add crtstuff for alpha. Compile tested only.
 1.1.32.1 10-Jun-2019  christos Sync with HEAD
 1.1.30.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crt0.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crt0.S was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.2 14-Jan-2017  christos remove useless include; asm.h is not useful for c files. our current assumption
is that stuff in cdefs.h is duplicated in asm.h.
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10; 1.1.14;
Add crtstuff for alpha. Compile tested only.
 1.1.14.1 20-Mar-2017  pgoyette Sync with HEAD
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10;
Add crtstuff for alpha. Compile tested only.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.1 05-Aug-2013  matt branches: 1.1.4; 1.1.8;
Alpha needs crtfm.o for USE_COMPILERCRTSTUFF=no
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 05-Aug-2013  tls file crtfm.c was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 05-Aug-2013  yamt file crtfm.c was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10;
Add crtstuff for alpha. Compile tested only.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crti.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crti.S was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10;
Add crtstuff for alpha. Compile tested only.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtn.S was added on branch tls-maxphys on 2014-08-20 00:02:05 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtn.S was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.9 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.8 27-Dec-2018  christos Enable initfini array support for everyone.
 1.7 10-Sep-2013  matt branches: 1.7.26;
Define ELF_NOTE_MARCH_DESC for when running non-eabi in compat_netbsd32
 1.6 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.5 29-Apr-2013  skrll Simplify. earm is dealt with elsewhere.
 1.4 23-Jan-2013  matt Handle CPUFLAGS being empty
 1.3 22-Jan-2013  matt If you are using aapcs, you must be using INITFINI
 1.2 16-Sep-2012  skrll Whitespace
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.10; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.4 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.3 23-Jun-2013  tls resync from head
 1.1.12.2 25-Feb-2013  tls resync with head
 1.1.12.1 20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.1.10.3 23-Jan-2013  matt Handle CPUFLAGS being empty
 1.1.10.2 22-Jan-2013  matt If we are using aapcs (EABI), we must be using init/fini arrays
 1.1.10.1 30-Nov-2012  matt Pull from HEAD.
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 30-Oct-2012  yamt sync with head
 1.7.26.1 10-Jun-2019  christos Sync with HEAD
 1.4 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.3 11-Aug-2012  matt branches: 1.3.30; 1.3.32;
Replace copyright since it now has new contents
 1.2 11-Aug-2012  matt USE_COMPILERCRTSTUFF=no support for arm
This passes all the lib/csu atf tests.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.10;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.10.1 30-Nov-2012  matt Pull from HEAD.
 1.1.6.1 30-Oct-2012  yamt sync with head
 1.3.32.1 10-Jun-2019  christos Sync with HEAD
 1.3.30.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.7 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.6 24-Jun-2013  matt Make dwarf_eh_object is 8 words long
 1.5 05-May-2013  skrll Whitespace
 1.4 25-Aug-2012  matt branches: 1.4.2; 1.4.4; 1.4.6;
Fix fini processing.
 1.3 24-Aug-2012  matt Fix code around __register_frame_info (fixes core dumps)
 1.2 11-Aug-2012  matt Fix typo.
 1.1 11-Aug-2012  matt USE_COMPILERCRTSTUFF=no support for arm
This passes all the lib/csu atf tests.
 1.4.6.2 30-Nov-2012  matt Pull from HEAD.
 1.4.6.1 25-Aug-2012  matt file crtbegin.S was added on branch matt-nb6-plus on 2012-11-30 23:32:14 +0000
 1.4.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.2 30-Oct-2012  yamt sync with head
 1.4.4.1 25-Aug-2012  yamt file crtbegin.S was added on branch yamt-pagecache on 2012-10-30 18:58:35 +0000
 1.4.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.2.1 23-Jun-2013  tls resync from head
 1.1 27-Jun-2013  matt branches: 1.1.6; 1.1.10;
Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 27-Jun-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 27-Jun-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.2 11-Aug-2012  matt branches: 1.2.4; 1.2.6;
Update copyright year.
 1.1 11-Aug-2012  matt USE_COMPILERCRTSTUFF=no support for arm
This passes all the lib/csu atf tests.
 1.2.6.2 30-Nov-2012  matt Pull from HEAD.
 1.2.6.1 11-Aug-2012  matt file crtend.S was added on branch matt-nb6-plus on 2012-11-30 23:32:14 +0000
 1.2.4.2 30-Oct-2012  yamt sync with head
 1.2.4.1 11-Aug-2012  yamt file crtend.S was added on branch yamt-pagecache on 2012-10-30 18:58:35 +0000
 1.2 11-Aug-2012  matt USE_COMPILERCRTSTUFF=no support for arm
This passes all the lib/csu atf tests.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.10;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.10.1 30-Nov-2012  matt Pull from HEAD.
 1.1.6.1 30-Oct-2012  yamt sync with head
 1.2 11-Aug-2012  matt USE_COMPILERCRTSTUFF=no support for arm
This passes all the lib/csu atf tests.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.10;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.10.1 30-Nov-2012  matt Pull from HEAD.
 1.1.6.1 30-Oct-2012  yamt sync with head
 1.5 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.4 27-Dec-2018  christos Enable initfini array support for everyone.
 1.3 10-Sep-2013  matt branches: 1.3.26;
Add support for a NetBSD MARCH elf note to record the MACHINE_ARCH for
which a program was compiled.
 1.2 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1 13-Aug-2012  matt branches: 1.1.2; 1.1.4;
crt* files for ARM EABI. This is pretty different from OABI. crti.S only
has sysident, crtn.S is empty. True dtor/ctor processing is done elsewhere
(in crt0.o for static or the rtld for dynamic images). All that is done in
here is either a call to __cxa_finalize (dtor, only when SHARED) or
register_frame_info and _JV_RegisterClasses.
 1.1.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 13-Aug-2012  yamt file Makefile.inc was added on branch yamt-pagecache on 2012-10-30 18:58:35 +0000
 1.1.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.26.1 10-Jun-2019  christos Sync with HEAD
 1.4 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.3 05-Sep-2013  matt branches: 1.3.24; 1.3.26;
bic sp not allowed in thumb (even with thumb2)
 1.2 21-Aug-2013  matt Thumbify
 1.1 13-Aug-2012  matt branches: 1.1.2; 1.1.4;
crt* files for ARM EABI. This is pretty different from OABI. crti.S only
has sysident, crtn.S is empty. True dtor/ctor processing is done elsewhere
(in crt0.o for static or the rtld for dynamic images). All that is done in
here is either a call to __cxa_finalize (dtor, only when SHARED) or
register_frame_info and _JV_RegisterClasses.
 1.1.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 13-Aug-2012  yamt file crt0.S was added on branch yamt-pagecache on 2012-10-30 18:58:36 +0000
 1.1.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.26.1 10-Jun-2019  christos Sync with HEAD
 1.3.24.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.5 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.4 24-Jun-2013  matt Use (target1) for .init/fini array entries
 1.3 24-Jun-2013  matt Make sure dwarf_eh_object is 8 words long.
 1.2 05-May-2013  skrll Whitespace
 1.1 13-Aug-2012  matt branches: 1.1.2; 1.1.4;
crt* files for ARM EABI. This is pretty different from OABI. crti.S only
has sysident, crtn.S is empty. True dtor/ctor processing is done elsewhere
(in crt0.o for static or the rtld for dynamic images). All that is done in
here is either a call to __cxa_finalize (dtor, only when SHARED) or
register_frame_info and _JV_RegisterClasses.
 1.1.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 13-Aug-2012  yamt file crtbegin.S was added on branch yamt-pagecache on 2012-10-30 18:58:36 +0000
 1.1.2.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.1 23-Jun-2013  tls resync from head
 1.2 06-May-2014  joerg branches: 1.2.2; 1.2.6;
Make EHABI optional.
 1.1 27-Jun-2013  matt branches: 1.1.4;
Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1.4.1 10-Aug-2014  tls Rebase.
 1.2.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.6.1 06-May-2014  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.2.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.1 06-May-2014  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:43 +0000
 1.2 20-Dec-2013  joerg Drop .fpu. Discussed with Matt.
 1.1 13-Aug-2012  matt branches: 1.1.2; 1.1.4;
crt* files for ARM EABI. This is pretty different from OABI. crti.S only
has sysident, crtn.S is empty. True dtor/ctor processing is done elsewhere
(in crt0.o for static or the rtld for dynamic images). All that is done in
here is either a call to __cxa_finalize (dtor, only when SHARED) or
register_frame_info and _JV_RegisterClasses.
 1.1.4.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 13-Aug-2012  yamt file crtend.S was added on branch yamt-pagecache on 2012-10-30 18:58:36 +0000
 1.1.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1 13-Aug-2012  matt branches: 1.1.4;
crt* files for ARM EABI. This is pretty different from OABI. crti.S only
has sysident, crtn.S is empty. True dtor/ctor processing is done elsewhere
(in crt0.o for static or the rtld for dynamic images). All that is done in
here is either a call to __cxa_finalize (dtor, only when SHARED) or
register_frame_info and _JV_RegisterClasses.
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 13-Aug-2012  yamt file crti.S was added on branch yamt-pagecache on 2012-10-30 18:58:36 +0000
 1.1 13-Aug-2012  matt branches: 1.1.4;
crt* files for ARM EABI. This is pretty different from OABI. crti.S only
has sysident, crtn.S is empty. True dtor/ctor processing is done elsewhere
(in crt0.o for static or the rtld for dynamic images). All that is done in
here is either a call to __cxa_finalize (dtor, only when SHARED) or
register_frame_info and _JV_RegisterClasses.
 1.1.4.2 30-Oct-2012  yamt sync with head
 1.1.4.1 13-Aug-2012  yamt file crtn.S was added on branch yamt-pagecache on 2012-10-30 18:58:36 +0000
 1.1 13-Jul-2013  skrll branches: 1.1.6; 1.1.10;
Add crtstuff for hppa. Lightly tested.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Jul-2013  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Jul-2013  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 13-Jul-2013  skrll branches: 1.1.6; 1.1.10; 1.1.30; 1.1.32;
Add crtstuff for hppa. Lightly tested.
 1.1.32.1 10-Jun-2019  christos Sync with HEAD
 1.1.30.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Jul-2013  tls file crt0.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Jul-2013  yamt file crt0.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.2 01-Aug-2023  andvar fix RCSIDs.
 1.1 13-Jul-2013  skrll branches: 1.1.6; 1.1.10;
Add crtstuff for hppa. Lightly tested.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Jul-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Jul-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 13-Jul-2013  skrll branches: 1.1.6; 1.1.10;
Add crtstuff for hppa. Lightly tested.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Jul-2013  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Jul-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 13-Jul-2013  skrll branches: 1.1.6; 1.1.10;
Add crtstuff for hppa. Lightly tested.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Jul-2013  tls file crti.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Jul-2013  yamt file crti.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 13-Jul-2013  skrll branches: 1.1.6; 1.1.10;
Add crtstuff for hppa. Lightly tested.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 13-Jul-2013  tls file crtn.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 13-Jul-2013  yamt file crtn.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.4 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.3 01-Jul-2011  joerg branches: 1.3.40; 1.3.42;
Explicitly declare ___start as hidden.
 1.2 30-Jun-2011  joerg Assert that ps_strings is valid. Use it to drop the first three
arguments to ___start to make the assembler callers simpler.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.3.42.1 10-Jun-2019  christos Sync with HEAD
 1.3.40.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 14-Mar-2014  cherry branches: 1.1.4; 1.1.8;
Add crtstuff for ia64. Compile tested only
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 14-Mar-2014  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 14-Mar-2014  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.3 04-May-2019  scole add stop (;;) to elimate WAW dependency compiler warning
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 14-Mar-2014  cherry branches: 1.1.4; 1.1.8; 1.1.28; 1.1.30;
Add crtstuff for ia64. Compile tested only
 1.1.30.1 10-Jun-2019  christos Sync with HEAD
 1.1.28.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 14-Mar-2014  tls file crt0.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 14-Mar-2014  yamt file crt0.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 14-Mar-2014  cherry branches: 1.1.4; 1.1.8;
Add crtstuff for ia64. Compile tested only
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 14-Mar-2014  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 14-Mar-2014  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 14-Mar-2014  cherry branches: 1.1.4; 1.1.8;
Add crtstuff for ia64. Compile tested only
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 14-Mar-2014  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 14-Mar-2014  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 14-Mar-2014  cherry branches: 1.1.4; 1.1.8;
Add crtstuff for ia64. Compile tested only
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 14-Mar-2014  tls file crti.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 14-Mar-2014  yamt file crti.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 14-Mar-2014  cherry branches: 1.1.4; 1.1.8;
Add crtstuff for ia64. Compile tested only
 1.1.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.8.1 14-Mar-2014  tls file crtn.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.1 14-Mar-2014  yamt file crtn.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.2 11-Jul-2013  matt Use pc-relative branch in crt0.S
Add crtend.S and crtbegin.h (uses pc-relative branches as well).
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.4 26-Jul-2013  matt branches: 1.4.24; 1.4.26;
Use jbsr and add END(__start)
 1.3 26-Jul-2013  martin Simplify to new ___start() signature.
Seems to fix PR port-m68k/48076.
 1.2 11-Jul-2013  matt Use pc-relative branch in crt0.S
Add crtend.S and crtbegin.h (uses pc-relative branches as well).
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.26.1 10-Jun-2019  christos Sync with HEAD
 1.4.24.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.4 27-Jul-2013  martin branches: 1.4.4; 1.4.8;
In .fini invoke destructors (fix copy & pasto)
 1.3 19-Jul-2013  matt Deal with m68010 not having bsrl so usr jsr on !__pic__
 1.2 18-Jul-2013  matt s/bsrl/jsr/ and let gas figure it out
 1.1 11-Jul-2013  matt branches: 1.1.2;
Use pc-relative branch in crt0.S
Add crtend.S and crtbegin.h (uses pc-relative branches as well).
 1.1.2.1 23-Jul-2013  riastradh sync with HEAD
 1.4.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.8.1 27-Jul-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.4.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.4.4.1 27-Jul-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 11-Jul-2013  matt branches: 1.1.6; 1.1.10;
Use pc-relative branch in crt0.S
Add crtend.S and crtbegin.h (uses pc-relative branches as well).
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.2 10-Jul-2013  matt branches: 1.2.6; 1.2.10;
Add a ELFSIZE define
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 10-Jul-2013  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 10-Jul-2013  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.4 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.3 08-Dec-2013  matt branches: 1.3.4; 1.3.8; 1.3.28; 1.3.30;
Make sure t9 ($25) is properly set before calling ___start
 1.2 25-Jun-2013  matt Initialize $gp
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.3.30.1 10-Jun-2019  christos Sync with HEAD
 1.3.28.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 08-Dec-2013  tls file crt0.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 08-Dec-2013  yamt file crt0.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.3 30-Jun-2013  matt branches: 1.3.6; 1.3.10;
For O32, don't save $gp on the stack, save $s0 instead and just keep $gp
in $s0.
 1.2 25-Jun-2013  matt Deal with O32 callling sequences.
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.3.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.10.1 30-Jun-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.3.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.6.1 30-Jun-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.4 18-Jul-2017  joerg .eh_frame should be read-only on MIPS too.
 1.3 05-Sep-2013  matt branches: 1.3.4; 1.3.8; 1.3.22;
mips .eh_frame is writable
 1.2 11-Jul-2013  matt Make this work for N64 as well.
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.3.22.1 29-Aug-2017  bouyer Pull up following revision(s) (requested by joerg in ticket #240):
external/gpl3/binutils/dist/gas/config/tc-mips.h: revision 1.7
external/gpl3/gcc/dist/gcc/configure: revision 1.16
external/gpl3/gcc/dist/gcc/varasm.c: revision 1.2
external/gpl3/gcc/dist/gcc/varasm.c: revision 1.3
external/gpl3/gcc/dist/gcc/config/mips/netbsd.h: revision 1.10
lib/csu/arch/mips/crtend.S: revision 1.4
share/mk/bsd.own.mk: revision 1.1011
lib/csu/common/crtbegin.c: revision 1.14
external/gpl3/binutils/dist/bfd/elfxx-mips.c: revision 1.11
external/gpl3/gcc/dist/gcc/configure.ac: revision 1.14
external/gpl3/binutils/dist/bfd/elfxx-sparc.c: revision 1.12
external/gpl3/gcc/dist/gcc/config/arm/arm.h: revision 1.14
Create references as absolute pointers internally for .cfi*.
Do not warn for anonymous relocations in read-only .eh_frame,
they will be turned into relative entries afterwards.
A const declaration with explicit section attribute should create a
read-only section, whether it is initialized or not.
Use read-only .eh_frame.
Detect advance_loc support with readelf, not objdump. The latter is
broken in some situations before binutils 2.28.
.eh_frame should be read-only on MIPS too.
Build PIC libs on MIPS and PPC64. While the normal calling convention is
position-independent, real PIC defaults to Global Dynamic as TLS model,
while non-PIC and PIE code can use more restrictive models like Initial
Exec. This is most visible with the thread_local destructor code now
using TLS in libc as it would be clobbered by any other shared library
with TLS due to static offset assignment by ld.
Fix encoding of LSDA entries. .eh_frame references in non-PIC mode can
use plain pointers. For PIC, any references to global objects must be
indirect, but the .eh_frame entries themselve should be pcrel.
One more missing check for DECL_INITIAL being non-NULL.
TLS relocations for PIE and non-PIE main executable work the same, so
apply the same relaxation rules and the same static binding rules.
 1.3.8.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.8.1 05-Sep-2013  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 05-Sep-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.3 01-May-2015  matt Make sure .init and .fini are word (4byte) aligned.
 1.2 30-Jun-2013  matt branches: 1.2.6; 1.2.8; 1.2.10;
For O32, don't save $gp on the stack, save $s0 instead and just keep $gp
in $s0.
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 30-Jun-2013  tls file crti.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.2.8.1 02-May-2015  martin Pull up following revision(s) (requested by skrll in ticket #730):
lib/csu/arch/mips/crti.S: revision 1.3
Make sure .init and .fini are word (4byte) aligned.
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 30-Jun-2013  yamt file crti.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.2 30-Jun-2013  matt branches: 1.2.6; 1.2.10;
For O32, don't save $gp on the stack, save $s0 instead and just keep $gp
in $s0.
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.2.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.10.1 30-Jun-2013  tls file crtn.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 30-Jun-2013  yamt file crtn.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.3 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.2 27-Dec-2018  christos Enable initfini array support for everyone.
 1.1 03-Sep-2014  matt branches: 1.1.16;
New files for OR1K support
 1.1.16.1 10-Jun-2019  christos Sync with HEAD
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 03-Sep-2014  matt branches: 1.1.14; 1.1.16;
New files for OR1K support
 1.1.16.1 10-Jun-2019  christos Sync with HEAD
 1.1.14.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1 03-Sep-2014  matt New files for OR1K support
 1.1 03-Sep-2014  matt New files for OR1K support
 1.1 03-Sep-2014  matt New files for OR1K support
 1.1 03-Sep-2014  matt New files for OR1K support
 1.2 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1 08-Feb-2011  matt branches: 1.1.2; 1.1.6; 1.1.12;
First pass at new crtstuff for powerpc. Doesn't quite work yet
(obj parameter to ___start seems to get corrupted sometimes)
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 06-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer file Makefile.inc was added on branch bouyer-quota2 on 2011-03-06 15:07:54 +0000
 1.7 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.6 27-Feb-2014  matt branches: 1.6.24; 1.6.26;
Use the CALL() macro.
 1.5 27-Feb-2014  matt Add powerpc64 support
 1.4 02-Jul-2011  matt branches: 1.4.2; 1.4.8;
The kernel and ld.elf_so call with a different order for
cleanup, obj, ps_strings so deal with it.
With this change, USE_COMPILERCRTSTUFF=no works.
 1.3 01-Jul-2011  joerg Explicitly declare ___start as hidden.
 1.2 30-Jun-2011  matt Adapt to new ___start definition.
Use PIC method to load %r13 with address of _SDA_BASE_
 1.1 08-Feb-2011  matt branches: 1.1.2;
First pass at new crtstuff for powerpc. Doesn't quite work yet
(obj parameter to ___start seems to get corrupted sometimes)
 1.1.2.2 06-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer file crt0.S was added on branch bouyer-quota2 on 2011-03-06 15:07:54 +0000
 1.4.8.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.4.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6.26.1 10-Jun-2019  christos Sync with HEAD
 1.6.24.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.2 04-Jul-2011  matt branches: 1.2.2; 1.2.8;
Add missing */
 1.1 08-Feb-2011  matt branches: 1.1.2;
First pass at new crtstuff for powerpc. Doesn't quite work yet
(obj parameter to ___start seems to get corrupted sometimes)
 1.1.2.2 06-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer file crtbegin.S was added on branch bouyer-quota2 on 2011-03-06 15:07:54 +0000
 1.2.8.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1 27-Jun-2013  matt branches: 1.1.6; 1.1.10;
Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 27-Jun-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 27-Jun-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.3 27-Feb-2014  matt Add powerpc64 support
 1.2 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1 08-Feb-2011  matt branches: 1.1.2; 1.1.6; 1.1.12;
First pass at new crtstuff for powerpc. Doesn't quite work yet
(obj parameter to ___start seems to get corrupted sometimes)
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 06-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer file crtend.S was added on branch bouyer-quota2 on 2011-03-06 15:07:55 +0000
 1.4 06-Mar-2014  matt Use _XENTRY
 1.3 27-Feb-2014  matt Use _ENTRY
 1.2 27-Feb-2014  matt Add powerpc64 support
 1.1 08-Feb-2011  matt branches: 1.1.2; 1.1.6; 1.1.12;
First pass at new crtstuff for powerpc. Doesn't quite work yet
(obj parameter to ___start seems to get corrupted sometimes)
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 06-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer file crti.S was added on branch bouyer-quota2 on 2011-03-06 15:07:55 +0000
 1.2 27-Feb-2014  matt Add powerpc64 support
 1.1 08-Feb-2011  matt branches: 1.1.2; 1.1.6; 1.1.12;
First pass at new crtstuff for powerpc. Doesn't quite work yet
(obj parameter to ___start seems to get corrupted sometimes)
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.2.2 06-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer file crtn.S was added on branch bouyer-quota2 on 2011-03-06 15:07:55 +0000
 1.3 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.2 27-Dec-2018  christos Enable initfini array support for everyone.
 1.1 19-Sep-2014  matt branches: 1.1.16;
New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.1.16.1 10-Jun-2019  christos Sync with HEAD
 1.3 07-May-2023  skrll RISC-V support that works on QEMU with a single hart.

Thanks for Simon Burge for plic(4).
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 19-Sep-2014  matt branches: 1.1.14; 1.1.16;
New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.1.16.1 10-Jun-2019  christos Sync with HEAD
 1.1.14.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1 19-Sep-2014  matt New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.1 19-Sep-2014  matt New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.2 10-Feb-2019  maya Update comment (copied from or1k)
 1.1 19-Sep-2014  matt branches: 1.1.16;
New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.1.16.1 10-Jun-2019  christos Sync with HEAD
 1.2 10-Feb-2019  maya Update comment (copied from or1k)
 1.1 19-Sep-2014  matt branches: 1.1.16;
New files for Userland support of UCB RISC-V (both 32-bit and 64-bit)
 1.1.16.1 10-Jun-2019  christos Sync with HEAD
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.7 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.6 29-Aug-2016  uwe branches: 1.6.12; 1.6.14;
___start is __dso_hidden, so use CALL_DATUM_LOCAL and drop the PIC
prologue from __start.
 1.5 28-Aug-2016  christos fix pic code; otherwise we generate text relocations.
 1.4 31-Jan-2012  uwe New ___start() C function takes 3 arguments instead of 6 and fetches
argc, argv and environ from ps_strings instead. Adjust the trampoline
accordingly.

Fix brain fart in previous: direct jump is jmp @rN, not bsrf rN.
 1.3 29-Jan-2012  uwe Since it's in a separate file now, we cannot use direct branch to label.
 1.2 28-Jan-2012  uwe Asm cosmetic. Add a comment that explains what this trampoline does.
 1.1 07-Aug-2010  joerg branches: 1.1.6;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.6.1 17-Apr-2012  yamt sync with head
 1.6.14.1 10-Jun-2019  christos Sync with HEAD
 1.6.12.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.3 12-Sep-2013  joerg Pass PICFLAGS down to cc-as-as and use __PIC__ to decide if it is small
vs big PIC mode. Retire -DPIC and -DBIGPIC.
 1.2 02-Jun-2012  uwe branches: 1.2.2;
Claim copyright (per Joerg's request).
 1.1 31-Jan-2012  uwe branches: 1.1.4;
Implement crtbegin* for sh3. Tested to work on landisk.
 1.1.4.4 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.4.3 30-Oct-2012  yamt sync with head
 1.1.4.2 17-Apr-2012  yamt sync with head
 1.1.4.1 31-Jan-2012  yamt file crtbegin.S was added on branch yamt-pagecache on 2012-04-17 00:05:11 +0000
 1.2.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.2 31-Jan-2012  uwe branches: 1.2.4;
Use unambiguous .p2align 2 since .align 4 copied from i386 is
incorrect, as .align is .p2align on sh3, not .balign
 1.1 28-Jan-2012  uwe Steal arch/i386/crtend.S
 1.2.4.2 17-Apr-2012  yamt sync with head
 1.2.4.1 31-Jan-2012  yamt file crtend.S was added on branch yamt-pagecache on 2012-04-17 00:05:11 +0000
 1.3 31-Jan-2012  uwe Use unambiguous .p2align 2 since .align 4 copied from i386 is
incorrect, as .align is .p2align on sh3, not .balign
 1.2 28-Jan-2012  uwe Add a comment that explains what this code does.
 1.1 07-Aug-2010  joerg branches: 1.1.6;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.6.1 17-Apr-2012  yamt sync with head
 1.2 28-Jan-2012  uwe Add a comment that explains what this code does.
 1.1 07-Aug-2010  joerg branches: 1.1.6;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.6.1 17-Apr-2012  yamt sync with head
 1.2 11-Jul-2013  martin Add support for sparc and sparc64
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.2 11-Jul-2013  martin branches: 1.2.26; 1.2.28;
Add support for sparc and sparc64
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.28.1 10-Jun-2019  christos Sync with HEAD
 1.2.26.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file Makefile.inc was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file Makefile.inc was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.2 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10; 1.1.30; 1.1.32;
Add support for sparc and sparc64
 1.1.32.1 10-Jun-2019  christos Sync with HEAD
 1.1.30.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crt0.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crt0.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtend.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crti.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crti.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 11-Jul-2013  martin branches: 1.1.6; 1.1.10;
Add support for sparc and sparc64
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 11-Jul-2013  tls file crtn.S was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 11-Jul-2013  yamt file crtn.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.3 25-Jun-2013  matt Use .long not .word
Use _ENTRY
[with these changes, the crtstuff passes its ATF tests.]
 1.2 21-Jun-2013  matt USE_COMPILERCRTSTUFF=no support for vax.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.12.1 23-Jun-2013  tls resync from head
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.5 28-Jul-2023  rin vax/csu: __start: Use 0x0000 as entry mask instead of 0x0101 (two NOPs)

This was a quite common trick to able to load executables with a.out
headers stripped. Now, the system boots successfully into multi-user
mode without this trick.

Thanks ragge@ for kind explanation:
https://mail-index.netbsd.org/port-vax/2023/07/28/msg004397.html
 1.4 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.3 21-Jun-2013  matt branches: 1.3.26; 1.3.28;
USE_COMPILERCRTSTUFF=no support for vax.
 1.2 02-Jul-2011  matt branches: 1.2.2; 1.2.8;
Adapt to the new ___start calling convention
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.2.8.1 23-Jun-2013  tls resync from head
 1.2.2.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.28.1 10-Jun-2019  christos Sync with HEAD
 1.3.26.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.9 28-Jul-2023  rin vax/csu: Use register name provided by asm.h. No binary changes.
 1.8 28-Jul-2023  rin vax/csu: __do_global_ctors_aux: Save actually-used r8, instead of r11

Thanks Kalvis Duckmanton for report and patch on tech-toolchain:
https://mail-index.netbsd.org/tech-toolchain/2023/07/28/msg004321.html
 1.7 16-Mar-2014  joerg branches: 1.7.4; 1.7.20; 1.7.30; 1.7.38;
__do_global_ctors_aux and __do_global_ctors_aux must be used locally, so
mark them as hidden.
 1.6 10-Jul-2013  matt Add END(func) so gdb doesn't get so confused.
 1.5 10-Jul-2013  matt Fix another bneq -> beql botch
 1.4 10-Jul-2013  matt Fix logic inversion.
 1.3 25-Jun-2013  matt Use .long not .word
Use _ENTRY
[with these changes, the crtstuff passes its ATF tests.]
 1.2 24-Jun-2013  matt Like the rest, make __DTOR_LIST__ start with a -1
Make sure dwarf_eh_object is 8 words long.
 1.1 21-Jun-2013  matt branches: 1.1.2;
USE_COMPILERCRTSTUFF=no support for vax.
 1.1.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 21-Jun-2013  tls file crtbegin.S was added on branch tls-maxphys on 2013-06-23 06:21:03 +0000
 1.7.38.1 30-Jul-2023  martin Pull up following revision(s) (requested by rin in ticket #258):

lib/csu/arch/vax/crtbegin.S: revision 1.8
lib/csu/arch/vax/crtbegin.S: revision 1.9

vax/csu: __do_global_ctors_aux: Save actually-used r8, instead of r11

Thanks Kalvis Duckmanton for report and patch on tech-toolchain:
https://mail-index.netbsd.org/tech-toolchain/2023/07/28/msg004321.html

vax/csu: Use register name provided by asm.h. No binary changes.
 1.7.30.1 30-Jul-2023  martin Pull up following revision(s) (requested by rin in ticket #1675):

lib/csu/arch/vax/crtbegin.S: revision 1.8
lib/csu/arch/vax/crtbegin.S: revision 1.9

vax/csu: __do_global_ctors_aux: Save actually-used r8, instead of r11

Thanks Kalvis Duckmanton for report and patch on tech-toolchain:
https://mail-index.netbsd.org/tech-toolchain/2023/07/28/msg004321.html

vax/csu: Use register name provided by asm.h. No binary changes.
 1.7.20.1 30-Jul-2023  martin Pull up following revision(s) (requested by rin in ticket #1858):

lib/csu/arch/vax/crtbegin.S: revision 1.8
lib/csu/arch/vax/crtbegin.S: revision 1.9

vax/csu: __do_global_ctors_aux: Save actually-used r8, instead of r11

Thanks Kalvis Duckmanton for report and patch on tech-toolchain:
https://mail-index.netbsd.org/tech-toolchain/2023/07/28/msg004321.html

vax/csu: Use register name provided by asm.h. No binary changes.
 1.7.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.4.1 16-Mar-2014  yamt file crtbegin.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 27-Jun-2013  matt branches: 1.1.6; 1.1.10;
Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.1.10.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.10.1 27-Jun-2013  tls file crtbegin.h was added on branch tls-maxphys on 2014-08-20 00:02:06 +0000
 1.1.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.1.6.1 27-Jun-2013  yamt file crtbegin.h was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.2 25-Jun-2013  matt branches: 1.2.6;
Use .long not .word
Use _ENTRY
[with these changes, the crtstuff passes its ATF tests.]
 1.1 21-Jun-2013  matt branches: 1.1.2;
USE_COMPILERCRTSTUFF=no support for vax.
 1.1.2.3 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.2.2 23-Jun-2013  tls resync from head
 1.1.2.1 21-Jun-2013  tls file crtend.S was added on branch tls-maxphys on 2013-06-23 06:21:03 +0000
 1.2.6.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.6.1 25-Jun-2013  yamt file crtend.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.4 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.3 01-Jul-2011  joerg branches: 1.3.40; 1.3.42;
Explicitly declare ___start as hidden.
 1.2 30-Jun-2011  joerg Assert that ps_strings is valid. Use it to drop the first three
arguments to ___start to make the assembler callers simpler.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.3.42.1 10-Jun-2019  christos Sync with HEAD
 1.3.40.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.2 30-Nov-2010  joerg Fix stack alignment for non-constructor/destructor calls.
AMD64 stack is 16 Byte aligned at the start of the function,
so always push rbx.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.35 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.34 27-Dec-2018  christos Enable initfini array support for everyone.
 1.33 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.32 01-Jun-2016  joerg branches: 1.32.14; 1.32.16;
Revert -O1 hack for GCC 5.3, replaced by workaround in the code.
 1.31 10-May-2016  martin We need the -O1 hack (for gcc 5.3) for crtbegin.c as well.
Works around PR toolchain/51121.
 1.30 01-May-2016  martin Revert previous (fallout is more subtle but there).
Rework the conditionon so it depends on .S existence instead of an arch
list.
 1.29 30-Apr-2016  martin Gcc 5.3 seems to do fine compiling this for sparc64, so exclude it
from the -O1 hack
 1.28 04-Apr-2016  martin For the benefit of compilers not using our native C runtime environment,
install a "sysident.o" file providing the note identifying NetBSD
executables (and marking the currently installed version).
 1.27 29-Mar-2016  skrll crt0-common.c is miscompiled by gcc 5.3 on evbarm with -O2 so use -O1. Do
this for all non-x86 arches.
 1.26 27-Mar-2016  mrg add a hack for GCC 5 and non-x86 platforms:

build crtbeginS.o with -O1 as GCC tries to be very smart with the
__DTOR_LIST__ as it believes it knows the size of the array at
compile time (which is not true until link time). on SPARC and
MIPS, the result was emitting a call to 0.

technically, i believe that GCC isn't "wrong" to make this choice,
as the array is declared with a well-known initialiser size in the
crtbegin.c compilation unit, and we have noticed that the libgcc
version of this code has some hacks added, most likely to avoid
being bitten by this optimisation.


this makes sshd work for me on earm and sparc with GCC 5.
 1.25 04-Mar-2014  joerg Add GENASSYM_CPPFLAGS in two more places.
 1.24 11-Jan-2014  matt Using ${LD} -x screws up BE arm. Use ${OBJCOPY} ${OBJCOPYLIBFLAGS} instead
so the $a/$t/$d symbols are preserved.
 1.23 17-Nov-2013  martin Simplify previous by using CSU_MACHINE_ARCH. Hint from Takeshi Nakayama.
 1.22 16-Nov-2013  martin We do not want to build the code model markes when creating the 32bit
compat libs for sparc64
 1.21 14-Nov-2013  martin On sparc64: create additional "marker" object files, that can be used by the
compiler to encode the used code model in binaries.
 1.20 11-Nov-2013  joerg Explicitly depend on sys/param.h to pick up __NetBSD_Version changes.
 1.19 18-Sep-2013  uwe Fix previous: use PICFLAGS for crtbeginS.o
Should unbreak sh3 builds.

XXX: PICFLAGS is defined in bsd.lib.mk which lib/csu does not use.
For now supply a local definition. joerg@, please fix appropriately.
 1.18 12-Sep-2013  joerg Pass PICFLAGS down to cc-as-as and use __PIC__ to decide if it is small
vs big PIC mode. Retire -DPIC and -DBIGPIC.
 1.17 10-Sep-2013  matt Add support for a NetBSD MARCH elf note to record the MACHINE_ARCH for
which a program was compiled.
 1.16 05-Aug-2013  matt Alpha needs crtfm.o for USE_COMPILERCRTSTUFF=no
 1.15 18-Jul-2013  matt Only supplie -fPIE to crtbegin.c if MKPIC is yes.
 1.14 17-Jul-2013  martin branches: 1.14.2;
Use -fPIE for crtbegin.o (instead of -fpie).
Fixes linking the firefox js shell. Ok: joerg@
 1.13 05-Jul-2013  joerg Only install crtbeginS.o, crtbeginT.o and crtendS.o when MKPIC=yes.
 1.12 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.11 27-Jun-2013  matt Add -fPIC to compile of crtbeginS.o
 1.10 25-Jun-2013  matt Reorder to avoid !exists
Add a crtbegin.h dependency
 1.9 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.8 22-Jun-2013  matt Allow crtbegin to be a C file.
 1.7 25-Mar-2012  joerg branches: 1.7.2;
Don't pass assembler flags to genassym, it doesn't compile.
 1.6 31-Jan-2012  uwe Move crt0.S in front of crt0-common.c when building crt0.o and gcrt0.o.
Reading disassembly is easier when the asm crt0.S trampoline is at the
start, not hidden behind the C code in crt0-common.c.
 1.5 31-Jan-2012  uwe Hmm, funny. I wonder why and how did emacs VC managed to add

Warning: Permanently added the RSA host key for IP address '...' to the list of known hosts.

to the committed file. (hi, new cvs!)
 1.4 31-Jan-2012  uwe Use -DPIC to compile crtbeginS.o since that's what <machine/asm.h>
headers check.
 1.3 31-Jan-2011  drochner branches: 1.3.4;
use of .PARSEDIR just doesn't work with .OBJDIR, replace with .CURDIR
 1.2 07-Dec-2010  joerg branches: 1.2.2;
Build assembler sources with assembler compile rules.
 1.1 07-Aug-2010  joerg Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.2.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.3.4.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.4.1 17-Apr-2012  yamt sync with head
 1.7.2.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.14.2.1 23-Jul-2013  riastradh sync with HEAD
 1.32.16.1 10-Jun-2019  christos Sync with HEAD
 1.32.14.1 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.4 01-May-2016  martin Change section flags to "MG" and put it into comdat.
Makes new binutils happy.
 1.3 14-May-2014  joerg branches: 1.3.2; 1.3.6;
Ensure notes are properly padded to 32bit length.
 1.2 26-Feb-2014  martin branches: 1.2.2;
Make the .note section mergable and set proper "item" length.
XXX seems to be impossible to do that with gas w/o causing a (bogus)
warning - but the resulting object file is fine.
 1.1 14-Nov-2013  martin On sparc64: create additional "marker" object files, that can be used by the
compiler to encode the used code model in binaries.
 1.2.2.1 10-Aug-2014  tls Rebase.
 1.3.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.3.6.1 14-May-2014  tls file compident.S was added on branch tls-maxphys on 2014-08-20 00:02:07 +0000
 1.3.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.3.2.1 14-May-2014  yamt file compident.S was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.30 02-May-2025  riastradh lib/csu: Add support for RELR relocations in static PIEs.

Same logic as in ld.elf_so, but baked into the executable itself for
static PIEs.

Addendum to proposal on tech-userlevel:
https://mail-index.NetBSD.org/tech-userlevel/2025/04/27/msg014727.html

PR bin/59360: ld.elf_so(8): missing RELR support
 1.29 22-Mar-2025  christos PR/59189: RVP: move atexit(cleanup) after _preinit() to allow sanitizer
initialization during preinit as well as atexit interception.
 1.28 19-Jan-2024  christos branches: 1.28.2;
declare _libc_init() in header.
 1.27 21-Jun-2022  skrll Support ifunc on aarch64. The tests pass at least.
 1.26 21-Jun-2022  skrll Wrap long #if defined(...) || ... and sort. NFCI.
 1.25 21-Jun-2022  skrll Trailing whitespace
 1.24 20-Apr-2021  christos Instead of compiling files with -fcommon, create an include file and declare
the 3 symbols that need to be common using an attribute. Put all the 3 symbol
definitions in libc in one place (initfini.c). Reviewed by joerg@
 1.23 28-Dec-2018  christos Re-do previous (always make available preinit/initarray/finiarray), with
less disruption.
 1.22 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.21 27-Dec-2018  christos Allow both array and non-array constructors for transition.
 1.20 26-Nov-2018  joerg Do not pass the main object handle from the assembler startup stub to
the common ___start routine. It's only used for a pointless magic
version check. Thanks to martin@ for testing various architectures.
 1.19 13-Jul-2018  kre i386/amd64 build fix. Fix "possibly used uninitialized" from gcc.
These changes should make no practical effect - but because external
data is being examined, it would be possible to contrive a situation
(perhaps) where uninit'd vars could actually be used (unless the format
has been checked elsewhere earlier - I did not look ... we have to
appease gcc anyway).

Joerg: Please review (& fix)
 1.18 12-Jul-2018  joerg Add static PIE support for i386 and AMD64.

The basic glue works with mininal changes for other architectures as
well, but those require linker changes first to avoid leaking dynamic
relocations into the binary.
 1.17 12-Jul-2018  joerg _DYNAMIC is present for static PIE as well, so loosen rtld check.
 1.16 29-Mar-2018  joerg branches: 1.16.2;
Move the complex logic for dynamically writing branches from ld.elf_so
into a header for reuse in crt0.o for static ifunc support. Change the
existing logic for sparc64 to use the Bicc variant of ba,a as it allows
+-8MB displacement compared to the BPcc variant's +-1MB. Teach the sparc
variant the same trick for using ba,a and not sethi+jmp when possible.
 1.15 09-Mar-2018  joerg Add ifunc support for statically linked applications on x86, ppc, sparc
and ARM.
 1.14 07-Jun-2016  joerg branches: 1.14.14;
Fun fact of the weak: a weak reference doesn't have visibility attached.
As such, reorganize the start/end references to use a weak reference
only, if we use it to remove size knowledge. Otherwise use weak
external declarations.
 1.13 31-Jan-2013  matt Add support for PREINIT_ARRAY
 1.12 28-Jan-2013  matt Use __weakref_visible (from joerg@)
 1.11 28-Jan-2013  matt Make with work with gcc 4.5 or clang.
 1.10 22-Jan-2013  matt Fix static weak (to extern weak)
 1.9 13-Aug-2012  matt branches: 1.9.2;
Add support for init_array/fini_array (conditionalized on HAVE_INITFINI_ARRAY).
[This is needed for ARM EABI.]
 1.8 22-Mar-2012  joerg Add some more __dead as exposed by the recent WARN bumps.
 1.7 30-Jun-2011  matt branches: 1.7.2; 1.7.6;
Mark ___start as .hidden (for MKPIE=yes executables).
 1.6 30-Jun-2011  joerg Assert that ps_strings is valid. Use it to drop the first three
arguments to ___start to make the assembler callers simpler.
 1.5 07-Mar-2011  joerg Pass down ELF Auxillary Vectors for static NetBSD binaries too.
Rename __libc_init to _libc_init and call it explicitly from CSU code.
This enforces the constructor run order for newly linked programs.
Keep it as constructor with run-once semantic for binary compatibility.
Implement dl_iterate_phdr for statically linked programs.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.
 1.4 22-Feb-2011  joerg Introduce __weakref_visible to handle the different required visibility
for weak references. GCC 4.2+ and Clang require static, older GCC wants
extern. Change __weak_reference to include sym. This requires changes
the existing users to not reuse the name of the symbol, but avoids
further differences between GCC 4.1 and GCC 4.2+/clang.
 1.3 18-Feb-2011  joerg Allow building with the changed weakref semantic in GCC 4.2 and clang.
 1.2 08-Feb-2011  matt Distinguish between a corrupt obj pointer and a null obj pointer.
 1.1 07-Aug-2010  joerg branches: 1.1.2;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.7.6.2 28-Jan-2013  matt Use __weakref_visible
 1.7.6.1 22-Jan-2013  matt Pullup from HEAD:
Add support for init_array/fini_array (conditionalized on HAVE_INITFINI_ARRAY).
[This is needed for ARM EABI.]
 1.7.2.3 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.7.2.2 30-Oct-2012  yamt sync with head
 1.7.2.1 17-Apr-2012  yamt sync with head
 1.9.2.1 25-Feb-2013  tls resync with head
 1.14.14.5 18-Jan-2019  pgoyette Synch with HEAD
 1.14.14.4 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.14.14.3 28-Jul-2018  pgoyette Sync with HEAD
 1.14.14.2 30-Mar-2018  pgoyette Resolve conflicts between branch and HEAD
 1.14.14.1 15-Mar-2018  pgoyette Synch with HEAD
 1.16.2.1 10-Jun-2019  christos Sync with HEAD
 1.28.2.1 02-Aug-2025  perseant Sync with HEAD
 1.17 28-Dec-2018  christos Undo previous; breaks macppc/m68k (at least)
 1.16 28-Dec-2018  christos Avoid duplicate definitions on arm (reported by kre@)
 1.15 27-Dec-2018  christos Allow both array and non-array constructors for transition.
 1.14 18-Jul-2017  joerg branches: 1.14.4;
.eh_frame should be read-only on MIPS too.
 1.13 29-Jun-2016  joerg branches: 1.13.8;
For some mind-boogling reasons, GCC 5.4 believes that a weak reference
cannot alias with an extern. While this is clearly bogus, avoid yet
another alias handling bug and use strong aliases. It's actually
slightly simpler, too.
 1.12 07-Jun-2016  joerg Fun fact of the weak: a weak reference doesn't have visibility attached.
As such, reorganize the start/end references to use a weak reference
only, if we use it to remove size knowledge. Otherwise use weak
external declarations.
 1.11 05-Jun-2016  joerg Make older GCC and Clang happy and use weak references to the elements,
not declared as arrays.
 1.10 01-Jun-2016  joerg PR toolchain/51121:
__CTOR_LIST__ and __CTOR_LIST_END__ are logically the same object, but
due to the start marker, the former has to be declared as array of fixed
size. Newer GCC versions take the liberty of exploiting the UB of
accessing global objects past the end to unconditionally load zero
values in that case. Two fixes are possible:
(1) Pruning via inline assembler as done by GCC's own CRT copy.
(2) Pruning via weak references as done for linker sets.
Since the second part is known and required to work anyway, prefer this
approach. In theory, the labels could be replaced completely, except
that GNU as doesn't provide start/end symbols for sections containing
dots.
 1.9 06-May-2014  joerg branches: 1.9.2; 1.9.6;
Make EHABI optional.
 1.8 29-Jan-2014  bouyer branches: 1.8.2;
Also make sure the __CTOR_LIST__ is just aligned to a pointer boundary.
By default, mips N32 will aligned to a 64-bit boundary not 32-bit
which causes an extra NULL entry to be added.
Fix "segfault on exit" several people have noticed on mips N32,
caused by a jr to a NULL address.
 1.7 11-Dec-2013  matt Make sure the __CTOR_LIST__ is just aligned to a pointer boundary.
By default, mips N32 will aligned to a 64-bit boundary not 32-bit
which causes an extra NULL entry to be added.
 1.6 29-Nov-2013  joerg Include crtbegin.h first to make it possible to build with the stricter
attribute consistency checks in clang.
 1.5 26-Aug-2013  matt MIPS wants a read/write eh_frame.
 1.4 19-Aug-2013  matt Put the ctors code in .text.startup and dtors code in .text.exit
 1.3 27-Jun-2013  matt Switch arm, earm, powerpc to use crtbegin.c
Use -fpie for crtbegin.
 1.2 24-Jun-2013  matt Make dwarf_eh_object is 8 words long
 1.1 22-Jun-2013  matt Add a common crtbegin.c file and use a machine dependent crtbegin.h to
fill in .init/.fini.
Add mips support for USE_COMPILERCRTSTUFF=no (compiled only)
 1.8.2.1 10-Aug-2014  tls Rebase.
 1.9.6.2 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.9.6.1 06-May-2014  tls file crtbegin.c was added on branch tls-maxphys on 2014-08-20 00:02:07 +0000
 1.9.2.2 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.9.2.1 06-May-2014  yamt file crtbegin.c was added on branch yamt-pagecache on 2014-05-22 11:36:44 +0000
 1.13.8.1 29-Aug-2017  bouyer Pull up following revision(s) (requested by joerg in ticket #240):
external/gpl3/binutils/dist/gas/config/tc-mips.h: revision 1.7
external/gpl3/gcc/dist/gcc/configure: revision 1.16
external/gpl3/gcc/dist/gcc/varasm.c: revision 1.2
external/gpl3/gcc/dist/gcc/varasm.c: revision 1.3
external/gpl3/gcc/dist/gcc/config/mips/netbsd.h: revision 1.10
lib/csu/arch/mips/crtend.S: revision 1.4
share/mk/bsd.own.mk: revision 1.1011
lib/csu/common/crtbegin.c: revision 1.14
external/gpl3/binutils/dist/bfd/elfxx-mips.c: revision 1.11
external/gpl3/gcc/dist/gcc/configure.ac: revision 1.14
external/gpl3/binutils/dist/bfd/elfxx-sparc.c: revision 1.12
external/gpl3/gcc/dist/gcc/config/arm/arm.h: revision 1.14
Create references as absolute pointers internally for .cfi*.
Do not warn for anonymous relocations in read-only .eh_frame,
they will be turned into relative entries afterwards.
A const declaration with explicit section attribute should create a
read-only section, whether it is initialized or not.
Use read-only .eh_frame.
Detect advance_loc support with readelf, not objdump. The latter is
broken in some situations before binutils 2.28.
.eh_frame should be read-only on MIPS too.
Build PIC libs on MIPS and PPC64. While the normal calling convention is
position-independent, real PIC defaults to Global Dynamic as TLS model,
while non-PIC and PIE code can use more restrictive models like Initial
Exec. This is most visible with the thread_local destructor code now
using TLS in libc as it would be clobbered by any other shared library
with TLS due to static offset assignment by ld.
Fix encoding of LSDA entries. .eh_frame references in non-PIC mode can
use plain pointers. For PIC, any references to global objects must be
indirect, but the .eh_frame entries themselve should be pcrel.
One more missing check for DECL_INITIAL being non-NULL.
TLS relocations for PIE and non-PIE main executable work the same, so
apply the same relaxation rules and the same static binding rules.
 1.14.4.1 10-Jun-2019  christos Sync with HEAD
 1.2 19-Jan-2024  christos declare _libc_init() in header.
 1.1 20-Apr-2021  christos Instead of compiling files with -fcommon, create an include file and declare
the 3 symbols that need to be common using an attribute. Put all the 3 symbol
definitions in libc in one place (initfini.c). Reviewed by joerg@
 1.3 14-May-2014  joerg Ensure notes are properly padded to 32bit length.
 1.2 10-Sep-2013  matt branches: 1.2.2;
Add support for a NetBSD MARCH elf note to record the MACHINE_ARCH for
which a program was compiled.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.2.2.1 10-Aug-2014  tls Rebase.
 1.4 14-Nov-2013  martin On sparc64: create additional "marker" object files, that can be used by the
compiler to encode the used code model in binaries.
 1.3 10-Sep-2013  matt MARCH note is conditional
 1.2 10-Sep-2013  matt Add support for a NetBSD MARCH elf note to record the MACHINE_ARCH for
which a program was compiled.
 1.1 07-Aug-2010  joerg branches: 1.1.6; 1.1.12;
Switch i386 and x86_64 to the new CRT layout. The crt0.c body is shared
between all platforms and a small assembler stub in crt0.S is used for
setting up the proper stack and whatever else MD needs.

Extract crti.S and crtn. from the old dot_init.h files. Prepare other
platforms that use the 6-argument form of __(_)start for this.

Rewrite the crtbegin and crtend modules in assembler to make them
compiler independent. Document the interface in README.
 1.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")

RSS XML Feed