public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] ld: Add pdb support to aarch64-w64-mingw32
@ 2023-01-23 23:01 Mark Harmstone
  2023-01-24  7:29 ` Jan Beulich
  0 siblings, 1 reply; 3+ messages in thread
From: Mark Harmstone @ 2023-01-23 23:01 UTC (permalink / raw)
  To: binutils; +Cc: Mark Harmstone

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.

---
 ld/configure.tgt                 |   2 +-
 ld/emultempl/pep.em              |   3 +-
 ld/pdb.c                         |  36 +-
 ld/pdb.h                         |   1 +
 ld/testsuite/ld-pe/pdb-syms1a.s  |  66 ++--
 ld/testsuite/ld-pe/pdb-syms1b.s  | 498 ++++++++++++++--------------
 ld/testsuite/ld-pe/pdb-syms2.s   | 326 +++++++++---------
 ld/testsuite/ld-pe/pdb-types1a.s |   8 +-
 ld/testsuite/ld-pe/pdb-types1b.s | 544 +++++++++++++++----------------
 ld/testsuite/ld-pe/pdb-types2a.s |   8 +-
 ld/testsuite/ld-pe/pdb-types2b.s | 182 +++++------
 ld/testsuite/ld-pe/pdb-types3a.s |  42 +--
 ld/testsuite/ld-pe/pdb-types3b.s |  46 +--
 ld/testsuite/ld-pe/pdb.exp       |   3 +-
 ld/testsuite/ld-pe/pdb3a.s       |  48 +--
 ld/testsuite/ld-pe/pdb3b.s       |   4 +-
 16 files changed, 917 insertions(+), 900 deletions(-)

diff --git a/ld/configure.tgt b/ld/configure.tgt
index 4f9a61f95ce..efd43095844 100644
--- a/ld/configure.tgt
+++ b/ld/configure.tgt
@@ -121,7 +121,7 @@ aarch64-*-haiku*)	targ_emul=aarch64haiku
 aarch64-*-pe* | aarch64-*-mingw*)
 			targ_emul=aarch64pe
 			targ_extra_emuls="arm64pe"
-			targ_extra_ofiles="deffilep.o pep-dll-aarch64.o pe-dll.o"
+			targ_extra_ofiles="deffilep.o pep-dll-aarch64.o pe-dll.o pdb.o"
 			;;
 alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
 			targ_emul=elf64alpha_fbsd
diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em
index 0bdac8f81f0..ea5f09ac4a1 100644
--- a/ld/emultempl/pep.em
+++ b/ld/emultempl/pep.em
@@ -79,7 +79,8 @@ EOF
 
 case ${target} in
   x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin | \
-  i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
+  i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe | \
+  aarch64-*-mingw* | aarch64-*-pe* )
 fragment <<EOF
 #include "pdb.h"
 EOF
diff --git a/ld/pdb.c b/ld/pdb.c
index dade888b885..12c4ac4b112 100644
--- a/ld/pdb.c
+++ b/ld/pdb.c
@@ -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
diff --git a/ld/pdb.h b/ld/pdb.h
index ea2db5fd8fa..18e18e7111a 100644
--- a/ld/pdb.h
+++ b/ld/pdb.h
@@ -820,6 +820,7 @@ struct objname
 
 #define CV_CFL_80386			0x03
 #define CV_CFL_X64			0xD0
+#define CV_CFL_ARM64			0xF6
 
 #define CV_CFL_LINK			0x07
 
diff --git a/ld/testsuite/ld-pe/pdb-syms1a.s b/ld/testsuite/ld-pe/pdb-syms1a.s
index c1929c3ec85..d076bbc776d 100644
--- a/ld/testsuite/ld-pe/pdb-syms1a.s
+++ b/ld/testsuite/ld-pe/pdb-syms1a.s
@@ -26,20 +26,20 @@
 .gproc2:
 .short .gproc2_end - .gproc2 - 2
 .short S_GPROC32
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long 1 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1002 # type
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long 1 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1002 /* type */
 .secrel32 proc2
 .secidx proc2
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc2"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc2_end:
 .short .udt1 - .gproc2_end - 2
@@ -48,7 +48,7 @@
 .udt1:
 .short .syms_end - .udt1 - 2
 .short S_UDT
-.long 0x1004 # struct bar
+.long 0x1004 /* struct bar */
 .asciz "bar"
 
 .syms_end:
@@ -57,19 +57,19 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, const uint32_t
+/* Type 1000, const uint32_t */
 .mod1:
 .short .arglist1 - .mod1 - 2
 .short LF_MODIFIER
 .long T_UINT4
-.short 1 # const
+.short 1 /* const */
 .p2align 2
 
-# Type 1001, arglist (uint32_t)
+/* Type 1001, arglist (uint32_t) */
 .arglist1:
 .short .proctype1 - .arglist1 - 2
 .short LF_ARGLIST
-.long 1 # no. entries
+.long 1 /* no. entries */
 .long T_UINT4
 
 # Type 1002, procedure (return type T_VOID, arglist 1001)
@@ -77,34 +77,34 @@
 .short .fieldlist1 - .proctype1 - 2
 .short LF_PROCEDURE
 .long T_VOID
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 1 # no. parameters
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 1 /* no. parameters */
 .long 0x1001
 
-# Type 1003, field list for struct bar
+/* Type 1003, field list for struct bar */
 .fieldlist1:
 .short .struct1 - .fieldlist1 - 2
 .short LF_FIELDLIST
 .short LF_MEMBER
-.short 3 # public
+.short 3 /* public */
 .long T_UINT4
-.short 0 # offset
+.short 0 /* offset */
 .asciz "num1"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# Type 1004, declaration of struct bar
+/* Type 1004, declaration of struct bar */
 .struct1:
 .short .types_end - .struct1 - 2
 .short LF_STRUCTURE
-.short 1 # no. members
-.short 0 # property
-.long 0x1003 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 4 # size
-.asciz "bar" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.short 1 /* no. members */
+.short 0 /* property */
+.long 0x1003 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 4 /* size */
+.asciz "bar" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .types_end:
diff --git a/ld/testsuite/ld-pe/pdb-syms1b.s b/ld/testsuite/ld-pe/pdb-syms1b.s
index ddc471104b5..876757dea10 100644
--- a/ld/testsuite/ld-pe/pdb-syms1b.s
+++ b/ld/testsuite/ld-pe/pdb-syms1b.s
@@ -47,23 +47,23 @@
 .ldata1:
 .short .ldata1a - .ldata1 - 2
 .short S_LDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar1
 .secidx lvar1
 .asciz "lvar1"
 
-.ldata1a: # duplicate with same address
+.ldata1a: /* duplicate with same address */
 .short .ldata1b - .ldata1a - 2
 .short S_LDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar1
 .secidx lvar1
 .asciz "lvar1"
 
-.ldata1b: # duplicate with different address
+.ldata1b: /* duplicate with different address */
 .short .ldata2 - .ldata1b - 2
 .short S_LDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar1a
 .secidx lvar1a
 .asciz "lvar1"
@@ -71,7 +71,7 @@
 .ldata2:
 .short .gdata1 - .ldata2 - 2
 .short S_LDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar2
 .secidx lvar2
 .asciz "lvar2"
@@ -79,7 +79,7 @@
 .gdata1:
 .short .gdata2 - .gdata1 - 2
 .short S_GDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 gvar1
 .secidx gvar1
 .asciz "gvar1"
@@ -87,7 +87,7 @@
 .gdata2:
 .short .gproc1 - .gdata2 - 2
 .short S_GDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 gvar2
 .secidx gvar2
 .asciz "gvar2"
@@ -95,20 +95,20 @@
 .gproc1:
 .short .gproc1_end - .gproc1 - 2
 .short S_GPROC32
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc1_end - proc1 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1002 # type
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc1_end - proc1 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1002 /* type */
 .secrel32 proc1
 .secidx proc1
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc1"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc1_end:
 .short .gproc2 - .gproc1_end - 2
@@ -117,31 +117,31 @@
 .gproc2:
 .short .udt1 - .gproc2 - 2
 .short S_GPROC32
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc2_end - proc2 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1002 # type
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc2_end - proc2 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1002 /* type */
 .secrel32 proc2
 .secidx proc2
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc2"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .udt1:
 .short .ldata3 - .udt1 - 2
 .short S_UDT
-.long 0x1011 # struct bar
+.long 0x1011 /* struct bar */
 .asciz "bar"
 
 .ldata3:
 .short .lthread1 - .ldata3 - 2
 .short S_LDATA32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar3
 .secidx lvar3
 .asciz "lvar3"
@@ -149,7 +149,7 @@
 .lthread1:
 .short .gproc2_end - .lthread1 - 2
 .short S_LTHREAD32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar4
 .secidx lvar4
 .asciz "lvar4"
@@ -161,20 +161,20 @@
 .gproc3:
 .short .gproc3_end - .gproc3 - 2
 .short S_LPROC32
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc3_end - proc3 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1002 # type
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc3_end - proc3 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1002 /* type */
 .secrel32 proc3
 .secidx proc3
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc3"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc3_end:
 .short .gproc4 - .gproc3_end - 2
@@ -183,20 +183,20 @@
 .gproc4:
 .short .gproc4_end - .gproc4 - 2
 .short S_LPROC32
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc4_end - proc4 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1002 # type
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc4_end - proc4 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1002 /* type */
 .secrel32 proc4
 .secidx proc4
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc4"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc4_end:
 .short .gproc5 - .gproc4_end - 2
@@ -205,20 +205,20 @@
 .gproc5:
 .short .gproc5_end - .gproc5 - 2
 .short S_GPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc5_end - proc5 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1003 # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc5_end - proc5 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1003 /* func ID */
 .secrel32 proc5
 .secidx proc5
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc5"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc5_end:
 .short .gproc6 - .gproc5_end - 2
@@ -227,20 +227,20 @@
 .gproc6:
 .short .gproc6_end - .gproc6 - 2
 .short S_GPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc6_end - proc6 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1004 # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc6_end - proc6 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1004 /* func ID */
 .secrel32 proc6
 .secidx proc6
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc6"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc6_end:
 .short .gproc7 - .gproc6_end - 2
@@ -249,18 +249,18 @@
 .gproc7:
 .short .gproc7_end - .gproc7 - 2
 .short S_GPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc7_end - proc7 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x100a # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc7_end - proc7 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x100a /* func ID */
 .secrel32 proc7
 .secidx proc7
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "foo::method"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
 .gproc7_end:
 .short .gproc8 - .gproc7_end - 2
@@ -269,16 +269,16 @@
 .gproc8:
 .short .gproc8_end - .gproc8 - 2
 .short S_GPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc8_end - proc8 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x100b # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc8_end - proc8 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x100b /* func ID */
 .secrel32 proc8
 .secidx proc8
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "foo::method2"
 
 .gproc8_end:
@@ -288,20 +288,20 @@
 .gproc9:
 .short .gproc9_end - .gproc9 - 2
 .short S_LPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc9_end - proc9 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x100c # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc9_end - proc9 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x100c /* func ID */
 .secrel32 proc9
 .secidx proc9
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc9"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc9_end:
 .short .gproc10 - .gproc9_end - 2
@@ -310,19 +310,19 @@
 .gproc10:
 .short .gproc10_end - .gproc10 - 2
 .short S_GPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc10_end - proc10 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x100d # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc10_end - proc10 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x100d /* func ID */
 .secrel32 proc10
 .secidx proc10
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc10"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .gproc10_end:
 .short .gproc11 - .gproc10_end - 2
@@ -331,16 +331,16 @@
 .gproc11:
 .short .gproc11_end - .gproc11 - 2
 .short S_LPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc11_end - proc11 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x100e # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc11_end - proc11 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x100e /* func ID */
 .secrel32 proc11
 .secidx proc11
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "foo::method3"
 
 .gproc11_end:
@@ -350,16 +350,16 @@
 .gproc12:
 .short .gproc12_end - .gproc12 - 2
 .short S_LPROC32_ID
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc12_end - proc12 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x100f # func ID
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc12_end - proc12 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x100f /* func ID */
 .secrel32 proc12
 .secidx proc12
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "foo::method4"
 
 .gproc12_end:
@@ -369,7 +369,7 @@
 .udt2:
 .short .constant1 - .udt2 - 2
 .short S_UDT
-.long 0x1009 # class foo
+.long 0x1009 /* class foo */
 .asciz "foo"
 
 .constant1:
@@ -378,9 +378,9 @@
 .long T_UINT4
 .short 42
 .asciz "answer"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .constant2:
 .short .lthread2 - .constant2 - 2
@@ -389,13 +389,13 @@
 .short LF_UQUADWORD
 .quad 0x0123456789abcdef
 .asciz "answer2"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .lthread2:
 .short .lthread3 - .lthread2 - 2
 .short S_LTHREAD32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar5
 .secidx lvar5
 .asciz "lvar5"
@@ -403,7 +403,7 @@
 .lthread3:
 .short .gthread1 - .lthread3 - 2
 .short S_LTHREAD32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 lvar6
 .secidx lvar6
 .asciz "lvar6"
@@ -411,7 +411,7 @@
 .gthread1:
 .short .gthread2 - .gthread1 - 2
 .short S_GTHREAD32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 gvar3
 .secidx gvar3
 .asciz "gvar3"
@@ -419,7 +419,7 @@
 .gthread2:
 .short .syms_end - .gthread2 - 2
 .short S_GTHREAD32
-.long 0x1000 # const uint32_t
+.long 0x1000 /* const uint32_t */
 .secrel32 gvar4
 .secidx gvar4
 .asciz "gvar4"
@@ -431,197 +431,197 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, const uint32_t
+/* Type 1000, const uint32_t */
 .mod1:
 .short .arglist1 - .mod1 - 2
 .short LF_MODIFIER
 .long T_UINT4
-.short 1 # const
+.short 1 /* const */
 .p2align 2
 
-# Type 1001, arglist (uint32_t)
+/* Type 1001, arglist (uint32_t) */
 .arglist1:
 .short .proctype1 - .arglist1 - 2
 .short LF_ARGLIST
-.long 1 # no. entries
+.long 1 /* no. entries */
 .long T_UINT4
 
-# Type 1002, procedure (return type T_VOID, arglist 1001)
+/* Type 1002, procedure (return type T_VOID, arglist 1001) */
 .proctype1:
 .short .funcid1 - .proctype1 - 2
 .short LF_PROCEDURE
 .long T_VOID
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 1 # no. parameters
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 1 /* no. parameters */
 .long 0x1001
 
-# Type 1003, func ID for proc5
+/* Type 1003, func ID for proc5 */
 .funcid1:
 .short .funcid2 - .funcid1 - 2
 .short LF_FUNC_ID
-.long 0 # parent scope
-.long 0x1002 # type
+.long 0 /* parent scope */
+.long 0x1002 /* type */
 .asciz "proc5"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1004, func ID for proc6
+/* Type 1004, func ID for proc6 */
 .funcid2:
 .short .class1 - .funcid2 - 2
 .short LF_FUNC_ID
-.long 0 # parent scope
-.long 0x1002 # type
+.long 0 /* parent scope */
+.long 0x1002 /* type */
 .asciz "proc6"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1005, forward declaration of class foo
+/* Type 1005, forward declaration of class foo */
 .class1:
 .short .ptr1 - .class1 - 2
 .short LF_CLASS
-.short 0 # no. members
-.short 0x80 # property (forward declaration)
-.long 0 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 0 # size
-.asciz "foo" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 1006, pointer to 1005
+.short 0 /* no. members */
+.short 0x80 /* property (forward declaration) */
+.long 0 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 0 /* size */
+.asciz "foo" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 1006, pointer to 1005 */
 .ptr1:
 .short .mfunction1 - .ptr1 - 2
 .short LF_POINTER
 .long 0x1005
 .long (8 << 13) | CV_PTR_64
 
-# Type 1007, member function of 1005, return type void, arg list 1001
+/* Type 1007, member function of 1005, return type void, arg list 1001 */
 .mfunction1:
 .short .fieldlist1 - .mfunction1 - 2
 .short LF_MFUNCTION
 .long T_VOID
 .long 0x1005
-.long 0x1006 # type of "this" pointer
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 1 # no. parameters
-.long 0x1001 # arg list
-.long 0 # "this" adjustment
-
-# Type 1008, field list for class foo
+.long 0x1006 /* type of "this" pointer */
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 1 /* no. parameters */
+.long 0x1001 /* arg list */
+.long 0 /* "this" adjustment */
+
+/* Type 1008, field list for class foo */
 .fieldlist1:
 .short .class2 - .fieldlist1 - 2
 .short LF_FIELDLIST
 .short LF_ONEMETHOD
-.short 0 # method attribute
-.long 0x1007 # method type
+.short 0 /* method attribute */
+.long 0x1007 /* method type */
 .asciz "method"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 .short LF_ONEMETHOD
-.short 0 # method attribute
-.long 0x1007 # method type
+.short 0 /* method attribute */
+.long 0x1007 /* method type */
 .asciz "method2"
 .short LF_ONEMETHOD
-.short 0 # method attribute
-.long 0x1007 # method type
+.short 0 /* method attribute */
+.long 0x1007 /* method type */
 .asciz "method3"
 .short LF_ONEMETHOD
-.short 0 # method attribute
-.long 0x1007 # method type
+.short 0 /* method attribute */
+.long 0x1007 /* method type */
 .asciz "method4"
 
-# Type 1009, actual declaration of class foo
+/* Type 1009, actual declaration of class foo */
 .class2:
 .short .mfunc1 - .class2 - 2
 .short LF_CLASS
-.short 0 # no. members
-.short 0 # property
-.long 0x1008 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 0 # size
-.asciz "foo" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 100a, function "method" within class "foo"
+.short 0 /* no. members */
+.short 0 /* property */
+.long 0x1008 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 0 /* size */
+.asciz "foo" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 100a, function "method" within class "foo" */
 .mfunc1:
 .short .mfunc2 - .mfunc1 - 2
 .short LF_MFUNC_ID
-.long 0x1009 # parent class
-.long 0x1002 # function type
+.long 0x1009 /* parent class */
+.long 0x1002 /* function type */
 .asciz "method"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# Type 100b, function "method2" within class "foo"
+/* Type 100b, function "method2" within class "foo" */
 .mfunc2:
 .short .funcid3 - .mfunc2 - 2
 .short LF_MFUNC_ID
-.long 0x1009 # parent class
-.long 0x1002 # function type
+.long 0x1009 /* parent class */
+.long 0x1002 /* function type */
 .asciz "method2"
 
-# Type 100c, func ID for proc9
+/* Type 100c, func ID for proc9 */
 .funcid3:
 .short .funcid4 - .funcid3 - 2
 .short LF_FUNC_ID
-.long 0 # parent scope
-.long 0x1002 # type
+.long 0 /* parent scope */
+.long 0x1002 /* type */
 .asciz "proc9"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 100d, func ID for proc10
+/* Type 100d, func ID for proc10 */
 .funcid4:
 .short .mfunc3 - .funcid4 - 2
 .short LF_FUNC_ID
-.long 0 # parent scope
-.long 0x1002 # type
+.long 0 /* parent scope */
+.long 0x1002 /* type */
 .asciz "proc10"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# Type 100e, function "method3" within class "foo"
+/* Type 100e, function "method3" within class "foo" */
 .mfunc3:
 .short .mfunc4 - .mfunc3 - 2
 .short LF_MFUNC_ID
-.long 0x1009 # parent class
-.long 0x1002 # function type
+.long 0x1009 /* parent class */
+.long 0x1002 /* function type */
 .asciz "method3"
 
-# Type 100f, function "method4" within class "foo"
+/* Type 100f, function "method4" within class "foo" */
 .mfunc4:
 .short .fieldlist2 - .mfunc4 - 2
 .short LF_MFUNC_ID
-.long 0x1009 # parent class
-.long 0x1002 # function type
+.long 0x1009 /* parent class */
+.long 0x1002 /* function type */
 .asciz "method4"
 
-# Type 1010, field list for struct bar
+/* Type 1010, field list for struct bar */
 .fieldlist2:
 .short .struct1 - .fieldlist2 - 2
 .short LF_FIELDLIST
 .short LF_MEMBER
-.short 3 # public
+.short 3 /* public */
 .long T_UINT4
-.short 0 # offset
+.short 0 /* offset */
 .asciz "num1"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# Type 1011, declaration of struct bar
+/* Type 1011, declaration of struct bar */
 .struct1:
 .short .types_end - .struct1 - 2
 .short LF_STRUCTURE
-.short 1 # no. members
-.short 0 # property
-.long 0x1010 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 4 # size
-.asciz "bar" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.short 1 /* no. members */
+.short 0 /* property */
+.long 0x1010 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 4 /* size */
+.asciz "bar" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .types_end:
 
@@ -657,37 +657,37 @@ lvar5:
 
 .global main
 main:
-    jmp main
+    .short 0
     .secrel32 .data
 
 .global proc2
 proc2:
-    nop
+    .byte 0
 .proc2_end:
 
 .global proc4
 proc4:
-    nop
+    .byte 0
 .proc4_end:
 
 .global proc6
 proc6:
-    nop
+    .byte 0
 .proc6_end:
 
 .global proc8
 proc8:
-    nop
+    .byte 0
 .proc8_end:
 
 .global proc10
 proc10:
-    nop
+    .byte 0
 .proc10_end:
 
 .global proc12
 proc12:
-    nop
+    .byte 0
 .proc12_end:
 
 .section "gcsect"
@@ -705,32 +705,32 @@ gvar4:
 
 .global proc1
 proc1:
-    nop
+    .byte 0
 .proc1_end:
 
 .global proc3
 proc3:
-    nop
+    .byte 0
 .proc3_end:
 
 .global proc5
 proc5:
-    nop
+    .byte 0
 .proc5_end:
 
 .global proc7
 proc7:
-    nop
+    .byte 0
 .proc7_end:
 
 .global proc9
 proc9:
-    nop
+    .byte 0
 .proc9_end:
 
 .global proc11
 proc11:
-    nop
+    .byte 0
 .proc11_end:
 
 lvar6:
diff --git a/ld/testsuite/ld-pe/pdb-syms2.s b/ld/testsuite/ld-pe/pdb-syms2.s
index ec677eaee43..14c149c23fc 100644
--- a/ld/testsuite/ld-pe/pdb-syms2.s
+++ b/ld/testsuite/ld-pe/pdb-syms2.s
@@ -50,26 +50,26 @@
 .objname1:
 .short .compile1 - .objname1 - 2
 .short S_OBJNAME
-.long 0 # signature
+.long 0 /* signature */
 .asciz "syms3.o"
 
 .compile1:
 .short .unamespace1 - .compile1 - 2
 .short S_COMPILE3
-.long 0 # flags
-.short CV_CFL_AMD64 # target processor
-.short 0 # frontend major
-.short 0 # frontend minor
-.short 0 # frontend build
-.short 0 # frontend qfe
-.short 0 # backend major
-.short 0 # backend minor
-.short 0 # backend build
-.short 0 # backend qfe
+.long 0 /* flags */
+.short CV_CFL_AMD64 /* target processor */
+.short 0 /* frontend major */
+.short 0 /* frontend minor */
+.short 0 /* frontend build */
+.short 0 /* frontend qfe */
+.short 0 /* backend major */
+.short 0 /* backend minor */
+.short 0 /* backend build */
+.short 0 /* backend qfe */
 .asciz "GNU AS"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .unamespace1:
 .short .sbuildinfo1 - .unamespace1 - 2
@@ -79,180 +79,180 @@
 .sbuildinfo1:
 .short .gproc1 - .sbuildinfo1 - 2
 .short S_BUILDINFO
-.long 0x1007 # type
+.long 0x1007 /* type */
 
 .gproc1:
 .short .frameproc1 - .gproc1 - 2
 .short S_GPROC32
-.long 0 # parent
-.long 0 # end
-.long 0 # next symbol
-.long .proc1_end - proc1 # length
-.long 0 # debug start offset
-.long 0 # debug end offset
-.long 0x1001 # type
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next symbol */
+.long .proc1_end - proc1 /* length */
+.long 0 /* debug start offset */
+.long 0 /* debug end offset */
+.long 0x1001 /* type */
 .secrel32 proc1
 .secidx proc1
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "proc1"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .frameproc1:
 .short .framecookie1 - .frameproc1 - 2
 .short S_FRAMEPROC
-.long 0 # frame size
-.long 0 # frame padding
-.long 0 # padding offset
-.long 0 # size of callee-save registers
-.long 0 # offset of exception handler
-.short 0 # section of exception handler
-.long 0 # flags
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.long 0 /* frame size */
+.long 0 /* frame padding */
+.long 0 /* padding offset */
+.long 0 /* size of callee-save registers */
+.long 0 /* offset of exception handler */
+.short 0 /* section of exception handler */
+.long 0 /* flags */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .framecookie1:
 .short .bprel1 - .framecookie1 - 2
 .short S_FRAMECOOKIE
-.long 8 # frame-relative offset
-.short CV_AMD64_RAX # register
-.long 0 # cookie type (CV_COOKIETYPE_COPY)
-.byte 0 # flags
-.byte 0xf1 # padding
+.long 8 /* frame-relative offset */
+.short CV_AMD64_RAX /* register */
+.long 0 /* cookie type (CV_COOKIETYPE_COPY) */
+.byte 0 /* flags */
+.byte 0xf1 /* padding */
 
 .bprel1:
 .short .reg1 - .bprel1 - 2
 .short S_BPREL32
-.long 4 # BP-relative offset
-.long 0x1008 # type
+.long 4 /* BP-relative offset */
+.long 0x1008 /* type */
 .asciz "foo"
 
 .reg1:
 .short .regrel1 - .reg1 - 2
 .short S_REGISTER
-.long 0x1008 # type
+.long 0x1008 /* type */
 .short CV_AMD64_RAX
 .asciz "bar"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .regrel1:
 .short .local1 - .regrel1 - 2
 .short S_REGREL32
-.long 4 # offset
-.long 0x1008 # type
+.long 4 /* offset */
+.long 0x1008 /* type */
 .short CV_AMD64_RAX
 .asciz "baz"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .local1:
 .short .defrange1 - .local1 - 2
 .short S_LOCAL
-.long 0x1008 # type
-.short 0 # flags
+.long 0x1008 /* type */
+.short 0 /* flags */
 .asciz "local1"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .defrange1:
 .short .local2 - .defrange1 - 2
 .short S_DEFRANGE_REGISTER_REL
 .short CV_AMD64_RAX
-.short 0 # offset parent
-.long 0 # offset register
-.secrel32 .block1 # offset
-.secidx .block1 # section
-.short .block1_end - .block1 # length
-.short .gap1 - .block1 # gap 1 offset
-.short .gap1_end - .gap1 # gap 1 length
+.short 0 /* offset parent */
+.long 0 /* offset register */
+.secrel32 .block1 /* offset */
+.secidx .block1 /* section */
+.short .block1_end - .block1 /* length */
+.short .gap1 - .block1 /* gap 1 offset */
+.short .gap1_end - .gap1 /* gap 1 length */
 
 .local2:
 .short .defrange2 - .local2 - 2
 .short S_LOCAL
-.long 0x1008 # type
-.short 0 # flags
+.long 0x1008 /* type */
+.short 0 /* flags */
 .asciz "local2"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .defrange2:
 .short .local3 - .defrange2 - 2
 .short S_DEFRANGE_FRAMEPOINTER_REL
-.long 4 # frame pointer offset
-.secrel32 .block1 # offset
-.secidx .block1 # section
-.short .block1_end - .block1 # length
-.short .gap1 - .block1 # gap 1 offset
-.short .gap1_end - .gap1 # gap 1 length
+.long 4 /* frame pointer offset */
+.secrel32 .block1 /* offset */
+.secidx .block1 /* section */
+.short .block1_end - .block1 /* length */
+.short .gap1 - .block1 /* gap 1 offset */
+.short .gap1_end - .gap1 /* gap 1 length */
 
 .local3:
 .short .defrange3 - .local3 - 2
 .short S_LOCAL
-.long 0x1008 # type
-.short 0 # flags
+.long 0x1008 /* type */
+.short 0 /* flags */
 .asciz "local3"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .defrange3:
 .short .local4 - .defrange3 - 2
 .short S_DEFRANGE_SUBFIELD_REGISTER
 .short CV_AMD64_RAX
-.short 0 # attributes
-.long 4 # offset in parent variable
-.secrel32 .block1 # offset
-.secidx .block1 # section
-.short .block1_end - .block1 # length
-.short .gap1 - .block1 # gap 1 offset
-.short .gap1_end - .gap1 # gap 1 length
+.short 0 /* attributes */
+.long 4 /* offset in parent variable */
+.secrel32 .block1 /* offset */
+.secidx .block1 /* section */
+.short .block1_end - .block1 /* length */
+.short .gap1 - .block1 /* gap 1 offset */
+.short .gap1_end - .gap1 /* gap 1 length */
 
 .local4:
 .short .defrange4 - .local4 - 2
 .short S_LOCAL
-.long 0x1008 # type
-.short 0 # flags
+.long 0x1008 /* type */
+.short 0 /* flags */
 .asciz "local4"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .defrange4:
 .short .local5 - .defrange4 - 2
 .short S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE
-.long 4 # frame pointer offset
+.long 4 /* frame pointer offset */
 
 .local5:
 .short .defrange5 - .local5 - 2
 .short S_LOCAL
-.long 0x1008 # type
-.short 0 # flags
+.long 0x1008 /* type */
+.short 0 /* flags */
 .asciz "local5"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .defrange5:
 .short .inlinesite1 - .defrange5 - 2
 .short S_DEFRANGE_REGISTER
 .short CV_AMD64_RAX
-.short 0 # attributes
-.secrel32 .block1 # offset
-.secidx .block1 # section
-.short .block1_end - .block1 # length
-.short .gap1 - .block1 # gap 1 offset
-.short .gap1_end - .gap1 # gap 1 length
+.short 0 /* attributes */
+.secrel32 .block1 /* offset */
+.secidx .block1 /* section */
+.short .block1_end - .block1 /* length */
+.short .gap1 - .block1 /* gap 1 offset */
+.short .gap1_end - .gap1 /* gap 1 length */
 
 .inlinesite1:
 .short .inlinesite1end - .inlinesite1 - 2
 .short S_INLINESITE
-.long 0 # parent
-.long 0 # end
-.long 0x1009 # inlinee (inline_func)
+.long 0 /* parent */
+.long 0 /* end */
+.long 0x1009 /* inlinee (inline_func) */
 
 .inlinesite1end:
 .short .sblock1 - .inlinesite1end - 2
@@ -261,24 +261,24 @@
 .sblock1:
 .short .label1 - .sblock1 - 2
 .short S_BLOCK32
-.long 0 # parent (filled in by linker)
-.long 0 # end (filled in by linker)
-.long .block1_end - .block1 # length
+.long 0 /* parent (filled in by linker) */
+.long 0 /* end (filled in by linker) */
+.long .block1_end - .block1 /* length */
 .secrel32 .block1
 .secidx .block1
-.byte 0 # name
-.byte 0xf1 # padding
+.byte 0 /* name */
+.byte 0xf1 /* padding */
 
 .label1:
 .short .sblock1_end - .label1 - 2
 .short S_LABEL32
 .secrel32 label
 .secidx label
-.byte 0 # flags
+.byte 0 /* flags */
 .asciz "label"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
 .sblock1_end:
 .short .thunk1 - .sblock1_end - 2
@@ -287,15 +287,15 @@
 .thunk1:
 .short .thunk1_end - .thunk1 - 2
 .short S_THUNK32
-.long 0 # parent
-.long 0 # end
-.long 0 # next
+.long 0 /* parent */
+.long 0 /* end */
+.long 0 /* next */
 .secrel32 thunk
 .secidx thunk
 .short .thunk_end - thunk
-.byte 0 # THUNK_ORDINAL value
+.byte 0 /* THUNK_ORDINAL value */
 .asciz "thunk"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
 .thunk1_end:
 .short .heapallocsite1 - .thunk1_end - 2
@@ -307,7 +307,7 @@
 .secrel32 .gap1_end
 .secidx .gap1_end
 .short .block1_end - .gap1_end
-.long 0x1008 # type
+.long 0x1008 /* type */
 
 .gproc1_end:
 .short .syms_end - .gproc1_end - 2
@@ -319,91 +319,91 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, arglist (uint32_t)
+/* Type 1000, arglist (uint32_t) */
 .arglist1:
 .short .proctype1 - .arglist1 - 2
 .short LF_ARGLIST
-.long 1 # no. entries
+.long 1 /* no. entries */
 .long T_UINT4
 
-# Type 1001, procedure (return type T_VOID, arglist 1000)
+/* Type 1001, procedure (return type T_VOID, arglist 1000) */
 .proctype1:
 .short .string1 - .proctype1 - 2
 .short LF_PROCEDURE
 .long T_VOID
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 1 # no. parameters
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 1 /* no. parameters */
 .long 0x1000
 
-# Type 1002, string "/tmp" (build directory)
+/* Type 1002, string "/tmp" (build directory) */
 .string1:
 .short .string2 - .string1 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "/tmp"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1003, string "gcc" (compiler)
+/* Type 1003, string "gcc" (compiler) */
 .string2:
 .short .string3 - .string2 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "gcc"
 
-# Type 1004, string "tmp.c" (source file)
+/* Type 1004, string "tmp.c" (source file) */
 .string3:
 .short .string4 - .string3 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "tmp.c"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1005, string "tmp.pdb" (PDB file)
+/* Type 1005, string "tmp.pdb" (PDB file) */
 .string4:
 .short .string5 - .string4 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "tmp.pdb"
 
-# Type 1006, string "-gcodeview" (command arguments)
+/* Type 1006, string "-gcodeview" (command arguments) */
 .string5:
 .short .buildinfo1 - .string5 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "-gcodeview"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# Type 1007, build info
+/* Type 1007, build info */
 .buildinfo1:
 .short .mod1 - .buildinfo1 - 2
 .short LF_BUILDINFO
-.short 5 # count
-.long 0x1002 # build directory
-.long 0x1003 # compiler
-.long 0x1004 # source file
-.long 0x1005 # PDB file
-.long 0x1006 # command arguments
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 1008, const uint32_t
+.short 5 /* count */
+.long 0x1002 /* build directory */
+.long 0x1003 /* compiler */
+.long 0x1004 /* source file */
+.long 0x1005 /* PDB file */
+.long 0x1006 /* command arguments */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 1008, const uint32_t */
 .mod1:
 .short .funcid1 - .mod1 - 2
 .short LF_MODIFIER
 .long T_UINT4
-.short 1 # const
+.short 1 /* const */
 .p2align 2
 
-# Type 1009, func ID for inline_func
+/* Type 1009, func ID for inline_func */
 .funcid1:
 .short .types_end - .funcid1 - 2
 .short LF_FUNC_ID
-.long 0 # parent scope
-.long 0x1001 # type
+.long 0 /* parent scope */
+.long 0x1001 /* type */
 .asciz "inline_func"
 
 .types_end:
@@ -412,19 +412,19 @@
 
 .global proc1
 proc1:
-  nop
+  .byte 0
 .block1:
-  nop
+  .byte 0
 label:
-  nop
+  .byte 0
 .gap1:
-  nop
+  .byte 0
 .gap1_end:
-  nop
+  .byte 0
 .block1_end:
-  nop
+  .byte 0
 .proc1_end:
 
 thunk:
-  nop
+  .byte 0
 .thunk_end:
diff --git a/ld/testsuite/ld-pe/pdb-types1a.s b/ld/testsuite/ld-pe/pdb-types1a.s
index a2ee9a9972f..96fbfd0a29b 100644
--- a/ld/testsuite/ld-pe/pdb-types1a.s
+++ b/ld/testsuite/ld-pe/pdb-types1a.s
@@ -8,20 +8,20 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, volatile long
+/* Type 1000, volatile long */
 .mod1:
 .short .mod2 - .mod1 - 2
 .short LF_MODIFIER
 .long T_LONG
-.short 2 # volatile
+.short 2 /* volatile */
 .p2align 2
 
-# Type 1001, const long
+/* Type 1001, const long */
 .mod2:
 .short .types_end - .mod2 - 2
 .short LF_MODIFIER
 .long T_LONG
-.short 1 # const
+.short 1 /* const */
 .p2align 2
 
 .types_end:
diff --git a/ld/testsuite/ld-pe/pdb-types1b.s b/ld/testsuite/ld-pe/pdb-types1b.s
index bd227b12ebc..e26b190b78f 100644
--- a/ld/testsuite/ld-pe/pdb-types1b.s
+++ b/ld/testsuite/ld-pe/pdb-types1b.s
@@ -44,567 +44,567 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, const long
+/* Type 1000, const long */
 .mod1:
 .short .mod2 - .mod1 - 2
 .short LF_MODIFIER
 .long T_LONG
-.short 1 # const
+.short 1 /* const */
 .p2align 2
 
-# Type 1001, volatile unsigned long
+/* Type 1001, volatile unsigned long */
 .mod2:
 .short .mod3 - .mod2 - 2
 .short LF_MODIFIER
 .long T_ULONG
-.short 2 # volatile
+.short 2 /* volatile */
 .p2align 2
 
-# Type 1002, const volatile int
+/* Type 1002, const volatile int */
 .mod3:
 .short .ptr1 - .mod3 - 2
 .short LF_MODIFIER
 .long T_INT4
-.short 3 # const volatile
+.short 3 /* const volatile */
 .p2align 2
 
-# Type 1003, const long * (64-bit pointer)
+/* Type 1003, const long * (64-bit pointer) */
 .ptr1:
 .short .ptr2 - .ptr1 - 2
 .short LF_POINTER
 .long 0x1000
 .long (8 << 13) | CV_PTR_64
 
-# Type 1004, volatile unsigned long * (32-bit pointer)
+/* Type 1004, volatile unsigned long * (32-bit pointer) */
 .ptr2:
 .short .arglist1 - .ptr2 - 2
 .short LF_POINTER
 .long 0x1001
 .long (4 << 13) | CV_PTR_NEAR32
 
-# Type 1005, arg list of types 1000, 1001, 1002
+/* Type 1005, arg list of types 1000, 1001, 1002 */
 .arglist1:
 .short .proc1 - .arglist1 - 2
 .short LF_ARGLIST
-.long 3 # no. entries
+.long 3 /* no. entries */
 .long 0x1000
 .long 0x1001
 .long 0x1002
 
-# Type 1006, procedure, return type 1001, arg list 1005
+/* Type 1006, procedure, return type 1001, arg list 1005 */
 .proc1:
 .short .arr1 - .proc1 - 2
 .short LF_PROCEDURE
 .long 0x1001
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 3 # no. parameters
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 3 /* no. parameters */
 .long 0x1005
 
-# Type 1007, array[3] of const long *
+/* Type 1007, array[3] of const long * */
 .arr1:
 .short .bitfield1 - .arr1 - 2
 .short LF_ARRAY
-.long 0x1003 # element type
-.long T_INT4 # index type
-.short 24 # length in bytes
-.byte 0 # name
-.byte 0xf1 # padding
+.long 0x1003 /* element type */
+.long T_INT4 /* index type */
+.short 24 /* length in bytes */
+.byte 0 /* name */
+.byte 0xf1 /* padding */
 
-# Type 1008, bitfield of uint32_t, position 0, length 1
+/* Type 1008, bitfield of uint32_t, position 0, length 1 */
 .bitfield1:
 .short .bitfield2 - .bitfield1 - 2
 .short LF_BITFIELD
 .long T_UINT4
 .byte 1
 .byte 0
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1009, bitfield of uint32_t, position 1, length 31
+/* Type 1009, bitfield of uint32_t, position 1, length 31 */
 .bitfield2:
 .short .fieldlist1 - .bitfield2 - 2
 .short LF_BITFIELD
 .long T_UINT4
 .byte 31
 .byte 1
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 100a, field list (1008 as num1, 1009 as num2)
+/* Type 100a, field list (1008 as num1, 1009 as num2) */
 .fieldlist1:
 .short .struct1 - .fieldlist1 - 2
 .short LF_FIELDLIST
 .short LF_MEMBER
-.short 3 # public
+.short 3 /* public */
 .long 0x1008
-.short 0 # offset
+.short 0 /* offset */
 .asciz "num1"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 .short LF_MEMBER
-.short 3 # public
+.short 3 /* public */
 .long 0x1009
-.short 0 # offset
+.short 0 /* offset */
 .asciz "num2"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# Type 100b, anonymous struct, field list 100a
+/* Type 100b, anonymous struct, field list 100a */
 .struct1:
 .short .struct2 - .struct1 - 2
 .short LF_STRUCTURE
-.short 2 # no. members
-.short 0 # property
-.long 0x100a # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 4 # size
+.short 2 /* no. members */
+.short 0 /* property */
+.long 0x100a /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 4 /* size */
 .asciz "<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:
diff --git a/ld/testsuite/ld-pe/pdb-types2a.s b/ld/testsuite/ld-pe/pdb-types2a.s
index e11843ae575..97cd0a2e3fd 100644
--- a/ld/testsuite/ld-pe/pdb-types2a.s
+++ b/ld/testsuite/ld-pe/pdb-types2a.s
@@ -22,21 +22,21 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, string "test"
+/* Type 1000, string "test" */
 .string1:
 .short .string2 - .string1 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "test"
 .byte 0xf3
 .byte 0xf2
 .byte 0xf1
 
-# Type 1001, string "foo"
+/* Type 1001, string "foo" */
 .string2:
 .short .types_end - .string2 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "foo"
 
 .types_end:
diff --git a/ld/testsuite/ld-pe/pdb-types2b.s b/ld/testsuite/ld-pe/pdb-types2b.s
index 33541729f63..c0c273f396f 100644
--- a/ld/testsuite/ld-pe/pdb-types2b.s
+++ b/ld/testsuite/ld-pe/pdb-types2b.s
@@ -22,200 +22,200 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, string "foo"
+/* Type 1000, string "foo" */
 .string1:
 .short .string2 - .string1 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "foo"
 
-# Type 1001, string "bar"
+/* Type 1001, string "bar" */
 .string2:
 .short .substrlist1 - .string2 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "bar"
 
-# Type 1002, substr list of "foo" and "bar"
+/* Type 1002, substr list of "foo" and "bar" */
 .substrlist1:
 .short .string3 - .substrlist1 - 2
 .short LF_SUBSTR_LIST
-.long 2 # count
+.long 2 /* count */
 .long 0x1000
 .long 0x1001
 
-# Type 1003, string "baz" referencing substr list 1002
+/* Type 1003, string "baz" referencing substr list 1002 */
 .string3:
 .short .string4 - .string3 - 2
 .short LF_STRING_ID
 .long 0x1002
 .asciz "baz"
 
-# Type 1004, string "/tmp" (build directory)
+/* Type 1004, string "/tmp" (build directory) */
 .string4:
 .short .string5 - .string4 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "/tmp"
-.byte 0xf3 # padding
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf3 /* padding */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1005, string "gcc" (compiler)
+/* Type 1005, string "gcc" (compiler) */
 .string5:
 .short .string6 - .string5 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "gcc"
 
-# Type 1006, string "tmp.c" (source file)
+/* Type 1006, string "tmp.c" (source file) */
 .string6:
 .short .string7 - .string6 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "tmp.c"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1007, string "tmp.pdb" (PDB file)
+/* Type 1007, string "tmp.pdb" (PDB file) */
 .string7:
 .short .string8 - .string7 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "tmp.pdb"
 
-# Type 1008, string "-gcodeview" (command arguments)
+/* Type 1008, string "-gcodeview" (command arguments) */
 .string8:
 .short .buildinfo1 - .string8 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "-gcodeview"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
-# The 1009, build info
+/* The 1009, build info */
 .buildinfo1:
 .short .string9 - .buildinfo1 - 2
 .short LF_BUILDINFO
-.short 5 # count
-.long 0x1004 # build directory
-.long 0x1005 # compiler
-.long 0x1006 # source file
-.long 0x1007 # PDB file
-.long 0x1008 # command arguments
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 100a, string "namespace"
+.short 5 /* count */
+.long 0x1004 /* build directory */
+.long 0x1005 /* compiler */
+.long 0x1006 /* source file */
+.long 0x1007 /* PDB file */
+.long 0x1008 /* command arguments */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 100a, string "namespace" */
 .string9:
 .short .arglist1 - .string9 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "namespace"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 100b, arg list of type T_INT4
+/* Type 100b, arg list of type T_INT4 */
 .arglist1:
 .short .proc1 - .arglist1 - 2
 .short LF_ARGLIST
-.long 1 # no. entries
+.long 1 /* no. entries */
 .long T_INT4
 
-# Type 100c, procedure, return type T_VOID, arg list 100b
+/* Type 100c, procedure, return type T_VOID, arg list 100b */
 .proc1:
 .short .func1 - .proc1 - 2
 .short LF_PROCEDURE
 .long T_VOID
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 1 # no. parameters
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 1 /* no. parameters */
 .long 0x100b
 
-# Type 100d, function "func1"
+/* Type 100d, function "func1" */
 .func1:
 .short .func2 - .func1 - 2
 .short LF_FUNC_ID
-.long 0 # parent scope
-.long 0x100c # type
+.long 0 /* parent scope */
+.long 0x100c /* type */
 .asciz "func1"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 100e, function "func2" within scope "namespace"
+/* Type 100e, function "func2" within scope "namespace" */
 .func2:
 .short .class1 - .func2 - 2
 .short LF_FUNC_ID
-.long 0x100a # parent scope
-.long 0x100c # type
+.long 0x100a /* parent scope */
+.long 0x100c /* type */
 .asciz "func2"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 100f, forward declaration of class foo
+/* Type 100f, forward declaration of class foo */
 .class1:
 .short .ptr1 - .class1 - 2
 .short LF_CLASS
-.short 0 # no. members
-.short 0x80 # property (has unique name, forward declaration)
-.long 0 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 0 # size
-.asciz "foo" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 1010, pointer to 100f
+.short 0 /* no. members */
+.short 0x80 /* property (has unique name, forward declaration) */
+.long 0 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 0 /* size */
+.asciz "foo" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 1010, pointer to 100f */
 .ptr1:
 .short .mfunction1 - .ptr1 - 2
 .short LF_POINTER
 .long 0x100f
 .long (8 << 13) | CV_PTR_64
 
-# Type 1011, member function of 100f, return type void, arg list 100b
+/* Type 1011, member function of 100f, return type void, arg list 100b */
 .mfunction1:
 .short .fieldlist1 - .mfunction1 - 2
 .short LF_MFUNCTION
 .long T_VOID
 .long 0x100f
-.long 0x1010 # type of "this" pointer
-.byte 0 # calling convention
-.byte 0 # attributes
-.short 1 # no. parameters
-.long 0x100b # arg list
-.long 0 # "this" adjustment
-
-# Type 1012, field list for class foo
+.long 0x1010 /* type of "this" pointer */
+.byte 0 /* calling convention */
+.byte 0 /* attributes */
+.short 1 /* no. parameters */
+.long 0x100b /* arg list */
+.long 0 /* "this" adjustment */
+
+/* Type 1012, field list for class foo */
 .fieldlist1:
 .short .class2 - .fieldlist1 - 2
 .short LF_FIELDLIST
 .short LF_ONEMETHOD
-.short 0 # method attribute
-.long 0x1010 # method type
+.short 0 /* method attribute */
+.long 0x1010 /* method type */
 .asciz "method"
 .byte 0xf1
 
-# Type 1013, actual declaration of class foo
+/* Type 1013, actual declaration of class foo */
 .class2:
 .short .mfunc1 - .class2 - 2
 .short LF_CLASS
-.short 0 # no. members
-.short 0 # property
-.long 0x1012 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 0 # size
-.asciz "foo" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 1014, function "method" within class "foo"
+.short 0 /* no. members */
+.short 0 /* property */
+.long 0x1012 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 0 /* size */
+.asciz "foo" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 1014, function "method" within class "foo" */
 .mfunc1:
 .short .types_end - .mfunc1 - 2
 .short LF_MFUNC_ID
-.long 0x100f # parent class
-.long 0x1011 # function type
+.long 0x100f /* parent class */
+.long 0x1011 /* function type */
 .asciz "method"
-.byte 0xf1 # padding
+.byte 0xf1 /* padding */
 
 .types_end:
diff --git a/ld/testsuite/ld-pe/pdb-types3a.s b/ld/testsuite/ld-pe/pdb-types3a.s
index def001e52f7..cb847cebe72 100644
--- a/ld/testsuite/ld-pe/pdb-types3a.s
+++ b/ld/testsuite/ld-pe/pdb-types3a.s
@@ -11,47 +11,47 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, fieldlist for struct foo
+/* Type 1000, fieldlist for struct foo */
 .fieldlist1:
 .short .struct1 - .fieldlist1 - 2
 .short LF_FIELDLIST
 .short LF_MEMBER
-.short 3 # public
+.short 3 /* public */
 .long T_INT4
-.short 0 # offset
+.short 0 /* offset */
 .asciz "num"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1001, struct foo
+/* Type 1001, struct foo */
 .struct1:
 .short .string1 - .struct1 - 2
 .short LF_STRUCTURE
-.short 1 # no. members
-.short 0 # property
-.long 0x1000 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 4 # size
-.asciz "foo" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
-
-# Type 1002, string "foo"
+.short 1 /* no. members */
+.short 0 /* property */
+.long 0x1000 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 4 /* size */
+.asciz "foo" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
+
+/* Type 1002, string "foo" */
 .string1:
 .short .udtsrcline1 - .string1 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "foo.h"
 .byte 0xf2
 .byte 0xf1
 
-# Type 1003, UDT source line for type 1001
+/* Type 1003, UDT source line for type 1001 */
 .udtsrcline1:
 .short .types_end - .udtsrcline1 - 2
 .short LF_UDT_SRC_LINE
 .long 0x1001
-.long 0x1002 # source file string
-.long 42 # line no.
+.long 0x1002 /* source file string */
+.long 42 /* line no. */
 
 .types_end:
diff --git a/ld/testsuite/ld-pe/pdb-types3b.s b/ld/testsuite/ld-pe/pdb-types3b.s
index a22234e221f..580f3fb79eb 100644
--- a/ld/testsuite/ld-pe/pdb-types3b.s
+++ b/ld/testsuite/ld-pe/pdb-types3b.s
@@ -14,55 +14,55 @@
 
 .long CV_SIGNATURE_C13
 
-# Type 1000, const long
+/* Type 1000, const long */
 .mod1:
 .short .fieldlist1 - .mod1 - 2
 .short LF_MODIFIER
 .long T_LONG
-.short 1 # const
-.short 0 # padding
+.short 1 /* const */
+.short 0 /* padding */
 
-# Type 1001, fieldlist for struct foo
+/* Type 1001, fieldlist for struct foo */
 .fieldlist1:
 .short .struct1 - .fieldlist1 - 2
 .short LF_FIELDLIST
 .short LF_MEMBER
-.short 3 # public
+.short 3 /* public */
 .long T_INT4
-.short 0 # offset
+.short 0 /* offset */
 .asciz "num"
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1002, struct foo
+/* Type 1002, struct foo */
 .struct1:
 .short .string1 - .struct1 - 2
 .short LF_STRUCTURE
-.short 1 # no. members
-.short 0 # property
-.long 0x1001 # field list
-.long 0 # type derived from
-.long 0 # type of vshape table
-.short 4 # size
-.asciz "foo" # name
-.byte 0xf2 # padding
-.byte 0xf1 # padding
+.short 1 /* no. members */
+.short 0 /* property */
+.long 0x1001 /* field list */
+.long 0 /* type derived from */
+.long 0 /* type of vshape table */
+.short 4 /* size */
+.asciz "foo" /* name */
+.byte 0xf2 /* padding */
+.byte 0xf1 /* padding */
 
-# Type 1003, string "foo"
+/* Type 1003, string "foo" */
 .string1:
 .short .udtsrcline1 - .string1 - 2
 .short LF_STRING_ID
-.long 0 # sub-string
+.long 0 /* sub-string */
 .asciz "foo.h"
 .byte 0xf2
 .byte 0xf1
 
-# Type 1004, UDT source line for type 1002
+/* Type 1004, UDT source line for type 1002 */
 .udtsrcline1:
 .short .types_end - .udtsrcline1 - 2
 .short LF_UDT_SRC_LINE
 .long 0x1002
-.long 0x1003 # source file string
-.long 42 # line no.
+.long 0x1003 /* source file string */
+.long 42 /* line no. */
 
 .types_end:
diff --git a/ld/testsuite/ld-pe/pdb.exp b/ld/testsuite/ld-pe/pdb.exp
index 07d2a6fff1f..fe98cf65cca 100644
--- a/ld/testsuite/ld-pe/pdb.exp
+++ b/ld/testsuite/ld-pe/pdb.exp
@@ -19,7 +19,8 @@
 # MA 02110-1301, USA.
 
 if {![istarget i*86-*-mingw*]
-  && ![istarget x86_64-*-mingw*]} {
+  && ![istarget x86_64-*-mingw*]
+  && ![istarget aarch64-*-mingw*]} {
     return
 }
 
diff --git a/ld/testsuite/ld-pe/pdb3a.s b/ld/testsuite/ld-pe/pdb3a.s
index 1df84a344f6..d92683624c2 100644
--- a/ld/testsuite/ld-pe/pdb3a.s
+++ b/ld/testsuite/ld-pe/pdb3a.s
@@ -37,7 +37,7 @@
 .long 0x89abcdef
 .long 0xfedcba98
 .long 0x67452310
-.short 0 # padding
+.short 0 /* padding */
 
 .long .src2 - .strings_start
 .byte NUM_MD5_BYTES
@@ -46,7 +46,7 @@
 .long 0x67452310
 .long 0x01234567
 .long 0x89abcdef
-.short 0 # padding
+.short 0 /* padding */
 
 .chksms_end:
 
@@ -59,39 +59,39 @@
 
 .secrel32 main
 .secidx main
-.short 0 # flags
-.long .main_end - main # length of region
+.short 0 /* flags */
+.long .main_end - main /* length of region */
 
 .lines_block1:
 
-.long 0 # file ID 0 (foo)
-.long 2 # no. lines
-.long .lines_block2 - .lines_block1 # length
+.long 0 /* file ID 0 (foo) */
+.long 2 /* no. lines */
+.long .lines_block2 - .lines_block1 /* length */
 
 .long .line1 - main
-.long 0x80000001 # line 1
+.long 0x80000001 /* line 1 */
 .long .line2 - main
-.long 0x80000002 # line 2
+.long 0x80000002 /* line 2 */
 
 .lines_block2:
 
-.long 0x18 # file ID 18 (bar)
-.long 2 # no. lines
-.long .lines_block3 - .lines_block2 # length
+.long 0x18 /* file ID 18 (bar) */
+.long 2 /* no. lines */
+.long .lines_block3 - .lines_block2 /* length */
 
 .long .line3 - main
-.long 0x80000003 # line 3
+.long 0x80000003 /* line 3 */
 .long .line4 - main
-.long 0x80000004 # line 4
+.long 0x80000004 /* line 4 */
 
 .lines_block3:
 
-.long 0 # file ID 0 (foo)
-.long 1 # no. lines
-.long .lines_end - .lines_block3 # length
+.long 0 /* file ID 0 (foo) */
+.long 1 /* no. lines */
+.long .lines_end - .lines_block3 /* length */
 
 .long .line5 - main
-.long 0x80000005 # line 5
+.long 0x80000005 /* line 5 */
 
 .lines_end:
 
@@ -102,17 +102,17 @@
 
 .secrel32 gcfunc
 .secidx gcfunc
-.short 0 # flags
-.long .gcfunc_end - gcfunc # length of region
+.short 0 /* flags */
+.long .gcfunc_end - gcfunc /* length of region */
 
 .lines_block4:
 
-.long 0 # file ID 0 (foo)
-.long 1 # no. lines
-.long .lines_end2 - .lines_block4 # length
+.long 0 /* file ID 0 (foo) */
+.long 1 /* no. lines */
+.long .lines_end2 - .lines_block4 /* length */
 
 .long .line6 - gcfunc
-.long 0x80000006 # line 6
+.long 0x80000006 /* line 6 */
 
 .lines_end2:
 
diff --git a/ld/testsuite/ld-pe/pdb3b.s b/ld/testsuite/ld-pe/pdb3b.s
index fffb1150c88..aa23821648b 100644
--- a/ld/testsuite/ld-pe/pdb3b.s
+++ b/ld/testsuite/ld-pe/pdb3b.s
@@ -36,7 +36,7 @@
 .long 0x67452310
 .long 0x01234567
 .long 0x89abcdef
-.short 0 # padding
+.short 0 /* padding */
 
 .long .src2 - .strings_start
 .byte NUM_MD5_BYTES
@@ -45,7 +45,7 @@
 .long 0x4c5d6e7f
 .long 0x7f6e5d4c
 .long 0x3b2a1908
-.short 0 # padding
+.short 0 /* padding */
 
 .chksms_end:
 
-- 
2.38.2


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ld: Add pdb support to aarch64-w64-mingw32
  2023-01-23 23:01 [PATCH] ld: Add pdb support to aarch64-w64-mingw32 Mark Harmstone
@ 2023-01-24  7:29 ` Jan Beulich
  2023-01-25  0:10   ` Mark Harmstone
  0 siblings, 1 reply; 3+ messages in thread
From: Jan Beulich @ 2023-01-24  7:29 UTC (permalink / raw)
  To: Mark Harmstone; +Cc: binutils

On 24.01.2023 00:01, Mark Harmstone wrote:
> 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.

Lgtm, so feel free to commit. One question though:

> --- a/ld/testsuite/ld-pe/pdb.exp
> +++ b/ld/testsuite/ld-pe/pdb.exp
> @@ -19,7 +19,8 @@
>  # MA 02110-1301, USA.
>  
>  if {![istarget i*86-*-mingw*]
> -  && ![istarget x86_64-*-mingw*]} {
> +  && ![istarget x86_64-*-mingw*]
> +  && ![istarget aarch64-*-mingw*]} {
>      return
>  }

Why only *-*-mingw* targets here? What about the others also permitting
PDB generation?

Jan

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ld: Add pdb support to aarch64-w64-mingw32
  2023-01-24  7:29 ` Jan Beulich
@ 2023-01-25  0:10   ` Mark Harmstone
  0 siblings, 0 replies; 3+ messages in thread
From: Mark Harmstone @ 2023-01-25  0:10 UTC (permalink / raw)
  To: Jan Beulich; +Cc: binutils

Thanks Jan.

> Why only *-*-mingw* targets here? What about the others also permitting
> PDB generation?

Yes, it should include the -pe* targets, shouldn't it? I'll submit a separate patch for that.

Mark


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-01-25  0:10 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-23 23:01 [PATCH] ld: Add pdb support to aarch64-w64-mingw32 Mark Harmstone
2023-01-24  7:29 ` Jan Beulich
2023-01-25  0:10   ` Mark Harmstone

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).