Skip to content

Commit

Permalink
[lldb][AArch64] Do not crash if NT_ARM_TLS is missing
Browse files Browse the repository at this point in the history
[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.
  • Loading branch information
igorkudrin committed Aug 29, 2024
1 parent 6a74b0e commit e588c3c
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -254,9 +254,10 @@ 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));
Expand Down
34 changes: 34 additions & 0 deletions lldb/test/Shell/Process/elf-core/aarch64-no-NT_ARM_TLS.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# REQUIRES: aarch64

## 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 change: 1 addition & 0 deletions lldb/test/Shell/Process/elf-core/lit.local.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
config.suffixes = ['.yaml']

0 comments on commit e588c3c

Please sign in to comment.