1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker// Test that .debug_line is populated. TODO: This test should really be using 4*9880d681SAndroid Build Coastguard Worker// llvm-dwarfdump, but it cannot parse this particular object file. The content 5*9880d681SAndroid Build Coastguard Worker// of .debug_line was checked using GNU binutils: 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker// $ objdump --dwarf=decodedline debug-line.o 8*9880d681SAndroid Build Coastguard Worker// [...] 9*9880d681SAndroid Build Coastguard Worker// File name Line number Starting address 10*9880d681SAndroid Build Coastguard Worker// foo.c 4 0 11*9880d681SAndroid Build Coastguard Worker// foo.c 5 0x4 12*9880d681SAndroid Build Coastguard Worker// foo.c 6 0x5 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker// CHECK: Section { 15*9880d681SAndroid Build Coastguard Worker// CHECK: Name: .debug_line 16*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Type: SHT_PROGBITS 17*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Flags [ 18*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ] 19*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Address: 0x0 20*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Offset: 21*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Size: 57 22*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Link: 0 23*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: Info: 0 24*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: AddressAlignment: 1 25*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: EntrySize: 0 26*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: SectionData ( 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0000: 35000000 02001C00 00000101 FB0E0D00 29*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0010: 01010101 00000001 00000100 666F6F2E 30*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0020: 63000000 00000009 02000000 00000000 31*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: 0030: 00154B21 02080001 01 32*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: ) 33*9880d681SAndroid Build Coastguard Worker// CHECK-NEXT: } 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker .section .debug_line,"",@progbits 36*9880d681SAndroid Build Coastguard Worker .text 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker .file 1 "foo.c" 39*9880d681SAndroid Build Coastguard Worker .loc 1 4 0 40*9880d681SAndroid Build Coastguard Worker subq $8, %rsp 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker// Test that .loc works with values, not just instructions. 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker .loc 1 5 0 45*9880d681SAndroid Build Coastguard Worker .byte 0xc3 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker .loc 1 6 0 48*9880d681SAndroid Build Coastguard Workerl: 49*9880d681SAndroid Build Coastguard Worker .quad l 50