## Test that yaml2obj emits .debug_aranges section.

## a) Generate the .debug_aranges section from the "DWARF" entry.

## Generate and verify a big endian DWARF32 .debug_aranges section.

# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2MSB -DFORMAT=DWARF32 %s -o %t.be.o
# RUN: llvm-readobj --sections --section-data %t.be.o | \
# RUN:   FileCheck -DADDRALIGN=1 -DSIZE=96 %s --check-prefixes=DWARF-HEADER,DWARF-BE-CONTENT

#          DWARF-HEADER: Index: 1
#     DWARF-HEADER-NEXT: Name: .debug_aranges (1)
#     DWARF-HEADER-NEXT: Type: SHT_PROGBITS (0x1)
#     DWARF-HEADER-NEXT: Flags [ (0x0)
#     DWARF-HEADER-NEXT: ]
#     DWARF-HEADER-NEXT: Address: 0x0
#     DWARF-HEADER-NEXT: Offset: 0x40
#     DWARF-HEADER-NEXT: Size: [[SIZE]]
#     DWARF-HEADER-NEXT: Link: 0
#     DWARF-HEADER-NEXT: Info: 0
#     DWARF-HEADER-NEXT: AddressAlignment: [[ADDRALIGN]]
#     DWARF-HEADER-NEXT: EntrySize: 0
# DWARF-BE-CONTENT-NEXT: SectionData (
# DWARF-BE-CONTENT-NEXT:   0000: 0000002C 00020000 00000400 00000000
##                               |        |   |        | |  |
##                               |        |   |        | |  +------- Padding zeros (4-byte)
##                               |        |   |        | +- SegSize (1-byte) 0x00
##                               |        |   |        +- AddrSize (1-byte) 0x04
##                               |        |   +-------- CuOffset (4-byte) 0x00
##                               |        +--- Version (2-byte) 0x02
##                               +------- InitialLength (4-byte) 0x2c
##
# DWARF-BE-CONTENT-NEXT:   0010: 00001234 00000020 00000000 00000000
##                               |        |        |
##                               |        |        +---------------- Terminating Entry
##                               |        +------- Length (4-byte) 0x20
##                               +------- Address (4-byte) 0x1234
##
# DWARF-BE-CONTENT-NEXT:   0020: 0000002C 00020000 00650800 00000000
##                               |        |   |        | |  |
##                               |        |   |        | |  +------- Padding zeros (4-byte)
##                               |        |   |        | +- SegSize (1-byte) 0x00
##                               |        |   |        +- AddrSize (1-byte) 0x08
##                               |        |   +-------- CuOffset (4-byte) 0x00
##                               |        +--- Version (2-byte) 0x02
##                               +------- InitialLength (4-byte) 0x2c
##
# DWARF-BE-CONTENT-NEXT:   0030: 00000000 00005678 00000000 00000020
##                               |                 |
##                               |                 +---------------- Length (8-byte) 0x20
##                               +---------------- Address (8-byte) 0x5678
##
# DWARF-BE-CONTENT-NEXT:   0040: 00000000 56780000 00000000 00000010
##                               |                 |
##                               |                 +---------------- Length (8-byte) 0x10
##                               +---------------- Address (8-byte) 0x5678
##
# DWARF-BE-CONTENT-NEXT:   0050: 00000000 00000000 00000000 00000000
##                               |
##                               +---------------------------------- Terminating entry
##
# DWARF-BE-CONTENT-NEXT: )

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  [[ENDIAN]]
  Type:  ET_EXEC
DWARF:
  debug_aranges:
    - Format:               [[FORMAT]]
      Length:               0x2c
      Version:              2
      CuOffset:             0
      AddressSize:          0x04
      SegmentSelectorSize:  0x00
      Descriptors:
        - Address: 0x00001234
          Length:  0x20
    - Format:              [[FORMAT]]
      Length:              0x2c
      Version:             2
      CuOffset:            0x65
      AddressSize:         0x08
      SegmentSelectorSize: 0x00
      Descriptors:
        - Address: 0x0000000000005678
          Length:  0x20
        - Address: 0x0000000056780000
          Length:  0x10

## Generate and verify a little endian DWARF32 .debug_aranges section.

# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2LSB -DFORMAT=DWARF32 %s -o %t.le.o
# RUN: llvm-readobj --sections --section-data %t.le.o | \
# RUN:   FileCheck -DADDRALIGN=1 -DSIZE=96 %s --check-prefixes=DWARF-HEADER,DWARF-LE-CONTENT

# DWARF-LE-CONTENT-NEXT: SectionData (
# DWARF-LE-CONTENT-NEXT:   0000: 2C000000 02000000 00000400 00000000
##                               |        |   |        | |  |
##                               |        |   |        | |  +------- Padding zeros (4-byte)
##                               |        |   |        | +- SegSize (1-byte) 0x00
##                               |        |   |        +- AddrSize (1-byte) 0x04
##                               |        |   +-------- CuOffset (4-byte) 0x00
##                               |        +--- Version (2-byte) 0x02
##                               +------- InitialLength (4-byte) 0x2c
##
# DWARF-LE-CONTENT-NEXT:   0010: 34120000 20000000 00000000 00000000
##                               |        |        |
##                               |        |        +---------------- Terminating Entry
##                               |        +------- Length (4-byte) 0x20
##                               +------- Address (4-byte) 0x1234
##
# DWARF-LE-CONTENT-NEXT:   0020: 2C000000 02006500 00000800 00000000
##                               |        |   |        | |  |
##                               |        |   |        | |  +------- Padding zeros (4-byte)
##                               |        |   |        | +- SegSize (1-byte) 0x00
##                               |        |   |        +- AddrSize (1-byte) 0x08
##                               |        |   +-------- CuOffset (4-byte) 0x00
##                               |        +--- Version (2-byte) 0x02
##                               +------- InitialLength (4-byte) 0x2c
##
# DWARF-LE-CONTENT-NEXT:   0030: 78560000 00000000 20000000 00000000
##                               |                 |
##                               |                 +---------------- Length (8-byte) 0x20
##                               +---------------- Address (8-byte) 0x5678
##
# DWARF-LE-CONTENT-NEXT:   0040: 00007856 00000000 10000000 00000000
##                               |                 |
##                               |                 +---------------- Length (8-byte) 0x10
##                               +---------------- Address (8-byte) 0x5678
##
# DWARF-LE-CONTENT-NEXT:   0050: 00000000 00000000 00000000 00000000
##                               |
##                               +---------------------------------- Terminating entry
##
# DWARF-LE-CONTENT-NEXT: )

## Generate and verify a big endian DWARF64 .debug_aranges section.

# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2MSB -DFORMAT=DWARF64 %s -o %t.be.dwarf64.o
# RUN: llvm-readobj --sections --section-data %t.be.dwarf64.o | \
# RUN:   FileCheck -DADDRALIGN=1 -DSIZE=120 %s --check-prefixes=DWARF-HEADER,DWARF64-BE-CONTENT

# DWARF64-BE-CONTENT-NEXT: SectionData (
# DWARF64-BE-CONTENT-NEXT:   0000: FFFFFFFF 00000000 0000002C 00020000
##                                 |        |                 |   |
##                                 |        |                 |   +--- CuOffset (8-byte) 0x00
##                                 |        |                 +--- Version (2-byte) 0x02
##                                 |        +---------------- Length (8-byte) 0x2c
##                                 +------- DWARF64 Prefix (4-byte) UINT32_MAX
##
# DWARF64-BE-CONTENT-NEXT:   0010: 00000000 00000400 00001234 00000020
##                                 |            | |  |        |
##                                 |            | |  |        +------- Length (4-byte) 0x20
##                                 |            | |  +------- Address (4-byte) 0x1234
##                                 |            | +- SegSize (1-byte) 0x00
##                                 |            +- AddrSize (1-byte) 0x04
##                                 +------------ Lower bytes of CuOffset
##
# DWARF64-BE-CONTENT-NEXT:   0020: 00000000 00000000 FFFFFFFF 00000000
##                                 |                 |        +------- Length (8-byte) 0x2c
##                                 |                 +------- DWARF64 Prefix
##                                 +---------------- Terminating Entry (8-byte) 0x00
##
# DWARF64-BE-CONTENT-NEXT:   0030: 0000002C 00020000 00000000 00650800
##                                 |        |   |                 | |
##                                 |        |   |                 | +- SegSize (1-byte) 0x00
##                                 |        |   |                 +- AddrSize (1-byte) 0x08
##                                 |        |   +----------------- CuOffset (8-byte) 0x65
##                                 |        +--- Version (2-byte) 0x02
##                                 +------- Lower bytes of Length
##
# DWARF64-BE-CONTENT-NEXT:   0040: 00000000 00000000 00000000 00005678
##                                 |                 |
##                                 |                 +---------------- Address (8-byte) 0x5678
##                                 +---------------- Padding zeros (8-byte)
##
# DWARF64-BE-CONTENT-NEXT:   0050: 00000000 00000020 00000000 56780000
##                                 |                 |
##                                 |                 +---------------- Address (8-byte) 0x56780000
##                                 +---------------- Length (8-byte) 0x20
##
# DWARF64-BE-CONTENT-NEXT:   0060: 00000000 00000010 00000000 00000000
##                                 |                 |
##                                 |                 +---------------- Terminating Entry (16-byte) 0x00
##                                 +---------------- Length (8-byte) 0x10
##
# DWARF64-BE-CONTENT-NEXT:   0070: 00000000 00000000
##                                 |
##                                 +---------------- The last bytes of terminating entry.
# DWARF64-BE-CONTENT-NEXT: )

## Generate and verify a little endian DWARF64 .debug_aranges section.

# RUN: yaml2obj --docnum=1 -DENDIAN=ELFDATA2LSB -DFORMAT=DWARF64 %s -o %t.le.dwarf64.o
# RUN: llvm-readobj --sections --section-data %t.le.dwarf64.o | \
# RUN:   FileCheck -DADDRALIGN=1 -DSIZE=120 %s --check-prefixes=DWARF-HEADER,DWARF64-LE-CONTENT

# DWARF64-LE-CONTENT-NEXT: SectionData (
# DWARF64-LE-CONTENT-NEXT:   0000: FFFFFFFF 2C000000 00000000 02000000
##                                 |        |                 |   |
##                                 |        |                 |   +--- CuOffset (8-byte) 0x00
##                                 |        |                 +--- Version (2-byte) 0x02
##                                 |        +---------------- Length (8-byte) 0x2c
##                                 +------- DWARF64 Prefix (4-byte) UINT32_MAX
##
# DWARF64-LE-CONTENT-NEXT:   0010: 00000000 00000400 34120000 20000000
##                                 |            | |  |        |
##                                 |            | |  |        +------- Length (4-byte) 0x20
##                                 |            | |  +------- Address (4-byte) 0x1234
##                                 |            | +- SegSize (1-byte) 0x00
##                                 |            +- AddrSize (1-byte) 0x04
##                                 +------------ Lower bytes of CuOffset
##
# DWARF64-LE-CONTENT-NEXT:   0020: 00000000 00000000 FFFFFFFF 2C000000
##                                 |                 |        +------- Length (8-byte) 0x2c
##                                 |                 +------- DWARF64 Prefix
##                                 +---------------- Terminating Entry (8-byte) 0x00
##
# DWARF64-LE-CONTENT-NEXT:   0030: 00000000 02006500 00000000 00000800
##                                 |        |   |                 | |
##                                 |        |   |                 | +- SegSize (1-byte) 0x00
##                                 |        |   |                 +- AddrSize (1-byte) 0x08
##                                 |        |   +----------------- CuOffset (8-byte) 0x65
##                                 |        +--- Version (2-byte) 0x02
##                                 +------- Lower bytes of Length
##
# DWARF64-LE-CONTENT-NEXT:   0040: 00000000 00000000 78560000 00000000
##                                 |                 |
##                                 |                 +---------------- Address (8-byte) 0x5678
##                                 +---------------- Padding zeros (8-byte)
##
# DWARF64-LE-CONTENT-NEXT:   0050: 20000000 00000000 00007856 00000000
##                                 |                 |
##                                 |                 +---------------- Address (8-byte) 0x56780000
##                                 +---------------- Length (8-byte) 0x20
##
# DWARF64-LE-CONTENT-NEXT:   0060: 10000000 00000000 00000000 00000000
##                                 |                 |
##                                 |                 +---------------- Terminating Entry (16-byte) 0x00
##                                 +---------------- Length (8-byte) 0x10
##
# DWARF64-LE-CONTENT-NEXT:   0070: 00000000 00000000
##                                 |
##                                 +---------------- The last bytes of terminating entry.
# DWARF64-LE-CONTENT-NEXT: )

## b) Generate the .debug_aranges section from raw section content.

# RUN: yaml2obj --docnum=2 %s -o %t2.o
# RUN: llvm-readobj --sections --section-data %t2.o | \
# RUN:   FileCheck %s -DADDRALIGN=0 -DSIZE=3 --check-prefixes=DWARF-HEADER,ARBITRARY-CONTENT

#      ARBITRARY-CONTENT: SectionData (
# ARBITRARY-CONTENT-NEXT:   0000: 112233
# ARBITRARY-CONTENT-NEXT: )

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2MSB
  Type:  ET_EXEC
Sections:
  - Name:    .debug_aranges
    Type:    SHT_PROGBITS
    Content: "112233"

## c) Generate the .debug_aranges section when the "Size" is specified.

# RUN: yaml2obj --docnum=3 %s -o %t3.o
# RUN: llvm-readobj --hex-dump=.debug_aranges %t3.o | FileCheck %s --check-prefix=SIZE

#       SIZE: Hex dump of section '.debug_aranges':
#  SIZE-NEXT: 0x00000000 00000000 00000000 00000000 00000000 ................
# SIZE-EMPTY:

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2MSB
  Type:  ET_EXEC
Sections:
  - Name: .debug_aranges
    Type: SHT_PROGBITS
    Size: 0x10

## d) Test that yaml2obj emits an error message when both the "Size" and the
## "debug_aranges" entry are specified at the same time.

# RUN: not yaml2obj --docnum=4 %s 2>&1 | FileCheck %s --check-prefix=ERROR

# ERROR: yaml2obj: error: cannot specify section '.debug_aranges' contents in the 'DWARF' entry and the 'Content' or 'Size' in the 'Sections' entry at the same time

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2MSB
  Type:  ET_EXEC
Sections:
  - Name: .debug_aranges
    Type: SHT_PROGBITS
    Size: 0x10
DWARF:
  debug_aranges:
    - Length:              0x2c
      Version:             2
      CuOffset:            0
      AddressSize:         0x08
      SegmentSelectorSize: 0x00
      Descriptors:
        - Address: 0x0000000000001234
          Length:  0x20

## e) Test that yaml2obj emits an error message when both the "Content" and the
## "debug_aranges" entry are specified at the same time.

# RUN: not yaml2obj --docnum=5 %s 2>&1 | FileCheck %s --check-prefix=ERROR

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2MSB
  Type:  ET_EXEC
Sections:
  - Name:    .debug_aranges
    Type:    SHT_PROGBITS
    Content: "00"
DWARF:
  debug_aranges:
    - Length:              0x2c
      Version:             2
      CuOffset:            0
      AddressSize:         0x08
      SegmentSelectorSize: 0x00
      Descriptors:
        - Address: 0x0000000000001234
          Length:  0x20

## f) Test that all the properties can be overridden by the section header when
## the "debug_aranges" entry doesn't exist.

# RUN: yaml2obj --docnum=6 %s -o %t6.o
# RUN: llvm-readelf --sections %t6.o | FileCheck %s --check-prefix=OVERRIDDEN

#      OVERRIDDEN: [Nr] Name           Type   Address          Off    Size   ES Flg Lk Inf Al
#      OVERRIDDEN: [ 1] .debug_aranges STRTAB 0000000000002020 000050 000030 01   A  2   1  2
# OVERRIDDEN-NEXT: [ 2] .sec           STRTAB 0000000000000000 000080 000000 00      0   0  0

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2MSB
  Type:  ET_EXEC
Sections:
  - Name:         .debug_aranges
    Type:         SHT_STRTAB         # SHT_PROGBITS by default.
    Flags:        [SHF_ALLOC]        # 0 by default.
    Link:         .sec               # 0 by default.
    EntSize:      1                  # 0 by default.
    Info:         1                  # 0 by default.
    AddressAlign: 2                  # 0 by default.
    Address:      0x0000000000002020 # 0x00 by default.
    Offset:       0x00000050         # 0x40 for the first section.
    Size:         0x30               # Set the "Size" so that we can reuse the check tag "OVERRIDDEN".
  - Name:         .sec               # Linked by .debug_aranges.
    Type:         SHT_STRTAB

## g) Test that all the properties can be overridden by the section header when
## the "debug_aranges" entry exists.

# RUN: yaml2obj --docnum=7 %s -o %t7.o
# RUN: llvm-readelf --sections %t7.o | FileCheck %s --check-prefix=OVERRIDDEN

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2MSB
  Type:  ET_EXEC
Sections:
  - Name:         .debug_aranges
    Type:         SHT_STRTAB         # SHT_PROGBITS by default.
    Flags:        [SHF_ALLOC]        # 0 by default.
    Link:         .sec               # 0 by default.
    EntSize:      1                  # 0 by default.
    Info:         1                  # 0 by default.
    AddressAlign: 2                  # 1 by default.
    Address:      0x0000000000002020 # 0x00 by default.
    Offset:       0x00000050         # 0x40 for the first section.
  - Name:         .sec               # Linked by .debug_aranges.
    Type:         SHT_STRTAB
DWARF:
  debug_aranges:
    - Length:              0x2c
      Version:             2
      CuOffset:            0
      AddressSize:         0x08
      SegmentSelectorSize: 0x00
      Descriptors:
        - Address: 0x0000000000001234
          Length:  0x20

## h) Test that yaml2obj still generates a .debug_aranges section if we assign an invalid value
## to 'AddrSize' when the 'Descriptors' list is empty.

# RUN: yaml2obj --docnum=8 %s -o %t8.o
# RUN: llvm-readelf --hex-dump=.debug_aranges %t8.o | \
# RUN:   FileCheck %s --check-prefix=ADDR-SIZE

#      ADDR-SIZE: Hex dump of section '.debug_aranges':
# ADDR-SIZE-NEXT: 0x00000000 2c000000 02000000 00000700 00000000
##                                                 ^~ address_size (1-byte) 0x07
# ADDR-SIZE-NEXT: 0x00000010 00000000 00000000 00000000

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
DWARF:
  debug_aranges:
    - Length:              0x2c
      Version:             2
      CuOffset:            0
      AddressSize:         0x07 ## Invalid address_size.
      SegmentSelectorSize: 0
      Descriptors:         []

## i) Test that yaml2obj emits an error message if we try to assign an invalid value to
## 'AddrSize' when the 'Descriptors' list isn't empty.

# RUN: not yaml2obj --docnum=9 %s 2>&1 | \
# RUN:   FileCheck %s --check-prefix=INVALID-SIZE

# INVALID-SIZE: yaml2obj: error: unable to write debug_aranges address: invalid integer write size: 7

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
DWARF:
  debug_aranges:
    - Length:              0x2c
      Version:             2
      CuOffset:            0
      AddressSize:         0x07 ## Invalid address_size.
      SegmentSelectorSize: 0
      Descriptors:
        - Address: 0x1234
          Length:  0x1000

## j) Test the default value of address_size and segment_selector_size in a 64/32-bit object file.

# RUN: yaml2obj --docnum=10 -DCLASS=ELFCLASS64 %s -o %t10.64-bit.o
# RUN: llvm-readelf --hex-dump=.debug_aranges %t10.64-bit.o | \
# RUN:   FileCheck %s --check-prefix=DEFAULT64

#      DEFAULT64: Hex dump of section '.debug_aranges':
# DEFAULT64-NEXT: 0x00000000 2c000000 02000000 00000800 00000000 ,...............
##                           ^-------                            unit_length (4-byte)
##                                    ^---                       version (2-byte)
##                                        ^--------              debug_info_offset (4-byte)
##                                                 ^-            address_size (1-byte)
##                                                   ^-          segment_selector_size (1-byte)
##                                                      ^------- padding (4-byte)
# DEFAULT64-NEXT: 0x00000010 34120000 00000000 00100000 00000000 4...............
##                           ^----------------                   address (8-byte)
##                                             ^---------------- length (8-byte)
# DEFAULT64-NEXT: 0x00000020 00000000 00000000 00000000 00000000 ................
##                           ^---------------------------------- terminating entry (16-byte)

# RUN: yaml2obj --docnum=10 -DCLASS=ELFCLASS32 %s -o %t10.32-bit.o
# RUN: llvm-readelf --hex-dump=.debug_aranges %t10.32-bit.o | \
# RUN:   FileCheck %s --check-prefix=DEFAULT32

#      DEFAULT32: Hex dump of section '.debug_aranges':
# DEFAULT32-NEXT: 0x00000000 2c000000 02000000 00000400 00000000 ,...............
##                           ^-------                            unit_length (4-byte)
##                                    ^---                       version (2-byte)
##                                        ^--------              debug_info_offset (4-byte)
##                                                 ^-            address_size (1-byte)
##                                                   ^-          segment_selector_size (1-byte)
##                                                      ^------- padding (4-byte)
# DEFAULT32-NEXT: 0x00000010 34120000 00100000 00000000 00000000 4...............
##                           ^-------                            address (4-byte)
##                                    ^-------                   length (4-byte)
##                                             ^---------------- terminating entry (8-byte)

--- !ELF
FileHeader:
  Class: [[CLASS]]
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
DWARF:
  debug_aranges:
    - Length:              0x2c
      Version:             2
      CuOffset:            0
      Descriptors:
        - Address: 0x1234
          Length:  0x1000

## k) Test that yaml2obj is able to determine the correct length for the address range table
## if the 'Length' field isn't specified.

# RUN: yaml2obj --docnum=11 -DCLASS=ELFCLASS64 -DADDRSIZE=4 %s -o %t11.64-bit.o
# RUN: llvm-readelf --hex-dump=.debug_aranges %t11.64-bit.o | \
# RUN:   FileCheck %s --check-prefix=LENGTH64

#      LENGTH64: Hex dump of section '.debug_aranges':
# LENGTH64-NEXT: 0x00000000 2c000000 02000000 00000800 00000000 ,...............
##                          ^-------                            unit_length (4-byte)
##                                   ^---                       version (2-byte)
##                                       ^--------              debug_info_offset (4-byte)
##                                                ^-            address_size (1-byte)
##                                                  ^-          segment_selector_size (1-byte)
##                                                     ^------- padding (4-byte)
# LENGTH64-NEXT: 0x00000010 34120000 00000000 00100000 00000000 4...............
##                          ^----------------                   address (8-byte)
##                                            ^---------------- length (8-byte)
# LENGTH64-NEXT: 0x00000020 00000000 00000000 00000000 00000000 ................
##                          ^---------------------------------- terminating entry (16-byte)
# LENGTH64-NEXT: 0x00000030 ffffffff 1c000000 00000000 02000000 ................
##                          ^-------------------------          unit_length (12-byte)
##                                                     ^---     version (2-byte)
##                                                         ^--- debug_info_offset (8-byte)
# LENGTH64-NEXT: 0x00000040 00000000 00000400 34120000 21430000 ........4...!C..
##                          -------------
##                                       ^-                     address_size (1-byte)
##                                         ^-                   segment_selector_size (1-byte)
##                                            ^-------          address (4-byte)
##                                                     ^------- length (4-byte)
# LENGTH64-NEXT: 0x00000050 00000000 00000000                   ........
##                          ^----------------                   terminating entry (8-byte)

# RUN: yaml2obj --docnum=11 -DCLASS=ELFCLASS32 -DADDRSIZE=8 %s -o %t11.32-bit.o
# RUN: llvm-readelf --hex-dump=.debug_aranges %t11.32-bit.o | \
# RUN:   FileCheck %s --check-prefix=LENGTH32

#      LENGTH32: Hex dump of section '.debug_aranges':
# LENGTH32-NEXT: 0x00000000 1c000000 02000000 00000400 00000000 ................
##                          ^-------                            unit_length (4-byte)
##                                   ^---                       version (2-byte)
##                                       ^--------              debug_info_offset (4-byte)
##                                                ^-            address_size (1-byte)
##                                                  ^-          segment_selector_size (1-byte)
##                                                     ^------- padding (4-byte)
# LENGTH32-NEXT: 0x00000010 34120000 00100000 00000000 00000000 4...............
##                          ^-------                            address (4-byte)
##                                   ^-------                   length (4-byte)
##                                            ^---------------- terminating entry (8-byte)
# LENGTH32-NEXT: 0x00000020 ffffffff 34000000 00000000 02000000 ....4...........
##                          ^-------------------------          unit_length (12-byte)
##                                                     ^---     version (2-byte)
##                                                         ^--- debug_info_offset (8-byte)
# LENGTH32-NEXT: 0x00000030 00000000 00000800 00000000 00000000 ................
##                          -------------
##                                       ^-                     address_size (1-byte)
##                                         ^-                   segment_selector_size (1-byte)
##                                            ^---------------- padding (8-byte)
# LENGTH32-NEXT: 0x00000040 34120000 00000000 21430000 00000000 4.......!C......
##                          ^----------------                   address (8-byte)
##                                            ^---------------- length (8-byte)
# LENGTH32-NEXT: 0x00000050 00000000 00000000 00000000 00000000 ................
##                          ^---------------------------------- terminating entry (16-byte)

--- !ELF
FileHeader:
  Class: [[CLASS]]
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
DWARF:
  debug_aranges:
    - Version:  2
      CuOffset: 0
      Descriptors:
        - Address: 0x1234
          Length:  0x1000
    - Format:      DWARF64
      Version:     2
      AddressSize: [[ADDRSIZE]]
      CuOffset:    0
      Descriptors:
        - Address: 0x1234
          Length:  0x4321

## l) Test that the .debug_aranges section header is emitted if the "debug_aranges"
## entry is empty.

# RUN: yaml2obj --docnum=12 %s -o %t12.o
# RUN: llvm-readobj --sections --section-data %t12.o | \
# RUN:   FileCheck -DSIZE=0 -DADDRALIGN=1 %s --check-prefixes=DWARF-HEADER,EMPTY-CONTENT

# EMPTY-CONTENT-NEXT: SectionData (
# EMPTY-CONTENT-NEXT: )

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
DWARF:
  debug_aranges: []
