[WebAssembly] Move .debug_line section address of dead function outside section range
Summary:
Currently we are pointing all debug information that refer removed function code
to the beginning of the code section (offset = 0). A debugger may want to
resolve code offset to the debug information, which will collide with offsets
of the live functions.
Moving offsets of dead functions outside code section range.
Reviewers: sbc100
Reviewed By: sbc100
Subscribers: dblaikie, ruiu, alexcrichton, dschuff, aprantl, jgravelle-google, aheejin, sunfish, JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D49446
llvm-svn: 342930
2018-09-25 07:50:55 +08:00
; RUN: llc -filetype=obj < %s -o %t.o
; RUN: wasm-ld %t.o --no-entry --export=foo -o %t.wasm
; RUN: llvm-dwarfdump -debug-line %t.wasm | FileCheck %s
; CHECK: Address
; CHECK: 0x0000000000000005
; CHECK: 0x0000000000000000
; ModuleID = 't.bc'
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
target triple = "wasm32-unknown-unknown-wasm"
; Function Attrs: noinline nounwind optnone
define hidden i32 @foo ( ) #0 !dbg !7 {
entry:
ret i32 42 , !dbg !11
}
; Function Attrs: noinline nounwind optnone
define hidden i32 @bar ( ) #0 !dbg !12 {
entry:
ret i32 6 , !dbg !13
}
2019-12-25 08:11:33 +08:00
attributes #0 = { noinline nounwind optnone "correctly-rounded-divide-sqrt-fp-math" = "false" "disable-tail-calls" = "false" "less-precise-fpmad" = "false" "frame-pointer" = "none" "no-infs-fp-math" = "false" "no-jump-tables" = "false" "no-nans-fp-math" = "false" "no-signed-zeros-fp-math" = "false" "no-trapping-math" = "false" "stack-protector-buffer-size" = "8" "target-cpu" = "generic" "unsafe-fp-math" = "false" "use-soft-float" = "false" }
[WebAssembly] Move .debug_line section address of dead function outside section range
Summary:
Currently we are pointing all debug information that refer removed function code
to the beginning of the code section (offset = 0). A debugger may want to
resolve code offset to the debug information, which will collide with offsets
of the live functions.
Moving offsets of dead functions outside code section range.
Reviewers: sbc100
Reviewed By: sbc100
Subscribers: dblaikie, ruiu, alexcrichton, dschuff, aprantl, jgravelle-google, aheejin, sunfish, JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D49446
llvm-svn: 342930
2018-09-25 07:50:55 +08:00
!llvm.dbg.cu = ! { !0 }
!llvm.module.flags = ! { !3 , !4 , !5 }
!llvm.ident = ! { !6 }
!0 = distinct !DICompileUnit ( language: D W _ L A N G _ C 99 , file: !1 , producer: "clang version 7.0.0 (trunk 337293)" , isOptimized: false , runtimeVersion: 0 , emissionKind: F u l l D e b u g , enums: !2 )
!1 = !DIFile ( filename: "t.c" , directory: "/d/y" )
!2 = ! { }
!3 = ! { i32 2 , !"Dwarf Version" , i32 4 }
!4 = ! { i32 2 , !"Debug Info Version" , i32 3 }
!5 = ! { i32 1 , !"wchar_size" , i32 4 }
!6 = ! { !"clang version 7.0.0 (trunk 337293)" }
!7 = distinct !DISubprogram ( name: "foo" , scope: !1 , file: !1 , line: 1 , type: !8 , isLocal: false , isDefinition: true , scopeLine: 1 , isOptimized: false , unit: !0 , retainedNodes: !2 )
!8 = !DISubroutineType ( types: !9 )
!9 = ! { !10 }
!10 = !DIBasicType ( name: "int" , size: 32 , encoding: D W _ A T E _ s i g n e d )
!11 = !DILocation ( line: 2 , column: 3 , scope: !7 )
!12 = distinct !DISubprogram ( name: "bar" , scope: !1 , file: !1 , line: 5 , type: !8 , isLocal: false , isDefinition: true , scopeLine: 5 , isOptimized: false , unit: !0 , retainedNodes: !2 )
!13 = !DILocation ( line: 6 , column: 3 , scope: !12 )