diff options
Diffstat (limited to 'ld/testsuite/ld-pe/pdb-syms1b.s')
-rw-r--r-- | ld/testsuite/ld-pe/pdb-syms1b.s | 737 |
1 files changed, 737 insertions, 0 deletions
diff --git a/ld/testsuite/ld-pe/pdb-syms1b.s b/ld/testsuite/ld-pe/pdb-syms1b.s new file mode 100644 index 0000000..ddc4711 --- /dev/null +++ b/ld/testsuite/ld-pe/pdb-syms1b.s @@ -0,0 +1,737 @@ +.equ CV_SIGNATURE_C13, 4 +.equ DEBUG_S_SYMBOLS, 0xf1 + +.equ T_VOID, 0x0003 +.equ T_UQUAD, 0x0023 +.equ T_UINT4, 0x0075 + +.equ LF_MODIFIER, 0x1001 +.equ LF_POINTER, 0x1002 +.equ LF_PROCEDURE, 0x1008 +.equ LF_MFUNCTION, 0x1009 +.equ LF_ARGLIST, 0x1201 +.equ LF_FIELDLIST, 0x1203 +.equ LF_CLASS, 0x1504 +.equ LF_STRUCTURE, 0x1505 +.equ LF_MEMBER, 0x150d +.equ LF_ONEMETHOD, 0x1511 +.equ LF_FUNC_ID, 0x1601 +.equ LF_MFUNC_ID, 0x1602 + +.equ LF_UQUADWORD, 0x800a + +.equ S_END, 0x0006 +.equ S_CONSTANT, 0x1107 +.equ S_UDT, 0x1108 +.equ S_LDATA32, 0x110c +.equ S_GDATA32, 0x110d +.equ S_LPROC32, 0x110f +.equ S_GPROC32, 0x1110 +.equ S_LTHREAD32, 0x1112 +.equ S_GTHREAD32, 0x1113 +.equ S_LPROC32_ID, 0x1146 +.equ S_GPROC32_ID, 0x1147 +.equ S_PROC_ID_END, 0x114f + +.equ CV_PTR_64, 0xc + +.section ".debug$S", "rn" + +.long CV_SIGNATURE_C13 + +.long DEBUG_S_SYMBOLS +.long .syms_end - .syms_start + +.syms_start: + +.ldata1: +.short .ldata1a - .ldata1 - 2 +.short S_LDATA32 +.long 0x1000 # const uint32_t +.secrel32 lvar1 +.secidx lvar1 +.asciz "lvar1" + +.ldata1a: # duplicate with same address +.short .ldata1b - .ldata1a - 2 +.short S_LDATA32 +.long 0x1000 # const uint32_t +.secrel32 lvar1 +.secidx lvar1 +.asciz "lvar1" + +.ldata1b: # duplicate with different address +.short .ldata2 - .ldata1b - 2 +.short S_LDATA32 +.long 0x1000 # const uint32_t +.secrel32 lvar1a +.secidx lvar1a +.asciz "lvar1" + +.ldata2: +.short .gdata1 - .ldata2 - 2 +.short S_LDATA32 +.long 0x1000 # const uint32_t +.secrel32 lvar2 +.secidx lvar2 +.asciz "lvar2" + +.gdata1: +.short .gdata2 - .gdata1 - 2 +.short S_GDATA32 +.long 0x1000 # const uint32_t +.secrel32 gvar1 +.secidx gvar1 +.asciz "gvar1" + +.gdata2: +.short .gproc1 - .gdata2 - 2 +.short S_GDATA32 +.long 0x1000 # const uint32_t +.secrel32 gvar2 +.secidx gvar2 +.asciz "gvar2" + +.gproc1: +.short .gproc1_end - .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 0x1002 # type +.secrel32 proc1 +.secidx proc1 +.byte 0 # flags +.asciz "proc1" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc1_end: +.short .gproc2 - .gproc1_end - 2 +.short S_END + +.gproc2: +.short .udt1 - .gproc2 - 2 +.short S_GPROC32 +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc2_end - proc2 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x1002 # type +.secrel32 proc2 +.secidx proc2 +.byte 0 # flags +.asciz "proc2" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.udt1: +.short .ldata3 - .udt1 - 2 +.short S_UDT +.long 0x1011 # struct bar +.asciz "bar" + +.ldata3: +.short .lthread1 - .ldata3 - 2 +.short S_LDATA32 +.long 0x1000 # const uint32_t +.secrel32 lvar3 +.secidx lvar3 +.asciz "lvar3" + +.lthread1: +.short .gproc2_end - .lthread1 - 2 +.short S_LTHREAD32 +.long 0x1000 # const uint32_t +.secrel32 lvar4 +.secidx lvar4 +.asciz "lvar4" + +.gproc2_end: +.short .gproc3 - .gproc2_end - 2 +.short S_END + +.gproc3: +.short .gproc3_end - .gproc3 - 2 +.short S_LPROC32 +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc3_end - proc3 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x1002 # type +.secrel32 proc3 +.secidx proc3 +.byte 0 # flags +.asciz "proc3" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc3_end: +.short .gproc4 - .gproc3_end - 2 +.short S_END + +.gproc4: +.short .gproc4_end - .gproc4 - 2 +.short S_LPROC32 +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc4_end - proc4 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x1002 # type +.secrel32 proc4 +.secidx proc4 +.byte 0 # flags +.asciz "proc4" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc4_end: +.short .gproc5 - .gproc4_end - 2 +.short S_END + +.gproc5: +.short .gproc5_end - .gproc5 - 2 +.short S_GPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc5_end - proc5 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x1003 # func ID +.secrel32 proc5 +.secidx proc5 +.byte 0 # flags +.asciz "proc5" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc5_end: +.short .gproc6 - .gproc5_end - 2 +.short S_PROC_ID_END + +.gproc6: +.short .gproc6_end - .gproc6 - 2 +.short S_GPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc6_end - proc6 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x1004 # func ID +.secrel32 proc6 +.secidx proc6 +.byte 0 # flags +.asciz "proc6" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc6_end: +.short .gproc7 - .gproc6_end - 2 +.short S_PROC_ID_END + +.gproc7: +.short .gproc7_end - .gproc7 - 2 +.short S_GPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc7_end - proc7 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x100a # func ID +.secrel32 proc7 +.secidx proc7 +.byte 0 # flags +.asciz "foo::method" +.byte 0xf1 # padding + +.gproc7_end: +.short .gproc8 - .gproc7_end - 2 +.short S_PROC_ID_END + +.gproc8: +.short .gproc8_end - .gproc8 - 2 +.short S_GPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc8_end - proc8 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x100b # func ID +.secrel32 proc8 +.secidx proc8 +.byte 0 # flags +.asciz "foo::method2" + +.gproc8_end: +.short .gproc9 - .gproc8_end - 2 +.short S_PROC_ID_END + +.gproc9: +.short .gproc9_end - .gproc9 - 2 +.short S_LPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc9_end - proc9 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x100c # func ID +.secrel32 proc9 +.secidx proc9 +.byte 0 # flags +.asciz "proc9" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc9_end: +.short .gproc10 - .gproc9_end - 2 +.short S_PROC_ID_END + +.gproc10: +.short .gproc10_end - .gproc10 - 2 +.short S_GPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc10_end - proc10 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x100d # func ID +.secrel32 proc10 +.secidx proc10 +.byte 0 # flags +.asciz "proc10" +.byte 0xf2 # padding +.byte 0xf1 # padding + +.gproc10_end: +.short .gproc11 - .gproc10_end - 2 +.short S_PROC_ID_END + +.gproc11: +.short .gproc11_end - .gproc11 - 2 +.short S_LPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc11_end - proc11 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x100e # func ID +.secrel32 proc11 +.secidx proc11 +.byte 0 # flags +.asciz "foo::method3" + +.gproc11_end: +.short .gproc12 - .gproc11_end - 2 +.short S_PROC_ID_END + +.gproc12: +.short .gproc12_end - .gproc12 - 2 +.short S_LPROC32_ID +.long 0 # parent +.long 0 # end +.long 0 # next symbol +.long .proc12_end - proc12 # length +.long 0 # debug start offset +.long 0 # debug end offset +.long 0x100f # func ID +.secrel32 proc12 +.secidx proc12 +.byte 0 # flags +.asciz "foo::method4" + +.gproc12_end: +.short .udt2 - .gproc12_end - 2 +.short S_PROC_ID_END + +.udt2: +.short .constant1 - .udt2 - 2 +.short S_UDT +.long 0x1009 # class foo +.asciz "foo" + +.constant1: +.short .constant2 - .constant1 - 2 +.short S_CONSTANT +.long T_UINT4 +.short 42 +.asciz "answer" +.byte 0xf3 # padding +.byte 0xf2 # padding +.byte 0xf1 # padding + +.constant2: +.short .lthread2 - .constant2 - 2 +.short S_CONSTANT +.long T_UQUAD +.short LF_UQUADWORD +.quad 0x0123456789abcdef +.asciz "answer2" +.byte 0xf2 # padding +.byte 0xf1 # padding + +.lthread2: +.short .lthread3 - .lthread2 - 2 +.short S_LTHREAD32 +.long 0x1000 # const uint32_t +.secrel32 lvar5 +.secidx lvar5 +.asciz "lvar5" + +.lthread3: +.short .gthread1 - .lthread3 - 2 +.short S_LTHREAD32 +.long 0x1000 # const uint32_t +.secrel32 lvar6 +.secidx lvar6 +.asciz "lvar6" + +.gthread1: +.short .gthread2 - .gthread1 - 2 +.short S_GTHREAD32 +.long 0x1000 # const uint32_t +.secrel32 gvar3 +.secidx gvar3 +.asciz "gvar3" + +.gthread2: +.short .syms_end - .gthread2 - 2 +.short S_GTHREAD32 +.long 0x1000 # const uint32_t +.secrel32 gvar4 +.secidx gvar4 +.asciz "gvar4" + +.p2align 2 +.syms_end: + +.section ".debug$T", "rn" + +.long CV_SIGNATURE_C13 + +# Type 1000, const uint32_t +.mod1: +.short .arglist1 - .mod1 - 2 +.short LF_MODIFIER +.long T_UINT4 +.short 1 # const +.p2align 2 + +# Type 1001, arglist (uint32_t) +.arglist1: +.short .proctype1 - .arglist1 - 2 +.short LF_ARGLIST +.long 1 # no. entries +.long T_UINT4 + +# Type 1002, procedure (return type T_VOID, arglist 1001) +.proctype1: +.short .funcid1 - .proctype1 - 2 +.short LF_PROCEDURE +.long T_VOID +.byte 0 # calling convention +.byte 0 # attributes +.short 1 # no. parameters +.long 0x1001 + +# Type 1003, func ID for proc5 +.funcid1: +.short .funcid2 - .funcid1 - 2 +.short LF_FUNC_ID +.long 0 # parent scope +.long 0x1002 # type +.asciz "proc5" +.byte 0xf2 # padding +.byte 0xf1 # padding + +# Type 1004, func ID for proc6 +.funcid2: +.short .class1 - .funcid2 - 2 +.short LF_FUNC_ID +.long 0 # parent scope +.long 0x1002 # type +.asciz "proc6" +.byte 0xf2 # padding +.byte 0xf1 # padding + +# Type 1005, forward declaration of class foo +.class1: +.short .ptr1 - .class1 - 2 +.short LF_CLASS +.short 0 # no. members +.short 0x80 # property (forward declaration) +.long 0 # field list +.long 0 # type derived from +.long 0 # type of vshape table +.short 0 # size +.asciz "foo" # name +.byte 0xf2 # padding +.byte 0xf1 # padding + +# Type 1006, pointer to 1005 +.ptr1: +.short .mfunction1 - .ptr1 - 2 +.short LF_POINTER +.long 0x1005 +.long (8 << 13) | CV_PTR_64 + +# Type 1007, member function of 1005, return type void, arg list 1001 +.mfunction1: +.short .fieldlist1 - .mfunction1 - 2 +.short LF_MFUNCTION +.long T_VOID +.long 0x1005 +.long 0x1006 # type of "this" pointer +.byte 0 # calling convention +.byte 0 # attributes +.short 1 # no. parameters +.long 0x1001 # arg list +.long 0 # "this" adjustment + +# Type 1008, field list for class foo +.fieldlist1: +.short .class2 - .fieldlist1 - 2 +.short LF_FIELDLIST +.short LF_ONEMETHOD +.short 0 # method attribute +.long 0x1007 # method type +.asciz "method" +.byte 0xf1 # padding +.short LF_ONEMETHOD +.short 0 # method attribute +.long 0x1007 # method type +.asciz "method2" +.short LF_ONEMETHOD +.short 0 # method attribute +.long 0x1007 # method type +.asciz "method3" +.short LF_ONEMETHOD +.short 0 # method attribute +.long 0x1007 # method type +.asciz "method4" + +# Type 1009, actual declaration of class foo +.class2: +.short .mfunc1 - .class2 - 2 +.short LF_CLASS +.short 0 # no. members +.short 0 # property +.long 0x1008 # field list +.long 0 # type derived from +.long 0 # type of vshape table +.short 0 # size +.asciz "foo" # name +.byte 0xf2 # padding +.byte 0xf1 # padding + +# Type 100a, function "method" within class "foo" +.mfunc1: +.short .mfunc2 - .mfunc1 - 2 +.short LF_MFUNC_ID +.long 0x1009 # parent class +.long 0x1002 # function type +.asciz "method" +.byte 0xf1 # padding + +# Type 100b, function "method2" within class "foo" +.mfunc2: +.short .funcid3 - .mfunc2 - 2 +.short LF_MFUNC_ID +.long 0x1009 # parent class +.long 0x1002 # function type +.asciz "method2" + +# Type 100c, func ID for proc9 +.funcid3: +.short .funcid4 - .funcid3 - 2 +.short LF_FUNC_ID +.long 0 # parent scope +.long 0x1002 # type +.asciz "proc9" +.byte 0xf2 # padding +.byte 0xf1 # padding + +# Type 100d, func ID for proc10 +.funcid4: +.short .mfunc3 - .funcid4 - 2 +.short LF_FUNC_ID +.long 0 # parent scope +.long 0x1002 # type +.asciz "proc10" +.byte 0xf1 # padding + +# Type 100e, function "method3" within class "foo" +.mfunc3: +.short .mfunc4 - .mfunc3 - 2 +.short LF_MFUNC_ID +.long 0x1009 # parent class +.long 0x1002 # function type +.asciz "method3" + +# Type 100f, function "method4" within class "foo" +.mfunc4: +.short .fieldlist2 - .mfunc4 - 2 +.short LF_MFUNC_ID +.long 0x1009 # parent class +.long 0x1002 # function type +.asciz "method4" + +# Type 1010, field list for struct bar +.fieldlist2: +.short .struct1 - .fieldlist2 - 2 +.short LF_FIELDLIST +.short LF_MEMBER +.short 3 # public +.long T_UINT4 +.short 0 # offset +.asciz "num1" +.byte 0xf1 # padding + +# Type 1011, declaration of struct bar +.struct1: +.short .types_end - .struct1 - 2 +.short LF_STRUCTURE +.short 1 # no. members +.short 0 # property +.long 0x1010 # field list +.long 0 # type derived from +.long 0 # type of vshape table +.short 4 # size +.asciz "bar" # name +.byte 0xf2 # padding +.byte 0xf1 # padding + +.types_end: + +.data + +.long 0x12345678 +.long 0x12345678 + +lvar1: +.long 42 + +lvar1a: +.long 0x12345678 + +lvar3: +.long 84 + +lvar4: +.long 85 + +.global gvar1 +gvar1: +.long 43 + +.global gvar3 +gvar3: +.long 41 + +lvar5: +.long 86 + +.text + +.global main +main: + jmp main + .secrel32 .data + +.global proc2 +proc2: + nop +.proc2_end: + +.global proc4 +proc4: + nop +.proc4_end: + +.global proc6 +proc6: + nop +.proc6_end: + +.global proc8 +proc8: + nop +.proc8_end: + +.global proc10 +proc10: + nop +.proc10_end: + +.global proc12 +proc12: + nop +.proc12_end: + +.section "gcsect" + +lvar2: +.long 84 + +.global gvar2 +gvar2: +.long 85 + +.global gvar4 +gvar4: +.long 86 + +.global proc1 +proc1: + nop +.proc1_end: + +.global proc3 +proc3: + nop +.proc3_end: + +.global proc5 +proc5: + nop +.proc5_end: + +.global proc7 +proc7: + nop +.proc7_end: + +.global proc9 +proc9: + nop +.proc9_end: + +.global proc11 +proc11: + nop +.proc11_end: + +lvar6: +.long 86 |