1# RUN: llvm-mc %s -filetype obj -triple x86_64-apple-darwin -o - \
2# RUN: | not llvm-dwarfdump -verify - \
3# RUN: | FileCheck %s
4
5# CHECK: Verifying .apple_names...
6# CHECK-NEXT:	error: Bucket[0] has invalid hash index: 4294967294.
7# CHECK-NEXT:	error: Hash[0] has invalid HashData offset: 0x000000b4.
8# CHECK-NEXT:	error: .apple_names Bucket[1] Hash[1] = 0x0002b60f Str[0] = 0x0000005a DIE[0] = 0x00000001 is not a valid DIE offset for "j".
9
10# This test is meant to verify that the -verify option
11# in llvm-dwarfdump, correctly identifies
12# an invalid hash index for bucket[0] in the .apple_names section,
13# an invalid HashData offset for Hash[0], as well as
14# an invalid DIE offset in the .debug_info section.
15# We're reading an invalid DIE due to the incorrect interpretation of DW_FORM for the DIE.
16# Instead of DW_FORM_data4 the Atom[0].form is: DW_FORM_flag_present.
17
18	.section	__TEXT,__text,regular,pure_instructions
19	.file	1 "basic.c"
20	.comm	_i,4,2                  ## @i
21	.comm	_j,4,2                  ## @j
22	.section	__DWARF,__debug_str,regular,debug
23Linfo_string:
24	.asciz	"Apple LLVM version 8.1.0 (clang-802.0.35)" ## string offset=0
25	.asciz	"basic.c"               ## string offset=42
26	.asciz	"/Users/sgravani/Development/tests" ## string offset=50
27	.asciz	"i"                     ## string offset=84
28	.asciz	"int"                   ## string offset=86
29	.asciz	"j"                     ## string offset=90
30	.section	__DWARF,__debug_info,regular,debug
31Lsection_info:
32	.section	__DWARF,__apple_names,regular,debug
33Lnames_begin:
34	.long	1212240712              ## Header Magic
35	.short	1                       ## Header Version
36	.short	0                       ## Header Hash Function
37	.long	2                       ## Header Bucket Count
38	.long	2                       ## Header Hash Count
39	.long	12                      ## Header Data Length
40	.long	0                       ## HeaderData Die Offset Base
41	.long	1                       ## HeaderData Atom Count
42	.short	1                       ## DW_ATOM_die_offset
43	.short	25                       ## DW_FORM_data4 -- error: .apple_names Bucket[1] Hash[1] = 0x0002b60f Str[0] = 0x0000005a DIE[0] = 0x00000001 is not a valid DIE offset for "j".
44	.long	-2                      ## Bucket 0 -- error: Bucket[0] has invalid hash index: 4294967294.
45	.long	1                       ## Bucket 1
46	.long	177678                  ## Hash in Bucket 0
47	.long	177679                  ## Hash in Bucket 1
48	.long	Lsection_line    ## Offset in Bucket 0 -- error: Hash[0] has invalid HashData offset: 0x000000b4.
49	.long	LNames1-Lnames_begin    ## Offset in Bucket 1
50LNames0:
51	.long	84                      ## i
52	.long	1                       ## Num DIEs
53	.long	30
54	.long	0
55LNames1:
56	.long	90                      ## j
57	.long	1                       ## Num DIEs
58	.long	58
59	.long	0
60
61.subsections_via_symbols
62	.section	__DWARF,__debug_line,regular,debug
63Lsection_line:
64Lline_table_start0:
65