base-addr-selection.test 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # Test for range list that contains a "base address selection" entry.
  2. # When the start address is the max address (eg. UINT64_MAX), it signals
  3. # a special kind of entry where the end address signifies the new base
  4. # address.
  5. # RUN: %yaml2obj %s --docnum=1 -o %t.obj
  6. # RUN: %yaml2obj %s --docnum=2 -o %t.dwo
  7. # RUN: %bloaty %t.obj --debug-file %t.dwo -d compileunits --raw-map --domain=vm | %FileCheck %s
  8. --- !ELF
  9. FileHeader:
  10. Class: ELFCLASS64
  11. Data: ELFDATA2LSB
  12. Type: ET_DYN
  13. Machine: EM_X86_64
  14. Entry: 0x1040
  15. ProgramHeaders:
  16. - Type: PT_LOAD
  17. Flags: [ PF_X, PF_R ]
  18. FirstSec: .text
  19. LastSec: .text
  20. VAddr: 0x1000
  21. Align: 0x1000
  22. Sections:
  23. - Name: .note.gnu.build-id
  24. Type: SHT_NOTE
  25. Notes:
  26. - Name: GNU
  27. Desc: 6CF422D909772A0FB5400518A689D9F15F14BF57
  28. Type: 0x3 # NT_GNU_BUILD_ID
  29. - Name: .text
  30. Type: SHT_PROGBITS
  31. Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
  32. Address: 0x1000
  33. AddressAlign: 0x10
  34. Content: 31ED4989D15E4889E24883E4F050544C8D053A010000488D0DD3000000488D3DC1000000FF15762F0000F40F1F440000488D3DB12F0000488D05AA2F00004839F87415488B054E2F00004885C07409FFE00F1F8000000000C30F1F8000000000488D3D812F0000488D357A2F00004829FE4889F048C1EE3F48C1F8034801C648D1FE7414488B05252F00004885C07408FFE0660F1F440000C30F1F8000000000803D412F000000752F5548833D062F0000004889E5740C488B3D222F0000E82DFFFFFFE868FFFFFFC605192F0000015DC30F1F8000000000C30F1F8000000000E97BFFFFFF554889E5B8010000005DC341574C8D3DDF2C000041564989D641554989F541544189FC55488D2DD02C0000534C29FD4883EC08E8A3FEFFFF48C1FD03741B31DB0F1F004C89F24C89EE4489E741FF14DF4883C3014839DD75EA4883C4085B5D415C415D415E415FC30F1F00C3
  35. ...
  36. --- !ELF
  37. FileHeader:
  38. Class: ELFCLASS64
  39. Data: ELFDATA2LSB
  40. Type: ET_DYN
  41. Machine: EM_X86_64
  42. Entry: 0x1040
  43. Sections:
  44. - Name: .note.gnu.build-id
  45. Type: SHT_NOTE
  46. Notes:
  47. - Name: GNU
  48. Desc: 6CF422D909772A0FB5400518A689D9F15F14BF57
  49. Type: 0x3 # NT_GNU_BUILD_ID
  50. DWARF:
  51. debug_str:
  52. - test.c
  53. debug_abbrev:
  54. - ID: 0
  55. Table:
  56. - Code: 0x1
  57. Tag: DW_TAG_compile_unit
  58. Children: DW_CHILDREN_yes
  59. Attributes:
  60. - Attribute: DW_AT_name
  61. Form: DW_FORM_strp
  62. - Attribute: DW_AT_ranges
  63. Form: DW_FORM_sec_offset
  64. - Attribute: DW_AT_low_pc
  65. Form: DW_FORM_addr
  66. debug_ranges:
  67. - Offset: 0x0
  68. AddrSize: 0x8
  69. Entries:
  70. # This is the "base address selection" entry!
  71. - LowOffset: 0xffffffffffffffff # UINT64_MAX
  72. HighOffset: 0x1020
  73. # Now these addresses are relative to 0x1020
  74. - LowOffset: 0x22
  75. HighOffset: 0x27
  76. debug_info:
  77. - Version: 4
  78. AbbrevTableID: 0
  79. AbbrOffset: 0x0
  80. AddrSize: 8
  81. Entries:
  82. - AbbrCode: 0x1
  83. Values:
  84. - Value: 0x0
  85. - Value: 0x0
  86. - Value: 0x0
  87. - AbbrCode: 0x0
  88. ...
  89. # CHECK: VM MAP:
  90. # CHECK: 0000-1000 4096 [-- Nothing mapped --]
  91. # CHECK: 1000-1042 66 [section .text]
  92. # CHECK: 1042-1047 5 test.c
  93. # CHECK: 1047-1151 266 [section .text]