.equ CV_SIGNATURE_C13, 4 .equ DEBUG_S_SYMBOLS, 0xf1 .equ T_VOID, 0x0003 .equ T_UINT4, 0x0075 .equ LF_MODIFIER, 0x1001 .equ LF_PROCEDURE, 0x1008 .equ LF_ARGLIST, 0x1201 .equ LF_FUNC_ID, 0x1601 .equ LF_BUILDINFO, 0x1603 .equ LF_STRING_ID, 0x1605 .equ S_END, 0x0006 .equ S_FRAMEPROC, 0x1012 .equ S_OBJNAME, 0x1101 .equ S_THUNK32, 0x1102 .equ S_BLOCK32, 0x1103 .equ S_LABEL32, 0x1105 .equ S_REGISTER, 0x1106 .equ S_BPREL32, 0x110b .equ S_GPROC32, 0x1110 .equ S_REGREL32, 0x1111 .equ S_UNAMESPACE, 0x1124 .equ S_FRAMECOOKIE, 0x113a .equ S_COMPILE3, 0x113c .equ S_LOCAL, 0x113e .equ S_DEFRANGE_REGISTER, 0x1141 .equ S_DEFRANGE_FRAMEPOINTER_REL, 0x1142 .equ S_DEFRANGE_SUBFIELD_REGISTER, 0x1143 .equ S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE, 0x1144 .equ S_DEFRANGE_REGISTER_REL, 0x1145 .equ S_BUILDINFO, 0x114c .equ S_INLINESITE, 0x114d .equ S_INLINESITE_END, 0x114e .equ S_HEAPALLOCSITE, 0x115e .equ CV_AMD64_RAX, 328 .equ CV_CFL_AMD64, 0xd0 .section ".debug$S", "rn" .long CV_SIGNATURE_C13 .long DEBUG_S_SYMBOLS .long .syms_end - .syms_start .syms_start: .objname1: .short .compile1 - .objname1 - 2 .short S_OBJNAME .long 0 # signature .asciz "syms3.o" .compile1: .short .unamespace1 - .compile1 - 2 .short S_COMPILE3 .long 0 # flags .short CV_CFL_AMD64 # target processor .short 0 # frontend major .short 0 # frontend minor .short 0 # frontend build .short 0 # frontend qfe .short 0 # backend major .short 0 # backend minor .short 0 # backend build .short 0 # backend qfe .asciz "GNU AS" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .unamespace1: .short .sbuildinfo1 - .unamespace1 - 2 .short S_UNAMESPACE .asciz "std" .sbuildinfo1: .short .gproc1 - .sbuildinfo1 - 2 .short S_BUILDINFO .long 0x1007 # type .gproc1: .short .frameproc1 - .gproc1 - 2 .short S_GPROC32 .long 0 # parent .long 0 # end .long 0 # next symbol .long .proc1_end - proc1 # length .long 0 # debug start offset .long 0 # debug end offset .long 0x1001 # type .secrel32 proc1 .secidx proc1 .byte 0 # flags .asciz "proc1" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .frameproc1: .short .framecookie1 - .frameproc1 - 2 .short S_FRAMEPROC .long 0 # frame size .long 0 # frame padding .long 0 # padding offset .long 0 # size of callee-save registers .long 0 # offset of exception handler .short 0 # section of exception handler .long 0 # flags .byte 0xf2 # padding .byte 0xf1 # padding .framecookie1: .short .bprel1 - .framecookie1 - 2 .short S_FRAMECOOKIE .long 8 # frame-relative offset .short CV_AMD64_RAX # register .long 0 # cookie type (CV_COOKIETYPE_COPY) .byte 0 # flags .byte 0xf1 # padding .bprel1: .short .reg1 - .bprel1 - 2 .short S_BPREL32 .long 4 # BP-relative offset .long 0x1008 # type .asciz "foo" .reg1: .short .regrel1 - .reg1 - 2 .short S_REGISTER .long 0x1008 # type .short CV_AMD64_RAX .asciz "bar" .byte 0xf2 # padding .byte 0xf1 # padding .regrel1: .short .local1 - .regrel1 - 2 .short S_REGREL32 .long 4 # offset .long 0x1008 # type .short CV_AMD64_RAX .asciz "baz" .byte 0xf2 # padding .byte 0xf1 # padding .local1: .short .defrange1 - .local1 - 2 .short S_LOCAL .long 0x1008 # type .short 0 # flags .asciz "local1" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .defrange1: .short .local2 - .defrange1 - 2 .short S_DEFRANGE_REGISTER_REL .short CV_AMD64_RAX .short 0 # offset parent .long 0 # offset register .secrel32 .block1 # offset .secidx .block1 # section .short .block1_end - .block1 # length .short .gap1 - .block1 # gap 1 offset .short .gap1_end - .gap1 # gap 1 length .local2: .short .defrange2 - .local2 - 2 .short S_LOCAL .long 0x1008 # type .short 0 # flags .asciz "local2" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .defrange2: .short .local3 - .defrange2 - 2 .short S_DEFRANGE_FRAMEPOINTER_REL .long 4 # frame pointer offset .secrel32 .block1 # offset .secidx .block1 # section .short .block1_end - .block1 # length .short .gap1 - .block1 # gap 1 offset .short .gap1_end - .gap1 # gap 1 length .local3: .short .defrange3 - .local3 - 2 .short S_LOCAL .long 0x1008 # type .short 0 # flags .asciz "local3" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .defrange3: .short .local4 - .defrange3 - 2 .short S_DEFRANGE_SUBFIELD_REGISTER .short CV_AMD64_RAX .short 0 # attributes .long 4 # offset in parent variable .secrel32 .block1 # offset .secidx .block1 # section .short .block1_end - .block1 # length .short .gap1 - .block1 # gap 1 offset .short .gap1_end - .gap1 # gap 1 length .local4: .short .defrange4 - .local4 - 2 .short S_LOCAL .long 0x1008 # type .short 0 # flags .asciz "local4" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .defrange4: .short .local5 - .defrange4 - 2 .short S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE .long 4 # frame pointer offset .local5: .short .defrange5 - .local5 - 2 .short S_LOCAL .long 0x1008 # type .short 0 # flags .asciz "local5" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .defrange5: .short .inlinesite1 - .defrange5 - 2 .short S_DEFRANGE_REGISTER .short CV_AMD64_RAX .short 0 # attributes .secrel32 .block1 # offset .secidx .block1 # section .short .block1_end - .block1 # length .short .gap1 - .block1 # gap 1 offset .short .gap1_end - .gap1 # gap 1 length .inlinesite1: .short .inlinesite1end - .inlinesite1 - 2 .short S_INLINESITE .long 0 # parent .long 0 # end .long 0x1009 # inlinee (inline_func) .inlinesite1end: .short .sblock1 - .inlinesite1end - 2 .short S_INLINESITE_END .sblock1: .short .label1 - .sblock1 - 2 .short S_BLOCK32 .long 0 # parent (filled in by linker) .long 0 # end (filled in by linker) .long .block1_end - .block1 # length .secrel32 .block1 .secidx .block1 .byte 0 # name .byte 0xf1 # padding .label1: .short .sblock1_end - .label1 - 2 .short S_LABEL32 .secrel32 label .secidx label .byte 0 # flags .asciz "label" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding .sblock1_end: .short .thunk1 - .sblock1_end - 2 .short S_END .thunk1: .short .thunk1_end - .thunk1 - 2 .short S_THUNK32 .long 0 # parent .long 0 # end .long 0 # next .secrel32 thunk .secidx thunk .short .thunk_end - thunk .byte 0 # THUNK_ORDINAL value .asciz "thunk" .byte 0xf1 # padding .thunk1_end: .short .heapallocsite1 - .thunk1_end - 2 .short S_END .heapallocsite1: .short .gproc1_end - .heapallocsite1 - 2 .short S_HEAPALLOCSITE .secrel32 .gap1_end .secidx .gap1_end .short .block1_end - .gap1_end .long 0x1008 # type .gproc1_end: .short .syms_end - .gproc1_end - 2 .short S_END .syms_end: .section ".debug$T", "rn" .long CV_SIGNATURE_C13 # Type 1000, arglist (uint32_t) .arglist1: .short .proctype1 - .arglist1 - 2 .short LF_ARGLIST .long 1 # no. entries .long T_UINT4 # Type 1001, procedure (return type T_VOID, arglist 1000) .proctype1: .short .string1 - .proctype1 - 2 .short LF_PROCEDURE .long T_VOID .byte 0 # calling convention .byte 0 # attributes .short 1 # no. parameters .long 0x1000 # Type 1002, string "/tmp" (build directory) .string1: .short .string2 - .string1 - 2 .short LF_STRING_ID .long 0 # sub-string .asciz "/tmp" .byte 0xf3 # padding .byte 0xf2 # padding .byte 0xf1 # padding # Type 1003, string "gcc" (compiler) .string2: .short .string3 - .string2 - 2 .short LF_STRING_ID .long 0 # sub-string .asciz "gcc" # Type 1004, string "tmp.c" (source file) .string3: .short .string4 - .string3 - 2 .short LF_STRING_ID .long 0 # sub-string .asciz "tmp.c" .byte 0xf2 # padding .byte 0xf1 # padding # Type 1005, string "tmp.pdb" (PDB file) .string4: .short .string5 - .string4 - 2 .short LF_STRING_ID .long 0 # sub-string .asciz "tmp.pdb" # Type 1006, string "-gcodeview" (command arguments) .string5: .short .buildinfo1 - .string5 - 2 .short LF_STRING_ID .long 0 # sub-string .asciz "-gcodeview" .byte 0xf1 # padding # Type 1007, build info .buildinfo1: .short .mod1 - .buildinfo1 - 2 .short LF_BUILDINFO .short 5 # count .long 0x1002 # build directory .long 0x1003 # compiler .long 0x1004 # source file .long 0x1005 # PDB file .long 0x1006 # command arguments .byte 0xf2 # padding .byte 0xf1 # padding # Type 1008, const uint32_t .mod1: .short .funcid1 - .mod1 - 2 .short LF_MODIFIER .long T_UINT4 .short 1 # const .p2align 2 # Type 1009, func ID for inline_func .funcid1: .short .types_end - .funcid1 - 2 .short LF_FUNC_ID .long 0 # parent scope .long 0x1001 # type .asciz "inline_func" .types_end: .text .global proc1 proc1: nop .block1: nop label: nop .gap1: nop .gap1_end: nop .block1_end: nop .proc1_end: thunk: nop .thunk_end: