| # Test for range list that contains a "base address selection" entry. |
| # When the start address is the max address (eg. UINT64_MAX), it signals |
| # a special kind of entry where the end address signifies the new base |
| # address. |
| |
| # RUN: %yaml2obj %s -o %t.obj |
| # RUN: %bloaty %t.obj --debug-file %t.dwo --raw-map --domain=vm | %FileCheck %s |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Entry: 0x1040 |
| ProgramHeaders: |
| - Type: PT_LOAD |
| Flags: [ PF_X, PF_R ] |
| FirstSec: .text |
| LastSec: .text |
| VAddr: 0x1000 |
| Align: 0x1000 |
| Sections: |
| - Name: .note.gnu.build-id |
| Type: SHT_NOTE |
| Notes: |
| - Name: GNU |
| Desc: 6CF422D909772A0FB5400518A689D9F15F14BF57 |
| Type: 0x3 # NT_GNU_BUILD_ID |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| Address: 0x1000 |
| AddressAlign: 0x10 |
| Content: 31ED4989D15E4889E24883E4F050544C8D053A010000488D0DD3000000488D3DC1000000FF15762F0000F40F1F440000488D3DB12F0000488D05AA2F00004839F87415488B054E2F00004885C07409FFE00F1F8000000000C30F1F8000000000488D3D812F0000488D357A2F00004829FE4889F048C1EE3F48C1F8034801C648D1FE7414488B05252F00004885C07408FFE0660F1F440000C30F1F8000000000803D412F000000752F5548833D062F0000004889E5740C488B3D222F0000E82DFFFFFFE868FFFFFFC605192F0000015DC30F1F8000000000C30F1F8000000000E97BFFFFFF554889E5B8010000005DC341574C8D3DDF2C000041564989D641554989F541544189FC55488D2DD02C0000534C29FD4883EC08E8A3FEFFFF48C1FD03741B31DB0F1F004C89F24C89EE4489E741FF14DF4883C3014839DD75EA4883C4085B5D415C415D415E415FC30F1F00C3 |
| ... |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Entry: 0x1040 |
| Sections: |
| - Name: .note.gnu.build-id |
| Type: SHT_NOTE |
| Notes: |
| - Name: GNU |
| Desc: 6CF422D909772A0FB5400518A689D9F15F14BF57 |
| Type: 0x3 # NT_GNU_BUILD_ID |
| DWARF: |
| debug_str: |
| - test.c |
| debug_abbrev: |
| - ID: 0 |
| Table: |
| - Code: 0x1 |
| Tag: DW_TAG_compile_unit |
| Children: DW_CHILDREN_yes |
| Attributes: |
| - Attribute: DW_AT_name |
| Form: DW_FORM_strp |
| - Attribute: DW_AT_ranges |
| Form: DW_FORM_sec_offset |
| - Attribute: DW_AT_low_pc |
| Form: DW_FORM_addr |
| debug_ranges: |
| - Offset: 0x0 |
| AddrSize: 0x8 |
| Entries: |
| # This is the "base address selection" entry! |
| - LowOffset: 0xffffffffffffffff # UINT64_MAX |
| HighOffset: 0x1020 |
| # Now these addresses are relative to 0x1020 |
| - LowOffset: 0x22 |
| HighOffset: 0x27 |
| debug_info: |
| - Version: 4 |
| AbbrevTableID: 0 |
| AbbrOffset: 0x0 |
| AddrSize: 8 |
| Entries: |
| - AbbrCode: 0x1 |
| Values: |
| - Value: 0x0 |
| - Value: 0x0 |
| - Value: 0x0 |
| - AbbrCode: 0x0 |
| ... |
| |
| # CHECK: VM MAP: |
| # CHECK: 0000-1000 4096 [-- Nothing mapped --] |
| # CHECK: 1000-1042 66 [section .text] |
| # CHECK: 1042-1047 5 test.c |
| # CHECK: 1047-1151 266 [section .text] |