1## a) Test that yaml2macho is able to emit the .debug_aranges section and obj2yaml 2## is able to convert it back. 3 4# RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s 5 6--- !mach-o 7FileHeader: 8 magic: 0xFEEDFACF 9 cputype: 0x01000007 10 cpusubtype: 0x00000003 11 filetype: 0x0000000A 12 ncmds: 7 13 sizeofcmds: 1848 14 flags: 0x00000000 15 reserved: 0x00000000 16LoadCommands: 17 - cmd: LC_UUID 18 cmdsize: 24 19 uuid: B4D48511-37F4-3ED4-AFA7-1683DCE69AC4 20 - cmd: LC_SYMTAB 21 cmdsize: 24 22 symoff: 4096 23 nsyms: 2 24 stroff: 4128 25 strsize: 28 26 - cmd: LC_SEGMENT_64 27 cmdsize: 72 28 segname: __PAGEZERO 29 vmaddr: 0 30 vmsize: 4294967296 31 fileoff: 0 32 filesize: 0 33 maxprot: 0 34 initprot: 0 35 nsects: 0 36 flags: 0 37 - cmd: LC_SEGMENT_64 38 cmdsize: 472 39 segname: __TEXT 40 vmaddr: 4294967296 41 vmsize: 4096 42 fileoff: 0 43 filesize: 0 44 maxprot: 7 45 initprot: 5 46 nsects: 5 47 flags: 0 48 Sections: 49 - sectname: __text 50 segname: __TEXT 51 addr: 0x0000000100000F50 52 size: 52 53 offset: 0x00000000 54 align: 4 55 reloff: 0x00000000 56 nreloc: 0 57 flags: 0x80000400 58 reserved1: 0x00000000 59 reserved2: 0x00000000 60 reserved3: 0x00000000 61 - sectname: __stubs 62 segname: __TEXT 63 addr: 0x0000000100000F84 64 size: 6 65 offset: 0x00000000 66 align: 1 67 reloff: 0x00000000 68 nreloc: 0 69 flags: 0x80000408 70 reserved1: 0x00000000 71 reserved2: 0x00000006 72 reserved3: 0x00000000 73 - sectname: __stub_helper 74 segname: __TEXT 75 addr: 0x0000000100000F8C 76 size: 26 77 offset: 0x00000000 78 align: 2 79 reloff: 0x00000000 80 nreloc: 0 81 flags: 0x80000400 82 reserved1: 0x00000000 83 reserved2: 0x00000000 84 reserved3: 0x00000000 85 - sectname: __cstring 86 segname: __TEXT 87 addr: 0x0000000100000FA6 88 size: 14 89 offset: 0x00000000 90 align: 0 91 reloff: 0x00000000 92 nreloc: 0 93 flags: 0x00000002 94 reserved1: 0x00000000 95 reserved2: 0x00000000 96 reserved3: 0x00000000 97 - sectname: __unwind_info 98 segname: __TEXT 99 addr: 0x0000000100000FB4 100 size: 72 101 offset: 0x00000000 102 align: 2 103 reloff: 0x00000000 104 nreloc: 0 105 flags: 0x00000000 106 reserved1: 0x00000000 107 reserved2: 0x00000000 108 reserved3: 0x00000000 109 - cmd: LC_SEGMENT_64 110 cmdsize: 232 111 segname: __DATA 112 vmaddr: 4294971392 113 vmsize: 4096 114 fileoff: 0 115 filesize: 0 116 maxprot: 7 117 initprot: 3 118 nsects: 2 119 flags: 0 120 Sections: 121 - sectname: __nl_symbol_ptr 122 segname: __DATA 123 addr: 0x0000000100001000 124 size: 16 125 offset: 0x00000000 126 align: 3 127 reloff: 0x00000000 128 nreloc: 0 129 flags: 0x00000006 130 reserved1: 0x00000001 131 reserved2: 0x00000000 132 reserved3: 0x00000000 133 - sectname: __la_symbol_ptr 134 segname: __DATA 135 addr: 0x0000000100001010 136 size: 8 137 offset: 0x00000000 138 align: 3 139 reloff: 0x00000000 140 nreloc: 0 141 flags: 0x00000007 142 reserved1: 0x00000003 143 reserved2: 0x00000000 144 reserved3: 0x00000000 145 - cmd: LC_SEGMENT_64 146 cmdsize: 72 147 segname: __LINKEDIT 148 vmaddr: 4294975488 149 vmsize: 4096 150 fileoff: 4096 151 filesize: 60 152 maxprot: 7 153 initprot: 1 154 nsects: 0 155 flags: 0 156 - cmd: LC_SEGMENT_64 157 cmdsize: 952 158 segname: __DWARF 159 vmaddr: 4294979584 160 vmsize: 4096 161 fileoff: 8192 162 filesize: 764 163 maxprot: 7 164 initprot: 3 165 nsects: 11 166 flags: 0 167 Sections: 168 - sectname: __debug_line 169 segname: __DWARF 170 addr: 0x0000000100003000 171 size: 69 172 offset: 0x00002000 173 align: 0 174 reloff: 0x00000000 175 nreloc: 0 176 flags: 0x00000000 177 reserved1: 0x00000000 178 reserved2: 0x00000000 179 reserved3: 0x00000000 180 - sectname: __debug_pubnames 181 segname: __DWARF 182 addr: 0x0000000100003045 183 size: 27 184 offset: 0x00002045 185 align: 0 186 reloff: 0x00000000 187 nreloc: 0 188 flags: 0x00000000 189 reserved1: 0x00000000 190 reserved2: 0x00000000 191 reserved3: 0x00000000 192 - sectname: __debug_pubtypes 193 segname: __DWARF 194 addr: 0x0000000100003060 195 size: 35 196 offset: 0x00002060 197 align: 0 198 reloff: 0x00000000 199 nreloc: 0 200 flags: 0x00000000 201 reserved1: 0x00000000 202 reserved2: 0x00000000 203 reserved3: 0x00000000 204 - sectname: __debug_aranges 205 segname: __DWARF 206 addr: 0x0000000100003083 207 size: 48 208 offset: 0x00002083 209 align: 0 210 reloff: 0x00000000 211 nreloc: 0 212 flags: 0x00000000 213 reserved1: 0x00000000 214 reserved2: 0x00000000 215 reserved3: 0x00000000 216 - sectname: __debug_info 217 segname: __DWARF 218 addr: 0x00000001000030B3 219 size: 121 220 offset: 0x000020B3 221 align: 0 222 reloff: 0x00000000 223 nreloc: 0 224 flags: 0x00000000 225 reserved1: 0x00000000 226 reserved2: 0x00000000 227 reserved3: 0x00000000 228 - sectname: __debug_abbrev 229 segname: __DWARF 230 addr: 0x000000010000312C 231 size: 76 232 offset: 0x0000212C 233 align: 0 234 reloff: 0x00000000 235 nreloc: 0 236 flags: 0x00000000 237 reserved1: 0x00000000 238 reserved2: 0x00000000 239 reserved3: 0x00000000 240 - sectname: __debug_str 241 segname: __DWARF 242 addr: 0x0000000100003178 243 size: 142 244 offset: 0x00002178 245 align: 0 246 reloff: 0x00000000 247 nreloc: 0 248 flags: 0x00000000 249 reserved1: 0x00000000 250 reserved2: 0x00000000 251 reserved3: 0x00000000 252 - sectname: __apple_names 253 segname: __DWARF 254 addr: 0x0000000100003206 255 size: 60 256 offset: 0x00002206 257 align: 0 258 reloff: 0x00000000 259 nreloc: 0 260 flags: 0x00000000 261 reserved1: 0x00000000 262 reserved2: 0x00000000 263 reserved3: 0x00000000 264 - sectname: __apple_namespac 265 segname: __DWARF 266 addr: 0x0000000100003242 267 size: 36 268 offset: 0x00002242 269 align: 0 270 reloff: 0x00000000 271 nreloc: 0 272 flags: 0x00000000 273 reserved1: 0x00000000 274 reserved2: 0x00000000 275 reserved3: 0x00000000 276 - sectname: __apple_types 277 segname: __DWARF 278 addr: 0x0000000100003266 279 size: 114 280 offset: 0x00002266 281 align: 0 282 reloff: 0x00000000 283 nreloc: 0 284 flags: 0x00000000 285 reserved1: 0x00000000 286 reserved2: 0x00000000 287 reserved3: 0x00000000 288 - sectname: __apple_objc 289 segname: __DWARF 290 addr: 0x00000001000032D8 291 size: 36 292 offset: 0x000022D8 293 align: 0 294 reloff: 0x00000000 295 nreloc: 0 296 flags: 0x00000000 297 reserved1: 0x00000000 298 reserved2: 0x00000000 299 reserved3: 0x00000000 300LinkEditData: 301 NameList: 302 - n_strx: 2 303 n_type: 0x0F 304 n_sect: 1 305 n_desc: 16 306 n_value: 4294967296 307 - n_strx: 22 308 n_type: 0x0F 309 n_sect: 1 310 n_desc: 0 311 n_value: 4294971216 312 StringTable: 313 - '' 314 - '' 315 - __mh_execute_header 316 - _main 317DWARF: 318 debug_aranges: 319 - Length: 44 320 Version: 2 321 CuOffset: 0 322 AddressSize: 8 323 SegmentSelectorSize: 0 324 Descriptors: 325 - Address: 0x0000000100000F50 326 Length: 52 327... 328 329# CHECK: debug_aranges: 330# CHECK-NEXT: - Length: 0x2C 331# CHECK-NEXT: Version: 2 332# CHECK-NEXT: CuOffset: 0x0 333# CHECK-NEXT: AddressSize: 0x8 334# CHECK-NEXT: Descriptors: 335# CHECK-NEXT: - Address: 0x100000F50 336# CHECK-NEXT: Length: 0x34 337 338## b) Test that if the "debug_aranges" entry is empty, yaml2macho will only emit the 339## section header. 340 341# RUN: yaml2obj --docnum=2 %s -o %t2.o 342# RUN: llvm-readobj --sections --section-data %t2.o | FileCheck %s --check-prefix=EMPTY-SECTION 343 344# EMPTY-SECTION: Index: 0 345# EMPTY-SECTION-NEXT: Name: __debug_aranges (5F 5F 64 65 62 75 67 5F 61 72 61 6E 67 65 73 00) 346# EMPTY-SECTION-NEXT: Segment: __DWARF (5F 5F 44 57 41 52 46 00 00 00 00 00 00 00 00 00) 347# EMPTY-SECTION-NEXT: Address: 0x0 348# EMPTY-SECTION-NEXT: Size: 0xC 349# EMPTY-SECTION-NEXT: Offset: 528 350# EMPTY-SECTION-NEXT: Alignment: 0 351# EMPTY-SECTION-NEXT: RelocationOffset: 0x0 352# EMPTY-SECTION-NEXT: RelocationCount: 0 353# EMPTY-SECTION-NEXT: Type: Regular (0x0) 354# EMPTY-SECTION-NEXT: Attributes [ (0x0) 355# EMPTY-SECTION-NEXT: ] 356# EMPTY-SECTION-NEXT: Reserved1: 0x0 357# EMPTY-SECTION-NEXT: Reserved2: 0x0 358# EMPTY-SECTION-NEXT: Reserved3: 0x0 359# EMPTY-SECTION-NEXT: SectionData ( 360# EMPTY-SECTION-NEXT: ) 361 362--- !mach-o 363FileHeader: 364 magic: 0xFEEDFACF 365 cputype: 0x01000007 366 cpusubtype: 0x00000003 367 filetype: 0x0000000A 368 ncmds: 1 369 sizeofcmds: 232 370 flags: 0x00000000 371 reserved: 0x00000000 372LoadCommands: 373 - cmd: LC_SEGMENT_64 374 cmdsize: 152 375 segname: __DWARF 376 vmaddr: 0x00 377 vmsize: 0x00 378 fileoff: 0x00 379 filesize: 0x00 380 maxprot: 0 381 initprot: 0 382 nsects: 1 383 flags: 0 384 Sections: 385 - sectname: __debug_aranges 386 segname: __DWARF 387 addr: 0x00 388 size: 12 389 offset: 528 390 align: 0 391 reloff: 0x00000000 392 nreloc: 0 393 flags: 0x00000000 394 reserved1: 0x00000000 395 reserved2: 0x00000000 396 reserved3: 0x00000000 397DWARF: 398 debug_aranges: [] 399