diff mbox series

Avoid Solaris/SPARC comparison failures with Solaris as (PR bootstrap/81926)

Message ID ydd1sj6q91w.fsf@CeBiTec.Uni-Bielefeld.DE
State New
Headers show
Series Avoid Solaris/SPARC comparison failures with Solaris as (PR bootstrap/81926) | expand

Commit Message

Rainer Orth Jan. 4, 2018, 9:15 a.m. UTC
Bootstrapping on Solaris/SPARC with /bin/as fails in make compare.  The
difference is always like this:

* With -gtoggle (stage2), there's no .text section in the assembler
  output.

* Without -gtoggle (stage3), the assembler output gets

Comments

Jeff Law Jan. 4, 2018, 5:39 p.m. UTC | #1
On 01/04/2018 02:15 AM, Rainer Orth wrote:
> Bootstrapping on Solaris/SPARC with /bin/as fails in make compare.  The
> difference is always like this:
> 
> * With -gtoggle (stage2), there's no .text section in the assembler
>   output.
> 
> * Without -gtoggle (stage3), the assembler output gets
> 
> --- table.s.gtoggle     2017-08-28 14:07:23.811292680 +0000
> +++ table.s.no-gtoggle  2017-08-28 14:08:00.674764535 +0000
> @@ -1,4 +1,6 @@
>         .file   "table.adb"
> +       .section        ".text"
> +.LLtext0:
>         .global table_E
>         .section        ".data"
>         .align 2
> @@ -6,4 +8,43 @@
>         .size   table_E, 2
>  table_E:
>         .skip 2
> +       .section        ".text"
> +.LLetext0:
> 
> While gas always adds a .text section, even for an empty imput file,
> /bin/as on sparc does not, thus the difference, although it causes no
> functional change.
> 
> The following patch (suggested by Richard in the PR) fixes this by
> always emitting a text section in the callers of the assembly_start
> debug hook so this works with and without -gtoggle.
> 
> Bootstrapped without regressions on sparc-sun-solaris2.11.
> 
> Ok for mainline (and eventually the gcc-7 branch)?
> 
Yes.  OK.
jeff
diff mbox series

Patch

# HG changeset patch
# Parent  bc0a08bf40ebbf1975cb9dde9fd37b3183a8f6da
Avoid Solaris/SPARC comparison failures with Solaris as (PR bootstrap/81926)

diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -2579,6 +2579,7 @@  symbol_table::compile (void)
   timevar_pop (TV_CGRAPHOPT);
 
   /* Output everything.  */
+  switch_to_section (text_section);
   (*debug_hooks->assembly_start) ();
   if (!quiet_flag)
     fprintf (stderr, "Assembling functions:\n");
diff --git a/gcc/run-rtl-passes.c b/gcc/run-rtl-passes.c
--- a/gcc/run-rtl-passes.c
+++ b/gcc/run-rtl-passes.c
@@ -30,6 +30,7 @@  along with GCC; see the file COPYING3.  
 #include "bitmap.h"
 #include "df.h"
 #include "regs.h"
+#include "output.h"
 #include "debug.h" /* for debug_hooks.  */
 #include "insn-attr-common.h" /* for INSN_SCHEDULING.  */
 #include "insn-attr.h" /* for init_sched_attrs.  */
@@ -45,6 +46,7 @@  run_rtl_passes (char *initial_pass_name)
   max_regno = max_reg_num ();
 
   /* cgraphunit.c normally handles this.  */
+  switch_to_section (text_section);
   (*debug_hooks->assembly_start) ();
 
   /* Pass "expand" normally sets this up.  */