323 lines · plain
1# REQUIRES: x862# RUN: llvm-mc -filetype=obj %s -o %t.obj -triple x86_64-windows-msvc3# RUN: lld-link -entry:main -nodefaultlib %t.obj -out:%t.exe -pdb:%t.pdb -debug4# RUN: llvm-symbolizer --obj=%t.exe --relative-address \5# RUN: 0x1000 0x1003 0x1010 0x1013 | FileCheck %s6 7# Compiled from this cpp code:8# int f1(int x) {9# int y = x + 1;10# return y;11# }12# int f2(int n) {13# return f1(n);14# }15# int main() {16# return f2(100);17# }18 19.text20 .def @feat.00;21 .scl 3;22 .type 0;23 .endef24 .globl @feat.0025.set @feat.00, 026 .file "t.cpp"27 .def "?f1@@YAHH@Z";28 .scl 2;29 .type 32;30 .endef31 .globl "?f1@@YAHH@Z" # -- Begin function ?f1@@YAHH@Z32 .p2align 4, 0x9033"?f1@@YAHH@Z": # @"?f1@@YAHH@Z"34.Lfunc_begin0:35 .cv_func_id 036# %bb.0: # %entry37 .cv_file 1 "C:\\src\\tests\\t.cpp" "E6E6D87A9021656AD44E74484F5BA421" 138 39# CHECK: f1(int)40# CHECK-NEXT: t.cpp:2:1341 .cv_loc 0 1 2 13 # t.cpp:2:1342 # kill: def $ecx killed $ecx def $rcx43 leal 1(%rcx), %eax44 45# CHECK: f1(int)46# CHECK-NEXT: t.cpp:3:347 .cv_loc 0 1 3 3 # t.cpp:3:348 retq49.Ltmp0:50.Lfunc_end0:51 # -- End function52 .def "?f2@@YAHH@Z";53 .scl 2;54 .type 32;55 .endef56 .globl "?f2@@YAHH@Z" # -- Begin function ?f2@@YAHH@Z57 .p2align 4, 0x9058"?f2@@YAHH@Z": # @"?f2@@YAHH@Z"59.Lfunc_begin1:60 .cv_func_id 161# %bb.0: # %entry62# CHECK: f163# CHECK-NEXT: t.cpp:2:064# CHECK-NEXT: f2(int)65# CHECK-NEXT: t.cpp:6:1066 .cv_inline_site_id 2 within 1 inlined_at 1 6 1067 .cv_loc 2 1 2 13 # t.cpp:2:1368 # kill: def $ecx killed $ecx def $rcx69 leal 1(%rcx), %eax70.Ltmp1:71# CHECK: f2(int)72# CHECK-NEXT: t.cpp:6:373 .cv_loc 1 1 6 3 # t.cpp:6:374 retq75.Ltmp2:76.Lfunc_end1:77 # -- End function78 .def main;79 .scl 2;80 .type 32;81 .endef82 .globl main # -- Begin function main83 .p2align 4, 0x9084main: # @main85.Lfunc_begin2:86 .cv_func_id 387# %bb.0: # %entry88 .cv_loc 3 1 9 3 # t.cpp:9:389 movl $101, %eax90 retq91.Ltmp3:92.Lfunc_end2:93 # -- End function94 .section .debug$S,"dr"95 .p2align 296 .long 4 # Debug section magic97 .long 24198 .long .Ltmp5-.Ltmp4 # Subsection size99.Ltmp4:100 .short .Ltmp7-.Ltmp6 # Record length101.Ltmp6:102 .short 4412 # Record kind: S_COMPILE3103 .long 1 # Flags and language104 .short 208 # CPUType105 .short 12 # Frontend version106 .short 0107 .short 0108 .short 0109 .short 12000 # Backend version110 .short 0111 .short 0112 .short 0113 .asciz "clang version 12.0.0 (https://github.com/llvm/llvm-project.git e2e86f4e77ec2fd79743f4d0e94689e9668600ad)" # Null-terminated compiler version string114 .p2align 2115.Ltmp7:116.Ltmp5:117 .p2align 2118 .long 246 # Inlinee lines subsection119 .long .Ltmp9-.Ltmp8 # Subsection size120.Ltmp8:121 .long 0 # Inlinee lines signature122 123 # Inlined function f1 starts at t.cpp:1124 .long 4098 # Type index of inlined function125 .cv_filechecksumoffset 1 # Offset into filechecksum table126 .long 1 # Starting line number127.Ltmp9:128 .p2align 2129 .long 241 # Symbol subsection for f1130 .long .Ltmp11-.Ltmp10 # Subsection size131.Ltmp10:132 .short .Ltmp13-.Ltmp12 # Record length133.Ltmp12:134 .short 4423 # Record kind: S_GPROC32_ID135 .long 0 # PtrParent136 .long 0 # PtrEnd137 .long 0 # PtrNext138 .long .Lfunc_end0-"?f1@@YAHH@Z" # Code size139 .long 0 # Offset after prologue140 .long 0 # Offset before epilogue141 .long 4098 # Function type index142 .secrel32 "?f1@@YAHH@Z" # Function section relative address143 .secidx "?f1@@YAHH@Z" # Function section index144 .byte 0 # Flags145 .asciz "f1" # Function name146 .p2align 2147.Ltmp13:148 .short .Ltmp15-.Ltmp14 # Record length149.Ltmp14:150 .short 4114 # Record kind: S_FRAMEPROC151 .long 0 # FrameSize152 .long 0 # Padding153 .long 0 # Offset of padding154 .long 0 # Bytes of callee saved registers155 .long 0 # Exception handler offset156 .short 0 # Exception handler section157 .long 1048576 # Flags (defines frame register)158 .p2align 2159.Ltmp15:160 .short 2 # Record length161 .short 4431 # Record kind: S_PROC_ID_END162.Ltmp11:163 .p2align 2164 .cv_linetable 0, "?f1@@YAHH@Z", .Lfunc_end0165 .long 241 # Symbol subsection for f2166 .long .Ltmp17-.Ltmp16 # Subsection size167.Ltmp16:168 .short .Ltmp19-.Ltmp18 # Record length169.Ltmp18:170 .short 4423 # Record kind: S_GPROC32_ID171 .long 0 # PtrParent172 .long 0 # PtrEnd173 .long 0 # PtrNext174 .long .Lfunc_end1-"?f2@@YAHH@Z" # Code size175 .long 0 # Offset after prologue176 .long 0 # Offset before epilogue177 .long 4099 # Function type index178 .secrel32 "?f2@@YAHH@Z" # Function section relative address179 .secidx "?f2@@YAHH@Z" # Function section index180 .byte 0 # Flags181 .asciz "f2" # Function name182 .p2align 2183.Ltmp19:184 .short .Ltmp21-.Ltmp20 # Record length185.Ltmp20:186 .short 4114 # Record kind: S_FRAMEPROC187 .long 0 # FrameSize188 .long 0 # Padding189 .long 0 # Offset of padding190 .long 0 # Bytes of callee saved registers191 .long 0 # Exception handler offset192 .short 0 # Exception handler section193 .long 1048576 # Flags (defines frame register)194 .p2align 2195.Ltmp21:196 .short .Ltmp23-.Ltmp22 # Record length197.Ltmp22:198 .short 4429 # Record kind: S_INLINESITE199 .long 0 # PtrParent200 .long 0 # PtrEnd201 .long 4098 # Inlinee type index202 .cv_inline_linetable 2 1 1 .Lfunc_begin1 .Lfunc_end1203 .p2align 2204.Ltmp23:205 .short 2 # Record length206 .short 4430 # Record kind: S_INLINESITE_END207 .short 2 # Record length208 .short 4431 # Record kind: S_PROC_ID_END209.Ltmp17:210 .p2align 2211 .cv_linetable 1, "?f2@@YAHH@Z", .Lfunc_end1212 .long 241 # Symbol subsection for main213 .long .Ltmp25-.Ltmp24 # Subsection size214.Ltmp24:215 .short .Ltmp27-.Ltmp26 # Record length216.Ltmp26:217 .short 4423 # Record kind: S_GPROC32_ID218 .long 0 # PtrParent219 .long 0 # PtrEnd220 .long 0 # PtrNext221 .long .Lfunc_end2-main # Code size222 .long 0 # Offset after prologue223 .long 0 # Offset before epilogue224 .long 4100 # Function type index225 .secrel32 main # Function section relative address226 .secidx main # Function section index227 .byte 0 # Flags228 .asciz "main" # Function name229 .p2align 2230.Ltmp27:231 .short .Ltmp29-.Ltmp28 # Record length232.Ltmp28:233 .short 4114 # Record kind: S_FRAMEPROC234 .long 0 # FrameSize235 .long 0 # Padding236 .long 0 # Offset of padding237 .long 0 # Bytes of callee saved registers238 .long 0 # Exception handler offset239 .short 0 # Exception handler section240 .long 1048576 # Flags (defines frame register)241 .p2align 2242.Ltmp29:243 .short 2 # Record length244 .short 4431 # Record kind: S_PROC_ID_END245.Ltmp25:246 .p2align 2247 .cv_linetable 3, main, .Lfunc_end2248 .cv_filechecksums # File index to string table offset subsection249 .cv_stringtable # String table250 .long 241251 .long .Ltmp31-.Ltmp30 # Subsection size252.Ltmp30:253 .short .Ltmp33-.Ltmp32 # Record length254.Ltmp32:255 .short 4428 # Record kind: S_BUILDINFO256 .long 4103 # LF_BUILDINFO index257 .p2align 2258.Ltmp33:259.Ltmp31:260 .p2align 2261 .section .debug$T,"dr"262 .p2align 2263 .long 4 # Debug section magic264 # ArgList (0x1000)265 .short 0x6 # Record length266 .short 0x1201 # Record kind: LF_ARGLIST267 .long 0x0 # NumArgs268 # Procedure (0x1001)269 .short 0xe # Record length270 .short 0x1008 # Record kind: LF_PROCEDURE271 .long 0x3 # ReturnType: void272 .byte 0x0 # CallingConvention: NearC273 .byte 0x0 # FunctionOptions274 .short 0x0 # NumParameters275 .long 0x1000 # ArgListType: ()276 # FuncId (0x1002)277 .short 0xe # Record length278 .short 0x1601 # Record kind: LF_FUNC_ID279 .long 0x0 # ParentScope280 .long 0x1001 # FunctionType: void ()281 .asciz "f1" # Name282 .byte 241283 # FuncId (0x1003)284 .short 0xe # Record length285 .short 0x1601 # Record kind: LF_FUNC_ID286 .long 0x0 # ParentScope287 .long 0x1001 # FunctionType: void ()288 .asciz "f2" # Name289 .byte 241290 # FuncId (0x1004)291 .short 0x12 # Record length292 .short 0x1601 # Record kind: LF_FUNC_ID293 .long 0x0 # ParentScope294 .long 0x1001 # FunctionType: void ()295 .asciz "main" # Name296 .byte 243297 .byte 242298 .byte 241299 # StringId (0x1005)300 .short 0x16 # Record length301 .short 0x1605 # Record kind: LF_STRING_ID302 .long 0x0 # Id303 .asciz "C:\\src\\tests" # StringData304 .byte 243305 .byte 242306 .byte 241307 # StringId (0x1006)308 .short 0xe # Record length309 .short 0x1605 # Record kind: LF_STRING_ID310 .long 0x0 # Id311 .asciz "<stdin>" # StringData312 # BuildInfo (0x1007)313 .short 0x1a # Record length314 .short 0x1603 # Record kind: LF_BUILDINFO315 .short 0x5 # NumArgs316 .long 0x1005 # Argument: C:\src\tests317 .long 0x0 # Argument318 .long 0x1006 # Argument: <stdin>319 .long 0x0 # Argument320 .long 0x0 # Argument321 .byte 242322 .byte 241323