Bug #37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler
Submitted: 25 Jun 2008 10:05 Modified: 13 Dec 2008 10:01
Reporter: Olav Sandstå Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S3 (Non-critical)
Version:6.0.6 OS:Solaris (SPARC)
Assigned to: Olav Sandstå CPU Architecture:Any
Tags: F_PLATFORM, Sun Studio
Triage: D3 (Medium)

[25 Jun 2008 10:05] Olav Sandstå
Description:
When compiling MySQL with Falcon on Solaris on SPARC using the Sun Studio 12 compiler, the compilation fails with the following error:

"Interlock.h", line 149: Error: #error cas not defined. We need>= Solaris 10.

The cause for this is that when compiling with the Sun Studio compiler on Solaris we are currently using Solaris' atomic_cas-* operations for inplementing the Interlock functions. The atomic_cas* operations are not available on Solaris 9.

How to repeat:
On a Solaris 9 on machine with the SPARC pro, do:

./configure CC=/opt/studio12/SUNWspro/bin/cc CXX=/opt/studio12/SUNWspro/bin/CC CFLAGS="-Xa -m32 -mt" CXXFLAGS="-m32 -mt" --prefix=/home/os136802/install/mysql6 --with-named-curses=-lcurses --with-mysql-ldflags=-static --with-client-ldflags=-static --with-plugins=myisam,innobase,falcon

gmake
[25 Jun 2008 15:29] Ann Harrison
Can we access an underlying instruction with in line assembler?
[25 Jun 2008 19:43] Olav Sandstå
Yes, we should be able to use inline SPARC assembly to implement this for the Sun Studio compiler on Solaris. I have started working on this to both understand the requirements, particularly related to the SPARC memory model(s) and how to best implement this for the Sun Studio compiler.
[25 Jun 2008 20:35] Neel Nadgir
This error is also triggered on Solaris 5.11 (opensolaris or solaris nevada). The #ifdef only checks for Solaris 10.
[26 Jun 2008 21:05] Olav Sandstå
Neel, thanks for the report. I had noticed this too when looking at the code that this would only allow for compilation of Falcon on Solaris 10. This is just a minor addition to the preprocessor test for which Solaris version that is being used. I will fix this in a separate patch.
[8 Jul 2008 21:36] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/49252

2735 Olav Sandstaa	2008-07-08
      Partial fix to Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler
      
      Changes to Falcon's configure and build system in order to support Sun Studio's inline templates
      for assembly code.
[10 Jul 2008 9:28] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/49408

2743 Olav Sandstaa	2008-07-10
      Partial fix to Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler
      
      Changes to Falcon's configure and build system in order to support Sun Studio's inline templates
      for assembly code.
[10 Jul 2008 9:30] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/49409

2743 Olav Sandstaa	2008-07-10
      Partial fix to Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler
      
      Changes to Falcon's configure and build system in order to support Sun Studio's inline templates
      for assembly code.
[10 Jul 2008 21:27] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/49502

2732 Olav Sandstaa	2008-07-10
      Part of fix of Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler.
      
      Changes the INCLUDES macro to avoid that the final continuation line will not be empty in case
      FALCON_SPARC_ASSEMBLY is not set.
[23 Jul 2008 12:20] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/50305

2754 Olav Sandstaa	2008-07-23
      Part of fix of Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler.
      
      Changes the INCLUDES macro to avoid that the final continuation line will not be empty in case
      FALCON_SPARC_ASSEMBLY is not set.
[23 Jul 2008 13:21] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/50319

2754 Olav Sandstaa	2008-07-23
      Part of fix of Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler.
      
      Changes the INCLUDES macro to avoid that the final continuation line will not be empty in case
      FALCON_SPARC_ASSEMBLY is not set.
[25 Jul 2008 21:48] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/50538

2758 Olav Sandstaa	2008-07-25
      Fix for Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler.
      
      Implements Interlock operations using Sun Studio's inline assembly for Solaris 9 on SPARC.
[29 Aug 2008 1:22] Kevin Lewis
This fix is in version 6.0.7
[13 Sep 2008 22:58] Bugs System
Pushed into 6.0.7-alpha  (revid:olav@sun.com-20080723121947-enbq9g4ghyuw86oj) (version source revid:davi.arnaut@sun.com-20080812141852-8e6knbqclpfd8irn) (pib:3)
[1 Oct 2008 13:59] Olav Sandstå
Setting the status of this bug back to In progress since the latest commit on it has not been pushed yet and requires some changes based on review comments.
[4 Dec 2008 22:00] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/60667

2926 Olav Sandstaa	2008-12-04
      Fix for Bug#37622 Falcon does not compile on Solaris 9 on SPARC using Sun Studio compiler.
            
      Implements Interlock operations using Sun Studio's inline assembly for Solaris 9 on SPARC.
[5 Dec 2008 13:07] Vladislav Vaintroub
ok to push
[11 Dec 2008 14:19] Bugs System
Pushed into 6.0.9-alpha  (revid:olav.sandstaa@sun.com-20081207130015-1fy4qt1ga459wwfo) (version source revid:hky@sun.com-20081210172504-jca50gguoy4fm3xb) (pib:5)
[13 Dec 2008 10:01] MC Brown
A note has been added to the 6.0.9 changelog: 

Compiling MySQL with FALCON support enabled on Solaris 9 using the Sun Studio compiler would fail with error:

"Interlock.h", line 149: Error: #error cas not defined. We need>= Solaris 10.