mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-17 00:36:34 +00:00
[lldb][AArch64] Do not crash if NT_ARM_TLS is missing (#106478)
[D156118](https://reviews.llvm.org/D156118) states that this note is always present, but it is better to check it explicitly, as otherwise `lldb` may crash when trying to read registers.
This commit is contained in:
parent
d2b8969b75
commit
ce7c828e08
@ -254,9 +254,11 @@ RegisterInfoPOSIX_arm64::RegisterInfoPOSIX_arm64(
|
||||
if (m_opt_regsets.AllSet(eRegsetMaskMTE))
|
||||
AddRegSetMTE();
|
||||
|
||||
// The TLS set always contains tpidr but only has tpidr2 when SME is
|
||||
// present.
|
||||
AddRegSetTLS(m_opt_regsets.AllSet(eRegsetMaskSSVE));
|
||||
if (m_opt_regsets.AllSet(eRegsetMaskTLS)) {
|
||||
// The TLS set always contains tpidr but only has tpidr2 when SME is
|
||||
// present.
|
||||
AddRegSetTLS(m_opt_regsets.AllSet(eRegsetMaskSSVE));
|
||||
}
|
||||
|
||||
if (m_opt_regsets.AnySet(eRegsetMaskSSVE))
|
||||
AddRegSetSME(m_opt_regsets.AnySet(eRegsetMaskZT));
|
||||
|
32
lldb/test/Shell/Process/elf-core/aarch64-no-NT_ARM_TLS.yaml
Normal file
32
lldb/test/Shell/Process/elf-core/aarch64-no-NT_ARM_TLS.yaml
Normal file
@ -0,0 +1,32 @@
|
||||
## Check that lldb does not crash if a core file does not contain an NT_ARM_TLS
|
||||
## note while there are notes for other dynamic register sets.
|
||||
|
||||
# RUN: yaml2obj %s -o %t
|
||||
# RUN: %lldb -c %t -o "re r -a" | FileCheck %s
|
||||
|
||||
# CHECK: Pointer Authentication Registers:
|
||||
# CHECK-NEXT: data_mask =
|
||||
# CHECK-NEXT: code_mask =
|
||||
# CHECK-NOT: Thread Local Storage Registers:
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_CORE
|
||||
Machine: EM_AARCH64
|
||||
ProgramHeaders:
|
||||
- Type: PT_NOTE
|
||||
FirstSec: .note
|
||||
LastSec: .note
|
||||
Sections:
|
||||
- Name: .note
|
||||
Type: SHT_NOTE
|
||||
Notes:
|
||||
- Name: CORE
|
||||
Desc: 0b00000000000000000000000b00000000000000000000000000000000000000389300001b930000389300001b930000000000000000000000000000000000000000000000000000e02e0000000000000000000000000000119100000000000000000000000000005ee100000000000000000000000000002f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400162e2ffff00005801400000000000200162e2ffff0000240140000000000000000000000000000100000000000000
|
||||
Type: NT_PRSTATUS
|
||||
- Name: LINUX
|
||||
Desc: 0000000000007f000000000000007f00
|
||||
Type: NT_ARM_PAC_MASK
|
||||
...
|
1
lldb/test/Shell/Process/elf-core/lit.local.cfg
Normal file
1
lldb/test/Shell/Process/elf-core/lit.local.cfg
Normal file
@ -0,0 +1 @@
|
||||
config.suffixes = ['.yaml']
|
Loading…
x
Reference in New Issue
Block a user