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.
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
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 <<EOF
#include "pdb.h"
EOF
static uint16_t
get_arch_number (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 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
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
#define CV_CFL_80386 0x03
#define CV_CFL_X64 0xD0
+#define CV_CFL_ARM64 0xF6
#define CV_CFL_LINK 0x07
.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
.udt1:
.short .syms_end - .udt1 - 2
.short S_UDT
-.long 0x1004 # struct bar
+.long 0x1004 /* struct bar */
.asciz "bar"
.syms_end:
.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)
.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:
.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"
.ldata2:
.short .gdata1 - .ldata2 - 2
.short S_LDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
.secrel32 lvar2
.secidx lvar2
.asciz "lvar2"
.gdata1:
.short .gdata2 - .gdata1 - 2
.short S_GDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
.secrel32 gvar1
.secidx gvar1
.asciz "gvar1"
.gdata2:
.short .gproc1 - .gdata2 - 2
.short S_GDATA32
-.long 0x1000 # const uint32_t
+.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
+.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
.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"
.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"
.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
.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
.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
.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
.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
.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:
.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
.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
.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:
.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:
.udt2:
.short .constant1 - .udt2 - 2
.short S_UDT
-.long 0x1009 # class foo
+.long 0x1009 /* class foo */
.asciz "foo"
.constant1:
.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
.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"
.lthread3:
.short .gthread1 - .lthread3 - 2
.short S_LTHREAD32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
.secrel32 lvar6
.secidx lvar6
.asciz "lvar6"
.gthread1:
.short .gthread2 - .gthread1 - 2
.short S_GTHREAD32
-.long 0x1000 # const uint32_t
+.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
+.long 0x1000 /* const uint32_t */
.secrel32 gvar4
.secidx gvar4
.asciz "gvar4"
.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:
.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"
.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:
.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
.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
.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
.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
.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
.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:
.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:
.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:
.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 "<unnamed-tag>"
-# 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 "<unnamed-tag>"
-# 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:
.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:
.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:
.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:
.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:
# MA 02110-1301, USA.
if {![istarget i*86-*-mingw*]
- && ![istarget x86_64-*-mingw*]} {
+ && ![istarget x86_64-*-mingw*]
+ && ![istarget aarch64-*-mingw*]} {
return
}
.long 0x89abcdef
.long 0xfedcba98
.long 0x67452310
-.short 0 # padding
+.short 0 /* padding */
.long .src2 - .strings_start
.byte NUM_MD5_BYTES
.long 0x67452310
.long 0x01234567
.long 0x89abcdef
-.short 0 # padding
+.short 0 /* padding */
.chksms_end:
.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:
.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:
.long 0x67452310
.long 0x01234567
.long 0x89abcdef
-.short 0 # padding
+.short 0 /* padding */
.long .src2 - .strings_start
.byte NUM_MD5_BYTES
.long 0x4c5d6e7f
.long 0x7f6e5d4c
.long 0x3b2a1908
-.short 0 # padding
+.short 0 /* padding */
.chksms_end: