From: Mark Harmstone Date: Mon, 23 Jan 2023 23:01:54 +0000 (+0000) Subject: ld: Add pdb support to aarch64-w64-mingw32 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9a02fbd1984021c1db08cfd855df0660745a0858;p=binutils-gdb.git ld: Add pdb support to aarch64-w64-mingw32 This extends PDB support to the aarch64 PE targets. The changes to the test files are just to make it so they can be assembled as either x86, x86_64, or aarch64, mainly by changing the comment style. The only actual code change here is in adding the architecture constants to pdb.c. --- diff --git a/ld/configure.tgt b/ld/configure.tgt index 4f9a61f95ce..efd43095844 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -121,7 +121,7 @@ aarch64-*-haiku*) targ_emul=aarch64haiku aarch64-*-pe* | aarch64-*-mingw*) targ_emul=aarch64pe targ_extra_emuls="arm64pe" - targ_extra_ofiles="deffilep.o pep-dll-aarch64.o pe-dll.o" + targ_extra_ofiles="deffilep.o pep-dll-aarch64.o pe-dll.o pdb.o" ;; alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) targ_emul=elf64alpha_fbsd diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 5a53ab3f7f2..613a2c70531 100644 --- a/ld/emultempl/pep.em +++ b/ld/emultempl/pep.em @@ -79,7 +79,8 @@ EOF case ${target} in x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin | \ - i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe) + i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe | \ + aarch64-*-mingw* | aarch64-*-pe* ) fragment <arch_info->arch != bfd_arch_i386) - return 0; + switch (abfd->arch_info->arch) + { + case bfd_arch_i386: + if (abfd->arch_info->mach & bfd_mach_x86_64) + return IMAGE_FILE_MACHINE_AMD64; + else + return IMAGE_FILE_MACHINE_I386; - if (abfd->arch_info->mach & bfd_mach_x86_64) - return IMAGE_FILE_MACHINE_AMD64; + case bfd_arch_aarch64: + return IMAGE_FILE_MACHINE_ARM64; - return IMAGE_FILE_MACHINE_I386; + default: + return 0; + } } /* Validate the DEBUG_S_FILECHKSMS entry within a module's .debug$S @@ -3618,13 +3625,20 @@ handle_debugt_section (asection *s, bfd *mod, struct types *types, static uint16_t target_processor (bfd *abfd) { - if (abfd->arch_info->arch != bfd_arch_i386) - return 0; + switch (abfd->arch_info->arch) + { + case bfd_arch_i386: + if (abfd->arch_info->mach & bfd_mach_x86_64) + return CV_CFL_X64; + else + return CV_CFL_80386; - if (abfd->arch_info->mach & bfd_mach_x86_64) - return CV_CFL_X64; - else - return CV_CFL_80386; + case bfd_arch_aarch64: + return CV_CFL_ARM64; + + default: + return 0; + } } /* Create the symbols that go in "* Linker *", the dummy module created diff --git a/ld/pdb.h b/ld/pdb.h index ea2db5fd8fa..18e18e7111a 100644 --- a/ld/pdb.h +++ b/ld/pdb.h @@ -820,6 +820,7 @@ struct objname #define CV_CFL_80386 0x03 #define CV_CFL_X64 0xD0 +#define CV_CFL_ARM64 0xF6 #define CV_CFL_LINK 0x07 diff --git a/ld/testsuite/ld-pe/pdb-syms1a.s b/ld/testsuite/ld-pe/pdb-syms1a.s index c1929c3ec85..d076bbc776d 100644 --- a/ld/testsuite/ld-pe/pdb-syms1a.s +++ b/ld/testsuite/ld-pe/pdb-syms1a.s @@ -26,20 +26,20 @@ .gproc2: .short .gproc2_end - .gproc2 - 2 .short S_GPROC32 -.long 0 # parent -.long 0 # end -.long 0 # next symbol -.long 1 # length -.long 0 # debug start offset -.long 0 # debug end offset -.long 0x1002 # type +.long 0 /* parent */ +.long 0 /* end */ +.long 0 /* next symbol */ +.long 1 /* length */ +.long 0 /* debug start offset */ +.long 0 /* debug end offset */ +.long 0x1002 /* type */ .secrel32 proc2 .secidx proc2 -.byte 0 # flags +.byte 0 /* flags */ .asciz "proc2" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc2_end: .short .udt1 - .gproc2_end - 2 @@ -48,7 +48,7 @@ .udt1: .short .syms_end - .udt1 - 2 .short S_UDT -.long 0x1004 # struct bar +.long 0x1004 /* struct bar */ .asciz "bar" .syms_end: @@ -57,19 +57,19 @@ .long CV_SIGNATURE_C13 -# Type 1000, const uint32_t +/* Type 1000, const uint32_t */ .mod1: .short .arglist1 - .mod1 - 2 .short LF_MODIFIER .long T_UINT4 -.short 1 # const +.short 1 /* const */ .p2align 2 -# Type 1001, arglist (uint32_t) +/* Type 1001, arglist (uint32_t) */ .arglist1: .short .proctype1 - .arglist1 - 2 .short LF_ARGLIST -.long 1 # no. entries +.long 1 /* no. entries */ .long T_UINT4 # Type 1002, procedure (return type T_VOID, arglist 1001) @@ -77,34 +77,34 @@ .short .fieldlist1 - .proctype1 - 2 .short LF_PROCEDURE .long T_VOID -.byte 0 # calling convention -.byte 0 # attributes -.short 1 # no. parameters +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 1 /* no. parameters */ .long 0x1001 -# Type 1003, field list for struct bar +/* Type 1003, field list for struct bar */ .fieldlist1: .short .struct1 - .fieldlist1 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_UINT4 -.short 0 # offset +.short 0 /* offset */ .asciz "num1" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 1004, declaration of struct bar +/* Type 1004, declaration of struct bar */ .struct1: .short .types_end - .struct1 - 2 .short LF_STRUCTURE -.short 1 # no. members -.short 0 # property -.long 0x1003 # 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 +.short 1 /* no. members */ +.short 0 /* property */ +.long 0x1003 /* 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: diff --git a/ld/testsuite/ld-pe/pdb-syms1b.s b/ld/testsuite/ld-pe/pdb-syms1b.s index ddc471104b5..876757dea10 100644 --- a/ld/testsuite/ld-pe/pdb-syms1b.s +++ b/ld/testsuite/ld-pe/pdb-syms1b.s @@ -47,23 +47,23 @@ .ldata1: .short .ldata1a - .ldata1 - 2 .short S_LDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar1 .secidx lvar1 .asciz "lvar1" -.ldata1a: # duplicate with same address +.ldata1a: /* duplicate with same address */ .short .ldata1b - .ldata1a - 2 .short S_LDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar1 .secidx lvar1 .asciz "lvar1" -.ldata1b: # duplicate with different address +.ldata1b: /* duplicate with different address */ .short .ldata2 - .ldata1b - 2 .short S_LDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar1a .secidx lvar1a .asciz "lvar1" @@ -71,7 +71,7 @@ .ldata2: .short .gdata1 - .ldata2 - 2 .short S_LDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar2 .secidx lvar2 .asciz "lvar2" @@ -79,7 +79,7 @@ .gdata1: .short .gdata2 - .gdata1 - 2 .short S_GDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 gvar1 .secidx gvar1 .asciz "gvar1" @@ -87,7 +87,7 @@ .gdata2: .short .gproc1 - .gdata2 - 2 .short S_GDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 gvar2 .secidx gvar2 .asciz "gvar2" @@ -95,20 +95,20 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc1" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc1_end: .short .gproc2 - .gproc1_end - 2 @@ -117,31 +117,31 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc2" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .udt1: .short .ldata3 - .udt1 - 2 .short S_UDT -.long 0x1011 # struct bar +.long 0x1011 /* struct bar */ .asciz "bar" .ldata3: .short .lthread1 - .ldata3 - 2 .short S_LDATA32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar3 .secidx lvar3 .asciz "lvar3" @@ -149,7 +149,7 @@ .lthread1: .short .gproc2_end - .lthread1 - 2 .short S_LTHREAD32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar4 .secidx lvar4 .asciz "lvar4" @@ -161,20 +161,20 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc3" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc3_end: .short .gproc4 - .gproc3_end - 2 @@ -183,20 +183,20 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc4" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc4_end: .short .gproc5 - .gproc4_end - 2 @@ -205,20 +205,20 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc5" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc5_end: .short .gproc6 - .gproc5_end - 2 @@ -227,20 +227,20 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc6" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc6_end: .short .gproc7 - .gproc6_end - 2 @@ -249,18 +249,18 @@ .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 +.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 +.byte 0 /* flags */ .asciz "foo::method" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .gproc7_end: .short .gproc8 - .gproc7_end - 2 @@ -269,16 +269,16 @@ .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 +.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 +.byte 0 /* flags */ .asciz "foo::method2" .gproc8_end: @@ -288,20 +288,20 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc9" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc9_end: .short .gproc10 - .gproc9_end - 2 @@ -310,19 +310,19 @@ .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 +.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 +.byte 0 /* flags */ .asciz "proc10" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .gproc10_end: .short .gproc11 - .gproc10_end - 2 @@ -331,16 +331,16 @@ .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 +.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 +.byte 0 /* flags */ .asciz "foo::method3" .gproc11_end: @@ -350,16 +350,16 @@ .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 +.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 +.byte 0 /* flags */ .asciz "foo::method4" .gproc12_end: @@ -369,7 +369,7 @@ .udt2: .short .constant1 - .udt2 - 2 .short S_UDT -.long 0x1009 # class foo +.long 0x1009 /* class foo */ .asciz "foo" .constant1: @@ -378,9 +378,9 @@ .long T_UINT4 .short 42 .asciz "answer" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .constant2: .short .lthread2 - .constant2 - 2 @@ -389,13 +389,13 @@ .short LF_UQUADWORD .quad 0x0123456789abcdef .asciz "answer2" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .lthread2: .short .lthread3 - .lthread2 - 2 .short S_LTHREAD32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar5 .secidx lvar5 .asciz "lvar5" @@ -403,7 +403,7 @@ .lthread3: .short .gthread1 - .lthread3 - 2 .short S_LTHREAD32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 lvar6 .secidx lvar6 .asciz "lvar6" @@ -411,7 +411,7 @@ .gthread1: .short .gthread2 - .gthread1 - 2 .short S_GTHREAD32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 gvar3 .secidx gvar3 .asciz "gvar3" @@ -419,7 +419,7 @@ .gthread2: .short .syms_end - .gthread2 - 2 .short S_GTHREAD32 -.long 0x1000 # const uint32_t +.long 0x1000 /* const uint32_t */ .secrel32 gvar4 .secidx gvar4 .asciz "gvar4" @@ -431,197 +431,197 @@ .long CV_SIGNATURE_C13 -# Type 1000, const uint32_t +/* Type 1000, const uint32_t */ .mod1: .short .arglist1 - .mod1 - 2 .short LF_MODIFIER .long T_UINT4 -.short 1 # const +.short 1 /* const */ .p2align 2 -# Type 1001, arglist (uint32_t) +/* Type 1001, arglist (uint32_t) */ .arglist1: .short .proctype1 - .arglist1 - 2 .short LF_ARGLIST -.long 1 # no. entries +.long 1 /* no. entries */ .long T_UINT4 -# Type 1002, procedure (return type T_VOID, arglist 1001) +/* 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 +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 1 /* no. parameters */ .long 0x1001 -# Type 1003, func ID for proc5 +/* Type 1003, func ID for proc5 */ .funcid1: .short .funcid2 - .funcid1 - 2 .short LF_FUNC_ID -.long 0 # parent scope -.long 0x1002 # type +.long 0 /* parent scope */ +.long 0x1002 /* type */ .asciz "proc5" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1004, func ID for proc6 +/* Type 1004, func ID for proc6 */ .funcid2: .short .class1 - .funcid2 - 2 .short LF_FUNC_ID -.long 0 # parent scope -.long 0x1002 # type +.long 0 /* parent scope */ +.long 0x1002 /* type */ .asciz "proc6" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1005, forward declaration of class foo +/* 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 +.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 +/* 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 +.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 +.short 0 /* method attribute */ +.long 0x1007 /* method type */ .asciz "method" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .short LF_ONEMETHOD -.short 0 # method attribute -.long 0x1007 # method type +.short 0 /* method attribute */ +.long 0x1007 /* method type */ .asciz "method2" .short LF_ONEMETHOD -.short 0 # method attribute -.long 0x1007 # method type +.short 0 /* method attribute */ +.long 0x1007 /* method type */ .asciz "method3" .short LF_ONEMETHOD -.short 0 # method attribute -.long 0x1007 # method type +.short 0 /* method attribute */ +.long 0x1007 /* method type */ .asciz "method4" -# Type 1009, actual declaration of class foo +/* 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" +.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 +.long 0x1009 /* parent class */ +.long 0x1002 /* function type */ .asciz "method" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 100b, function "method2" within class "foo" +/* Type 100b, function "method2" within class "foo" */ .mfunc2: .short .funcid3 - .mfunc2 - 2 .short LF_MFUNC_ID -.long 0x1009 # parent class -.long 0x1002 # function type +.long 0x1009 /* parent class */ +.long 0x1002 /* function type */ .asciz "method2" -# Type 100c, func ID for proc9 +/* Type 100c, func ID for proc9 */ .funcid3: .short .funcid4 - .funcid3 - 2 .short LF_FUNC_ID -.long 0 # parent scope -.long 0x1002 # type +.long 0 /* parent scope */ +.long 0x1002 /* type */ .asciz "proc9" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 100d, func ID for proc10 +/* Type 100d, func ID for proc10 */ .funcid4: .short .mfunc3 - .funcid4 - 2 .short LF_FUNC_ID -.long 0 # parent scope -.long 0x1002 # type +.long 0 /* parent scope */ +.long 0x1002 /* type */ .asciz "proc10" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 100e, function "method3" within class "foo" +/* Type 100e, function "method3" within class "foo" */ .mfunc3: .short .mfunc4 - .mfunc3 - 2 .short LF_MFUNC_ID -.long 0x1009 # parent class -.long 0x1002 # function type +.long 0x1009 /* parent class */ +.long 0x1002 /* function type */ .asciz "method3" -# Type 100f, function "method4" within class "foo" +/* Type 100f, function "method4" within class "foo" */ .mfunc4: .short .fieldlist2 - .mfunc4 - 2 .short LF_MFUNC_ID -.long 0x1009 # parent class -.long 0x1002 # function type +.long 0x1009 /* parent class */ +.long 0x1002 /* function type */ .asciz "method4" -# Type 1010, field list for struct bar +/* Type 1010, field list for struct bar */ .fieldlist2: .short .struct1 - .fieldlist2 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_UINT4 -.short 0 # offset +.short 0 /* offset */ .asciz "num1" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 1011, declaration of struct bar +/* 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 +.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: @@ -657,37 +657,37 @@ lvar5: .global main main: - jmp main + .short 0 .secrel32 .data .global proc2 proc2: - nop + .byte 0 .proc2_end: .global proc4 proc4: - nop + .byte 0 .proc4_end: .global proc6 proc6: - nop + .byte 0 .proc6_end: .global proc8 proc8: - nop + .byte 0 .proc8_end: .global proc10 proc10: - nop + .byte 0 .proc10_end: .global proc12 proc12: - nop + .byte 0 .proc12_end: .section "gcsect" @@ -705,32 +705,32 @@ gvar4: .global proc1 proc1: - nop + .byte 0 .proc1_end: .global proc3 proc3: - nop + .byte 0 .proc3_end: .global proc5 proc5: - nop + .byte 0 .proc5_end: .global proc7 proc7: - nop + .byte 0 .proc7_end: .global proc9 proc9: - nop + .byte 0 .proc9_end: .global proc11 proc11: - nop + .byte 0 .proc11_end: lvar6: diff --git a/ld/testsuite/ld-pe/pdb-syms2.s b/ld/testsuite/ld-pe/pdb-syms2.s index ec677eaee43..14c149c23fc 100644 --- a/ld/testsuite/ld-pe/pdb-syms2.s +++ b/ld/testsuite/ld-pe/pdb-syms2.s @@ -50,26 +50,26 @@ .objname1: .short .compile1 - .objname1 - 2 .short S_OBJNAME -.long 0 # signature +.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 +.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 +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .unamespace1: .short .sbuildinfo1 - .unamespace1 - 2 @@ -79,180 +79,180 @@ .sbuildinfo1: .short .gproc1 - .sbuildinfo1 - 2 .short S_BUILDINFO -.long 0x1007 # type +.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 +.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 +.byte 0 /* flags */ .asciz "proc1" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.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 +.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 +.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 +.long 4 /* BP-relative offset */ +.long 0x1008 /* type */ .asciz "foo" .reg1: .short .regrel1 - .reg1 - 2 .short S_REGISTER -.long 0x1008 # type +.long 0x1008 /* type */ .short CV_AMD64_RAX .asciz "bar" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .regrel1: .short .local1 - .regrel1 - 2 .short S_REGREL32 -.long 4 # offset -.long 0x1008 # type +.long 4 /* offset */ +.long 0x1008 /* type */ .short CV_AMD64_RAX .asciz "baz" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .local1: .short .defrange1 - .local1 - 2 .short S_LOCAL -.long 0x1008 # type -.short 0 # flags +.long 0x1008 /* type */ +.short 0 /* flags */ .asciz "local1" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.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 +.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 +.long 0x1008 /* type */ +.short 0 /* flags */ .asciz "local2" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.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 +.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 +.long 0x1008 /* type */ +.short 0 /* flags */ .asciz "local3" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.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 +.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 +.long 0x1008 /* type */ +.short 0 /* flags */ .asciz "local4" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.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 +.long 4 /* frame pointer offset */ .local5: .short .defrange5 - .local5 - 2 .short S_LOCAL -.long 0x1008 # type -.short 0 # flags +.long 0x1008 /* type */ +.short 0 /* flags */ .asciz "local5" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.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 +.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) +.long 0 /* parent */ +.long 0 /* end */ +.long 0x1009 /* inlinee (inline_func) */ .inlinesite1end: .short .sblock1 - .inlinesite1end - 2 @@ -261,24 +261,24 @@ .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 +.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 +.byte 0 /* name */ +.byte 0xf1 /* padding */ .label1: .short .sblock1_end - .label1 - 2 .short S_LABEL32 .secrel32 label .secidx label -.byte 0 # flags +.byte 0 /* flags */ .asciz "label" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .sblock1_end: .short .thunk1 - .sblock1_end - 2 @@ -287,15 +287,15 @@ .thunk1: .short .thunk1_end - .thunk1 - 2 .short S_THUNK32 -.long 0 # parent -.long 0 # end -.long 0 # next +.long 0 /* parent */ +.long 0 /* end */ +.long 0 /* next */ .secrel32 thunk .secidx thunk .short .thunk_end - thunk -.byte 0 # THUNK_ORDINAL value +.byte 0 /* THUNK_ORDINAL value */ .asciz "thunk" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .thunk1_end: .short .heapallocsite1 - .thunk1_end - 2 @@ -307,7 +307,7 @@ .secrel32 .gap1_end .secidx .gap1_end .short .block1_end - .gap1_end -.long 0x1008 # type +.long 0x1008 /* type */ .gproc1_end: .short .syms_end - .gproc1_end - 2 @@ -319,91 +319,91 @@ .long CV_SIGNATURE_C13 -# Type 1000, arglist (uint32_t) +/* Type 1000, arglist (uint32_t) */ .arglist1: .short .proctype1 - .arglist1 - 2 .short LF_ARGLIST -.long 1 # no. entries +.long 1 /* no. entries */ .long T_UINT4 -# Type 1001, procedure (return type T_VOID, arglist 1000) +/* 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 +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 1 /* no. parameters */ .long 0x1000 -# Type 1002, string "/tmp" (build directory) +/* Type 1002, string "/tmp" (build directory) */ .string1: .short .string2 - .string1 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "/tmp" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1003, string "gcc" (compiler) +/* Type 1003, string "gcc" (compiler) */ .string2: .short .string3 - .string2 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "gcc" -# Type 1004, string "tmp.c" (source file) +/* Type 1004, string "tmp.c" (source file) */ .string3: .short .string4 - .string3 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "tmp.c" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1005, string "tmp.pdb" (PDB file) +/* Type 1005, string "tmp.pdb" (PDB file) */ .string4: .short .string5 - .string4 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "tmp.pdb" -# Type 1006, string "-gcodeview" (command arguments) +/* Type 1006, string "-gcodeview" (command arguments) */ .string5: .short .buildinfo1 - .string5 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "-gcodeview" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 1007, build info +/* 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 +.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 +.short 1 /* const */ .p2align 2 -# Type 1009, func ID for inline_func +/* Type 1009, func ID for inline_func */ .funcid1: .short .types_end - .funcid1 - 2 .short LF_FUNC_ID -.long 0 # parent scope -.long 0x1001 # type +.long 0 /* parent scope */ +.long 0x1001 /* type */ .asciz "inline_func" .types_end: @@ -412,19 +412,19 @@ .global proc1 proc1: - nop + .byte 0 .block1: - nop + .byte 0 label: - nop + .byte 0 .gap1: - nop + .byte 0 .gap1_end: - nop + .byte 0 .block1_end: - nop + .byte 0 .proc1_end: thunk: - nop + .byte 0 .thunk_end: diff --git a/ld/testsuite/ld-pe/pdb-types1a.s b/ld/testsuite/ld-pe/pdb-types1a.s index a2ee9a9972f..96fbfd0a29b 100644 --- a/ld/testsuite/ld-pe/pdb-types1a.s +++ b/ld/testsuite/ld-pe/pdb-types1a.s @@ -8,20 +8,20 @@ .long CV_SIGNATURE_C13 -# Type 1000, volatile long +/* Type 1000, volatile long */ .mod1: .short .mod2 - .mod1 - 2 .short LF_MODIFIER .long T_LONG -.short 2 # volatile +.short 2 /* volatile */ .p2align 2 -# Type 1001, const long +/* Type 1001, const long */ .mod2: .short .types_end - .mod2 - 2 .short LF_MODIFIER .long T_LONG -.short 1 # const +.short 1 /* const */ .p2align 2 .types_end: diff --git a/ld/testsuite/ld-pe/pdb-types1b.s b/ld/testsuite/ld-pe/pdb-types1b.s index bd227b12ebc..e26b190b78f 100644 --- a/ld/testsuite/ld-pe/pdb-types1b.s +++ b/ld/testsuite/ld-pe/pdb-types1b.s @@ -44,567 +44,567 @@ .long CV_SIGNATURE_C13 -# Type 1000, const long +/* Type 1000, const long */ .mod1: .short .mod2 - .mod1 - 2 .short LF_MODIFIER .long T_LONG -.short 1 # const +.short 1 /* const */ .p2align 2 -# Type 1001, volatile unsigned long +/* Type 1001, volatile unsigned long */ .mod2: .short .mod3 - .mod2 - 2 .short LF_MODIFIER .long T_ULONG -.short 2 # volatile +.short 2 /* volatile */ .p2align 2 -# Type 1002, const volatile int +/* Type 1002, const volatile int */ .mod3: .short .ptr1 - .mod3 - 2 .short LF_MODIFIER .long T_INT4 -.short 3 # const volatile +.short 3 /* const volatile */ .p2align 2 -# Type 1003, const long * (64-bit pointer) +/* Type 1003, const long * (64-bit pointer) */ .ptr1: .short .ptr2 - .ptr1 - 2 .short LF_POINTER .long 0x1000 .long (8 << 13) | CV_PTR_64 -# Type 1004, volatile unsigned long * (32-bit pointer) +/* Type 1004, volatile unsigned long * (32-bit pointer) */ .ptr2: .short .arglist1 - .ptr2 - 2 .short LF_POINTER .long 0x1001 .long (4 << 13) | CV_PTR_NEAR32 -# Type 1005, arg list of types 1000, 1001, 1002 +/* Type 1005, arg list of types 1000, 1001, 1002 */ .arglist1: .short .proc1 - .arglist1 - 2 .short LF_ARGLIST -.long 3 # no. entries +.long 3 /* no. entries */ .long 0x1000 .long 0x1001 .long 0x1002 -# Type 1006, procedure, return type 1001, arg list 1005 +/* Type 1006, procedure, return type 1001, arg list 1005 */ .proc1: .short .arr1 - .proc1 - 2 .short LF_PROCEDURE .long 0x1001 -.byte 0 # calling convention -.byte 0 # attributes -.short 3 # no. parameters +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 3 /* no. parameters */ .long 0x1005 -# Type 1007, array[3] of const long * +/* Type 1007, array[3] of const long * */ .arr1: .short .bitfield1 - .arr1 - 2 .short LF_ARRAY -.long 0x1003 # element type -.long T_INT4 # index type -.short 24 # length in bytes -.byte 0 # name -.byte 0xf1 # padding +.long 0x1003 /* element type */ +.long T_INT4 /* index type */ +.short 24 /* length in bytes */ +.byte 0 /* name */ +.byte 0xf1 /* padding */ -# Type 1008, bitfield of uint32_t, position 0, length 1 +/* Type 1008, bitfield of uint32_t, position 0, length 1 */ .bitfield1: .short .bitfield2 - .bitfield1 - 2 .short LF_BITFIELD .long T_UINT4 .byte 1 .byte 0 -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1009, bitfield of uint32_t, position 1, length 31 +/* Type 1009, bitfield of uint32_t, position 1, length 31 */ .bitfield2: .short .fieldlist1 - .bitfield2 - 2 .short LF_BITFIELD .long T_UINT4 .byte 31 .byte 1 -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 100a, field list (1008 as num1, 1009 as num2) +/* Type 100a, field list (1008 as num1, 1009 as num2) */ .fieldlist1: .short .struct1 - .fieldlist1 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1008 -.short 0 # offset +.short 0 /* offset */ .asciz "num1" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1009 -.short 0 # offset +.short 0 /* offset */ .asciz "num2" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 100b, anonymous struct, field list 100a +/* Type 100b, anonymous struct, field list 100a */ .struct1: .short .struct2 - .struct1 - 2 .short LF_STRUCTURE -.short 2 # no. members -.short 0 # property -.long 0x100a # field list -.long 0 # type derived from -.long 0 # type of vshape table -.short 4 # size +.short 2 /* no. members */ +.short 0 /* property */ +.long 0x100a /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ +.short 4 /* size */ .asciz "" -# Type 100c, forward declaration of struct foo +/* Type 100c, forward declaration of struct foo */ .struct2: .short .ptr3 - .struct2 - 2 .short LF_STRUCTURE -.short 0 # no. members -.short 0x280 # property (has unique name, forward declaration) -.long 0 # field list -.long 0 # type derived from -.long 0 # type of vshape table -.short 0 # size -.asciz "foo" # name -.asciz "bar" # unique name -.byte 0xf2 # padding -.byte 0xf1 # padding - -# Type 100d, pointer to 100c +.short 0 /* no. members */ +.short 0x280 /* property (has unique name, forward declaration) */ +.long 0 /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ +.short 0 /* size */ +.asciz "foo" /* name */ +.asciz "bar" /* unique name */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ + +/* Type 100d, pointer to 100c */ .ptr3: .short .arglist2 - .ptr3 - 2 .short LF_POINTER .long 0x100c .long (8 << 13) | CV_PTR_64 -# Type 100e, empty arg list +/* Type 100e, empty arg list */ .arglist2: .short .mfunc1 - .arglist2 - 2 .short LF_ARGLIST -.long 0 # no. entries +.long 0 /* no. entries */ -# Type 100f, member function of 100c, return type 1001 +/* Type 100f, member function of 100c, return type 1001 */ .mfunc1: .short .mfunc2 - .mfunc1 - 2 .short LF_MFUNCTION .long 0x1001 .long 0x100c -.long 0x100d # type of "this" pointer -.byte 0 # calling convention -.byte 0 # attributes -.short 0 # no. parameters -.long 0x100e # arg list -.long 0 # "this" adjustment - -# Type 1010, member function of 100c, return type 1001, arg list 1005 +.long 0x100d /* type of "this" pointer */ +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 0 /* no. parameters */ +.long 0x100e /* arg list */ +.long 0 /* "this" adjustment */ + +/* Type 1010, member function of 100c, return type 1001, arg list 1005 */ .mfunc2: .short .methodlist1 - .mfunc2 - 2 .short LF_MFUNCTION .long 0x1001 .long 0x100c -.long 0x100d # type of "this" pointer -.byte 0 # calling convention -.byte 0 # attributes -.short 3 # no. parameters -.long 0x1005 # arg list -.long 0 # "this" adjustment - -# Type 1011, method list for both member functions 100f and 1010 +.long 0x100d /* type of "this" pointer */ +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 3 /* no. parameters */ +.long 0x1005 /* arg list */ +.long 0 /* "this" adjustment */ + +/* Type 1011, method list for both member functions 100f and 1010 */ .methodlist1: .short .fieldlist2 - .methodlist1 - 2 .short LF_METHODLIST -.short 0 # attributes -.short 0 # padding +.short 0 /* attributes */ +.short 0 /* padding */ .long 0x100f -.short 0 # attributes -.short 0 # padding +.short 0 /* attributes */ +.short 0 /* padding */ .long 0x1010 -# Type 1012, field list (uint32_t as num1) +/* Type 1012, field list (uint32_t as num1) */ .fieldlist2: .short .struct3 - .fieldlist2 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_UINT4 -.short 0 # offset +.short 0 /* offset */ .asciz "num" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_ONEMETHOD -.short 0 # method attribute -.long 0x100f # method type +.short 0 /* method attribute */ +.long 0x100f /* method type */ .asciz "method" .byte 0xf1 .short LF_METHOD -.short 2 # no. overloads -.long 0x1011 # method list +.short 2 /* no. overloads */ +.long 0x1011 /* method list */ .asciz "method2" -# Type 1013, struct foo, field list 1012 +/* Type 1013, struct foo, field list 1012 */ .struct3: .short .fieldlist3 - .struct3 - 2 .short LF_STRUCTURE -.short 2 # no. members -.short 0x200 # property (has unique name) -.long 0x1012 # field list -.long 0 # type derived from -.long 0 # type of vshape table -.short 4 # size -.asciz "foo" # name -.asciz "bar" # unique name -.byte 0xf2 # padding -.byte 0xf1 # padding - -# Type 1014, field list (uint32_t as num1, char as num2) +.short 2 /* no. members */ +.short 0x200 /* property (has unique name) */ +.long 0x1012 /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ +.short 4 /* size */ +.asciz "foo" /* name */ +.asciz "bar" /* unique name */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ + +/* Type 1014, field list (uint32_t as num1, char as num2) */ .fieldlist3: .short .union1 - .fieldlist3 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_UINT4 -.short 0 # offset +.short 0 /* offset */ .asciz "num1" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_CHAR -.short 0 # offset +.short 0 /* offset */ .asciz "num2" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 1015, anonymous union (field list 1014) +/* Type 1015, anonymous union (field list 1014) */ .union1: .short .union2 - .union1 - 2 .short LF_UNION -.short 2 # no. members -.short 0 # property +.short 2 /* no. members */ +.short 0 /* property */ .long 0x1014 -.short 4 # size +.short 4 /* size */ .asciz "" -# Type 1016, forward declaration of union baz +/* Type 1016, forward declaration of union baz */ .union2: .short .union3 - .union2 - 2 .short LF_UNION -.short 0 # no. members -.short 0x280 # property (has unique name, forward declaration) -.long 0 # field list -.short 0 # size +.short 0 /* no. members */ +.short 0x280 /* property (has unique name, forward declaration) */ +.long 0 /* field list */ +.short 0 /* size */ .asciz "baz" .asciz "qux" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1017, union baz (field list 1014) +/* Type 1017, union baz (field list 1014) */ .union3: .short .fieldlist4 - .union3 - 2 .short LF_UNION -.short 2 # no. members -.short 0x200 # property (has unique name, forward declaration) -.long 0x1014 # field list -.short 4 # size +.short 2 /* no. members */ +.short 0x200 /* property (has unique name, forward declaration) */ +.long 0x1014 /* field list */ +.short 4 /* size */ .asciz "baz" .asciz "qux" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1018, field list for enum (red = 0, green = 1, blue = -1, yellow = 0x8000, purple = 0x100000000) +/* Type 1018, field list for enum (red = 0, green = 1, blue = -1, yellow = 0x8000, purple = 0x100000000) */ .fieldlist4: .short .enum1 - .fieldlist4 - 2 .short LF_FIELDLIST .short LF_ENUMERATE -.short 3 # public -.short 0 # value +.short 3 /* public */ +.short 0 /* value */ .asciz "red" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_ENUMERATE -.short 3 # public -.short 1 # value +.short 3 /* public */ +.short 1 /* value */ .asciz "green" .short LF_ENUMERATE -.short 3 # public +.short 3 /* public */ .short LF_LONG -.long 0xffffffff # value +.long 0xffffffff /* value */ .asciz "blue" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .short LF_ENUMERATE -.short 3 # public +.short 3 /* public */ .short LF_USHORT -.short 0x8000 # value +.short 0x8000 /* value */ .asciz "yellow" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .short LF_ENUMERATE -.short 3 # public +.short 3 /* public */ .short LF_UQUADWORD -.quad 0x100000000 # value +.quad 0x100000000 /* value */ .asciz "purple" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1019, forward reference to enum +/* Type 1019, forward reference to enum */ .enum1: .short .enum2 - .enum1 - 2 .short LF_ENUM -.short 0 # no. elements -.short 0x280 # property (has unique name, forward ref) -.long T_UQUAD # underlying type -.long 0 # field list +.short 0 /* no. elements */ +.short 0x280 /* property (has unique name, forward ref) */ +.long T_UQUAD /* underlying type */ +.long 0 /* field list */ .asciz "colour" .asciz "colour2" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 101a, enum (field list 1018) +/* Type 101a, enum (field list 1018) */ .enum2: .short .fieldlist5 - .enum2 - 2 .short LF_ENUM -.short 5 # no. elements -.short 0x200 # property (has unique name) -.long T_UQUAD # underlying type -.long 0x1018 # field list +.short 5 /* no. elements */ +.short 0x200 /* property (has unique name) */ +.long T_UQUAD /* underlying type */ +.long 0x1018 /* field list */ .asciz "colour" .asciz "colour2" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# Type 101b, field list referencing other field list 1018 +/* Type 101b, field list referencing other field list 1018 */ .fieldlist5: .short .vtshape1 - .fieldlist5 - 2 .short LF_FIELDLIST .short LF_INDEX -.short 0 # padding +.short 0 /* padding */ .long 0x1018 -# Type 101c, virtual function table shape +/* Type 101c, virtual function table shape */ .vtshape1: .short .ptr4 - .vtshape1 - 2 .short LF_VTSHAPE -.short 1 # no. descriptors -.byte 0 # descriptor (CV_VTS_near) -.byte 0xf1 # padding +.short 1 /* no. descriptors */ +.byte 0 /* descriptor (CV_VTS_near) */ +.byte 0xf1 /* padding */ -# Type 101d, pointer to 101c +/* Type 101d, pointer to 101c */ .ptr4: .short .fieldlist6 - .ptr4 - 2 .short LF_POINTER .long 0x101c .long (8 << 13) | CV_PTR_64 -# Type 101e, fieldlist for enum +/* Type 101e, fieldlist for enum */ .fieldlist6: .short .enum3 - .fieldlist6 - 2 .short LF_FIELDLIST .short LF_ENUMERATE -.short 3 # public -.short 0 # value +.short 3 /* public */ +.short 0 /* value */ .asciz "a" -# Type 101f, nested enum +/* Type 101f, nested enum */ .enum3: .short .fieldlist7 - .enum3 - 2 .short LF_ENUM -.short 1 # no. elements -.short 0x8 # property (is nested) -.long T_UINT4 # underlying type -.long 0x101e # field list +.short 1 /* no. elements */ +.short 0x8 /* property (is nested) */ +.long T_UINT4 /* underlying type */ +.long 0x101e /* field list */ .asciz "quux::nested_enum" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1020, field list for struct quux +/* Type 1020, field list for struct quux */ .fieldlist7: .short .struct4 - .fieldlist7 - 2 .short LF_FIELDLIST .short LF_BCLASS -.short 0 # attributes -.long 0x1013 # base class -.short 4 # offset within class -.byte 0xf2 # padding -.byte 0xf1 # padding +.short 0 /* attributes */ +.long 0x1013 /* base class */ +.short 4 /* offset within class */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_VFUNCTAB -.short 0 # padding -.long 0x101d # pointer to vtshape +.short 0 /* padding */ +.long 0x101d /* pointer to vtshape */ .short LF_VBCLASS -.short 0 # attribute -.long 0x1013 # type index of direct virtual base class -.long 0x101d # type index of virtual base pointer -.short 0 # virtual base pointer offset -.short 0 # virtual base offset from vbtable +.short 0 /* attribute */ +.long 0x1013 /* type index of direct virtual base class */ +.long 0x101d /* type index of virtual base pointer */ +.short 0 /* virtual base pointer offset */ +.short 0 /* virtual base offset from vbtable */ .short LF_STMEMBER -.short 0 # attribute -.long 0x1001 # volatile unsigned long +.short 0 /* attribute */ +.long 0x1001 /* volatile unsigned long */ .asciz "static_member" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_NESTTYPE -.short 0 # padding -.long 0x101f # enum type +.short 0 /* padding */ +.long 0x101f /* enum type */ .asciz "nested_enum" -# Type 1021, struct quux, field list 1020 +/* Type 1021, struct quux, field list 1020 */ .struct4: .short .arr2 - .struct4 - 2 .short LF_STRUCTURE -.short 1 # no. members -.short 0 # property -.long 0x1020 # field list -.long 0 # type derived from -.long 0 # type of vshape table -.short 4 # size -.asciz "quux" # name -.byte 0xf1 # padding - -# Type 1022, array[60000] of char +.short 1 /* no. members */ +.short 0 /* property */ +.long 0x1020 /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ +.short 4 /* size */ +.asciz "quux" /* name */ +.byte 0xf1 /* padding */ + +/* Type 1022, array[60000] of char */ .arr2: .short .fieldlist8 - .arr2 - 2 .short LF_ARRAY -.long T_CHAR # element type -.long T_INT4 # index type +.long T_CHAR /* element type */ +.long T_INT4 /* index type */ .short LF_USHORT -.short 60000 # size in bytes -.byte 0 # name -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.short 60000 /* size in bytes */ +.byte 0 /* name */ +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1023, field list for struct longstruct +/* Type 1023, field list for struct longstruct */ .fieldlist8: .short .struct5 - .fieldlist8 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 -.short 0 # offset +.short 0 /* offset */ .asciz "a" .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 .short LF_USHORT -.short 60000 # offset +.short 60000 /* offset */ .asciz "b" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 .short LF_ULONG -.long 120000 # offset +.long 120000 /* offset */ .asciz "c" -# Type 1024, struct longstruct +/* Type 1024, struct longstruct */ .struct5: .short .fieldlist9 - .struct5 - 2 .short LF_STRUCTURE -.short 3 # no. members -.short 0 # property -.long 0x1023 # field list -.long 0 # type derived from -.long 0 # type of vshape table +.short 3 /* no. members */ +.short 0 /* property */ +.long 0x1023 /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ .short LF_ULONG -.long 180000 # size -.asciz "longstruct" # name -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.long 180000 /* size */ +.asciz "longstruct" /* name */ +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1025, field list for union longunion +/* Type 1025, field list for union longunion */ .fieldlist9: .short .union4 - .fieldlist9 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 -.short 0 # offset +.short 0 /* offset */ .asciz "a" .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 -.short 0 # offset +.short 0 /* offset */ .asciz "b" -# Type 1026, union longunion (field list 1025) +/* Type 1026, union longunion (field list 1025) */ .union4: .short .fieldlist10 - .union4 - 2 .short LF_UNION -.short 2 # no. members -.short 0 # property -.long 0x1025 # field list +.short 2 /* no. members */ +.short 0 /* property */ +.long 0x1025 /* field list */ .short LF_USHORT -.short 60000 # size +.short 60000 /* size */ .asciz "longunion" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1027, field list with base class longstruct +/* Type 1027, field list with base class longstruct */ .fieldlist10: .short .fieldlist11 - .fieldlist10 - 2 .short LF_FIELDLIST .short LF_BCLASS -.short 0 # attributes -.long 0x1024 # base class +.short 0 /* attributes */ +.long 0x1024 /* base class */ .short LF_ULONG -.long 120000 # offset within class -.byte 0xf2 # padding -.byte 0xf1 # padding +.long 120000 /* offset within class */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 -.short 0 # offset +.short 0 /* offset */ .asciz "d" -# Type 1028, field list with virtual base class longstruct +/* Type 1028, field list with virtual base class longstruct */ .fieldlist11: .short .struct6 - .fieldlist11 - 2 .short LF_FIELDLIST .short LF_VBCLASS -.short 0 # attributes -.long 0x1024 # type index of direct virtual base class -.long 0 # type index of virtual base pointer +.short 0 /* attributes */ +.long 0x1024 /* type index of direct virtual base class */ +.long 0 /* type index of virtual base pointer */ .short LF_USHORT -.short 60000 # virtual base pointer offset +.short 60000 /* virtual base pointer offset */ .short LF_ULONG -.long 120000 # virtual base offset from vbtable -.byte 0xf2 # padding -.byte 0xf1 # padding +.long 120000 /* virtual base offset from vbtable */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long 0x1022 -.short 0 # offset +.short 0 /* offset */ .asciz "d" -# Type 1029, forward declaration of struct IUnknown +/* Type 1029, forward declaration of struct IUnknown */ .struct6: .short .vftable1 - .struct6 - 2 .short LF_STRUCTURE -.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 "IUnknown" # name -.byte 0xf1 # padding - -# Type 102a, virtual function table +.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 "IUnknown" /* name */ +.byte 0xf1 /* padding */ + +/* Type 102a, virtual function table */ .vftable1: .short .types_end - .vftable1 - 2 .short LF_VFTABLE -.long 0x1029 # type -.long 0 # base vftable -.long 0 # offset -.long .vftable1_names_end - .vftable1_names # length of names array +.long 0x1029 /* type */ +.long 0 /* base vftable */ +.long 0 /* offset */ +.long .vftable1_names_end - .vftable1_names /* length of names array */ .vftable1_names: .asciz "IUnknown" .asciz "QueryInterface" .asciz "AddRef" .asciz "Release" .vftable1_names_end: -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .types_end: diff --git a/ld/testsuite/ld-pe/pdb-types2a.s b/ld/testsuite/ld-pe/pdb-types2a.s index e11843ae575..97cd0a2e3fd 100644 --- a/ld/testsuite/ld-pe/pdb-types2a.s +++ b/ld/testsuite/ld-pe/pdb-types2a.s @@ -22,21 +22,21 @@ .long CV_SIGNATURE_C13 -# Type 1000, string "test" +/* Type 1000, string "test" */ .string1: .short .string2 - .string1 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "test" .byte 0xf3 .byte 0xf2 .byte 0xf1 -# Type 1001, string "foo" +/* Type 1001, string "foo" */ .string2: .short .types_end - .string2 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "foo" .types_end: diff --git a/ld/testsuite/ld-pe/pdb-types2b.s b/ld/testsuite/ld-pe/pdb-types2b.s index 33541729f63..c0c273f396f 100644 --- a/ld/testsuite/ld-pe/pdb-types2b.s +++ b/ld/testsuite/ld-pe/pdb-types2b.s @@ -22,200 +22,200 @@ .long CV_SIGNATURE_C13 -# Type 1000, string "foo" +/* Type 1000, string "foo" */ .string1: .short .string2 - .string1 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "foo" -# Type 1001, string "bar" +/* Type 1001, string "bar" */ .string2: .short .substrlist1 - .string2 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "bar" -# Type 1002, substr list of "foo" and "bar" +/* Type 1002, substr list of "foo" and "bar" */ .substrlist1: .short .string3 - .substrlist1 - 2 .short LF_SUBSTR_LIST -.long 2 # count +.long 2 /* count */ .long 0x1000 .long 0x1001 -# Type 1003, string "baz" referencing substr list 1002 +/* Type 1003, string "baz" referencing substr list 1002 */ .string3: .short .string4 - .string3 - 2 .short LF_STRING_ID .long 0x1002 .asciz "baz" -# Type 1004, string "/tmp" (build directory) +/* Type 1004, string "/tmp" (build directory) */ .string4: .short .string5 - .string4 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "/tmp" -.byte 0xf3 # padding -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf3 /* padding */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1005, string "gcc" (compiler) +/* Type 1005, string "gcc" (compiler) */ .string5: .short .string6 - .string5 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "gcc" -# Type 1006, string "tmp.c" (source file) +/* Type 1006, string "tmp.c" (source file) */ .string6: .short .string7 - .string6 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "tmp.c" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1007, string "tmp.pdb" (PDB file) +/* Type 1007, string "tmp.pdb" (PDB file) */ .string7: .short .string8 - .string7 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "tmp.pdb" -# Type 1008, string "-gcodeview" (command arguments) +/* Type 1008, string "-gcodeview" (command arguments) */ .string8: .short .buildinfo1 - .string8 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "-gcodeview" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ -# The 1009, build info +/* The 1009, build info */ .buildinfo1: .short .string9 - .buildinfo1 - 2 .short LF_BUILDINFO -.short 5 # count -.long 0x1004 # build directory -.long 0x1005 # compiler -.long 0x1006 # source file -.long 0x1007 # PDB file -.long 0x1008 # command arguments -.byte 0xf2 # padding -.byte 0xf1 # padding - -# Type 100a, string "namespace" +.short 5 /* count */ +.long 0x1004 /* build directory */ +.long 0x1005 /* compiler */ +.long 0x1006 /* source file */ +.long 0x1007 /* PDB file */ +.long 0x1008 /* command arguments */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ + +/* Type 100a, string "namespace" */ .string9: .short .arglist1 - .string9 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "namespace" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 100b, arg list of type T_INT4 +/* Type 100b, arg list of type T_INT4 */ .arglist1: .short .proc1 - .arglist1 - 2 .short LF_ARGLIST -.long 1 # no. entries +.long 1 /* no. entries */ .long T_INT4 -# Type 100c, procedure, return type T_VOID, arg list 100b +/* Type 100c, procedure, return type T_VOID, arg list 100b */ .proc1: .short .func1 - .proc1 - 2 .short LF_PROCEDURE .long T_VOID -.byte 0 # calling convention -.byte 0 # attributes -.short 1 # no. parameters +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 1 /* no. parameters */ .long 0x100b -# Type 100d, function "func1" +/* Type 100d, function "func1" */ .func1: .short .func2 - .func1 - 2 .short LF_FUNC_ID -.long 0 # parent scope -.long 0x100c # type +.long 0 /* parent scope */ +.long 0x100c /* type */ .asciz "func1" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 100e, function "func2" within scope "namespace" +/* Type 100e, function "func2" within scope "namespace" */ .func2: .short .class1 - .func2 - 2 .short LF_FUNC_ID -.long 0x100a # parent scope -.long 0x100c # type +.long 0x100a /* parent scope */ +.long 0x100c /* type */ .asciz "func2" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 100f, forward declaration of class foo +/* Type 100f, forward declaration of class foo */ .class1: .short .ptr1 - .class1 - 2 .short LF_CLASS -.short 0 # no. members -.short 0x80 # property (has unique name, 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 1010, pointer to 100f +.short 0 /* no. members */ +.short 0x80 /* property (has unique name, 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 1010, pointer to 100f */ .ptr1: .short .mfunction1 - .ptr1 - 2 .short LF_POINTER .long 0x100f .long (8 << 13) | CV_PTR_64 -# Type 1011, member function of 100f, return type void, arg list 100b +/* Type 1011, member function of 100f, return type void, arg list 100b */ .mfunction1: .short .fieldlist1 - .mfunction1 - 2 .short LF_MFUNCTION .long T_VOID .long 0x100f -.long 0x1010 # type of "this" pointer -.byte 0 # calling convention -.byte 0 # attributes -.short 1 # no. parameters -.long 0x100b # arg list -.long 0 # "this" adjustment - -# Type 1012, field list for class foo +.long 0x1010 /* type of "this" pointer */ +.byte 0 /* calling convention */ +.byte 0 /* attributes */ +.short 1 /* no. parameters */ +.long 0x100b /* arg list */ +.long 0 /* "this" adjustment */ + +/* Type 1012, field list for class foo */ .fieldlist1: .short .class2 - .fieldlist1 - 2 .short LF_FIELDLIST .short LF_ONEMETHOD -.short 0 # method attribute -.long 0x1010 # method type +.short 0 /* method attribute */ +.long 0x1010 /* method type */ .asciz "method" .byte 0xf1 -# Type 1013, actual declaration of class foo +/* Type 1013, actual declaration of class foo */ .class2: .short .mfunc1 - .class2 - 2 .short LF_CLASS -.short 0 # no. members -.short 0 # property -.long 0x1012 # 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 1014, function "method" within class "foo" +.short 0 /* no. members */ +.short 0 /* property */ +.long 0x1012 /* 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 1014, function "method" within class "foo" */ .mfunc1: .short .types_end - .mfunc1 - 2 .short LF_MFUNC_ID -.long 0x100f # parent class -.long 0x1011 # function type +.long 0x100f /* parent class */ +.long 0x1011 /* function type */ .asciz "method" -.byte 0xf1 # padding +.byte 0xf1 /* padding */ .types_end: diff --git a/ld/testsuite/ld-pe/pdb-types3a.s b/ld/testsuite/ld-pe/pdb-types3a.s index def001e52f7..cb847cebe72 100644 --- a/ld/testsuite/ld-pe/pdb-types3a.s +++ b/ld/testsuite/ld-pe/pdb-types3a.s @@ -11,47 +11,47 @@ .long CV_SIGNATURE_C13 -# Type 1000, fieldlist for struct foo +/* Type 1000, fieldlist for struct foo */ .fieldlist1: .short .struct1 - .fieldlist1 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_INT4 -.short 0 # offset +.short 0 /* offset */ .asciz "num" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1001, struct foo +/* Type 1001, struct foo */ .struct1: .short .string1 - .struct1 - 2 .short LF_STRUCTURE -.short 1 # no. members -.short 0 # property -.long 0x1000 # field list -.long 0 # type derived from -.long 0 # type of vshape table -.short 4 # size -.asciz "foo" # name -.byte 0xf2 # padding -.byte 0xf1 # padding - -# Type 1002, string "foo" +.short 1 /* no. members */ +.short 0 /* property */ +.long 0x1000 /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ +.short 4 /* size */ +.asciz "foo" /* name */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ + +/* Type 1002, string "foo" */ .string1: .short .udtsrcline1 - .string1 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "foo.h" .byte 0xf2 .byte 0xf1 -# Type 1003, UDT source line for type 1001 +/* Type 1003, UDT source line for type 1001 */ .udtsrcline1: .short .types_end - .udtsrcline1 - 2 .short LF_UDT_SRC_LINE .long 0x1001 -.long 0x1002 # source file string -.long 42 # line no. +.long 0x1002 /* source file string */ +.long 42 /* line no. */ .types_end: diff --git a/ld/testsuite/ld-pe/pdb-types3b.s b/ld/testsuite/ld-pe/pdb-types3b.s index a22234e221f..580f3fb79eb 100644 --- a/ld/testsuite/ld-pe/pdb-types3b.s +++ b/ld/testsuite/ld-pe/pdb-types3b.s @@ -14,55 +14,55 @@ .long CV_SIGNATURE_C13 -# Type 1000, const long +/* Type 1000, const long */ .mod1: .short .fieldlist1 - .mod1 - 2 .short LF_MODIFIER .long T_LONG -.short 1 # const -.short 0 # padding +.short 1 /* const */ +.short 0 /* padding */ -# Type 1001, fieldlist for struct foo +/* Type 1001, fieldlist for struct foo */ .fieldlist1: .short .struct1 - .fieldlist1 - 2 .short LF_FIELDLIST .short LF_MEMBER -.short 3 # public +.short 3 /* public */ .long T_INT4 -.short 0 # offset +.short 0 /* offset */ .asciz "num" -.byte 0xf2 # padding -.byte 0xf1 # padding +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1002, struct foo +/* Type 1002, struct foo */ .struct1: .short .string1 - .struct1 - 2 .short LF_STRUCTURE -.short 1 # no. members -.short 0 # property -.long 0x1001 # field list -.long 0 # type derived from -.long 0 # type of vshape table -.short 4 # size -.asciz "foo" # name -.byte 0xf2 # padding -.byte 0xf1 # padding +.short 1 /* no. members */ +.short 0 /* property */ +.long 0x1001 /* field list */ +.long 0 /* type derived from */ +.long 0 /* type of vshape table */ +.short 4 /* size */ +.asciz "foo" /* name */ +.byte 0xf2 /* padding */ +.byte 0xf1 /* padding */ -# Type 1003, string "foo" +/* Type 1003, string "foo" */ .string1: .short .udtsrcline1 - .string1 - 2 .short LF_STRING_ID -.long 0 # sub-string +.long 0 /* sub-string */ .asciz "foo.h" .byte 0xf2 .byte 0xf1 -# Type 1004, UDT source line for type 1002 +/* Type 1004, UDT source line for type 1002 */ .udtsrcline1: .short .types_end - .udtsrcline1 - 2 .short LF_UDT_SRC_LINE .long 0x1002 -.long 0x1003 # source file string -.long 42 # line no. +.long 0x1003 /* source file string */ +.long 42 /* line no. */ .types_end: diff --git a/ld/testsuite/ld-pe/pdb.exp b/ld/testsuite/ld-pe/pdb.exp index 07d2a6fff1f..fe98cf65cca 100644 --- a/ld/testsuite/ld-pe/pdb.exp +++ b/ld/testsuite/ld-pe/pdb.exp @@ -19,7 +19,8 @@ # MA 02110-1301, USA. if {![istarget i*86-*-mingw*] - && ![istarget x86_64-*-mingw*]} { + && ![istarget x86_64-*-mingw*] + && ![istarget aarch64-*-mingw*]} { return } diff --git a/ld/testsuite/ld-pe/pdb3a.s b/ld/testsuite/ld-pe/pdb3a.s index 1df84a344f6..d92683624c2 100644 --- a/ld/testsuite/ld-pe/pdb3a.s +++ b/ld/testsuite/ld-pe/pdb3a.s @@ -37,7 +37,7 @@ .long 0x89abcdef .long 0xfedcba98 .long 0x67452310 -.short 0 # padding +.short 0 /* padding */ .long .src2 - .strings_start .byte NUM_MD5_BYTES @@ -46,7 +46,7 @@ .long 0x67452310 .long 0x01234567 .long 0x89abcdef -.short 0 # padding +.short 0 /* padding */ .chksms_end: @@ -59,39 +59,39 @@ .secrel32 main .secidx main -.short 0 # flags -.long .main_end - main # length of region +.short 0 /* flags */ +.long .main_end - main /* length of region */ .lines_block1: -.long 0 # file ID 0 (foo) -.long 2 # no. lines -.long .lines_block2 - .lines_block1 # length +.long 0 /* file ID 0 (foo) */ +.long 2 /* no. lines */ +.long .lines_block2 - .lines_block1 /* length */ .long .line1 - main -.long 0x80000001 # line 1 +.long 0x80000001 /* line 1 */ .long .line2 - main -.long 0x80000002 # line 2 +.long 0x80000002 /* line 2 */ .lines_block2: -.long 0x18 # file ID 18 (bar) -.long 2 # no. lines -.long .lines_block3 - .lines_block2 # length +.long 0x18 /* file ID 18 (bar) */ +.long 2 /* no. lines */ +.long .lines_block3 - .lines_block2 /* length */ .long .line3 - main -.long 0x80000003 # line 3 +.long 0x80000003 /* line 3 */ .long .line4 - main -.long 0x80000004 # line 4 +.long 0x80000004 /* line 4 */ .lines_block3: -.long 0 # file ID 0 (foo) -.long 1 # no. lines -.long .lines_end - .lines_block3 # length +.long 0 /* file ID 0 (foo) */ +.long 1 /* no. lines */ +.long .lines_end - .lines_block3 /* length */ .long .line5 - main -.long 0x80000005 # line 5 +.long 0x80000005 /* line 5 */ .lines_end: @@ -102,17 +102,17 @@ .secrel32 gcfunc .secidx gcfunc -.short 0 # flags -.long .gcfunc_end - gcfunc # length of region +.short 0 /* flags */ +.long .gcfunc_end - gcfunc /* length of region */ .lines_block4: -.long 0 # file ID 0 (foo) -.long 1 # no. lines -.long .lines_end2 - .lines_block4 # length +.long 0 /* file ID 0 (foo) */ +.long 1 /* no. lines */ +.long .lines_end2 - .lines_block4 /* length */ .long .line6 - gcfunc -.long 0x80000006 # line 6 +.long 0x80000006 /* line 6 */ .lines_end2: diff --git a/ld/testsuite/ld-pe/pdb3b.s b/ld/testsuite/ld-pe/pdb3b.s index fffb1150c88..aa23821648b 100644 --- a/ld/testsuite/ld-pe/pdb3b.s +++ b/ld/testsuite/ld-pe/pdb3b.s @@ -36,7 +36,7 @@ .long 0x67452310 .long 0x01234567 .long 0x89abcdef -.short 0 # padding +.short 0 /* padding */ .long .src2 - .strings_start .byte NUM_MD5_BYTES @@ -45,7 +45,7 @@ .long 0x4c5d6e7f .long 0x7f6e5d4c .long 0x3b2a1908 -.short 0 # padding +.short 0 /* padding */ .chksms_end: