1# Test .debug_info can reference .debug_ranges entries without ordering the
2# offsets strictly as increasing.
3
4	.text
5start:
6	.byte	1
7sub:
8	.byte	2
9end:
10
11	.section	.debug_ranges,"",@progbits
12range:
13
14range_sub:
15	data4.ua	@secrel(sub), @secrel(end)
16	data4.ua	0, 0	/* range terminator  */
17
18range_cu:
19	data4.ua	@secrel(start), @secrel(end)
20	data4.ua	0, 0	/* range terminator  */
21
22	.section	.debug_info,"",@progbits
23	data4.ua	debugE - debugS	/* Length of Compilation Unit Info  */
24debugS:
25	.short	0x2	/* DWARF version number  */
26	data4.ua	@secrel(abbrev0) /* Offset Into Abbrev. Section  */
27	.byte	0x4	/* Pointer Size (in bytes)  */
28
29	.uleb128 0x1	/* (DIE (0xb) DW_TAG_compile_unit)  */
30	data4.ua	range_cu - range	/* DW_AT_ranges  */
31
32	.uleb128 0x2	/* (DIE (0x6d) DW_TAG_subprogram)  */
33	.ascii "A\0"	/* DW_AT_name */
34	data4.ua	range_sub - range	/* DW_AT_ranges  */
35debugE:
36
37	.section	.debug_abbrev,"",@progbits
38abbrev0:
39	.uleb128 0x1	/* (abbrev code)  */
40	.uleb128 0x11	/* (TAG: DW_TAG_compile_unit)  */
41	.byte	0x0	/* DW_children_no  */
42	.uleb128 0x55	/* (DW_AT_ranges)  */
43	.uleb128 0x6	/* (DW_FORM_data4)  */
44	.byte	0x0
45	.byte	0x0
46
47	.uleb128 0x2	/* (abbrev code)  */
48	.uleb128 0x2e	/* (TAG: DW_TAG_subprogram)  */
49	.byte	0x0	/* DW_children_no  */
50	.uleb128 0x3	/* (DW_AT_name)  */
51	.uleb128 0x8	/* (DW_FORM_string)  */
52	.uleb128 0x55	/* (DW_AT_ranges)  */
53	.uleb128 0x6	/* (DW_FORM_data4) */
54	.byte	0x0
55	.byte	0x0
56
57	.byte	0x0	/* abbrevs terminator  */
58