[llvm-dwarfdump] pretty-print DW_AT_call_origin reference (#71693)
This commit is contained in:
committed by
GitHub
parent
87081f1c18
commit
fbc652061e
@@ -190,7 +190,8 @@ static void dumpAttribute(raw_ostream &OS, const DWARFDie &Die,
|
||||
// We have dumped the attribute raw value. For some attributes
|
||||
// having both the raw value and the pretty-printed value is
|
||||
// interesting. These attributes are handled below.
|
||||
if (Attr == DW_AT_specification || Attr == DW_AT_abstract_origin) {
|
||||
if (Attr == DW_AT_specification || Attr == DW_AT_abstract_origin ||
|
||||
Attr == DW_AT_call_origin) {
|
||||
if (const char *Name =
|
||||
Die.getAttributeValueAsReferencedDie(FormValue).getName(
|
||||
DINameKind::LinkageName))
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
# RUN: yaml2obj %s | llvm-dwarfdump - | FileCheck %s
|
||||
|
||||
## Check the name (preferring linkage name) of the DW_AT_call_origin DIE
|
||||
## reference is printed after the address.
|
||||
|
||||
# CHECK: DW_TAG_call_site
|
||||
# CHECK-NEXT: DW_AT_call_origin (0x{{[0-9a-f]+}} "_Z2f2v")
|
||||
|
||||
# CHECK: DW_TAG_call_site
|
||||
# CHECK-NEXT: DW_AT_call_origin (0x{{[0-9a-f]+}} "f1")
|
||||
|
||||
--- !ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_EXEC
|
||||
Machine: EM_X86_64
|
||||
DWARF:
|
||||
debug_str:
|
||||
- "_Z2f2v"
|
||||
- "f2"
|
||||
- "f1"
|
||||
|
||||
debug_abbrev:
|
||||
- Table:
|
||||
- Code: 0x0000000000000001
|
||||
Tag: DW_TAG_compile_unit
|
||||
Children: DW_CHILDREN_yes
|
||||
Attributes:
|
||||
- Attribute: DW_AT_low_pc
|
||||
Form: DW_FORM_addr
|
||||
- Code: 0x0000000000000002
|
||||
Tag: DW_TAG_subprogram
|
||||
Children: DW_CHILDREN_yes
|
||||
Attributes:
|
||||
- Attribute: DW_AT_name
|
||||
Form: DW_FORM_strp
|
||||
- Attribute: DW_AT_low_pc
|
||||
Form: DW_FORM_addr
|
||||
- Attribute: DW_AT_high_pc
|
||||
Form: DW_FORM_addr
|
||||
- Code: 0x0000000000000003
|
||||
Tag: DW_TAG_call_site
|
||||
Children: DW_CHILDREN_no
|
||||
Attributes:
|
||||
- Attribute: DW_AT_call_origin
|
||||
Form: DW_FORM_ref4
|
||||
- Code: 0x0000000000000004
|
||||
Tag: DW_TAG_subprogram
|
||||
Children: DW_CHILDREN_no
|
||||
Attributes:
|
||||
- Attribute: DW_AT_linkage_name
|
||||
Form: DW_FORM_strp
|
||||
- Attribute: DW_AT_name
|
||||
Form: DW_FORM_strp
|
||||
- Attribute: DW_AT_declaration
|
||||
Form: DW_FORM_flag_present
|
||||
debug_info:
|
||||
- Length: 0x3b
|
||||
Version: 5
|
||||
UnitType: 0x01 # DW_TU_compile
|
||||
AbbrOffset: 0x0000000000000000
|
||||
AddrSize: 8
|
||||
Entries:
|
||||
- AbbrCode: 0x00000001 # start compile unit
|
||||
Values: #
|
||||
- Value: 0x0000000000000000 #
|
||||
- AbbrCode: 0x00000002 ## start f1
|
||||
Values: ##
|
||||
- Value: 0x000000000000000a ##
|
||||
- Value: 0x0000000000001000 ##
|
||||
- Value: 0x0000000000002000 ##
|
||||
- AbbrCode: 0x00000003 ### call site
|
||||
Values: ###
|
||||
- Value: 0x0000000000000035 ### (f2)
|
||||
- AbbrCode: 0x00000003 ### call site
|
||||
Values: ###
|
||||
- Value: 0x0000000000000015 ### (f1)
|
||||
- AbbrCode: 0x00000000 ## end f1
|
||||
Values: [] #
|
||||
- AbbrCode: 0x00000004 ## f2
|
||||
Values: ##
|
||||
- Value: 0x0000000000000000 ##
|
||||
- Value: 0x0000000000000007 ##
|
||||
- AbbrCode: 0x00000000 # end compile unit
|
||||
Values: []
|
||||
...
|
||||
Reference in New Issue
Block a user