svn commit: r203263 - projects/capabilities8/lib/csu/i386-elf
Robert Watson
rwatson at FreeBSD.org
Sun Jan 31 01:30:52 UTC 2010
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$"
More information about the svn-src-projects
mailing list