1 # Test .debug_info can reference .debug_ranges entries without ordering the 2 # offsets strictly as increasing. 3 4 .text 5 start: 6 .byte 1 7 sub: 8 .byte 2 9 end: 10 11 .section .debug_ranges,"",@progbits 12 range: 13 14 range_sub: 15 data4.ua @secrel(sub), @secrel(end) 16 data4.ua 0, 0 /* range terminator */ 17 18 range_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 */ 24 debugS: 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 */ 35 debugE: 36 37 .section .debug_abbrev,"",@progbits 38 abbrev0: 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