PERFORCE change 219756 for review
Robert Watson
rwatson at FreeBSD.org
Mon Nov 12 01:50:09 UTC 2012
http://p4web.freebsd.org/@@219756?ac=10
Change 219756 by rwatson at rwatson_zenith_cl_cam_ac_uk on 2012/11/12 01:50:06
Simple implementation of a sandbox invocation target: unpacks
sandbox invocation arguments, runs some C code a bit
under-defensively, and returns a value to be picked up by the
calling code. Much work to be done here, and depends on a
CJALR call, returning via CJR, rather than CCALL and CRETURN.
However, runs in a new segment successfully.
Affected files ...
.. //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/Makefile#3 edit
.. //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/cheritest-helper.c#2 edit
.. //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/mips64/chsbrt.S#1 add
.. //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/sandbox.ld#2 edit
Differences ...
==== //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/Makefile#3 (text+ko) ====
@@ -2,17 +2,22 @@
# $FreeBSD$
#
PROG= cheritest-helper
-SRCS= cheritest-helper.c
-LDFLAGS+= --script=sandbox.ld -nostdlib
+SRCS= cheritest-helper.c chsbrt.S
+LDFLAGS+= -Wl,--script=${.CURDIR}/sandbox.ld -nostdlib
+CFLAGS+= -G0 -Wa,-G0
NO_MAN=
-STRIP=
+#STRIP=
+NO_SHARED= yes
FILESOWN= ${LIBOWN}
FILESGRP= ${LIBGRP}
FILESMODE= ${LIBMODE}
-FILESDIR= ${LIBDIR}
-FILES= cheritest-helper.bin cheritest-helper.dump
-CLEANFILES= cheritest-helper.bin cheritest-helper.dump
+FILESDIR= ${LIBEXECDIR}
+FILES= cheritest-helper.bin cheritest-helper.dump chsbrt.o
+CLEANFILES= cheritest-helper.bin cheritest-helper.dump chsbrt.o
+
+chsbrt.o:
+ ${AS} -G0 -o ${.TARGET} ${.ALLSRC}
cheritest-helper.bin: cheritest-helper
objcopy -S -O binary ${.ALLSRC} ${.TARGET}
@@ -20,4 +25,6 @@
cheritest-helper.dump: cheritest-helper
objdump -xsSD ${.ALLSRC} > ${.TARGET}
+.PATH: ${.CURDIR}/${MACHINE_ARCH}
+
.include <bsd.prog.mk>
==== //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/cheritest-helper.c#2 (text+ko) ====
@@ -30,9 +30,12 @@
#include <sys/types.h>
+int invoke(register_t a0, register_t a1, register_t a2, register_t a3);
+
int
-main(int argc __unused, char *argv[] __unused)
+invoke(register_t a0 __unused, register_t a1 __unused, register_t a2 __unused,
+ register_t a3 __unused)
{
- return (0);
+ return (123456);
}
==== //depot/projects/ctsrd/cheribsd/src/libexec/cheritest-helper/sandbox.ld#2 (text+ko) ====
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 2011 Robert N. M. Watson
+ * Copyright (c) 2011-2012 Robert N. M. Watson
* All rights reserved.
*
* This software was developed by SRI International and the University of
@@ -40,7 +40,10 @@
SECTIONS
{
. = __code_base__;
+
+ .text ALIGN(0x8): { chsbrt.o }
.text ALIGN(0x8): { *(.text) }
+ .MIPS.options ALIGN(0x8): { *(.MIPS.options) }
.bss ALIGN(0x8): { *(.bss) }
.data ALIGN(0x8): { *(.data) }
More information about the p4-projects
mailing list