diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -592,7 +592,10 @@ return false; } - ABISP abi = m_exe_ctx.GetProcessPtr()->GetABI(); + ABISP abi; + if (Process *proc = m_exe_ctx.GetProcessPtr()) + abi = proc->GetABI(); + if (abi) addr = abi->FixDataAddress(addr); diff --git a/lldb/test/Shell/Driver/TestPageZeroRead.test b/lldb/test/Shell/Driver/TestPageZeroRead.test new file mode 100644 --- /dev/null +++ b/lldb/test/Shell/Driver/TestPageZeroRead.test @@ -0,0 +1,6 @@ +# REQUIRES: system-darwin +# Ensure that the read from memory command doesn't try and read from page zero. +# RUN: %clang_host %p/Inputs/hello.c -g -o a.out +# RUN: %lldb -b a.out -o 'settings set interpreter.stop-command-source-on-error false' -s %s 2>&1 | FileCheck %s +x 0 +# CHECK: error: error reading data from section __PAGEZERO