< prev index next >

src/hotspot/os_cpu/bsd_aarch64/os_bsd_aarch64.cpp

Print this page
@@ -264,15 +264,12 @@
              next_pc = UnsafeCopyMemory::page_error_continue_pc(pc);
            }
            stub = SharedRuntime::handle_unsafe_access(thread, next_pc);
          }
        } else if (sig == SIGILL && nativeInstruction_at(pc)->is_stop()) {
-         // Pull a pointer to the error message out of the instruction
-         // stream.
-         const uint64_t *detail_msg_ptr
-           = (uint64_t*)(pc + NativeInstruction::instruction_size);
-         const char *detail_msg = (const char *)*detail_msg_ptr;
+         // A pointer to the message will have been placed in x0
+         const char *detail_msg = (const char *)(uc->uc_mcontext->DU3_PREFIX(ss,x[0]));
          const char *msg = "stop";
          if (TraceTraps) {
            tty->print_cr("trap: %s: (SIGILL)", msg);
          }
  
< prev index next >