# template <typename T>
# class foo {};
#
# template <template <typename T> class CT = foo>
# class baz {};
#
# template <typename T = char, int i = 3, bool b = true,
# typename c = foo<T>>
# class bar {};
#
# int main() {
# bar<> br;
# baz<> bz;
# return 0;
# }
#
# YAML generated on Linux using obj2yaml on the above program
# compiled with Clang.
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_AARCH64
SectionHeaderStringTable: .strtab
Sections:
- Name: .text
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
AddressAlign: 0x4
Content: FF4300D1E0031F2AFF0F00B9FF430091C0035FD6
- Name: .linker-options
Type: SHT_LLVM_LINKER_OPTIONS
Flags: [ SHF_EXCLUDE ]
AddressAlign: 0x1
Content: ''
- Name: .debug_abbrev
Type: SHT_PROGBITS
AddressAlign: 0x1
Content: 011101252513050325721710171B25111B120673170000022E01111B1206401803253A0B3B0B49133F190000033400021803253A0B3B0B4913000004240003253E0B0B0B0000050201360B03250B0B3A0B3B0B0000062F00491303251E190000073000491303251E191C0D0000083000491303251E191C0F000009020003253C1900000A8682010003251E19904225000000
- Name: .debug_info
Type: SHT_PROGBITS
AddressAlign: 0x1
Content: 7F00000005000108000000000100210001000000000000000002001400000000000000020014000000016F03000B490000000302910B05000C4D0000000302910A0E000D78000000000404050405050D010009066E000000070749000000080308720000000A0106760000000C000406080104090201090B0505110100050A0F100000
- Name: .debug_str_offsets
Type: SHT_PROGBITS
AddressAlign: 0x1
Content: 4C00000005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- Name: .comment
Type: SHT_PROGBITS
Flags: [ SHF_MERGE, SHF_STRINGS ]
AddressAlign: 0x1
EntSize: 0x1
Content: 00636C616E672076657273696F6E2031362E302E30202868747470733A2F2F6769746875622E636F6D2F6C6C766D2F6C6C766D2D70726F6A65637420343764323862376138323638653337616130646537366238353966343530386533646261633663652900
- Name: .note.GNU-stack
Type: SHT_PROGBITS
AddressAlign: 0x1
- Name: .eh_frame
Type: SHT_PROGBITS
Flags: [ SHF_ALLOC ]
AddressAlign: 0x8
Content: 1000000000000000017A5200017C1E011B0C1F001800000018000000000000001400000000440E104C0E000000000000
- Name: .debug_line
Type: SHT_PROGBITS
AddressAlign: 0x1
Content: 580000000500080037000000010101FB0E0D00010101010000000100000101011F010000000003011F020F051E01000000000019537E33C1D1006B79E3D1C33D6EE6A304000009020000000000000000030A0105050ABD0208000101
- Name: .debug_line_str
Type: SHT_PROGBITS
Flags: [ SHF_MERGE, SHF_STRINGS ]
AddressAlign: 0x1
EntSize: 0x1
Content: 2F686F6D652F6761726465690064656661756C74732E63707000
- Name: .rela.debug_info
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
Link: .symtab
AddressAlign: 0x8
Info: .debug_info
Relocations:
- Offset: 0x8
Symbol: .debug_abbrev
Type: R_AARCH64_ABS32
- Offset: 0x11
Symbol: .debug_str_offsets
Type: R_AARCH64_ABS32
Addend: 8
- Offset: 0x15
Symbol: .debug_line
Type: R_AARCH64_ABS32
- Offset: 0x1F
Symbol: .debug_addr
Type: R_AARCH64_ABS32
Addend: 8
- Name: .rela.debug_str_offsets
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
Link: .symtab
AddressAlign: 0x8
Info: .debug_str_offsets
Relocations:
- Offset: 0x8
Symbol: .debug_str
Type: R_AARCH64_ABS32
- Offset: 0xC
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 101
- Offset: 0x10
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 114
- Offset: 0x14
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 127
- Offset: 0x18
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 132
- Offset: 0x1C
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 136
- Offset: 0x20
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 139
- Offset: 0x24
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 144
- Offset: 0x28
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 146
- Offset: 0x2C
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 148
- Offset: 0x30
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 153
- Offset: 0x34
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 155
- Offset: 0x38
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 165
- Offset: 0x3C
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 167
- Offset: 0x40
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 198
- Offset: 0x44
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 201
- Offset: 0x48
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 204
- Offset: 0x4C
Symbol: .debug_str
Type: R_AARCH64_ABS32
Addend: 208
- Name: .rela.debug_addr
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
Link: .symtab
AddressAlign: 0x8
Info: .debug_addr
Relocations:
- Offset: 0x8
Symbol: .text
Type: R_AARCH64_ABS64
- Name: .rela.eh_frame
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
Link: .symtab
AddressAlign: 0x8
Info: .eh_frame
Relocations:
- Offset: 0x1C
Symbol: .text
Type: R_AARCH64_PREL32
- Name: .rela.debug_line
Type: SHT_RELA
Flags: [ SHF_INFO_LINK ]
Link: .symtab
AddressAlign: 0x8
Info: .debug_line
Relocations:
- Offset: 0x22
Symbol: .debug_line_str
Type: R_AARCH64_ABS32
- Offset: 0x2E
Symbol: .debug_line_str
Type: R_AARCH64_ABS32
Addend: 13
- Offset: 0x48
Symbol: .text
Type: R_AARCH64_ABS64
- Name: .llvm_addrsig
Type: SHT_LLVM_ADDRSIG
Flags: [ SHF_EXCLUDE ]
Link: .symtab
AddressAlign: 0x1
Offset: 0x818
Symbols: [ ]
- Type: SectionHeaderTable
Sections:
- Name: .strtab
- Name: .text
- Name: .linker-options
- Name: .debug_abbrev
- Name: .debug_info
- Name: .rela.debug_info
- Name: .debug_str_offsets
- Name: .rela.debug_str_offsets
- Name: .debug_str
- Name: .debug_addr
- Name: .rela.debug_addr
- Name: .comment
- Name: .note.GNU-stack
- Name: .eh_frame
- Name: .rela.eh_frame
- Name: .debug_line
- Name: .rela.debug_line
- Name: .debug_line_str
- Name: .llvm_addrsig
- Name: .symtab
Symbols:
- Name: defaults.cpp
Type: STT_FILE
Index: SHN_ABS
- Name: .text
Type: STT_SECTION
Section: .text
- Name: '$x.0'
Section: .text
- Name: .debug_abbrev
Type: STT_SECTION
Section: .debug_abbrev
- Name: '$d.1'
Section: .debug_abbrev
- Name: '$d.2'
Section: .debug_info
- Name: .debug_str_offsets
Type: STT_SECTION
Section: .debug_str_offsets
- Name: '$d.3'
Section: .debug_str_offsets
- Name: .debug_str
Type: STT_SECTION
Section: .debug_str
- Name: '$d.4'
Section: .debug_str
- Name: .debug_addr
Type: STT_SECTION
Section: .debug_addr
- Name: '$d.5'
Section: .debug_addr
- Name: '$d.6'
Section: .comment
- Name: '$d.7'
Section: .eh_frame
- Name: .debug_line
Type: STT_SECTION
Section: .debug_line
- Name: '$d.8'
Section: .debug_line
- Name: .debug_line_str
Type: STT_SECTION
Section: .debug_line_str
- Name: '$d.9'
Section: .debug_line_str
- Name: main
Type: STT_FUNC
Section: .text
Binding: STB_GLOBAL
Size: 0x14
DWARF:
debug_str:
- 'clang version 16.0.0 (https://github.com/llvm/llvm-project 47d28b7a8268e37aa0de76b859f4508e3dbac6ce)'
- defaults.cpp
- '/home/gardei'
- main
- int
- br
- char
- T
- i
- bool
- b
- 'foo<char>'
- c
- 'bar<char, 3, true, foo<char> >'
- bz
- CT
- foo
- 'baz<foo>'
debug_addr:
- Length: 0xC
Version: 0x5
AddressSize: 0x8
Entries:
- {}
...