mgorny updated this revision to Diff 339719. mgorny added a comment. Also add FPU-specific checks to `x86-32-freebsd-addr.test`.
CHANGES SINCE LAST ACTION https://reviews.llvm.org/D101086/new/ https://reviews.llvm.org/D101086 Files: lldb/source/Plugins/Process/elf-core/RegisterUtilities.h lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test lldb/test/Shell/Register/Core/x86-32-freebsd-fp.test Index: lldb/test/Shell/Register/Core/x86-32-freebsd-fp.test =================================================================== --- /dev/null +++ lldb/test/Shell/Register/Core/x86-32-freebsd-fp.test @@ -0,0 +1,3 @@ +# RUN: %lldb -b -s %s -c %p/Inputs/x86-32-freebsd.core | FileCheck %p/Inputs/x86-fp.check + +register read --all Index: lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test =================================================================== --- lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test +++ lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test @@ -10,4 +10,7 @@ # CHECK-DAG: ds = 0x0000003b # CHECK-DAG: es = 0x0000003b -# TODO: fix reading fp registers +# CHECK-DAG: fiseg = 0x00000000 +# CHECK-DAG: fioff = 0x00401c52 +# CHECK-DAG: foseg = 0x00000000 +# CHECK-DAG: fooff = 0xffffd8b8 Index: lldb/source/Plugins/Process/elf-core/RegisterUtilities.h =================================================================== --- lldb/source/Plugins/Process/elf-core/RegisterUtilities.h +++ lldb/source/Plugins/Process/elf-core/RegisterUtilities.h @@ -96,6 +96,9 @@ llvm::ArrayRef<RegsetDesc> RegsetDescs); constexpr RegsetDesc FPR_Desc[] = { + // FreeBSD/i386 core NT_FPREGSET is x87 FSAVE result but the XSAVE dump + // starts with FXSAVE struct, so use that instead if available. + {llvm::Triple::FreeBSD, llvm::Triple::x86, llvm::ELF::NT_X86_XSTATE}, {llvm::Triple::FreeBSD, llvm::Triple::UnknownArch, llvm::ELF::NT_FPREGSET}, // In a i386 core file NT_FPREGSET is present, but it's not the result // of the FXSAVE instruction like in 64 bit files.
Index: lldb/test/Shell/Register/Core/x86-32-freebsd-fp.test =================================================================== --- /dev/null +++ lldb/test/Shell/Register/Core/x86-32-freebsd-fp.test @@ -0,0 +1,3 @@ +# RUN: %lldb -b -s %s -c %p/Inputs/x86-32-freebsd.core | FileCheck %p/Inputs/x86-fp.check + +register read --all Index: lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test =================================================================== --- lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test +++ lldb/test/Shell/Register/Core/x86-32-freebsd-addr.test @@ -10,4 +10,7 @@ # CHECK-DAG: ds = 0x0000003b # CHECK-DAG: es = 0x0000003b -# TODO: fix reading fp registers +# CHECK-DAG: fiseg = 0x00000000 +# CHECK-DAG: fioff = 0x00401c52 +# CHECK-DAG: foseg = 0x00000000 +# CHECK-DAG: fooff = 0xffffd8b8 Index: lldb/source/Plugins/Process/elf-core/RegisterUtilities.h =================================================================== --- lldb/source/Plugins/Process/elf-core/RegisterUtilities.h +++ lldb/source/Plugins/Process/elf-core/RegisterUtilities.h @@ -96,6 +96,9 @@ llvm::ArrayRef<RegsetDesc> RegsetDescs); constexpr RegsetDesc FPR_Desc[] = { + // FreeBSD/i386 core NT_FPREGSET is x87 FSAVE result but the XSAVE dump + // starts with FXSAVE struct, so use that instead if available. + {llvm::Triple::FreeBSD, llvm::Triple::x86, llvm::ELF::NT_X86_XSTATE}, {llvm::Triple::FreeBSD, llvm::Triple::UnknownArch, llvm::ELF::NT_FPREGSET}, // In a i386 core file NT_FPREGSET is present, but it's not the result // of the FXSAVE instruction like in 64 bit files.
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits