256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
234502 |
20-Apr-2012 |
dim |
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 MFC after: 1 week
|
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
|
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
|
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)
|
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
|
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.
|
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.
|
109905 |
26-Jan-2003 |
markm |
make these more useful for lint(1). Minor diff-reductions while I'm about it.
|
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
|
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.
|
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.
|
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
|
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.
|
85593 |
27-Oct-2001 |
obrien |
Update for reality and syncing with other FreeBSD platforms.
|
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.
|
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.
|
59407 |
19-Apr-2000 |
obrien |
CSU source for IA-64. Current we use the ../Alpha sources.
|