268511 |
10-Jul-2014 |
gjb |
Set static abitag to the current value of __FreeBSD_version.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
267655 |
20-Jun-2014 |
gjb |
Remove svn:mergeinfo carried over from stable/9.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
267654 |
20-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
245777 |
22-Jan-2013 |
kib |
MFC r245133: Only assign the environ in the startup code when environ is NULL.
Note that this is not the merge, but a reimplementation of the fix, done for the not-consolidated code in the stable/9.
|
234726 |
27-Apr-2012 |
dim |
MFC r234502:
After r217375, some startup objects under lib/csu are built in a special way: first they are compiled to assembly, then some sed'ing is done on the assembly, and lastly the assembly is compiled to an object file.
This last step is done using ${CC}, and not ${AS}, because when the compiler is clang, it outputs directives that are too advanced for our old gas. So we use clang's integrated assembler instead. (When the compiler is gcc, it just calls gas, and nothing is different, except one extra fork.)
However, in the .s to .o rules in lib/csu/$ARCH/Makefile, I still passed CFLAGS to the compiler, instead of ACFLAGS, which are specifically for compiling .s files.
In case you are using '-g' for debug info anywhere in your CFLAGS, it causes the .s files to already contain debug information in the assembly itself. In the next step, the .s files are also compiled using '-g', and if the compiler is clang, it complains: "error: input can't have .file dwarf directives when -g is used to generate dwarf debug info for assembly code".
Fix this by using ${ACFLAGS} for compiling the .s files instead.
Reported by: jasone
|
233624 |
28-Mar-2012 |
kib |
MFC r232830: Add a header with definitions useful for constructing ELF notes.
|
225736 |
23-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
223599 |
27-Jun-2011 |
nwhitehorn |
Build Scrt.o on powerpc64. Its introduction on other platforms got lost during the period of time the powerpc64 port was on a project branch.
|
218824 |
18-Feb-2011 |
nwhitehorn |
Turn off default generation of userland dot symbols on powerpc64 now that we have a binutils that supports it. Kernel dot symbols remain on to assist DDB.
|
218179 |
01-Feb-2011 |
imp |
Whitespace nit
|
217399 |
14-Jan-2011 |
kib |
Mark csu on PowerPC as not requiring executable stack.
Reviewed and tested by: nwhitehorn
|
217383 |
13-Jan-2011 |
kib |
The (%esp & 0xf) == 0 should be true before the call instruction is executed, for the properly aligned stack.
Reported and tested by: rstone Pointy hat to: kib MFC after: 3 days
|
217375 |
13-Jan-2011 |
dim |
Apply a workaround for a binutils issue with the .note.ABI-tag section generated from lib/csu/common/crtbrand.c (which ultimately ends up in executables and shared libraries, via crt1.o, gcrt1.o or Scrt1.o).
For all arches except sparc, gcc emits the section directive for the abitag struct in crtbrand.c with a PROGBITS type. However, newer versions of binutils (after 2.16.90) require the section to be of NOTE type, to guarantee that the .note.ABI-tag section correctly ends up in the first page of the final executable.
Unfortunately, there is no clean way to tell gcc to use another section type, so crtbrand.c (or the C files that include it) must be compiled in multiple steps:
- Compile the .c file to a .s file. - Edit the .s file to change the 'progbits' type to 'note', for the section directive that defines the .note.ABI-tag section. - Compile the .s file to an object file.
These steps are done in the invididual Makefiles for each applicable arch.
Reviewed by: kib
|
217105 |
07-Jan-2011 |
kib |
Add section .note.GNU-stack for assembly files used by 386 and amd64.
|
216351 |
10-Dec-2010 |
tijl |
Add a .note.ABI-tag section to ia64 startup files by linking crtbrand.c in crt1.o. On other architectures crtbrand.c is included from crt1.c, but that's not a C source code file on ia64. Instead it is compiled separately and included in crt1.o using incremental linking.
Tested by: dim (previous version) Approved by: kib (mentor)
|
216338 |
09-Dec-2010 |
dim |
Let all .c and .S files under lib/csu consistently use the __FBSDID() macro for identification, instead of several different hand-rolled variants (plain .ident, .ascii, etc).
|
213906 |
15-Oct-2010 |
dim |
Remove two .endp's without matching .proc in lib/csu/ia64/crtn.S. This allows it to assemble with newer binutils.
Reviewed by: marcel
|
209869 |
10-Jul-2010 |
nwhitehorn |
C startup support for 64-bit PowerPC.
Obtained from: projects/ppc64
|
209295 |
18-Jun-2010 |
kib |
Add unwind annotations to the asm part of crt1 on i386. Terminate the process with SIGTRAP if _start1() unexpectedly returns.
Reviewed by: kan MFC after: 2 weeks
|
205398 |
20-Mar-2010 |
jilles |
Do not create *.gmon files for PIE executables on i386.
Scrt1_c.o was accidentally compiled with -DGCRT (profiling), like gcrt1_c.o. This problem is i386-specific, the other architectures are OK.
If you have problems with PIE executables such as samba and cups leaving behind gmon files, rebuild them after installing this change.
PR: ports/143924 Reviewed by: kib MFC after: 3 days
|
205112 |
13-Mar-2010 |
jmallett |
Fix spelling of noreorder.
|
204757 |
05-Mar-2010 |
uqs |
Use default WARNS setting (of 6) for lib/csu.
PR: bin/140089 Reviewed by: jmallett Approved by: ed (co-mentor)
|
204756 |
05-Mar-2010 |
uqs |
Properly declare non-extern functions in crt1
Also move the declarations after __progname consistently to make the distinction clearer.
Reviewed by: jmallett Approved by: ed (co-mentor)
|
204674 |
03-Mar-2010 |
imp |
Use ABI neutral macrosa
Submitted by: jmallet
|
204673 |
03-Mar-2010 |
imp |
__main and __gccmain are no longer required, so eliminate them.
Submitted by: jmallet@
|
201381 |
02-Jan-2010 |
ed |
Build lib/ with WARNS=6 by default.
Similar to libexec/, do the same with lib/. Make WARNS=6 the norm and lower it when needed.
I'm setting WARNS?=0 for secure/. It seems secure/ includes the Makefile.inc provided by lib/. I'm not going to touch that directory. Most of the code there is contributed anyway.
|
200038 |
02-Dec-2009 |
kib |
Properly support -fPIE by linking PIE binaries with specially-built Scrt1.o instead of crt1.o, since the later is built as non-PIC.
Separate i386-elf crt1.c into the pure assembler part and C code, supplying all data extracted by assembler stub as explicit parameters [1]. Hide and localize _start1 symbol used as an interface between asm and C code.
In collaboration with: kan Inspired by: PR i386/127387 [1] Prodded and tested by: rdivacky [1] MFC after: 3 weeks
|
188895 |
21-Feb-2009 |
ru |
Fix build when WITH_SSP is set explicitly.
Submitted by: Jeremie Le Hen
|
181997 |
22-Aug-2008 |
kib |
Add -fno-omit-frame-pointer to CFLAGS used to compile crt1.c on amd64.
For gcc' __builtin_frame_address() to work, all call frames need to save frame pointer. In particular, this is important for the upper frame that should terminate the chain.
No objections from: jhb PR: amd64/126543 MFC after: 1 week
|
180012 |
25-Jun-2008 |
ru |
Enable GCC stack protection (aka Propolice) for userland: - It is opt-out for now so as to give it maximum testing, but it may be turned opt-in for stable branches depending on the consensus. You can turn it off with WITHOUT_SSP. - WITHOUT_SSP was previously used to disable the build of GNU libssp. It is harmless to steal the knob as SSP symbols have been provided by libc for a long time, GNU libssp should not have been much used. - SSP is disabled in a few corners such as system bootstrap programs (sys/boot), process bootstrap code (rtld, csu) and SSP symbols themselves. - It should be safe to use -fstack-protector-all to build world, however libc will be automatically downgraded to -fstack-protector because it breaks rtld otherwise. - This option is unavailable on ia64.
Enable GCC stack protection (aka Propolice) for kernel: - It is opt-out for now so as to give it maximum testing. - Do not compile your kernel with -fstack-protector-all, it won't work.
Submitted by: Jeremie Le Hen <jeremie@le-hen.org>
|
178739 |
03-May-2008 |
gonzo |
Bring C runtime bits for FreeBSD/mips from p4 mips2-jnpr branch.
Approved by: cognet (mentor)
|
174251 |
04-Dec-2007 |
kib |
The __used (== __attribute__((__used)) ) silences the warning produced by unreferenced symbol. Apply __used instead of rev. 1.5.
Requested by: kan
|
174218 |
03-Dec-2007 |
kib |
Restore the branding of the ELF executables. The structure was optimized out.
MFC after: 3 days
|
163118 |
08-Oct-2006 |
kmacy |
Fix TLS on sparc64 for statically and dynamically linked binaries Approved by: rwatson (mentor) Reviewed by: jmg and marcel
|
161526 |
22-Aug-2006 |
ru |
Remove alpha left-overs.
|
158836 |
22-May-2006 |
marius |
GC these crt{begin,end}.c, which are unused since the last FreeBSD platform switched to those created from GCC's crtstuff.c 4 years ago.
|
151072 |
07-Oct-2005 |
bde |
Fixed profiling of main() for amd64 and i386. This started rotting in 1993 in rev.1.5 of the i386 a.out version (csu/i386/crt0.c). Profiling uses a magic label "eprol" to delimit the start of the part of the text section covered by profiling. This label must be placed before the call to main() to get main() properly profiled. It was placed there in rev.1.1 of crt0.c. Rev.1.5 imported the initial implementation of shared libraries in FreeBSD and misplaced the label. Fortunately, the misplaced label was misspelled and the old label wasn't removed, so the new label had no effect. Unfortunately, when profiling was implemented for the ELF in 1998 in rev.1.2 of csu/i386-elf/crt1.c, only the incorrectly placed label was copied (after fixing its name). The bug was then copied to all other arches. The label seems to be still misplaced in NetBSD for most arches. It is in common.c for most arches so it is even further from being inside the function that calls main().
I think "eprol" is short for "end of prologue", but it must be placed before the end of the prologue so that it covers main(). crt0.c has it before the calls atexit(_mcleanup) and monstartup(...), but it cannot affect these calls so I moved it after the call to monstartup(). It now also covers the call to _init() but not the newer call to _init_tls(). Profiling of _init() seems to be harmless, and the call to _init_tls() seems to be misplaced.
Reviewed by: jdp (long ago, for a slightly different i386 version)
|
146371 |
19-May-2005 |
dfr |
Align the stack to a 16 byte boundary so that we can safely call functions that use SSE. The compiler does attempt to do this in main() but not very successfully - it still manages to use unaligned offsets from %ebp in some cases. Also we need to have an aligned stack in case something uses SSE via _init().
MFC After: 1 week
|
146369 |
19-May-2005 |
dfr |
Keep the stack aligned to a 16 byte boundary when calling init functions so that we don't cause a bus error if they start storing SSE math stuff on the stack.
MFC After: 1 week
|
140077 |
11-Jan-2005 |
trhodes |
Remnant code (broken, unhooked) from a.out which I missed.
Noticed by: ru
|
135679 |
23-Sep-2004 |
cognet |
Implement .init and .fini.
|
134110 |
21-Aug-2004 |
dfr |
Back out the call to _init_tls() - something is broken there and it prevents all static binaries from running.
|
133989 |
18-Aug-2004 |
marcel |
Bring ia64 back from the dead. After a call one needs to restore the GP register, because it's clobbered for calls across load modules. The previous commit inserted the call to _init_tls() between the call to atexit() and the restoration of the GP register clobbered by it. Fix: restore GP before we call _init_tls().
Pointy hat: dfr@
|
133754 |
15-Aug-2004 |
dfr |
Add support for TLS in statically linked programs.
|
129205 |
14-May-2004 |
cognet |
C runtime support for FreeBSD/arm.
|
127252 |
21-Mar-2004 |
peter |
Adjust stack alignment so that when the 'call xxx' functions are gathered into the middle of the _init and _fini sections, they get executed with their expected stack alignment.
|
124752 |
20-Jan-2004 |
ru |
The <bsd.files.mk> API seems the best to use here.
|
121160 |
17-Oct-2003 |
peter |
Explicitly specify an alignment for abitag. Without it, gcc specifies a section alignnment of 16 bytes for amd64 and this breaks file(1). Before: ./cp: ELF 64-bit LSB executable, AMD x86-64, version 1 (FreeBSD), for \ FreeBSD 127.7.9, statically linked, stripped after: ^^^^^^^ ./ls: ELF 64-bit LSB executable, AMD x86-64, version 1 (FreeBSD), for \ FreeBSD 5.0.1, dynamically linked (uses shared libs), stripped
The reason for this is that the NOTE sections are not contiguous internally. If the note section has an alignment of 16, then anything that looks for the data is supposed to round up the payload start to the next multiple of the alignment. But FreeBSD/amd64 broke because the structure is declared as a single structure, not a (header,payload) group, where the payload had an explicit alignment roundup.
The alternative is to change things like file(1) to ignore the ELF payload alignment rules for the PT_NOTE section only for FreeBSD.
|
117606 |
15-Jul-2003 |
marcel |
Fix typo: Passing the first argument to exit() in out2 does not work. Trust me.
|
117537 |
14-Jul-2003 |
marcel |
_start() needed to be written in assembly. See crt1.S.
|
117531 |
13-Jul-2003 |
marcel |
Rewite _start(). We cannot use a C function due to the fact that we don't call it according to the runtime specification and especially WRT to gp this can cause trouble. The gcc 3.3.1 import broke the ia64 runtime because the compiler saved gp prior to us being able to set it properly. Restoring gp after the calls would then invalidate gp and cause segmentation faults later on. By rewriting _start() as an assembly function, we also avoided even more gcc dependences, by trying to use gcc specific features to work around the problem. This version of _start() does not reference _DYNAMIC. We register the cleanup function when it's a non-NULL pointer. The kernel will always pass a NULL pointer and dynamic linkers may pass a non-NULL pointer.
The machine independent code to set __progname now unfortunately is written in assembly. So be it.
|
117074 |
30-Jun-2003 |
ru |
MFi386: revision 1.19.
|
115826 |
04-Jun-2003 |
bde |
Removed garbage: - -elf in CFLAGS had no effect except to reduce portability. - -elf in LDFLAGS had even less effect, since LDFLAGS is not used. - -Wall in CFLAGS had no effect except to reduce portability and break overriding of WARNS, since the setting of WARNS implies -Wall.
|
114667 |
04-May-2003 |
obrien |
This is now Gcc 3.3 WARNS 6 clean.
|
114666 |
04-May-2003 |
obrien |
Set abitag __unused.
|
114319 |
30-Apr-2003 |
peter |
Update for AMD64. repocopied from i386-elf/crt1.c. Deal with regparm argument passing rather than stack based args. The kernel passes the base of the argument/env vector in %rdi (arg1).
|
109908 |
26-Jan-2003 |
markm |
Very minor EOL whitespace diff-reducer.
|
109907 |
26-Jan-2003 |
markm |
Missed a bit of cleanup.
|
109905 |
26-Jan-2003 |
markm |
make these more useful for lint(1). Minor diff-reductions while I'm about it.
|
109903 |
26-Jan-2003 |
markm |
Remove the get_term() function. It pretty much can't work for FreeBSD, and makes ugly diffs with the other crt1.c's. Leave behind a comment (words supplied by Thomas Moestl) that explain the issue.
OK'ed by: tmm
|
107460 |
01-Dec-2002 |
bde |
Backed out previous commit (alignment suitable for RELENG_4) as planned since it has been MFC'ed. See the log message for the previous commit for more details. The alignment bug in gcc-3 has not been fixed, but it is not very serious and the previous commit just moved it (as intended).
Approved by: re (murray)
|
104143 |
29-Sep-2002 |
bde |
Align the stack suitably for the version of gcc in FreeBSD-4 (provided -fomit-frame-pointer is not used). This is mostly moot for -current because gcc-3 does the alignment (slightly incorrectly) in main().
This patch is intended for easy MFC'ing and should be backed out in -current soon since it causes compiler warnings and better fixes are possible in -current. The best fix is to do nothing here and wait for gcc to do stack alignment right. gcc-3 aligns the stack in main(), but does it too late for main()'s local variables and too late for anything called before main(). A misaligned stack is now more than an efficiency problem, since some SSE instructions in some or all (hardware) implementations trap on misaligned operands even if alignment checking is not enabled.
PR: 41528: Submitted by: NIIMI Satoshi <sa2c@sa2c.net> (original version) MFC after: 3 days
|
103721 |
20-Sep-2002 |
markm |
Remove a prototype for a function that is no longer called.
|
102900 |
03-Sep-2002 |
jake |
Don't need to install the signal trampoline here anymore.
|
100872 |
29-Jul-2002 |
ru |
Drop support for COPY, -c has been the default mode of install(1) for a long time now.
Approved by: bde
|
100167 |
16-Jul-2002 |
markm |
The main reason for this is to reduce diffs between all the crt1.c's.
Assembler macros are tidied up and made as similar as sanely possible. The macros are translated into C (__inline static) functions for lint.
Declaration orders are made the same. Declarations are all ISOfied and tidied up.
Comment contents have gratuitous diffs removed.
The net result is a bunch of crt1.c's that are 90% the same. It may be possible to now encapsulate the differences in one MD header, and have only one MI crt1.c file (although the macros to do this may be ugly).
Helpful comments by: obrien, bde Alpha tested by: des i386-elf tested by: markm
|
99354 |
03-Jul-2002 |
markm |
Whitespace diffs only; this brings this file into the same whitespace convention as src/lib/csu/*/crt1.c.
This will make the follow up diffs easier to see and extract.
|
98817 |
25-Jun-2002 |
obrien |
WARNS=6'ify. Style nits.
|
98816 |
25-Jun-2002 |
obrien |
Prototype _start. Submitted by: markm
Mark some _start formal parameters __unused.
|
96632 |
15-May-2002 |
obrien |
Use .rodata section for $FreeBSD$.
|
96530 |
13-May-2002 |
ru |
Fixed CLEANFILES after bsd.lib.mk sweep.
|
96516 |
13-May-2002 |
ru |
SOBJS are not used here for a long time, and were just pessimising the `install'.
|
96512 |
13-May-2002 |
ru |
Major cleanup of bsd.lib.mk.
Get rid of the INTERNALSTATICLIB knob and just use plain INTERNALLIB. INTERNALLIB now means to build static library only and don't install anything. Added a NOINSTALLLIB knob for libpam/modules. To not build any library at all, just do not set LIB.
|
96463 |
12-May-2002 |
ru |
Revert the last change. The corresponding bsd.lib.mk changes were already backed out.
|
96411 |
11-May-2002 |
obrien |
Use the simpler NOMAN rather than NOMAN, NOPIC, NOPROFILE, INTERNALLIB.
|
96313 |
10-May-2002 |
obrien |
Use the compiler's crt{begin,end}.
|
96171 |
07-May-2002 |
obrien |
Fix the copyright dates.
|
95751 |
29-Apr-2002 |
jake |
Install the libc signal trampoline on startup.
|
95721 |
29-Apr-2002 |
bde |
Removed "-fkeep-inline-functions" from CFLAGS, since it now has no effect except to generate spurious warnings about a system header <sys/param.h> having some inline functions (the bswap family). This backs out the main part of rev.1.5 (which was the only part left). The problem fixed by rev.1.5 of the Makefile went away in rev.1.5 of ../common/crtbegin.c when the references to do_ctors() and do_dtors() in the latter were moved from inline asm to C code.
This leaves the problem that implementation details cause warnings.
Discussed with: jdp
|
94613 |
13-Apr-2002 |
obrien |
Style nit and modernize SCM ID.
|
94230 |
08-Apr-2002 |
obrien |
For now we are using our old crt{begin,end}.
|
93399 |
29-Mar-2002 |
markm |
Do not use __progname directly (except in [gs]etprogname(3)). Also, make an internal _getprogname() that is used only inside libc. For libc, getprogname(3) is a weak symbol in case a function of the same name is defined in userland.
|
93037 |
23-Mar-2002 |
obrien |
Style nit.
|
93036 |
23-Mar-2002 |
obrien |
Remove prototype, no other crt1.c has or needs it.
|
92938 |
22-Mar-2002 |
obrien |
Remove __P() usage.
|
92915 |
21-Mar-2002 |
obrien |
Remove __P() usage.
|
92447 |
16-Mar-2002 |
obrien |
Revert part of rev 1.3 -- we need the calls to _init and _fini.
|
92033 |
10-Mar-2002 |
obrien |
Sync with csu/alpha/Makefile: build crt{i,n}.o. Leave crtbegin* to the compiler vendor.
|
91500 |
28-Feb-2002 |
obrien |
Minor style(9) nit + utilize ELF features for the FreeBSD ID.
|
91430 |
27-Feb-2002 |
obrien |
Minor style(9) nit + utilize ELF features for the FreeBSD ID.
|
91427 |
27-Feb-2002 |
obrien |
We do not support the sparc platform.
|
91426 |
27-Feb-2002 |
obrien |
Minor WS change to improve readability.
|
91175 |
23-Feb-2002 |
tmm |
Initialize the libc user trap handlers before passing control non-startup code, so that the userland fp emulator will work.
|
89930 |
28-Jan-2002 |
obrien |
GC code that moved to crtbrand.c.
|
89303 |
13-Jan-2002 |
jake |
Comment out the retrieval of a termination function from %g1. It is doubtful this will ever be used by anything and rtld uses %g1. Comment out references to _init and _fini for now too.
|
88581 |
28-Dec-2001 |
jake |
Fix typo (unclosed comment).
|
88001 |
15-Dec-2001 |
obrien |
Embelish CFLAGS.
|
88000 |
15-Dec-2001 |
obrien |
The instructions on doing something with src/lib/csu/sparc64.
|
87991 |
15-Dec-2001 |
obrien |
Sparc64 ELF version of the C runtime support. It tries to comply with the SCD 2.4.1 (and thus Sparc 64-bit psABI).
This is an amalgamation of the FreeBSD Alpha crt1.c and the BSD/OS Sparc crt0.c (which the copyright reflects).
|
85952 |
03-Nov-2001 |
peter |
Put in an attempt at stack trace/unwind records.
|
85679 |
29-Oct-2001 |
peter |
Mostly cosmetic. Use indentation that is reasonably close to other ia64 *.S files in our tree (eg: locore.s). Put the rest of the args in the .section lines.
Reviewed by: dfr
|
85678 |
29-Oct-2001 |
peter |
Update for the new toolchain. ld doesn't provide _GLOBAL_OFFSET_TABLE_ in 2.11.2, so use a relocatable method of calculating gp.
Reviewed by: dfr
|
85612 |
28-Oct-2001 |
obrien |
sparc64 verions of the crt initialization and finalization files required by the ELF ABI.
|
85597 |
27-Oct-2001 |
peter |
Add missing crti.S and crtn.S files. I have tested these with -static linking only. They may require some gp relative tweaks for dynamic use.
|
85595 |
27-Oct-2001 |
obrien |
Sync with other platforms.
|
85594 |
27-Oct-2001 |
obrien |
minor style updating
|
85593 |
27-Oct-2001 |
obrien |
Update for reality and syncing with other FreeBSD platforms.
|
85592 |
27-Oct-2001 |
obrien |
Feh, it helps to include a file other than yourself... wonder how GCC cpp liked that.
Properly include the branding info.
|
85524 |
26-Oct-2001 |
obrien |
Fix nit in copyright.
|
85522 |
26-Oct-2001 |
obrien |
Use the new machine-independent versions of crtbegin and crtend from the "common" directory.
|
84799 |
11-Oct-2001 |
dfr |
Change to track the new calling convention for execve. This version only needs one line of assembler to initialise gp.
|
82074 |
21-Aug-2001 |
dfr |
Make sure stack is aligned to 16 bytes.
|
81586 |
13-Aug-2001 |
ru |
Removed duplicate VCS ID tags, as per style(9).
|
80740 |
31-Jul-2001 |
mp |
Fix compilation errors by adding forward declarations and fix typo.
|
70659 |
04-Jan-2001 |
obrien |
Add rcsid's.
|
70658 |
04-Jan-2001 |
obrien |
The instructions on doing something with src/lib/csu/powerpc.
|
70657 |
04-Jan-2001 |
obrien |
PowerPC version of the C runtime support.
This is an amalgamation of the NetBSD macppc crt0.c (which the copyright reflects) and the FreeBSD/Alpha crt1.c.
|
70656 |
04-Jan-2001 |
obrien |
PowerPC verions of the crt initialization and finalization files required by the ELF ABI.
|
67926 |
30-Oct-2000 |
obrien |
Alpha verions of the crt initialization and finalization files required by the ELF ABI.
|
67811 |
28-Oct-2000 |
obrien |
* Bring back the guts of crt{i,n}.S. This allows C++ exceptions to work when using the egcs and gcc-devel ports, along with GCC built from stock public FSF sources. With out this change, FreeBSD will be removed from the list of systems GCC 3.0 must be evaluated on before release. With the effort some of us put into getting FreeBSD on this list, we should not turn this effort into a waste, else we might not be worth fighting for in the future. (note that Alpha and IA-64 versions of crt{i,n}.S are needed)
* Switch from our own crt{begin,in} to those created from GCC's crtstuff.c. This will allow us to switch to DWARF2 exceptions in the future, along with staying in sync with any future GCC requirements.
* Break out our ELF branding bits into a seperate file. Currently this is now included by our crt1.c files (since this functionality was part of our native crtbegin.c). Later crtbrand.o will be merged in the creation of crti.o.
|
67116 |
14-Oct-2000 |
dfr |
CSU code for ia64.
|
60844 |
24-May-2000 |
obrien |
Use the new machine-independent versions of crtbegin and crtend from the "common" directory.
|
60811 |
23-May-2000 |
jdp |
Use the new machine-independent versions of crtbegin and crtend from the "common" directory.
As a side-effect, this also fixes a bug in the ordering of global constructors and destructors on the Alpha. See revision 1.3 of "../common/crtbegin.c" for details.
|
60734 |
20-May-2000 |
jdp |
Take crtbegin.c and crtend.c from the new machine-independent "common" sister directory.
|
60698 |
19-May-2000 |
jdp |
This is step 1 in an effort to unify the start-up files for the various architectures. Now all the work is done in crtbegin.c. It doesn't contain any assembly language code, so it should work fine on all architectures. (I have tested it on the i386 and the alpha.) The old assembly language files crt[in].S are now empty shells that generate no code or data. They should not be removed any time soon, because the various versions of gcc in src and ports expect them to exist.
Next I will move crtbegin.c into a new common machine-independent directory, and adjust the i386-elf Makefile to use that version. After that I will adjust the alpha Makefile to use the common version too.
Requested by: obrien
|
59407 |
19-Apr-2000 |
obrien |
CSU source for IA-64. Current we use the ../Alpha sources.
|
59406 |
19-Apr-2000 |
obrien |
Use ${.ALLSRC} in Makefile so that it is a better candidate for copying. Also allows the soruce to live somewhere else.
|
59405 |
19-Apr-2000 |
steve |
CSU source for the Sparc copied over from the FreeBSD/Alpha sources.
|
59342 |
18-Apr-2000 |
obrien |
Change our ELF binary branding to something more acceptable to the Binutils maintainers.
After we established our branding method of writing upto 8 characters of the OS name into the ELF header in the padding; the Binutils maintainers and/or SCO (as USL) decided that instead the ELF header should grow two new fields -- EI_OSABI and EI_ABIVERSION. Each of these are an 8-bit unsigned integer. SCO has assigned official values for the EI_OSABI field. In addition to this, the Binutils maintainers and NetBSD decided that a better ELF branding method was to include ABI information in a ".note" ELF section.
With this set of changes, we will now create ELF binaries branded using both "official" methods. Due to the complexity of adding a section to a binary, binaries branded with ``brandelf'' will only brand using the EI_OSABI method. Also due to the complexity of pulling a section out of an ELF file vs. poking around in the ELF header, our image activator only looks at the EI_OSABI header field.
Note that a new kernel can still properly load old binaries except for Linux static binaries branded in our old method.
* * For a short period of time, ``ld'' will also brand ELF binaries * using our old method. This is so people can still use kernel.old * with a new world. This support will be removed before 5.0-RELEASE, * and may not last anywhere upto the actual release. My expiration * time for this is about 6mo. *
|
50476 |
28-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
48837 |
16-Jul-1999 |
simokawa |
Enable gcrt1.o.
|
47788 |
06-Jun-1999 |
jdp |
Call do_ctors() and do_dtors() using indirect calls through function pointers. The calls are in different sections from the functions being called, and they can potentially be far away. On a very large program, the 21-bit displacement field of the BSR instruction overflowed at link time.
|
45973 |
24-Apr-1999 |
jdp |
Remove some left-over stuff from NetBSD that we don't need. This eliminates the need to include the dynamic linker's private header file, as well as two other headers from <sys>.
|
45506 |
09-Apr-1999 |
jdp |
Ugh. I didn't know this Makefile was reaching over into the dynamic linker sources for some of its header files. Add a -I flag to pick up a new directory over there.
|
44789 |
15-Mar-1999 |
jdp |
Add "-fkeep-inline-functions" to CFLAGS so that higher optimization levels (-O3 and above) won't remove essential code. Many thanks to Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru> for pointing out that it was the optimizer's removal of this code that caused make world with -O3 to break. With this change, make buildworld now completes.
|
44699 |
13-Mar-1999 |
jdp |
Reverse the order of processing object files within an executable or shared library when invoking global constructors and destructors. For constructors, the object files used to be processed from first to last; now they're done from last to first. (Destructors are done in the opposite order, as required by the C++ standard.) This makes us consistent with standard gcc and egcs compilers. It also eliminates ordering differences between dynamic and static executables.
Bump the value of __FreeBSD_version to 400002 to reflect this change.
|
44691 |
12-Mar-1999 |
jdp |
Move the code for the ".init" and ".fini" sections outside of a C function so the compiler won't try to emit line numbers for it with "-g", breaking the build. This has the nice side-effect of making crtbegin.o and crtbeginS.o a little bit smaller.
Remove "-Wno-unused" from the Makefile. Replace it with "__unused" on particular function and variable declarations.
|
42826 |
19-Jan-1999 |
simokawa |
Initialize __progname by argv[0] before striping leading path, otherwise we always get empty name.
|
42450 |
09-Jan-1999 |
jdp |
Switch to using ".So" as the extension for PIC object files rather than ".so". The old extension conflicted with well-established naming conventions for dynamically loadable modules.
The "clean" targets continue to remove ".so" files too, to deal with old systems.
|
42376 |
07-Jan-1999 |
steve |
Strip the leading path from __progname.
Ok'd by: jdp
|
42089 |
27-Dec-1998 |
bde |
Fixed type mismatches in args to __syscall(). One for mmap() broke on i386's with 64-bit longs -- the padding between mmap()'s 5th and 6th is an int, not a long. The other mismatches were benign.
|
42088 |
27-Dec-1998 |
bde |
Avoid using ld -O (as in bsd.lib.mk).
Fixed `make cleandepend'. The default is null because SRCS is null.
|
42049 |
24-Dec-1998 |
steve |
Strip the leading path from __progname as is done in the a.out case. Also bring in stddef.h so we can use NULL instead of 0 for pointer comparisons.
Hinted at by: Bruce Evans Reviewed by: John Polstra
|
38928 |
07-Sep-1998 |
jdp |
Make profiling work for ELF. gprof now autodetects the format of the executable file, so it will work for both a.out and ELF format files. I have split the object format specific code into separate source files. It's cleaner than it was before, but it's still pretty crufty.
Don't cheat on your make world for this update. A lot of things have to be rebuilt for it to work, including the compiler and all of the profiled libraries.
|
38460 |
20-Aug-1998 |
jb |
Remove the bootstrap hack that prevented the use of the rtld.
|
36494 |
31-May-1998 |
bde |
Fixed double slashes in pathnames.
|
36397 |
26-May-1998 |
sos |
ELF preparation step 2:
Move a.out libraries to /usr/lib/aout to make space for ELF libs. Make rtld usr /usr/lib/aout as default library path. Make ldconfig reject /usr/lib as an a.out library path. Fix various Makefiles for LIBDIR!=/usr/lib breakage.
This will after a make world & reboot give a system that no longer uses /usr/lib/*, infact one could remove all the old libraries there, they are not used anymore.
We are getting close to an ELF make world, but I'll let this all settle for a week or two...
|
35664 |
04-May-1998 |
jb |
Force BOOTSTRAP mode all the time while the headers are broken on alpha as the result of i386 changes.
|
34977 |
01-Apr-1998 |
jb |
Temporary fix for problems that occur if CFLAGS=-g is added to /etc/make.conf. The tools can't handle generating debug code where we fiddle with the ELF segments.
|
34488 |
11-Mar-1998 |
jb |
Bring these back from the dead.
|
34487 |
11-Mar-1998 |
jb |
Don't share sources with i386-elf. That was too difficult. 8-(
Add a bootstrap mode so that non-rtld versions of these objects can be built when bootstrapping the system with NetBSD tools, headers and libraries. Once the FreeBSD tools are built, the FreeBSD headers are installed and *then* these objects can be recompiled with the rtld references. Phew.
|
34485 |
11-Mar-1998 |
jb |
This commit was generated by cvs2svn to compensate for changes in r34484, which included commits to RCS files with non-trunk default branches.
|
34454 |
10-Mar-1998 |
jb |
Trash startup sources from NetBSD in favour of jdp's FreeBSD source now that has been committed.
The makefile is derived from the i386-elf version, modified to pick up most of the source (except crt1.c) from i386-elf. With minor changes to i386-elf/crt1.c, this directory can be combined with i386-elf to be a single csu/elf directory for all seasons.
|
34453 |
10-Mar-1998 |
jb |
This commit was generated by cvs2svn to compensate for changes in r34452, which included commits to RCS files with non-trunk default branches.
|
34199 |
07-Mar-1998 |
jdp |
This commit was generated by cvs2svn to compensate for changes in r34198, which included commits to RCS files with non-trunk default branches.
|
34198 |
07-Mar-1998 |
jdp |
Import C startup files for ELF support.
Submitted by: John Polstra <jdp@polstra.com>
|
33236 |
11-Feb-1998 |
jdp |
Remove the include of <dlfcn.h> from crt0.c; it is not needed now that the dl* trampolines have been moved into libc.
Move dlfcn.h from src/lib/csu/i386 into src/include. Nothing in src/lib/csu/i386 uses it any more.
|
33180 |
09-Feb-1998 |
jdp |
Move the trampolines for dlopen and related functions from crt0.o into libc. This reduces the size of every dynamically linked executable by 248 bytes, and it reduces the size of static executables by a lesser amount. It also eliminates some global namespace pollution.
With this change in place, the source for dlfcn.h should probably be moved to "/usr/src/include". I'll save that for another day.
Compatibility note: Programs which use dlopen, if compiled on systems with this change, will not run on systems with a libc from prior to this change. Very few programs use dlopen, so I think that is OK.
|
33137 |
06-Feb-1998 |
jdp |
Implement dladdr.
|
32484 |
12-Jan-1998 |
eivind |
${TARGET} -> ${.TARGET}
Tiny pointed hat goes to: Our Makefile-meister.
|
32417 |
11-Jan-1998 |
jb |
CSU source for Alpha obtained from NetBSD. The makefile will require more work when we get a half-way usable libc (which is next).
|
31342 |
22-Nov-1997 |
brian |
const correctness for dl*()
|
30291 |
11-Oct-1997 |
asami |
Make this file p-make clean. (Use "ld -O foo" instead of "ld; mv a.out foo".)
Reviewed by: bde (actually more like "Suggested by")
|
29988 |
29-Sep-1997 |
wosch |
Sort cross refereces in section SEE ALSO.
|
27838 |
02-Aug-1997 |
jdp |
Implement dlsym(RTLD_NEXT, symbol).
|
25296 |
30-Apr-1997 |
msmith |
Use our copy of dlfcn.h, not the version in /usr/include, which may not be up-to-date when we are building. Submitted by: Terry Lambert <terry@lambert.org>
|
24756 |
09-Apr-1997 |
jdp |
Declare the constructor/destructor linker sets as extern rather than common. Add one do-nothing element to each set. This ensures that the linker realizes that they are linker sets rather than simple commons, and makes it possible to link c++rt0.o into every shared library regardless of whether it is a C++ library or not. Without this change, the constructors and destructors in the main program could be executed multiple times.
This change is going to make it possible to get rid of the CPLUSPLUSLIB makefile variable once and for all. It is a piece of the solution to PR gnu/3505 (gcc -shared). Finally, it fixes a heretofore unreported bug: If CPLUSPLUSLIB was set in a makefile for a C++ shared library that had no static constructors or destructors in it, then the main program's constructors and destructors would be executed multiple times.
|
24553 |
02-Apr-1997 |
jdp |
Fix an error in the previous revision that caused make world breakage.
|
24488 |
01-Apr-1997 |
bde |
Simplified install rule.
|
22993 |
22-Feb-1997 |
peter |
Revert $FreeBSD$ to $Id$
|
21673 |
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
21619 |
12-Jan-1997 |
jdp |
Convert to mdoc format. Add descriptions of RTLD_LAZY and RTLD_NOW. Correct the synopsis to agree with the actual function prototypes. Add clarifications of a few things. Clean up the wording in a few places.
|
21616 |
12-Jan-1997 |
jdp |
Add definitions of RTLD_LAZY and RTLD_NOW.
|
21571 |
11-Jan-1997 |
jdp |
Set the "crt_ldso" member of the crt-to-ld.so interface structure. This was apparently overlooked at the time the member was added. Its absence causes some error messages from the dynamic linker to begin with "(null):" instead of with the pathname of the dynamic linker as they should.
I am also adding a work-around to the dynamic linker, to cope with legacy binaries that were built with older versions of crt0.
|
21158 |
01-Jan-1997 |
bde |
Use ${COPY} instead of -C for installing non-source files. crt*.o should be installed using the same flag as libraries, but ${COPY} is currently used for libraries.
|
20975 |
28-Dec-1996 |
peter |
When linking with no rtld support, provide stub dl*() functions that just return errors. This removes the need for awful hacks like that in our build of libtcl which would get link errors when linked static.
John Polstra once mentioned that this was on his "todo" list.
Note that one can use: cc -Wl,-Bstatic -o foo foo.o and get an executable that has it's libraries statically linked, but has a fully functional runtime linker so the executable can call dlopen() and have it work. (I've tested this)
|
18802 |
08-Oct-1996 |
scrappy |
Fixed prototyping of dlopen/dlsym in dlfcn.h, to match how crt0.c defines it and link.h prototypes it
Error of my ways pointed out by Peter
|
18735 |
06-Oct-1996 |
steve |
Remove garbage initcode reference so that 'gcc -Dlint ...' will compile without error.
|
18593 |
01-Oct-1996 |
peter |
Support crt0 <-> ld.so interface version 4. This should be both backwards and forwards compatable with version 3. This is needed to enable storing a run-time library path in the dynamic linking headers. The crt startup tries version 4 first, and falls back to version 3, so an executable that is linked on -current will work with the ld.so on 2.1.x and less.
Reviewed by: nate, jdp Obtained from: NetBSD
|
17927 |
30-Aug-1996 |
peter |
cmp -s || install -c --> install -C
|
15679 |
07-May-1996 |
wosch |
``mv'' -> ``mv -f'' ``rm'' -> ``rm -f'' so mv/rm may not ask for confirmation if you are not root
|
14161 |
20-Feb-1996 |
jdp |
Changed the dimensions of __CTOR_LIST__ and __DTOR_LIST__ from 0 to 2. This makes them agree with the declarations in libgcc, and clears the way once again for linking c++rt0.o into all libraries, and eliminating CPLUSPLUSLIB from <bsd.lib.mk>. (I have not made that change yet, because there is still a bootstrapping problem for "make world".)
Also, removed a check which ensured that the constructor count in the first word of __CTOR_LIST__ was greater than zero before traversing the list. I had added that check earlier, but it is no longer necessary, now that there is guaranteed to be at least 2 words in __CTOR_LIST__.
|
13727 |
30-Jan-1996 |
nate |
Back out the thread_init code in order to allow -current to bootstrap from -stable, until a better solution is found.
Submitted by: Consensus of mailing list and the almighty Jordan :)
|
13545 |
22-Jan-1996 |
julian |
Reviewed by: julian and (hsu?) Submitted by: John Birrel(L?)
changes for threadsafe operations
|
13441 |
15-Jan-1996 |
jdp |
Check the count in the first word of __CTOR_LIST__ before executing the loop that invokes the static constructors. That makes it safe to link c++rt0.o into any shared library, even one that does not have any static constructors. Formerly, doing that would cause a bus error. If the library has no static constructors, __CTOR_LIST__ comes out as a simple 4-byte COMMON region, and it does not have the usual NULL word that terminates the list of constructors. This caused the old code to "call" a garbage address via the non-existent entry __CTOR_LIST__[1].
The analogous code that invokes the static destructors was already safe.
This change is fully backward-compatible.
Reviewed by: dfr@render.com (Doug Rabson)
|
13123 |
30-Dec-1995 |
peter |
This commit was generated by cvs2svn to compensate for changes in r13122, which included commits to RCS files with non-trunk default branches.
|
13122 |
30-Dec-1995 |
peter |
recording cvs-1.6 file death
|
12009 |
02-Nov-1995 |
ache |
Remove my locale hack. Sigh.
|
11912 |
29-Oct-1995 |
phk |
Clean up and make code (more) readable.
|
11676 |
22-Oct-1995 |
bde |
Fixed dependencies for scrt0.o. Build a static gcrt0.o (sgcrt0.o) too. Currently only the dynamic gcrt0.o is used, although -pg forces -static. Sorted the .o targets.
|
11592 |
20-Oct-1995 |
phk |
-fomit-frame-pointer is becomming an increasingly popular optimization, so before somebody screws up royally, make sure this always works by adding a -fno-omit-frame-pointer here.
|
11562 |
18-Oct-1995 |
phk |
put the _getenv and _strncmp under #ifdef DEBUG, which is the only time they are used. Saves a few bytes here and there, nothing major.
|
11556 |
18-Oct-1995 |
dg |
Create a scrt0.o file that specifically excludes the shared-lib support. This will be used for -static programs.
|
11039 |
27-Sep-1995 |
nate |
Fixup the "ld.so failed" message for the case when ld.so finds undefined symbols.
An easy example to see this is to develop an X program which links against Xt, but doesn't add -lX11 to the link line. It will link fine, but cause run-time errors by ld.so because of missing symbols used by Xt defined in X11. This patch makes the errors more readable.
Submitted by: jdp@polstra.com (John Polstra)
|
9971 |
06-Aug-1995 |
bde |
Install source files with the -c flag, not with the optional flag ${COPY}.
|
9970 |
06-Aug-1995 |
bde |
Change `install' to `${INSTALL}' so that default install flags can be specified in the top level Makefiles.
Previously I missed dozens of Makefiles that skip the install after using `cmp -s' to decide that the install isn't necessary.
|
9378 |
30-Jun-1995 |
wollman |
Numerous Makefile fixes:
1) Do dependencies. 2) Install all appropriate links to manual pages. 3) Install header file in `beforeinstall' like all the rest. 4) Install header file only if changed. 5) Install object files only if changed.
|
9335 |
27-Jun-1995 |
dfr |
Change ld.so to correctly load dependant libraries for dlopen and unload them on dlclose. Also correctly call constructors and destructors for libraries linked with /usr/lib/c++rt0.o. Change interpretation of dlopen manpage to call _init() rather than init() for dlopened objects. Change c++rt0.o to avoid using atexit to call destructors, allowing dlclose to call destructors when an object is unloaded. Change interface between crt0 and ld.so to allow crt0 to call a function on exit to call destructors for shared libraries explicitly.
These changes are backwards compatible. Old binaries will work with the new ld.so and new binaries will work with the old ld.so. A version number has been introduced in the crt0-ld.so interface to allow for future changes.
Reviewed by: GAWollman, Craig Struble <cstruble@singularity.bevc.blacksburg.va.us>
|
8870 |
30-May-1995 |
rgrimes |
Remove trailing whitespace.
|
7489 |
30-Mar-1995 |
phk |
Install the dlopen.3 manpage.
|
6682 |
24-Feb-1995 |
phk |
Remove an unused variable.
|
6259 |
09-Feb-1995 |
jkh |
Install the header files.
|
6242 |
08-Feb-1995 |
jkh |
Add two parts of Mark's/Gary's dlopen() changes that I missed before.
|
6233 |
07-Feb-1995 |
jkh |
Support for more Sun compatible dlopen() and friends. Also added proper error handling. Reviewed by: gj Submitted by: Mark Diekhans <markd@grizzly.com>
|
3051 |
24-Sep-1994 |
ache |
Call reduced (8-bit only) startup_setlocale()
|
2879 |
19-Sep-1994 |
ache |
Change level of setlocale hack enabling from compile option STARTUP_LOCALE to check (via getenv) environment variable "ENABLE_STARTUP_LOCALE" at runtime. Submitted by: me per Bruce suggestion
|
2869 |
18-Sep-1994 |
ache |
Add (#ifdef'ed by STARTUP_LOCALE) following line to crt0.c
(void) setlocale(LC_ALL, "");
It will be easiest way now to make national chars available for all ctype-oriented programs at once by simple:
setenv LANG Your_National_Charset
Default case (without "LANG" environment variable) will be fully ANSI compatible (got "C" locale).
If "LANG" variable present, extention becomes active.
Effect of this extention is great: in one time all ctype oriented programs can accept/print national characters without any touching source/binary code, it is big win, IMHO.
This method is fully compatible with ISO8859-* and russian koi8-r too (in general -- with all 8-bit character sets). I think it is very useful. I got this idea from Xenix locale implementation.
This extention is even never compiled in, unless you set setenv STARTUP_LOCALE before rebuilding crt0.c or corresponding variable in /etc/make.conf
|
2217 |
22-Aug-1994 |
bde |
Remove dead code. gmon stuff is now done better in libc/gmon an <machine/profile.h>. The old version was writing an incomplete header without the profrate field that is necessary to handle the current faster profiling clock. The counters that are where the the profrate should be are usually 0 and gprof converts a profrate of 0 to hz so the old version gave times too large by a factor of profhz/hz = 10.24.
|
1865 |
05-Aug-1994 |
wollman |
Make it work with new mmap syscall.
|
1617 |
28-May-1994 |
rgrimes |
MAP_FILE is the default on mmap now, and is no longer defined just like on a sun, so #define it to be 0 if we are running BSD >=199306.
|
1253 |
09-Mar-1994 |
nate |
From Jordan via. Paul K.
This fixes the problems Warner's having with ctors not being called again with the latest round of ld changes and updates the file-names to what Paul is using now.
The name change will not affect anything as we are not (yet) using it.
|
1164 |
16-Feb-1994 |
nate |
Allow NetBSD (old style) shared binaries to work. Probably not the final solution but at least this gets folks running -current up again.
|
1157 |
13-Feb-1994 |
jkh |
New dlopen, dlclose, etc al. For the new ld changes.
|
928 |
03-Jan-1994 |
dg |
Implemented 'QMAGIC' a.out format correctly, and changed the default output to be QMAGIC.
|
914 |
24-Dec-1993 |
jkh |
Adding embryonic C++ shared lib support (all tests positive so far).
|
780 |
18-Nov-1993 |
ache |
-r option incorrectly removed: it is impossible to make gcrt0.o from moncrt0.o and gmon.o without it.
|
772 |
16-Nov-1993 |
paul |
Removed all the ld -x -r stuff -- paranoia.
|
741 |
09-Nov-1993 |
paul |
shlib update:
Can get rid of local symbols with "ld -x -r" again. Made LDSO #ifdef DEBUG.
|
710 |
07-Nov-1993 |
paul |
Removed install -d line since our install doesn't support the -d option.
|
698 |
04-Nov-1993 |
paul |
Added shared libs support from NetBSD.
|
670 |
26-Oct-1993 |
dg |
Yanked out the 8 'addb %al,%al' (0xc000)'s out of the start of the program. The idea was that these are 'alignment' crap, but the image is 16byte-aligned without these. Location 0 still doesn't have a 0, but who cares, binaries wil be built with page zero unmapped in the near future.
|
89 |
03-Jul-1993 |
root |
Added ${COPY} knob to the install commands
|
52 |
29-Jun-1993 |
nate |
Added some support the new err(3) routines need (Copied directly from NetBSD verbatim)
|
7 |
18-Jun-1993 |
paul |
Upgrade to GCC 2.X
|
5 |
12-Jun-1993 |
rgrimes |
This commit was generated by cvs2svn to compensate for changes in r4, which included commits to RCS files with non-trunk default branches.
|