diff mbox

[ada] Restore Ada bootstrap on Solaris 8, 9/x86

Message ID yddsjnn37fo.fsf@manam.CeBiTec.Uni-Bielefeld.DE
State New
Headers show

Commit Message

Rainer Orth Sept. 23, 2011, 9:59 a.m. UTC
Mainline Ada bootstrap is currently broken on Solaris 8 and 9/x86 with
Sun as:

Assembler: a-strunb.adb
	"/var/tmp//cc6ZxWWa.s", line 2395 : Syntax error
	"/var/tmp//cc6ZxWWa.s", line 2591 : Syntax error
make[7]: *** [a-strunb.o] Error 1

The problem is that s-atocou-x86.adb uses lock incl resp. lock decl,
where older Sun as requires lock; incl.  This is exactly what %; was
introduced for, which is already used in i386/sync.md.

The following patch uses it and allowed i386-pc-solaris2.[89] bootstraps
to complete.  Testing is currently running, and I'll also bootstrap with
gas instead of as once that's finished.

Ok for mainline if those tests pass?

Thanks.
        Rainer


2011-09-23  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* s-atocou-x86.adb (Decrement): Use %;.
	(Increment): Likewise.

Comments

Arnaud Charlet Sept. 23, 2011, 10:02 a.m. UTC | #1
> Mainline Ada bootstrap is currently broken on Solaris 8 and 9/x86 with
> Sun as:
> 
> Assembler: a-strunb.adb
> 	"/var/tmp//cc6ZxWWa.s", line 2395 : Syntax error
> 	"/var/tmp//cc6ZxWWa.s", line 2591 : Syntax error
> make[7]: *** [a-strunb.o] Error 1
> 
> The problem is that s-atocou-x86.adb uses lock incl resp. lock decl,
> where older Sun as requires lock; incl.  This is exactly what %; was
> introduced for, which is already used in i386/sync.md.
> 
> The following patch uses it and allowed i386-pc-solaris2.[89] bootstraps
> to complete.  Testing is currently running, and I'll also bootstrap with
> gas instead of as once that's finished.
> 
> Ok for mainline if those tests pass?

Assuming it does not break x86 linux, OK.

Arno
Rainer Orth Sept. 26, 2011, 10:55 a.m. UTC | #2
Arnaud Charlet <charlet@adacore.com> writes:

>> Mainline Ada bootstrap is currently broken on Solaris 8 and 9/x86 with
>> Sun as:
>> 
>> Assembler: a-strunb.adb
>> 	"/var/tmp//cc6ZxWWa.s", line 2395 : Syntax error
>> 	"/var/tmp//cc6ZxWWa.s", line 2591 : Syntax error
>> make[7]: *** [a-strunb.o] Error 1
>> 
>> The problem is that s-atocou-x86.adb uses lock incl resp. lock decl,
>> where older Sun as requires lock; incl.  This is exactly what %; was
>> introduced for, which is already used in i386/sync.md.
>> 
>> The following patch uses it and allowed i386-pc-solaris2.[89] bootstraps
>> to complete.  Testing is currently running, and I'll also bootstrap with
>> gas instead of as once that's finished.
>> 
>> Ok for mainline if those tests pass?
>
> Assuming it does not break x86 linux, OK.

An x86_64-unknown-linux-gnu bootstrap finished without regressions, so
I've installed the patch.

	Rainer
diff mbox

Patch

# HG changeset patch
# Parent 66b8372f5970a73e9957914fae8bfbeced71a512
Restore Ada bootstrap on Solaris 8, 9/x86

diff --git a/gcc/ada/s-atocou-x86.adb b/gcc/ada/s-atocou-x86.adb
--- a/gcc/ada/s-atocou-x86.adb
+++ b/gcc/ada/s-atocou-x86.adb
@@ -50,7 +50,7 @@  package body System.Atomic_Counters is
    begin
       System.Machine_Code.Asm
         (Template =>
-           "lock decl" & ASCII.HT & "%0" & ASCII.LF & ASCII.HT
+           "lock%; decl" & ASCII.HT & "%0" & ASCII.LF & ASCII.HT
              & "sete %1",
          Outputs  =>
            (Unsigned_32'Asm_Output ("=m", Item.Value),
@@ -68,7 +68,7 @@  package body System.Atomic_Counters is
    procedure Increment (Item : in out Atomic_Counter) is
    begin
       System.Machine_Code.Asm
-        (Template => "lock incl" & ASCII.HT & "%0",
+        (Template => "lock%; incl" & ASCII.HT & "%0",
          Outputs  => Unsigned_32'Asm_Output ("=m", Item.Value),
          Inputs   => Unsigned_32'Asm_Input ("m", Item.Value),
          Volatile => True);