From owner-svn-src-projects@FreeBSD.ORG Sun Jan 31 01:30:52 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3A28D1065679; Sun, 31 Jan 2010 01:30:52 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2939E8FC14; Sun, 31 Jan 2010 01:30:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0V1UqX7066896; Sun, 31 Jan 2010 01:30:52 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0V1Uqox066892; Sun, 31 Jan 2010 01:30:52 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001310130.o0V1Uqox066892@svn.freebsd.org> From: Robert Watson Date: Sun, 31 Jan 2010 01:30:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203263 - projects/capabilities8/lib/csu/i386-elf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 31 Jan 2010 01:30:52 -0000 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 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$"