On Fri, 27 Jan 2023 16:02:28 -0700
Josh Elsasser <j...@elsasser.org> wrote:

> Unfortunately I don't have a new enough CPU to test xonly, so someone
> should probably mark it USE_NOEXECONLY

Might not need USE_NOEXECONLY.  I have a macppc G5 with xonly and
built lang/sbcl for powerpc, it seems to work.  My ld was not xonly
by default, but I added --execute-only to my build.

powerpc's traps are like amd64's.  This one is in ppc-assem.S,

        twllei  reg_ZERO, trap_FunEndBreakpoint

This says to trap if unsigned word 0 <= trap_FunEndBreakpoint.  This
condition is always true, but the sigtrap_handler in ppc-arch.c will
read the trap_FunEndBreakpoint from the instruction, so it needs the
same read access as ".byte trap_FunEndBreakpoint" on amd64.

The above "twllei" should crash by SIGSEGV, because it should be in
xonly .text, but I might not have reached this "twllei" today, because
I was not using sbcl's debugger.  If we can find a way to reach this
"twllei", then maybe we do need USE_NOEXECONLY.

sbcl can also generate "twllei"s with the TRAP_INSTRUCTION macro in
ppc-arch.c, but these might be RWX (sbcl has USE_WXNEEDED), so xonly
might not affect them.

--George

Finished running tests.
Status:
 Expected failure:   array.pure.lisp / CHECK-BOUND-SIGNED-BOUND-NOTES
 Expected failure:   compiler-2.pure.lisp / (MAP-ALLOCATED-OBJECTS NO-CONSING)
 Expected failure:   compiler-2.pure.lisp / DEDUPLICATED-FDEFNS
 Expected failure:   compiler.pure.lisp / (ODDP BIGNUM NO-CONSING)
 Expected failure:   compiler.pure.lisp / (LOGTEST BIGNUM NO-CONSING)
 Failure:            compiler.pure.lisp / REDUCING-CONSTANTS
 Failure:            compiler.pure.lisp / REDUCING-CONSTANTS.2
 Expected failure:   dynamic-extent.pure.lisp / DX-COMPILER-NOTES
 Expected failure:   float.pure.lisp / (ADDITION-OVERFLOW BUG-372)
 Expected failure:   float.pure.lisp / (ADDITION-OVERFLOW BUG-372 TAKE-2)
 Expected failure:   hash.pure.lisp / SXHASH-ON-DISPLACED-STRING
 Skipped (broken):   interface.pure.lisp / 
RESTART-BOGUS-ARG-TO-VALUES-LIST-ERROR
 Expected failure:   random.pure.lisp / FLOAT-NO-CONSING
 Expected failure:   selfbuild-output.pure.lisp / 
MAKE-LIST-%MAKE-LIST-NOT-CALLED
 Expected failure:   block-compile.impure.lisp / 
BLOCK-DEFPACKAGE-RENAME-PACKAGE-REDEFPACKAGE
 Expected failure:   block-compile.impure.lisp / BLOCK-DEFPACKAGE-RENAME-PACKAGE
 Expected failure:   block-compile.impure.lisp / 
BLOCK-COMPILE-TOP-LEVEL-CLOSURES.SAME-ENVIRONMENT.LOCAL-CALLS
 Expected failure:   compiler.impure.lisp / FTYPE-RETURN-TYPE-CONFLICT
 Expected failure:   debug.impure.lisp / (TRACE ENCAPSULATE NIL)
 Expected failure:   debug.impure.lisp / (TRACE ENCAPSULATE NIL RECURSIVE)
 Expected failure:   debug.impure.lisp / (TRACE ANONYMOUS)
 Expected failure:   debug.impure.lisp / (TRACE METHODS ENCAPSULATE NIL)
 Expected failure:   debug.impure.lisp / (TRACE LABELS)
 Expected failure:   debug.impure.lisp / (TRACE LABELS WITHIN-METHOD)
 Expected failure:   debug.impure.lisp / (TRACE LABELS WITHIN-UNTRACED-METHOD)
 Expected failure:   debug.impure.lisp / (TRACE LABELS REDEFINED)
 Expected failure:   debug.impure.lisp / (TRACE LABELS REDEFINED-METHOD)
 Expected failure:   debug.impure.lisp / (TRACE COMPILER-MACRO)
 Expected failure:   debug.impure.lisp / (TRACE FLET WITHIN-COMPILER-MACRO)
 Expected failure:   debug.impure.lisp / (TRACE COMPILER-MACRO REDEFINED)
 Expected failure:   debug.impure.lisp / (TRACE WHEREIN ENCAPSULATE NIL)
 Expected failure:   debug.impure.lisp / (TRACE WHEREIN RECURSIVE ENCAPSULATE 
NIL)
 Expected failure:   debug.impure.lisp / (TRACE MACRO)
 Expected failure:   debug.impure.lisp / (TRACE LABELS WITHIN-MACRO)
 Expected failure:   debug.impure.lisp / (TRACE MACRO REDEFINED)
 Expected failure:   debug.impure.lisp / (TRACE CAS)
 Expected failure:   debug.impure.lisp / (TRACE CAS GENERIC)
 Expected failure:   debug.impure.lisp / (TRACE SETF)
 Expected failure:   full-eval.impure.lisp / INLINE-FUN-CAPTURES-DECL
 Expected failure:   hash-table.impure.lisp / HASH-TABLE-ITERATOR-NO-NOTES
 Expected failure:   packages.impure.lisp / USE-PACKAGE-CONFLICT-SET
 Expected failure:   packages.impure.lisp / IMPORT-SINGLE-CONFLICT
 Skipped (broken):   run-program.impure.lisp / (RUN-PROGRAM AUTOCLOSE-STREAMS)
 Skipped (broken):   timer.impure.lisp / (TIMER PARALLEL-UNSCHEDULE)
 Expected failure:   walk.impure.lisp / (WALK MULTIPLE-VALUE-BIND)
 Expected failure:   walk.impure.lisp / (WALK MULTIPLE-VALUE-BIND SPECIAL)
 Invalid exit status: foreign.test.sh
 (123 tests skipped for this combination of platform and features)
test failed, expected 104 return code, got 1
*** Error 1 in . (Makefile:96 'do-test')

Reply via email to