From owner-p4-projects@FreeBSD.ORG Wed Nov 14 18:58:51 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2EE06F11; Wed, 14 Nov 2012 18:58:51 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CE2BCF0F for ; Wed, 14 Nov 2012 18:58:50 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id B30BA8FC08 for ; Wed, 14 Nov 2012 18:58:50 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.5/8.14.5) with ESMTP id qAEIwoAn013786 for ; Wed, 14 Nov 2012 18:58:50 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.5/8.14.5/Submit) id qAEIwoD1013783 for perforce@freebsd.org; Wed, 14 Nov 2012 18:58:50 GMT (envelope-from brooks@freebsd.org) Date: Wed, 14 Nov 2012 18:58:50 GMT Message-Id: <201211141858.qAEIwoD1013783@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 219784 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Nov 2012 18:58:51 -0000 http://p4web.freebsd.org/@@219784?ac=10 Change 219784 by brooks@brooks_zenith on 2012/11/14 18:58:46 Include a significatnly more real implementation of abort for sandboxed code. Affected files ... .. //depot/projects/ctsrd/cheribsd/src/ctsrd/libexec/readpng-cheri/mips64/chsbrt.S#2 integrate .. //depot/projects/ctsrd/cheribsd/src/ctsrd/libexec/readpng-cheri/stub.c#2 edit Differences ... ==== //depot/projects/ctsrd/cheribsd/src/ctsrd/libexec/readpng-cheri/mips64/chsbrt.S#2 (text+ko) ==== @@ -137,6 +137,13 @@ sd $a5, 0($at) # + # If abort() is called, we effectively longjmp back to just after the + # call to invoke(). Save a stack pointer for that unwind. + # + dla $at, abort_stack + sd $sp, 0($at) + + # # Invoke MIPS ABI C "invoke" function. # dla $25, invoke @@ -148,6 +155,7 @@ # # XXXRW: To move to caller context once using CCALL. # +abort_target: ld $t0, 0($sp) ld $t1, 8($sp) daddiu $sp, 16 @@ -195,5 +203,23 @@ # cjr $31($c24) # Jump to return capability register nop # Branch-delay slot? + .end __start + + .global abort + .ent abort +abort: + # + # If abort() is called, unwind the stack and jump into the return + # code. Set $v0 to -2 so that it's somewhat recognisable, even if + # non-ideal. + # + dla $at, abort_stack + ld $sp, 0($at) + dli $v0, -2 + b abort_target + nop + .end abort - .end __start + .data +abort_stack: + .dword 0x0000000000000000 # What to restore sp to on abort ==== //depot/projects/ctsrd/cheribsd/src/ctsrd/libexec/readpng-cheri/stub.c#2 (text+ko) ==== @@ -44,12 +44,6 @@ return (&stub_errno); } -void -abort(void) -{ - -} - int close(int d __unused) {