public inbox for gdb-testers@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] x86: Add i386 PE big-object support
@ 2020-05-10 20:41 gdb-buildbot
  2020-05-10 20:41 ` Failures on Fedora-x86_64-m32, branch master gdb-buildbot
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: gdb-buildbot @ 2020-05-10 20:41 UTC (permalink / raw)
  To: gdb-testers

*** TEST RESULTS FOR COMMIT 251dae91074170036c1a76c5e5df1f45197d7feb ***

commit 251dae91074170036c1a76c5e5df1f45197d7feb
Author:     Tamar Christina <tamar.christina@arm.com>
AuthorDate: Mon Apr 27 17:39:31 2020 +0100
Commit:     Tamar Christina <tamar.christina@arm.com>
CommitDate: Mon Apr 27 17:41:39 2020 +0100

    x86: Add i386 PE big-object support
    
    The 64-bit version of binutils got support for the PE COFF BIG OBJ format a
    couple of years ago.   The BIG OBJ format is a slightly different COFF format
    which extends the size of the number of section field in the header from a
    uint16_t to a uint32_t and so greatly increases the number of sections allowed.
    
    However the 32-bit version of bfd never got support for this.  The GHC Haskell
    compiler generates a great deal of symbols due to it's use of
    -ffunction-sections and -fdata-sections.
    
    This meant that we could not build the 32-bit version of the GHC Compiler for
    many releases now as binutils didn't have this support.
    
    This patch adds the support to the 32-bit port of binutils as well and also does
    come cleanup in the code.
    
    bfd/ChangeLog:
    
            * coff-i386.c (COFF_WITH_PE_BIGOBJ): New.
            * coff-x86_64.c (COFF_WITH_PE_BIGOBJ): New.
            * config.bfd (targ_selvecs): Rename x86_64_pe_be_vec
            to x86_64_pe_big_vec as it not a big-endian format.
            (vec i386_pe_big_vec): New.
            * configure.ac: Likewise.
            * targets.c: Likewise.
            * configure: Regenerate.
            * pe-i386.c (TARGET_SYM_BIG, TARGET_NAME_BIG,
            COFF_WITH_PE_BIGOBJ): New.
            * pe-x86_64.c (TARGET_SYM_BIG, TARGET_NAME_BIG):
            New.
            (x86_64_pe_be_vec): Moved.
    
    gas/ChangeLog:
    
            * NEWS: Add news entry for big-obj.
            * config/tc-i386.c (i386_target_format): Support new format.
            * doc/c-i386.texi: Add i386 support.
            * testsuite/gas/pe/big-obj.d: Rename test to not be x64 specific.
            * testsuite/gas/pe/pe.exp (big-obj): Make test run on i386 as well.
    
    ld/ChangeLog:
    
            * pe-dll.c (pe_detail_list):  Add pe-bigobj-i386.

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c81b97b11e..0a0995ec09 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,19 @@
+2020-04-27  Tamar Christina  <tamar.christina@arm.com>
+
+	* coff-i386.c (COFF_WITH_PE_BIGOBJ): New.
+	* coff-x86_64.c (COFF_WITH_PE_BIGOBJ): New.
+	* config.bfd (targ_selvecs): Rename x86_64_pe_be_vec
+	to x86_64_pe_big_vec as it not a big-endian format.
+	(vec i386_pe_big_vec): New.
+	* configure.ac: Likewise.
+	* targets.c: Likewise.
+	* configure: Regenerate.
+	* pe-i386.c (TARGET_SYM_BIG, TARGET_NAME_BIG,
+	COFF_WITH_PE_BIGOBJ): New.
+	* pe-x86_64.c (TARGET_SYM_BIG, TARGET_NAME_BIG):
+	New.
+	(x86_64_pe_be_vec): Moved.
+
 2020-04-23  Anton Kolesov  <anton.kolesov@synopsys.com>
 
 	* elf-bfd.h (elfcore_write_arc_v2): Add prototype.
diff --git a/bfd/coff-i386.c b/bfd/coff-i386.c
index d3075f5a63..c89b1fc13b 100644
--- a/bfd/coff-i386.c
+++ b/bfd/coff-i386.c
@@ -701,3 +701,75 @@ const bfd_target
 
   COFF_SWAP_TABLE
 };
+
+#ifdef COFF_WITH_PE_BIGOBJ
+const bfd_target
+  TARGET_SYM_BIG =
+{
+  TARGET_NAME_BIG,
+  bfd_target_coff_flavour,
+  BFD_ENDIAN_LITTLE,		/* data byte order is little */
+  BFD_ENDIAN_LITTLE,		/* header byte order is little */
+
+  (HAS_RELOC | EXEC_P |		/* object flags */
+   HAS_LINENO | HAS_DEBUG |
+   HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS ),
+
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* section flags */
+#ifdef COFF_WITH_PE
+   | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
+#endif
+   | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
+
+#ifdef TARGET_UNDERSCORE
+  TARGET_UNDERSCORE,		/* leading underscore */
+#else
+  0,				/* leading underscore */
+#endif
+  '/',				/* ar_pad_char */
+  15,				/* ar_max_namelen */
+  0,				/* match priority.  */
+
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* hdrs */
+
+/* Note that we allow an object file to be treated as a core file as well.  */
+
+  {				/* bfd_check_format */
+    _bfd_dummy_target,
+    COFF_CHECK_FORMAT,
+    bfd_generic_archive_p,
+    COFF_CHECK_FORMAT
+  },
+  {				/* bfd_set_format */
+    _bfd_bool_bfd_false_error,
+    coff_mkobject,
+    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error
+  },
+  {				/* bfd_write_contents */
+    _bfd_bool_bfd_false_error,
+    COFF_WRITE_CONTENTS,
+    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error
+  },
+
+  BFD_JUMP_TABLE_GENERIC (coff),
+  BFD_JUMP_TABLE_COPY (coff),
+  BFD_JUMP_TABLE_CORE (_bfd_nocore),
+  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+  BFD_JUMP_TABLE_SYMBOLS (coff),
+  BFD_JUMP_TABLE_RELOCS (coff),
+  BFD_JUMP_TABLE_WRITE (coff),
+  BFD_JUMP_TABLE_LINK (coff),
+  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+  NULL,
+
+  &bigobj_swap_table
+};
+#endif
\ No newline at end of file
diff --git a/bfd/coff-x86_64.c b/bfd/coff-x86_64.c
index e0b32fddb8..a6632910da 100644
--- a/bfd/coff-x86_64.c
+++ b/bfd/coff-x86_64.c
@@ -824,3 +824,76 @@ const bfd_target
 
   COFF_SWAP_TABLE
 };
+
+/* Entry for big object files.  */
+
+#ifdef COFF_WITH_PE_BIGOBJ
+const bfd_target
+  TARGET_SYM_BIG =
+{
+  TARGET_NAME_BIG,
+  bfd_target_coff_flavour,
+  BFD_ENDIAN_LITTLE,		/* Data byte order is little.  */
+  BFD_ENDIAN_LITTLE,		/* Header byte order is little.  */
+
+  (HAS_RELOC | EXEC_P		/* Object flags.  */
+   | HAS_LINENO | HAS_DEBUG
+   | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
+
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* Section flags.  */
+#if defined(COFF_WITH_PE)
+   | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
+#endif
+   | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
+
+#ifdef TARGET_UNDERSCORE
+  TARGET_UNDERSCORE,		/* Leading underscore.  */
+#else
+  0,				/* Leading underscore.  */
+#endif
+  '/',				/* Ar_pad_char.  */
+  15,				/* Ar_max_namelen.  */
+  0,				/* match priority.  */
+
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
+     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
+     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs.  */
+
+  /* Note that we allow an object file to be treated as a core file as well.  */
+  {				/* bfd_check_format.  */
+    _bfd_dummy_target,
+    amd64coff_object_p,
+    bfd_generic_archive_p,
+    amd64coff_object_p
+  },
+  {				/* bfd_set_format.  */
+    _bfd_bool_bfd_false_error,
+    coff_mkobject,
+    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error
+  },
+  {				/* bfd_write_contents.  */
+    _bfd_bool_bfd_false_error,
+    coff_write_object_contents,
+    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error
+  },
+
+  BFD_JUMP_TABLE_GENERIC (coff),
+  BFD_JUMP_TABLE_COPY (coff),
+  BFD_JUMP_TABLE_CORE (_bfd_nocore),
+  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
+  BFD_JUMP_TABLE_SYMBOLS (coff),
+  BFD_JUMP_TABLE_RELOCS (coff),
+  BFD_JUMP_TABLE_WRITE (coff),
+  BFD_JUMP_TABLE_LINK (coff),
+  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+  NULL,
+
+  &bigobj_swap_table
+};
+#endif
\ No newline at end of file
diff --git a/bfd/config.bfd b/bfd/config.bfd
index 4c65e5ea32..40f259c92a 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -701,7 +701,7 @@ case "${targ}" in
     ;;
   x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
     targ_defvec=x86_64_pe_vec
-    targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_be_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
+    targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_big_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
     want64=true
     targ_underscore=no
     ;;
@@ -751,7 +751,7 @@ case "${targ}" in
     ;;
   i[3-7]86-*-mingw32* | i[3-7]86-*-cygwin* | i[3-7]86-*-winnt | i[3-7]86-*-pe)
     targ_defvec=i386_pe_vec
-    targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
+    targ_selvecs="i386_pe_vec i386_pe_big_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
     targ_underscore=yes
     ;;
   i[3-7]86-*-vxworks*)
diff --git a/bfd/configure b/bfd/configure
index a000929b4e..59b867bbbf 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -14764,6 +14764,7 @@ do
     i386_mach_o_vec)		 tb="$tb mach-o-i386.lo" ;;
     i386_msdos_vec)		 tb="$tb i386msdos.lo" ;;
     i386_pe_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
+    i386_pe_big_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
     i386_pei_vec)		 tb="$tb pei-i386.lo peigen.lo $coff" ;;
     iamcu_elf32_vec)		 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     ia64_elf32_be_vec)		 tb="$tb elf32-ia64.lo elfxx-ia64.lo elf32.lo $elf" ;;
@@ -14947,7 +14948,7 @@ do
     x86_64_elf64_sol2_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_mach_o_vec)		 tb="$tb mach-o-x86-64.lo" ;;
     x86_64_pe_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
-    x86_64_pe_be_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pe_big_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     x86_64_pei_vec)		 tb="$tb pei-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     xc16x_elf32_vec)		 tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
     xgate_elf32_vec)		 tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
diff --git a/bfd/configure.ac b/bfd/configure.ac
index 84d07688ad..0528e54c3b 100644
--- a/bfd/configure.ac
+++ b/bfd/configure.ac
@@ -500,6 +500,7 @@ do
     i386_mach_o_vec)		 tb="$tb mach-o-i386.lo" ;;
     i386_msdos_vec)		 tb="$tb i386msdos.lo" ;;
     i386_pe_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
+    i386_pe_big_vec)		 tb="$tb pe-i386.lo peigen.lo $coff" ;;
     i386_pei_vec)		 tb="$tb pei-i386.lo peigen.lo $coff" ;;
     iamcu_elf32_vec)		 tb="$tb elf32-i386.lo $elfxx_x86 elf32.lo $elf" ;;
     ia64_elf32_be_vec)		 tb="$tb elf32-ia64.lo elfxx-ia64.lo elf32.lo $elf" ;;
@@ -683,7 +684,7 @@ do
     x86_64_elf64_sol2_vec)	 tb="$tb elf64-x86-64.lo $elfxx_x86 elf64.lo $elf"; target_size=64 ;;
     x86_64_mach_o_vec)		 tb="$tb mach-o-x86-64.lo" ;;
     x86_64_pe_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
-    x86_64_pe_be_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
+    x86_64_pe_big_vec)		 tb="$tb pe-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     x86_64_pei_vec)		 tb="$tb pei-x86_64.lo pex64igen.lo $coff"; target_size=64 ;;
     xc16x_elf32_vec)		 tb="$tb elf32-xc16x.lo elf32.lo $elf" ;;
     xgate_elf32_vec)		 tb="$tb elf32-xgate.lo elf32.lo $elf" ;;
diff --git a/bfd/pe-i386.c b/bfd/pe-i386.c
index f55722e232..c7e107e083 100644
--- a/bfd/pe-i386.c
+++ b/bfd/pe-i386.c
@@ -23,7 +23,10 @@
 
 #define TARGET_SYM		i386_pe_vec
 #define TARGET_NAME		"pe-i386"
+#define TARGET_SYM_BIG		i386_pe_big_vec
+#define TARGET_NAME_BIG		"pe-bigobj-i386"
 #define COFF_WITH_PE
+#define COFF_WITH_PE_BIGOBJ
 #define PCRELOFFSET		TRUE
 #define TARGET_UNDERSCORE	'_'
 #define COFF_LONG_SECTION_NAMES
diff --git a/bfd/pe-x86_64.c b/bfd/pe-x86_64.c
index 12d29e4fa7..1c383293e1 100644
--- a/bfd/pe-x86_64.c
+++ b/bfd/pe-x86_64.c
@@ -25,6 +25,8 @@
 
 #define TARGET_SYM		x86_64_pe_vec
 #define TARGET_NAME		"pe-x86-64"
+#define TARGET_SYM_BIG		x86_64_pe_big_vec
+#define TARGET_NAME_BIG		"pe-bigobj-x86-64"
 #define COFF_WITH_PE
 #define COFF_WITH_pex64
 #define COFF_WITH_PE_BIGOBJ
@@ -66,67 +68,3 @@ extern bfd_boolean pex64_bfd_print_pdata (bfd *, void *);
 
 #include "coff-x86_64.c"
 
-/* Entry for big object files.  */
-
-const bfd_target
-x86_64_pe_be_vec =
-{
-  "pe-bigobj-x86-64",			/* Name.  */
-  bfd_target_coff_flavour,
-  BFD_ENDIAN_LITTLE,		/* Data byte order is little.  */
-  BFD_ENDIAN_LITTLE,		/* Header byte order is little.  */
-
-  (HAS_RELOC | EXEC_P		/* Object flags.  */
-   | HAS_LINENO | HAS_DEBUG
-   | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS),
-
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* Section flags.  */
-   | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING
-   | SEC_CODE | SEC_DATA | SEC_EXCLUDE ),
-
-  TARGET_UNDERSCORE,		/* Leading underscore.  */
-  '/',				/* Ar_pad_char.  */
-  15,				/* Ar_max_namelen.  */
-  0,				/* match priority.  */
-
-  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
-     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data.  */
-  bfd_getl64, bfd_getl_signed_64, bfd_putl64,
-     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
-     bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs.  */
-
-  /* Note that we allow an object file to be treated as a core file as well.  */
-  {				/* bfd_check_format.  */
-    _bfd_dummy_target,
-    amd64coff_object_p,
-    bfd_generic_archive_p,
-    amd64coff_object_p
-  },
-  {				/* bfd_set_format.  */
-    _bfd_bool_bfd_false_error,
-    coff_mkobject,
-    _bfd_generic_mkarchive,
-    _bfd_bool_bfd_false_error
-  },
-  {				/* bfd_write_contents.  */
-    _bfd_bool_bfd_false_error,
-    coff_write_object_contents,
-    _bfd_write_archive_contents,
-    _bfd_bool_bfd_false_error
-  },
-
-  BFD_JUMP_TABLE_GENERIC (coff),
-  BFD_JUMP_TABLE_COPY (coff),
-  BFD_JUMP_TABLE_CORE (_bfd_nocore),
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
-  BFD_JUMP_TABLE_SYMBOLS (coff),
-  BFD_JUMP_TABLE_RELOCS (coff),
-  BFD_JUMP_TABLE_WRITE (coff),
-  BFD_JUMP_TABLE_LINK (coff),
-  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
-  NULL,
-
-  &bigobj_swap_table
-};
diff --git a/bfd/targets.c b/bfd/targets.c
index d05b915853..9c2db0aeb6 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -742,6 +742,7 @@ extern const bfd_target i386_elf32_vxworks_vec;
 extern const bfd_target i386_mach_o_vec;
 extern const bfd_target i386_msdos_vec;
 extern const bfd_target i386_pe_vec;
+extern const bfd_target i386_pe_big_vec;
 extern const bfd_target i386_pei_vec;
 extern const bfd_target iamcu_elf32_vec;
 extern const bfd_target ia64_elf32_be_vec;
@@ -926,7 +927,7 @@ extern const bfd_target x86_64_elf64_nacl_vec;
 extern const bfd_target x86_64_elf64_sol2_vec;
 extern const bfd_target x86_64_mach_o_vec;
 extern const bfd_target x86_64_pe_vec;
-extern const bfd_target x86_64_pe_be_vec;
+extern const bfd_target x86_64_pe_big_vec;
 extern const bfd_target x86_64_pei_vec;
 extern const bfd_target xc16x_elf32_vec;
 extern const bfd_target xgate_elf32_vec;
@@ -1091,6 +1092,7 @@ static const bfd_target * const _bfd_target_vector[] =
 	&i386_mach_o_vec,
 	&i386_msdos_vec,
 	&i386_pe_vec,
+	&i386_pe_big_vec,
 	&i386_pei_vec,
 
 	&iamcu_elf32_vec,
@@ -1343,7 +1345,7 @@ static const bfd_target * const _bfd_target_vector[] =
 	&x86_64_elf64_sol2_vec,
 	&x86_64_mach_o_vec,
 	&x86_64_pe_vec,
-	&x86_64_pe_be_vec,
+	&x86_64_pe_big_vec,
 	&x86_64_pei_vec,
 #endif
 
diff --git a/gas/ChangeLog b/gas/ChangeLog
index eeeb17dcf0..8cbe5ecf2b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,11 @@
+2020-04-27  Tamar Christina  <tamar.christina@arm.com>
+
+	* NEWS: Add news entry for big-obj.
+	* config/tc-i386.c (i386_target_format): Support new format.
+	* doc/c-i386.texi: Add i386 support.
+	* testsuite/gas/pe/big-obj.d: Rename test to not be x64 specific.
+	* testsuite/gas/pe/pe.exp (big-obj): Make test run on i386 as well.
+
 2020-04-27  Nick Clifton  <nickc@redhat.com>
 
 	PR 25878
diff --git a/gas/NEWS b/gas/NEWS
index 58d79caa41..815359b08f 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -13,6 +13,8 @@
   (if such output is being generated).  Added the ability to generate
   version 5 .debug_line sections.
 
+* Add -mbig-obj support to i386 MingW targets.
+
 Changes in 2.34:
 
 * Add -malign-branch-boundary=NUM, -malign-branch=TYPE[+TYPE...],
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index a692c457a5..32fd6c15e1 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -13506,7 +13506,7 @@ i386_target_format (void)
       if (flag_code == CODE_64BIT)
 	return use_big_obj ? "pe-bigobj-x86-64" : "pe-x86-64";
       else
-	return "pe-i386";
+	return use_big_obj ? "pe-bigobj-i386" : "pe-i386";
 # elif defined (TE_GO32)
     case bfd_target_coff_flavour:
       return "coff-go32";
diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi
index 4acece4394..551512f2a9 100644
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -390,9 +390,10 @@ with default visibility can be preempted.  The resulting code is
 slightly bigger.  This option only affects the handling of branch
 instructions.
 
+@cindex @samp{-mbig-obj} option, i386
 @cindex @samp{-mbig-obj} option, x86-64
 @item -mbig-obj
-On x86-64 PE/COFF target this option forces the use of big object file
+On PE/COFF target this option forces the use of big object file
 format, which allows more than 32768 sections.
 
 @cindex @samp{-momit-lock-prefix=} option, i386
diff --git a/gas/testsuite/gas/pe/big-obj.d b/gas/testsuite/gas/pe/big-obj.d
index 95ff1d8288..27b351a7d6 100644
--- a/gas/testsuite/gas/pe/big-obj.d
+++ b/gas/testsuite/gas/pe/big-obj.d
@@ -1,6 +1,6 @@
 #as: -mbig-obj
 #objdump: -h
-#name: PE x64 big obj
+#name: PE big obj
 
 .*: *file format pe-bigobj-.*
 
diff --git a/gas/testsuite/gas/pe/pe.exp b/gas/testsuite/gas/pe/pe.exp
index e2132130aa..76345ba500 100644
--- a/gas/testsuite/gas/pe/pe.exp
+++ b/gas/testsuite/gas/pe/pe.exp
@@ -55,7 +55,6 @@ if ([istarget "x86_64-*-mingw*"]) then {
 # Big obj
 
 
-if ([istarget "x86_64-*-mingw*"]) then {
-        # Currently only supported on x86_64
+if ([istarget "*-*-mingw*"]) then {
 	run_dump_test "big-obj"
 }
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 77551f0f4e..dd5628283b 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,7 @@
+2020-04-27  Tamar Christina  <tamar.christina@arm.com>
+
+	* pe-dll.c (pe_detail_list):  Add pe-bigobj-i386.
+
 2020-04-22  Max Filippov  <jcmvbkbc@gmail.com>
 
 	PR ld/25861
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 0addde2318..0ed21facd0 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -280,6 +280,16 @@ static pe_details_type pe_detail_list[] =
     FALSE,
     autofilter_symbollist_i386
   },
+#else
+  {
+    "pei-i386",
+    "pe-bigobj-i386",
+    7 /* R_IMAGEBASE */,
+    PE_ARCH_i386,
+    bfd_arch_i386,
+    TRUE,
+    autofilter_symbollist_i386
+  },
 #endif
   {
     "pei-shl",


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

end of thread, other threads:[~2020-05-13 11:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-10 20:41 [binutils-gdb] x86: Add i386 PE big-object support gdb-buildbot
2020-05-10 20:41 ` Failures on Fedora-x86_64-m32, branch master gdb-buildbot
2020-05-10 20:41 ` Failures on Fedora-x86_64-cc-with-index, " gdb-buildbot
2020-05-10 21:15 ` Failures on Fedora-x86_64-m64, " gdb-buildbot
2020-05-10 21:55 ` Failures on Fedora-x86_64-native-extended-gdbserver-m32, " gdb-buildbot
2020-05-10 21:58 ` Failures on Fedora-x86_64-native-extended-gdbserver-m64, " gdb-buildbot
2020-05-11 20:59 ` Failures on Fedora-x86_64-native-gdbserver-m32, " gdb-buildbot
2020-05-13 11:35 ` Failures on Fedora-x86_64-native-gdbserver-m64, " gdb-buildbot

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).