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.
This commit is contained in:
+1
-1
@@ -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
|
||||
|
||||
+2
-1
@@ -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 <<EOF
|
||||
#include "pdb.h"
|
||||
EOF
|
||||
|
||||
@@ -591,13 +591,20 @@ populate_type_stream (bfd *pdb, bfd *stream, struct types *types)
|
||||
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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
+246
-246
@@ -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
|
||||
.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
|
||||
/* 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
|
||||
.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
|
||||
/* 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
|
||||
.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"
|
||||
/* 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:
|
||||
|
||||
+162
-162
@@ -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
|
||||
.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
|
||||
/* 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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
+266
-266
@@ -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 "<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
|
||||
.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
|
||||
/* 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
|
||||
.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
|
||||
/* 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
|
||||
.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
|
||||
/* 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
|
||||
.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)
|
||||
/* 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
|
||||
.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
|
||||
/* 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
|
||||
.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
|
||||
/* 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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
.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"
|
||||
/* 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
|
||||
.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
|
||||
/* 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
|
||||
.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
|
||||
/* 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
|
||||
.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"
|
||||
/* 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:
|
||||
|
||||
@@ -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
|
||||
.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"
|
||||
/* 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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+24
-24
@@ -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:
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user