# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o %t.o
# RUN: llvm-dwarfdump -v %t.o 2>&1 | FileCheck %s
#
# Test object to verify that llvm-dwarfdump handles an invalid string offsets
# table.
#
# A rudimentary abbrev section.
        .section .debug_abbrev,"",@progbits
        .byte 0x01  # Abbrev code
        .byte 0x11  # DW_TAG_compile_unit
        .byte 0x00  # DW_CHILDREN_no
        .byte 0x72  # DW_AT_str_offsets_base
        .byte 0x17  # DW_FORM_sec_offset
        .byte 0x00  # EOM(1)
        .byte 0x00  # EOM(2)
        .byte 0x00  # EOM(3)

# A rudimentary compile unit to convince dwarfdump that we are dealing with a 
# DWARF v5 string offsets table.
        .section .debug_info,"",@progbits

# DWARF v5 32 bit CU header.
        .long  CU1_end-CU1_begin  # Length of Unit
CU1_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .long .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
	.long 0                # DW_AT_str_offsets_base
CU1_end:

# DWARF v5 64 bit CU header.
	.long 0xffffffff
        .quad  CU2_end-CU2_begin  # Length of Unit
CU2_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .quad .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
	.quad 0                # DW_AT_str_offsets_base
CU2_end:
        .long  CU3_end-CU3_begin  # Length of Unit
CU3_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .long .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
	.quad .str_off0        # DW_AT_str_offsets_base
CU3_end:
        .long  CU4_end-CU4_begin  # Length of Unit
CU4_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .long .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
	.quad .str_off1        # DW_AT_str_offsets_base
CU4_end:
        .long  CU5_end-CU5_begin  # Length of Unit
CU5_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .long .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
        .long .str_off2_begin  # DW_AT_str_offsets_base
CU5_end:
        .long  CU6_end-CU6_begin  # Length of Unit
CU6_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .long .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
        .long .str_off3_begin  # DW_AT_str_offsets_base
CU6_end:
	.long 0xffffffff
        .quad  CU7_end-CU7_begin  # Length of Unit
CU7_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .quad .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
	.quad .str_off4_begin  # DW_AT_str_offsets_base
CU7_end:
        .long  CU8_end-CU8_begin  # Length of Unit
CU8_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .long .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
        .long .str_off_end+16  # DW_AT_str_offsets_base
CU8_end:
	.long 0xffffffff
        .quad  CU9_end-CU9_begin  # Length of Unit
CU9_begin:
        .short 5               # DWARF version number
        .byte 1                # DWARF Unit Type
        .byte 8                # Address Size (in bytes)
        .quad .debug_abbrev    # Offset Into Abbrev. Section
        .byte 1                # Abbreviation code: DW_TAG_compile_unit
	.quad .str_off_end+8  # DW_AT_str_offsets_base
CU9_end:

        .section .debug_str_offsets,"",@progbits
# Invalid length
        .long 0xfffffff4
        .short 5    # DWARF version
        .short 0    # Padding
.str_off0:
        .long 0
# Length beyond section bounds
        .long .str_off_end-.str_off1+8
        .short 5    # DWARF version
        .short 0    # Padding
.str_off1:
        .long 0
# Length intrudes on following unit
        .long .str_off2_end-.str_off2_begin+8
        .short 5    # DWARF version
        .short 0    # Padding
.str_off2_begin:
        .long 0
.str_off2_end:
# Plain contribution, no errors here
        .long .str_off3_end-.str_off3_begin
        .short 5    # DWARF version
        .short 0    # Padding
.str_off3_begin:
        .long 0
.str_off3_end:
# 32 bit contribution referenced from a 64 bit unit
        .long .str_off4_end-.str_off4_begin
        .short 5    # DWARF version
        .short 0    # Padding
.str_off4_begin:
        .long 0
.str_off4_end:
.str_off_end:


# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: insufficient space for 32 bit header prefix
# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: insufficient space for 64 bit header prefix
# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: invalid length
# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: length exceeds section size
# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: 32 bit contribution referenced from a 64 bit unit
# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: section offset exceeds section size
# CHECK: error: invalid reference to or invalid content in .debug_str_offsets[.dwo]: section offset exceeds section size
# CHECK: error: overlapping contributions to string offsets table in section .debug_str_offsets.
