Sun inline assembler ...

Started by Hans-Jürgen Schönigalmost 21 years ago6 messagesbugs
Jump to latest
#1Hans-Jürgen Schönig
postgres@cybertec.at

I have some minor troubles when using the Sun Compiler 9 on Solaris 9.
The spinlock assembler code is somehow broken for Solaris 9 and Solaris
10 (it works for Sun CC 8).

The following patch fixes this:

[hs@localhost postgresql-8.0.1]$ cd src/backend/storage/lmgr/
[hs@localhost lmgr]$ diff s_lock.c /tmp/fixed_s_lock.c
248,249c248,249
< asm(".section \"data\"");
< asm(".section \"text\"");
---

asm(".seg \"data\"");
asm(".seg \"text\"");

Can other folks build on Sun Studio 9? How would GCC treat that patch?
Did anybody encounter similar problems?

Best regards,

Hans

#2Michael Fuhr
mike@fuhr.org
In reply to: Hans-Jürgen Schönig (#1)
Re: Sun inline assembler ...

On Thu, Jul 07, 2005 at 04:53:16PM +0200, Hans-J�rgen Sch�nig wrote:

I have some minor troubles when using the Sun Compiler 9 on Solaris 9.
The spinlock assembler code is somehow broken for Solaris 9 and Solaris
10 (it works for Sun CC 8).

The following patch fixes this:

[hs@localhost postgresql-8.0.1]$ cd src/backend/storage/lmgr/
[hs@localhost lmgr]$ diff s_lock.c /tmp/fixed_s_lock.c
248,249c248,249
< asm(".section \"data\"");
< asm(".section \"text\"");
---

asm(".seg \"data\"");
asm(".seg \"text\"");

There's already an #ifdef around that code -- is it not matching
correctly for your compiler? Here's what I see in REL8_0_STABLE
and in HEAD (s_lock.c 1.35):

244 #ifdef SUNOS4_CC
245 asm(".seg \"data\"");
246 asm(".seg \"text\"");
247 #else
248 asm(".section \"data\"");
249 asm(".section \"text\"");
250 #endif

This looks like the thread that led to the above code:

http://archives.postgresql.org/pgsql-patches/2004-12/msg00213.php

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

#3Hans-Jürgen Schönig
postgres@cybertec.at
In reply to: Michael Fuhr (#2)
Re: Sun inline assembler ...

I have seen that.
The question is: Gcc seems to get it right ;).
In my little world two compiler should handle this the same but I have
learned that Sun is in many cases different world ...
1+1 is always 2 - on Sun it could also be 3 ;).

hans

Michael Fuhr wrote:

Show quoted text

On Thu, Jul 07, 2005 at 04:53:16PM +0200, Hans-J�rgen Sch�nig wrote:

I have some minor troubles when using the Sun Compiler 9 on Solaris 9.
The spinlock assembler code is somehow broken for Solaris 9 and Solaris
10 (it works for Sun CC 8).

The following patch fixes this:

[hs@localhost postgresql-8.0.1]$ cd src/backend/storage/lmgr/
[hs@localhost lmgr]$ diff s_lock.c /tmp/fixed_s_lock.c
248,249c248,249
< asm(".section \"data\"");
< asm(".section \"text\"");
---

asm(".seg \"data\"");
asm(".seg \"text\"");

There's already an #ifdef around that code -- is it not matching
correctly for your compiler? Here's what I see in REL8_0_STABLE
and in HEAD (s_lock.c 1.35):

244 #ifdef SUNOS4_CC
245 asm(".seg \"data\"");
246 asm(".seg \"text\"");
247 #else
248 asm(".section \"data\"");
249 asm(".section \"text\"");
250 #endif

This looks like the thread that led to the above code:

http://archives.postgresql.org/pgsql-patches/2004-12/msg00213.php

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Hans-Jürgen Schönig (#3)
Re: Sun inline assembler ...

Here's what I see in REL8_0_STABLE
and in HEAD (s_lock.c 1.35):

244 #ifdef SUNOS4_CC
245 asm(".seg \"data\"");
246 asm(".seg \"text\"");
247 #else
248 asm(".section \"data\"");
249 asm(".section \"text\"");
250 #endif

I see that template/sunos4 adds -DSUNOS4_CC to CFLAGS, but template/solaris
does not. Maybe it should too? I'm not real clear about which platforms
each of those templates gets used on.

regards, tom lane

#5John R Pierce
pierce@hogranch.com
In reply to: Tom Lane (#4)
Re: Sun inline assembler ...

Tom Lane wrote:

Here's what I see in REL8_0_STABLE
and in HEAD (s_lock.c 1.35):

244 #ifdef SUNOS4_CC
245 asm(".seg \"data\"");
246 asm(".seg \"text\"");
247 #else
248 asm(".section \"data\"");
249 asm(".section \"text\"");
250 #endif

I see that template/sunos4 adds -DSUNOS4_CC to CFLAGS, but template/solaris
does not. Maybe it should too? I'm not real clear about which platforms
each of those templates gets used on.

as a random reminder for those who don't deal with sun... Solaris is SunOS 5.x,
currently 5.9 and now 5.10. To get really confusing, they called it Solaris
2.x up to 2.6 (actually SunOS 5.7), then Solaris 7 was 2.7/5.7

solaris ver sunos ver
Solaris 1.3 SunOS 4.3
Solaris 2.5.1 SunOS 5.5.1
Solaris 2.6 SunOS 5.6
Solaris 7 SunOS 5.7
Solaris 8 SunOS 5.8
Solaris 9 SunOS 5.9

this is nearly as bad as Java versioning.

Java 1.x
Java 2
Java 2.1
Java 2.1.1 -> Java2 release 1.1
Java 2.1.4.2 -> Java2 1.4.2
Java 2.5 -> J2SE 5.0

#6Bruce Momjian
bruce@momjian.us
In reply to: John R Pierce (#5)
Re: Sun inline assembler ...

I have applied the following patch to fix this, hopefully.

---------------------------------------------------------------------------

John R Pierce wrote:

Tom Lane wrote:

Here's what I see in REL8_0_STABLE
and in HEAD (s_lock.c 1.35):

244 #ifdef SUNOS4_CC
245 asm(".seg \"data\"");
246 asm(".seg \"text\"");
247 #else
248 asm(".section \"data\"");
249 asm(".section \"text\"");
250 #endif

I see that template/sunos4 adds -DSUNOS4_CC to CFLAGS, but template/solaris
does not. Maybe it should too? I'm not real clear about which platforms
each of those templates gets used on.

as a random reminder for those who don't deal with sun... Solaris is SunOS 5.x,
currently 5.9 and now 5.10. To get really confusing, they called it Solaris
2.x up to 2.6 (actually SunOS 5.7), then Solaris 7 was 2.7/5.7

solaris ver sunos ver
Solaris 1.3 SunOS 4.3
Solaris 2.5.1 SunOS 5.5.1
Solaris 2.6 SunOS 5.6
Solaris 7 SunOS 5.7
Solaris 8 SunOS 5.8
Solaris 9 SunOS 5.9

this is nearly as bad as Java versioning.

Java 1.x
Java 2
Java 2.1
Java 2.1.1 -> Java2 release 1.1
Java 2.1.4.2 -> Java2 1.4.2
Java 2.5 -> J2SE 5.0

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

Attachments:

/bjm/difftext/plainDownload+6-6