Date: Sun, 31 Jan 2010 01:30:52 +0000 (UTC) From: Robert Watson <rwatson@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r203263 - projects/capabilities8/lib/csu/i386-elf Message-ID: <201001310130.o0V1Uqox066892@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: rwatson Date: Sun Jan 31 01:30:51 2010 New Revision: 203263 URL: http://svn.freebsd.org/changeset/base/203263 Log: Merge c173990, c173992, and c173993 from the p4 TrustedBSD Capabilities branch to capabilities8: Correct use of --localizesymbol when constructing capability mode bits of csu on i386. Comment out profiling-related code in capstart on i386 until we work out how to deal with this. Report capability-mode C runtime to i386, which was apparently lost during integration of a rearrangement of this code. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/csu/i386-elf/Makefile projects/capabilities8/lib/csu/i386-elf/crt1_c.c projects/capabilities8/lib/csu/i386-elf/crt1_s.S Modified: projects/capabilities8/lib/csu/i386-elf/Makefile ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/Makefile Sat Jan 30 23:59:40 2010 (r203262) +++ projects/capabilities8/lib/csu/i386-elf/Makefile Sun Jan 31 01:30:51 2010 (r203263) @@ -21,13 +21,13 @@ gcrt1.o: gcrt1_c.o crt1_s.o crt1.o: crt1_c.o crt1_s.o ${LD} ${LDFLAGS} -o crt1.o -r crt1_s.o crt1_c.o - objcopy --localize-symbol _start1 crt1.o + objcopy --localize-symbol _start1 --localize-symbol _capstart1 crt1.o Scrt1_c.o: crt1_c.c ${CC} ${CFLAGS} -DGCRT -fPIC -DPIC -c -o Scrt1_c.o ${.CURDIR}/crt1_c.c Scrt1.o: Scrt1_c.o crt1_s.o ${LD} ${LDFLAGS} -o Scrt1.o -r crt1_s.o Scrt1_c.o - objcopy --localize-symbol _start1 Scrt1.o + objcopy --localize-symbol _start1 --localize-symbol _capstart1 Scrt1.o .include <bsd.prog.mk> Modified: projects/capabilities8/lib/csu/i386-elf/crt1_c.c ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 23:59:40 2010 (r203262) +++ projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sun Jan 31 01:30:51 2010 (r203263) @@ -59,6 +59,7 @@ char **environ; const char *__progname = ""; void _start1(fptr, int, char *[]) __dead2; +void _capstart1(fptr, int, char *[]) __dead2; /* The entry function, C part. */ void @@ -93,23 +94,15 @@ __asm__("eprol:"); exit( main(argc, argv, env) ); } +__asm(".hidden _start1"); /* The Capsicum entry function. */ void -_capstart(char *ap, ...) +_capstart1(fptr cleanup, int argc, char *argv[]) { - fptr cleanup; - int argc; - char **argv; char **env; const char *s; -#ifdef __GNUC__ - __asm__("and $0xfffffff0,%esp"); -#endif - cleanup = get_rtld_cleanup(); - argv = ≈ - argc = *(long *)(void *)(argv - 1); env = argv + argc + 1; environ = env; if (argc > 0 && argv[0] != NULL) { @@ -129,11 +122,11 @@ _capstart(char *ap, ...) #endif atexit(_fini); #ifdef GCRT -/* monstartup(&eprol, &etext); -__asm__("eprol:");*/ +/* XXXCAP: monstartup(&eprol, &etext); */ +/* XXXCAP: __asm__("eprol:"); */ #endif _init(); exit( cap_main(argc, argv, env) ); } -__asm(".hidden _start1"); +__asm(".hidden _capstart1"); Modified: projects/capabilities8/lib/csu/i386-elf/crt1_s.S ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/crt1_s.S Sat Jan 30 23:59:40 2010 (r203262) +++ projects/capabilities8/lib/csu/i386-elf/crt1_s.S Sun Jan 31 01:30:51 2010 (r203263) @@ -41,4 +41,17 @@ _start: xorl %ebp,%ebp call _start1 .size _start, . - _start + .globl _capstart + .type _capstart, @function +_capstart: xorl %ebp,%ebp + pushl %ebp + movl %esp,%ebp + andl $0xfffffff0,%esp # align stack + leal 8(%ebp),%eax + pushl %eax # argv + pushl 4(%ebp) # argc + pushl %edx # rtld cleanup + call _capstart1 + .size _capstart, . - _capstart + .ident "$FreeBSD$"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201001310130.o0V1Uqox066892>