1## Test that yaml2obj emits .debug_addr section. 2 3## a) Generate and verify a little endian DWARF32 .debug_addr section in a 64-bit object file. 4 5# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2LSB %s -o %t1.dwarf32.le.o 6# RUN: llvm-readobj --sections --section-data %t1.dwarf32.le.o | \ 7# RUN: FileCheck %s -DSIZE=264 -DADDRALIGN=1 --check-prefixes=SHDR,DWARF32-LE 8 9# SHDR: Index: 1 10# SHDR-NEXT: Name: .debug_addr (1) 11# SHDR-NEXT: Type: SHT_PROGBITS (0x1) 12# SHDR-NEXT: Flags [ (0x0) 13# SHDR-NEXT: ] 14# SHDR-NEXT: Address: 0x0 15# SHDR-NEXT: Offset: 0x40 16# SHDR-NEXT: Size: [[SIZE]] 17# SHDR-NEXT: Link: 0 18# SHDR-NEXT: Info: 0 19# SHDR-NEXT: AddressAlignment: [[ADDRALIGN]] 20# SHDR-NEXT: EntrySize: 0 21# DWARF32-LE-NEXT: SectionData ( 22# DWARF32-LE-NEXT: 0000: 0C000000 05000400 34120000 78560000 23## | | | | | | 24## | | | | | +------- address (4-byte) 25## | | | | +------- address (4-byte) 26## | | | +- segment_selector_size (1-byte) 27## | | +- address_size (1-byte) 28## | +--- version (2-byte) 29## +------- 1) unit_length (4-byte) 30## 31# DWARF32-LE-NEXT: 0010: 14000000 05000800 21430000 00000000 32## | | | | | 33## | | | | +---------------- address (8-byte) 34## | | | +- segment_selector_size (1-byte) 35## | | +- address_size (1-byte) 36## | +--- version (2-byte) 37## +------- 2) unit_length (4-byte) 38## 39# DWARF32-LE-NEXT: 0020: 65870000 00000000 0C000000 05000004 40## | | | | | 41## | | | | +- segment_selector_size (1-byte) 42## | | | +- address_size (1-byte) 43## | | +--- version (2-byte) 44## | +------- 3) unit_length (4-byte) 45## +---------------- address (8-byte) 46## 47# DWARF32-LE-NEXT: 0030: 34120000 78560000 14000000 05000008 48## | | | | | | 49## | | | | | +- segment_selector_size (1-byte) 50## | | | | +- address_size (1-byte) 51## | | | +--- version (2-byte) 52## | | +------- 4) unit_length (4-byte) 53## | +------- segment (4-byte) 54## +------- segment (4-byte) 55## 56# DWARF32-LE-NEXT: 0040: 21430000 00000000 65870000 00000000 57## | | 58## | +---------------- segment (8-byte) 59## +---------------- segment (8-byte) 60## 61# DWARF32-LE-NEXT: 0050: 1C000000 05000404 34120000 78560000 62## | | | | | | 63## | | | | | +------- address (4-byte) 64## | | | | +------- segment (4-byte) 65## | | | +- segment_selector_size (4-byte) 66## | | +- address_size (4-byte) 67## | +--- version (2-byte) 68## +------- 5) unit_length (4-byte) 69## 70# DWARF32-LE-NEXT: 0060: 21430000 00000000 00000000 21430000 71## | | | | 72## | | | +------- address (4-byte) 73## | | +------- segment (4-byte) 74## | +------- address (4-byte) 75## +------- segment (4-byte) 76## 77# DWARF32-LE-NEXT: 0070: 34000000 05000808 34120000 00000000 78## | | | | | 79## | | | | +---------------- segment (8-byte) 80## | | | +- segment_size (1-byte) 81## | | +- address_size (1-byte) 82## | +--- version (2-byte) 83## +------- 6) unit_length (4-byte) 84## 85# DWARF32-LE-NEXT: 0080: 78560000 00000000 21430000 00000000 86## | | 87## | +---------------- segment (8-byte) 88## +---------------- address (8-byte) 89## 90# DWARF32-LE-NEXT: 0090: 00000000 00000000 00000000 00000000 91## | +---------------- segment (8-byte) 92## +---------------- address (8-byte) 93## 94# DWARF32-LE-NEXT: 00A0: 21430000 00000000 28000000 05000408 95## | | | | | 96## | | | | +- segment_size (1-byte) 97## | | | +- address_size (1-byte) 98## | | +--- version (2-byte) 99## | +------- 7) unit_length (4-byte) 100## +---------------- address (8-byte) 101## 102# DWARF32-LE-NEXT: 00B0: 34120000 00000000 78560000 21430000 103## | | | 104## | | +------- segment (8-byte) 105## | +------- address (4-byte) 106## +---------------- segment (8-byte) 107## 108# DWARF32-LE-NEXT: 00C0: 00000000 00000000 00000000 00000000 109## | | +---------------- segment (8-byte) 110## | +------- address (4-btye) 111## +------- higher 4-byte of segment 112## 113# DWARF32-LE-NEXT: 00D0: 21430000 28000000 05000804 34120000 114## | | | | | +------- segment (4-byte) 115## | | | | +- segment_size (1-byte) 116## | | | +- address_size (1-byte) 117## | | +--- version (2-byte) 118## | +------- 8) unit_length (4-byte) 119## +------- address (4-byte) 120## 121# DWARF32-LE-NEXT: 00E0: 78560000 00000000 21430000 00000000 122## | | | 123## | | +------- address (8-byte) 124## | +------- segment (4-byte) 125## +---------------- address (8-byte) 126## 127# DWARF32-LE-NEXT: 00F0: 00000000 00000000 21430000 00000000 128## | | | 129## | | +---------------- address (8-byte) 130## | +------- segment (4-byte) 131## +------- higher 4-byte of address 132## 133# DWARF32-LE-NEXT: 0100: 34120000 02000400 134## | | | | 135## | | | +- segment_size (1-byte) 136## | | +- address_size (1-byte) 137## | +--- version (2-byte) 138## +------- 9) unit_length (4-byte) 139# DWARF32-LE-NEXT: ) 140 141--- !ELF 142FileHeader: 143 Class: ELFCLASS64 144 Data: [[ENDIAN]] 145 Type: ET_EXEC 146DWARF: 147 debug_addr: 148 ## 1) Only address (4-byte) exists. 149 - Version: 5 150 AddressSize: 0x04 151 Entries: 152 - Address: 0x1234 153 - Address: 0x5678 154 ## 2) Only address (8-byte) exists (AddressSize is derived from FileHeader). 155 - Version: 5 156 Entries: 157 - Address: 0x4321 158 - Address: 0x8765 159 ## 3) Only segment (4-byte) exists. 160 - Version: 5 161 AddressSize: 0x00 162 SegmentSelectorSize: 0x04 163 Entries: 164 - Segment: 0x1234 165 - Segment: 0x5678 166 ## 4) Only segment (8-byte) exists. 167 - Version: 5 168 AddressSize: 0x00 169 SegmentSelectorSize: 0x08 170 Entries: 171 - Segment: 0x4321 172 - Segment: 0x8765 173 ## 5) Both address (4-byte) and segment (4-byte) exist. 174 - Version: 5 175 AddressSize: 0x04 176 SegmentSelectorSize: 0x04 177 Entries: 178 - Segment: 0x1234 179 Address: 0x5678 180 - Segment: 0x4321 181 ## Segment exists, while address takes the default value 0x00. 182 - Address: 0x4321 183 ## Address exists, while segment takes the default value 0x00. 184 ## 6) Both address (8-byte) and segment (8-byte) exist (AddressSize is derived from FileHeader). 185 - Version: 5 186 SegmentSelectorSize: 0x08 187 Entries: 188 - Segment: 0x1234 189 Address: 0x5678 190 - Segment: 0x4321 191 ## Segment exists, while address takes the default value 0x00. 192 - Address: 0x4321 193 ## Address exists, while segment takes the default value 0x00. 194 ## 7) Both address (4-byte) and segment (8-byte) exist. 195 - Version: 5 196 AddressSize: 0x04 197 SegmentSelectorSize: 0x08 198 Entries: 199 - Segment: 0x1234 200 Address: 0x5678 201 - Segment: 0x4321 202 ## Segment exists, while address takes the default value 0x00. 203 - Address: 0x4321 204 ## Address exists, while segment takes the default value 0x00. 205 ## 8) Both address (8-byte) and segment (4-byte) exist (AddressSize is derived from FileHeader). 206 - Version: 5 207 SegmentSelectorSize: 0x04 208 Entries: 209 - Segment: 0x1234 210 Address: 0x5678 211 - Segment: 0x4321 212 ## Segment exists, while address takes the default value 0x00. 213 - Address: 0x4321 214 ## Address exists, while segment takes the default value 0x00. 215 ## 9) Explicitly assign a value to 'Length'. 216 - Length: 0x1234 217 Version: 0x02 218 AddressSize: 0x04 219 SegmentSelectorSize: 0x00 220 Entries: [] 221 222## b) Generate and verify a big endian DWARF32 .debug_addr section. 223 224# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2MSB %s -o %t1.dwarf32.be.o 225# RUN: llvm-readobj --sections --section-data %t1.dwarf32.be.o | \ 226# RUN: FileCheck %s -DSIZE=264 -DADDRALIGN=1 --check-prefixes=SHDR,DWARF32-BE 227 228# DWARF32-BE-NEXT: SectionData ( 229# DWARF32-BE-NEXT: 0000: 0000000C 00050400 00001234 00005678 230## | | | | | | 231## | | | | | +------- address (4-byte) 232## | | | | +------- address (4-byte) 233## | | | +- segment_selector_size (1-byte) 234## | | +- address_size (1-byte) 235## | +--- version (2-byte) 236## +------- 1) unit_length (4-byte) 237## 238# DWARF32-BE-NEXT: 0010: 00000014 00050800 00000000 00004321 239## | | | | | 240## | | | | +---------------- address (8-byte) 241## | | | +- segment_selector_size (1-byte) 242## | | +- address_size (1-byte) 243## | +--- version (2-byte) 244## +------- 2) unit_length (4-byte) 245## 246# DWARF32-BE-NEXT: 0020: 00000000 00008765 0000000C 00050004 247## | | | | | 248## | | | | +- segment_selector_size (1-byte) 249## | | | +- address_size (1-byte) 250## | | +--- version (2-byte) 251## | +------- 3) unit_length (4-byte) 252## +---------------- address (8-byte) 253## 254# DWARF32-BE-NEXT: 0030: 00001234 00005678 00000014 00050008 255## | | | | | | 256## | | | | | +- segment_selector_size (1-byte) 257## | | | | +- address_size (1-byte) 258## | | | +--- version (2-byte) 259## | | +------- 4) unit_length (4-byte) 260## | +------- segment (4-byte) 261## +------- segment (4-byte) 262## 263# DWARF32-BE-NEXT: 0040: 00000000 00004321 00000000 00008765 264## | | 265## | +---------------- segment (8-byte) 266## +---------------- segment (8-byte) 267## 268# DWARF32-BE-NEXT: 0050: 0000001C 00050404 00001234 00005678 269## | | | | | | 270## | | | | | +------- address (4-byte) 271## | | | | +------- segment (4-byte) 272## | | | +- segment_selector_size (4-byte) 273## | | +- address_size (4-byte) 274## | +--- version (2-byte) 275## +------- 5) unit_length (4-byte) 276## 277# DWARF32-BE-NEXT: 0060: 00004321 00000000 00000000 00004321 278## | | | | 279## | | | +------- address (4-byte) 280## | | +------- segment (4-byte) 281## | +------- address (4-byte) 282## +------- segment (4-byte) 283## 284# DWARF32-BE-NEXT: 0070: 00000034 00050808 00000000 00001234 285## | | | | | 286## | | | | +---------------- segment (8-byte) 287## | | | +- segment_size (1-byte) 288## | | +- address_size (1-byte) 289## | +--- version (2-byte) 290## +------- 6) unit_length (4-byte) 291## 292# DWARF32-BE-NEXT: 0080: 00000000 00005678 00000000 00004321 293## | | 294## | +---------------- segment (8-byte) 295## +---------------- address (8-byte) 296## 297# DWARF32-BE-NEXT: 0090: 00000000 00000000 00000000 00000000 298## | | 299## | +---------------- segment (8-byte) 300## +---------------- address (8-byte) 301## 302# DWARF32-BE-NEXT: 00A0: 00000000 00004321 00000028 00050408 303## | | | | | 304## | | | | +- segment_size (1-byte) 305## | | | +- address_size (1-byte) 306## | | +--- version (2-byte) 307## | +------- 7) unit_length (4-byte) 308## +---------------- address (8-byte) 309## 310# DWARF32-BE-NEXT: 00B0: 00000000 00001234 00005678 00000000 311## | | | 312## | | +------- segment (8-byte) 313## | +------- address (4-byte) 314## +---------------- segment (8-byte) 315## 316# DWARF32-BE-NEXT: 00C0: 00004321 00000000 00000000 00000000 317## | | | 318## | | +---------------- segment (8-byte) 319## | +------- address (4-btye) 320## +------- lower 4-byte of segment 321## 322# DWARF32-BE-NEXT: 00D0: 00004321 00000028 00050804 00001234 323## | | | | | | 324## | | | | | +------- segment (4-byte) 325## | | | | +- segment_size (1-byte) 326## | | | +- address_size (1-byte) 327## | | +--- version (2-byte) 328## | +------- 8) unit_length (4-byte) 329## +------- address (4-byte) 330## 331# DWARF32-BE-NEXT: 00E0: 00000000 00005678 00004321 00000000 332## | | | 333## | | +------- address (8-byte) 334## | +------- segment (4-byte) 335## +---------------- address (8-byte) 336## 337# DWARF32-BE-NEXT: 00F0: 00000000 00000000 00000000 00004321 338## | | | 339## | | +---------------- address (8-byte) 340## | +------- segment (4-byte) 341## +------- lower 4-byte of address 342## 343# DWARF32-BE-NEXT: 0100: 00001234 00020400 344## | | | | 345## | | | +- segment_size (1-byte) 346## | | +- address_size (1-byte) 347## | +--- version (2-byte) 348## +------- 9) unit_length (4-byte) 349# DWARF32-BE-NEXT: ) 350 351## c) Generate and verify a little endian DWARF64 .debug_addr section. 352 353# RUN: yaml2obj --docnum=2 -DENDIAN=ELFDATA2LSB %s -o %t2.dwarf64.le.o 354# RUN: llvm-readobj --sections --section-data %t2.dwarf64.le.o | \ 355# RUN: FileCheck %s -DSIZE=56 -DADDRALIGN=1 --check-prefixes=SHDR,DWARF64-LE 356 357# DWARF64-LE-NEXT: SectionData ( 358# DWARF64-LE-NEXT: 0000: FFFFFFFF 0C000000 00000000 05000400 359## | | | | 360## | | | +- segment_selector_size (1-byte) 361## | | +- address_size (1-byte) 362## | +--- version (2-byte) 363## +------------------------- unit_length (12-byte) 364## 365# DWARF64-LE-NEXT: 0010: 34120000 78560000 FFFFFFFF 14000000 366## | | | 367## | | +---------------- unit_length (12-byte) 368## | +------- address (4-byte) 369## +------- address (4-byte) 370## 371# DWARF64-LE-NEXT: 0020: 00000000 05000800 21430000 00000000 372## | | | | | 373## | | | | +---------------- address (8-byte) 374## | | | +- segment_selector_size (1-byte) 375## | | +- address_size (1-byte) 376## | +--- version (2-byte) 377## +------- last 4-byte of unit_length 378## 379# DWARF64-LE-NEXT: 0030: 65870000 00000000 380## | 381## +---------------- address (8-byte) 382# DWARF64-LE-NEXT: ) 383 384--- !ELF 385FileHeader: 386 Class: ELFCLASS64 387 Data: [[ENDIAN]] 388 Type: ET_EXEC 389DWARF: 390 debug_addr: 391 - Format: DWARF64 392 Version: 5 393 AddressSize: 0x04 394 Entries: 395 - Address: 0x1234 396 - Address: 0x5678 397 - Format: DWARF64 398 Version: 5 399 Entries: 400 - Address: 0x4321 401 - Address: 0x8765 402 403## d) Generate and verify a big endian DWARF64 .debug_addr section. 404 405# RUN: yaml2obj --docnum=2 -DENDIAN=ELFDATA2MSB %s -o %t2.dwarf64.be.o 406# RUN: llvm-readobj --sections --section-data %t2.dwarf64.be.o | \ 407# RUN: FileCheck %s -DSIZE=56 -DADDRALIGN=1 --check-prefixes=SHDR,DWARF64-BE 408 409# DWARF64-BE-NEXT: SectionData ( 410# DWARF64-BE-NEXT: 0000: FFFFFFFF 00000000 0000000C 00050400 411## | | | | 412## | | | +- segment_selector_size (1-byte) 413## | | +- address_size (1-byte) 414## | +--- version (2-byte) 415## +------------------------- unit_length (12-byte) 416## 417# DWARF64-BE-NEXT: 0010: 00001234 00005678 FFFFFFFF 00000000 418## | | | 419## | | +---------------- unit_length (12-byte) 420## | +------- address (4-byte) 421## +------- address (4-byte) 422## 423# DWARF64-BE-NEXT: 0020: 00000014 00050800 00000000 00004321 424## | | | | | 425## | | | | +---------------- address (8-byte) 426## | | | +- segment_selector_size (1-byte) 427## | | +- address_size (1-byte) 428## | +--- version (2-byte) 429## +------- last 4-byte of unit_length 430## 431# DWARF64-BE-NEXT: 0030: 00000000 00008765 432## | 433## +---------------- address (8-byte) 434# DWARF64-BE-NEXT: ) 435 436## e) Test that yaml2obj emits an error message if the 'Version' fields is missing. 437 438# RUN: not yaml2obj --docnum=3 %s 2>&1 | FileCheck %s --check-prefix=MISSING-VERSION 439 440# MISSING-VERSION: error: missing required key 'Version' 441 442--- !ELF 443FileHeader: 444 Class: ELFCLASS64 445 Data: ELFDATA2LSB 446 Type: ET_EXEC 447DWARF: 448 debug_addr: 449 - Entries: [] 450 451## f) Generate the .debug_addr section from raw section content. 452 453# RUN: yaml2obj --docnum=4 %s -o %t4.o 454# RUN: llvm-readobj --sections --section-data %t4.o | \ 455# RUN: FileCheck %s -DADDRALIGN=0 -DSIZE=3 --check-prefixes=SHDR,ARBITRARY-CONTENT 456 457# ARBITRARY-CONTENT: SectionData ( 458# ARBITRARY-CONTENT-NEXT: 0000: 112233 459# ARBITRARY-CONTENT-NEXT: ) 460 461--- !ELF 462FileHeader: 463 Class: ELFCLASS64 464 Data: ELFDATA2LSB 465 Type: ET_EXEC 466Sections: 467 - Name: .debug_addr 468 Type: SHT_PROGBITS 469 Content: "112233" 470 471## g) Generate the .debug_addr section when the "Size" is specified. 472 473# RUN: yaml2obj --docnum=5 %s -o %t5.o 474# RUN: llvm-readelf --hex-dump=.debug_addr %t5.o | FileCheck %s --check-prefix=SIZE 475 476# SIZE: Hex dump of section '.debug_addr': 477# SIZE-NEXT: 0x00000000 00000000 00000000 00000000 00000000 ................ 478# SIZE-EMPTY: 479 480--- !ELF 481FileHeader: 482 Class: ELFCLASS64 483 Data: ELFDATA2LSB 484 Type: ET_EXEC 485Sections: 486 - Name: .debug_addr 487 Type: SHT_PROGBITS 488 Size: 0x10 489 490## h) Test that yaml2obj emits an error message when both the "Size" and the 491## "debug_addr" entry are specified at the same time. 492 493# RUN: not yaml2obj --docnum=6 %s 2>&1 | FileCheck %s --check-prefix=ERROR 494 495# ERROR: yaml2obj: error: cannot specify section '.debug_addr' contents in the 'DWARF' entry and the 'Content' or 'Size' in the 'Sections' entry at the same time 496 497--- !ELF 498FileHeader: 499 Class: ELFCLASS64 500 Data: ELFDATA2LSB 501 Type: ET_EXEC 502Sections: 503 - Name: .debug_addr 504 Type: SHT_PROGBITS 505 Size: 0x10 506DWARF: 507 debug_addr: 508 - Version: 5 509 Entries: [] 510 511## i) Test that yaml2obj emits an error message when both the "Content" and the 512## "debug_addr" entry are specified at the same time. 513 514# RUN: not yaml2obj --docnum=7 %s 2>&1 | FileCheck %s --check-prefix=ERROR 515 516--- !ELF 517FileHeader: 518 Class: ELFCLASS64 519 Data: ELFDATA2LSB 520 Type: ET_EXEC 521Sections: 522 - Name: .debug_addr 523 Type: SHT_PROGBITS 524 Content: "00" 525DWARF: 526 debug_addr: 527 - Version: 5 528 Entries: [] 529 530## j) Test that all the properties can be overridden by the section header when 531## the "debug_addr" entry doesn't exist. 532 533# RUN: yaml2obj --docnum=8 %s -o %t8.o 534# RUN: llvm-readelf --sections %t8.o | FileCheck %s --check-prefix=OVERRIDDEN 535 536# OVERRIDDEN: [Nr] Name Type Address Off Size ES Flg Lk Inf Al 537# OVERRIDDEN: [ 1] .debug_addr STRTAB 0000000000002020 000050 000008 01 A 2 1 2 538# OVERRIDDEN-NEXT: [ 2] .sec STRTAB 0000000000000000 000058 000000 00 0 0 0 539 540--- !ELF 541FileHeader: 542 Class: ELFCLASS64 543 Data: ELFDATA2LSB 544 Type: ET_EXEC 545Sections: 546 - Name: .debug_addr 547 Type: SHT_STRTAB ## SHT_PROGBITS by default. 548 Flags: [SHF_ALLOC] ## 0 by default. 549 Link: .sec ## 0 by default. 550 EntSize: 1 ## 0 by default. 551 Info: 1 ## 0 by default. 552 AddressAlign: 2 ## 0 by default. 553 Address: 0x2020 ## 0x00 by default. 554 Offset: 0x50 ## 0x40 for the first section. 555 Size: 0x08 ## Set the "Size" so that we can reuse the check tag "OVERRIDDEN". 556 - Name: .sec ## Linked by .debug_addr. 557 Type: SHT_STRTAB 558 559## k) Test that all the properties can be overridden by the section header when 560## the "debug_addr" entry exists. 561 562# RUN: yaml2obj --docnum=9 %s -o %t9.o 563# RUN: llvm-readelf --sections %t9.o | FileCheck %s --check-prefix=OVERRIDDEN 564 565--- !ELF 566FileHeader: 567 Class: ELFCLASS64 568 Data: ELFDATA2LSB 569 Type: ET_EXEC 570Sections: 571 - Name: .debug_addr 572 Type: SHT_STRTAB ## SHT_PROGBITS by default. 573 Flags: [SHF_ALLOC] ## 0 by default. 574 Link: .sec ## 0 by default. 575 EntSize: 1 ## 0 by default. 576 Info: 1 ## 0 by default. 577 AddressAlign: 2 ## 1 by default. 578 Address: 0x2020 ## 0x00 by default. 579 Offset: 0x50 ## 0x40 for the first section. 580 - Name: .sec ## Linked by .debug_addr. 581 Type: SHT_STRTAB 582DWARF: 583 debug_addr: 584 - Version: 5 585 Entries: [] 586 587## l) Test that yaml2obj still generates a .debug_addr section if we assign an invalid value 588## to 'AddressSize' or 'SegmentSelectorSize' when the 'Entries' list is empty. 589 590# RUN: yaml2obj --docnum=10 -DSIZENAME=AddressSize %s -o %t10.addr.o 591# RUN: llvm-readelf --hex-dump=.debug_addr %t10.addr.o | \ 592# RUN: FileCheck -DADDRSIZE=03 -DSEGSIZE=00 %s --check-prefix=ADDR-SEG-SIZE 593 594# RUN: yaml2obj --docnum=10 -DSIZENAME=SegmentSelectorSize %s -o %t10.seg.o 595# RUN: llvm-readelf --hex-dump=.debug_addr %t10.seg.o | \ 596# RUN: FileCheck -DADDRSIZE=08 -DSEGSIZE=03 %s --check-prefix=ADDR-SEG-SIZE 597 598# ADDR-SEG-SIZE: Hex dump of section '.debug_addr': 599# ADDR-SEG-SIZE-NEXT: 0x00000000 04000000 0500[[ADDRSIZE]][[SEGSIZE]] 600 601--- !ELF 602FileHeader: 603 Class: ELFCLASS64 604 Data: ELFDATA2LSB 605 Type: ET_EXEC 606DWARF: 607 debug_addr: 608 - Version: 5 609 [[SIZENAME]]: 3 610 Entries: [] 611 612## m) Test that yaml2obj emits an error message if we try to assign an invalid value to 613## 'AddressSize' or 'SegmentSelectorSize' when the 'Entries' list isn't empty. 614 615# RUN: not yaml2obj --docnum=11 -DSIZENAME=AddressSize %s 2>&1 | \ 616# RUN: FileCheck -DFIELD=address %s --check-prefix=INVALID-SIZE 617 618# RUN: not yaml2obj --docnum=11 -DSIZENAME=SegmentSelectorSize %s 2>&1 | \ 619# RUN: FileCheck -DFIELD=segment %s --check-prefix=INVALID-SIZE 620 621# INVALID-SIZE: yaml2obj: error: unable to write debug_addr [[FIELD]]: invalid integer write size: 3 622 623--- !ELF 624FileHeader: 625 Class: ELFCLASS64 626 Data: ELFDATA2LSB 627 Type: ET_EXEC 628DWARF: 629 debug_addr: 630 - Version: 5 631 [[SIZENAME]]: 3 632 Entries: 633 - Address: 0x1234 634 635## n) Test that the .debug_addr section header is emitted if the "debug_addr" 636## entry is empty. 637 638# RUN: yaml2obj --docnum=12 %s -o %t12.o 639# RUN: llvm-readobj --sections %t12.o | \ 640# RUN: FileCheck %s -DSIZE=0 -DADDRALIGN=1 --check-prefix=SHDR 641 642--- !ELF 643FileHeader: 644 Class: ELFCLASS64 645 Data: ELFDATA2LSB 646 Type: ET_EXEC 647DWARF: 648 debug_addr: [] 649