Thread: PostgreSQL 8.0.0beta2 compile error with Sun CC.
============================================================================ POSTGRESQL BUG REPORT TEMPLATE ============================================================================ Your name : Mark Round Your email address : mark@markround.com System Configuration --------------------- Architecture (example: Intel Pentium) : Sparc (UltraSparc IIi) Operating System (example: Linux 2.4.18) : Solaris 8 PostgreSQL version (example: PostgreSQL-8.0): PostgreSQL-8.0.0beta2 Compiler used (example: gcc 2.95.2) : Sun C 5.5 2003/03/12 Please enter a FULL description of your problem: ----------------------------------------------- Compilation fails with the error that ".seg" is no a recognised opcode. The error is in src/backend/storage/lmgr/s_lock.c , lines 228 and 229. Please describe a way to repeat the problem. Please try to provide a concise reproducible example, if at all possible: ---------------------------------------------------------------------- Compile using Sun's C compiler. If you know how this problem might be fixed, list the solution below: --------------------------------------------------------------------- .seg should be changed to .section. Lines 229 and 229 in s_lock.c should be changed to the following : asm(".section \"data\""); asm(".section \"text\""); From docs.sun.com SPARC assembly manual : "This pseudo-op (.seg) is currently supported for compatibility with existing SunOS 4.1 SPARC assembly language programs. This pseudo-op has been replaced by the .section pseudo-op."
Mark Round <mark@markround.com> writes: > Compilation fails with the error that ".seg" is no a recognised opcode. > The error is in src/backend/storage/lmgr/s_lock.c , lines 228 and 229. We heard about this before, but the previous complainant didn't answer the obvious followup question: which versions of Solaris will fail if we change it to ".section"? Or more to the point, how can we #ifdef the code so that this works on all Solaris versions? regards, tom lane
>We heard about this before, but the previous complainant didn't answer >the obvious followup question: which versions of Solaris will fail if we >change it to ".section"? Or more to the point, how can we #ifdef the >code so that this works on all Solaris versions? > > Hi, If it is changed to ".section", any SunOS 4.1.x -based (pre-1992) system will fail to compile it. I am guessing here (not a programmer), but as the ".seg" pseudo-op was a SunOS 4.1.x construct, you could probably check for a 5.x version of SunOS, and in which case, set the lines to ".section". I am not sure what the appropriate #ifdef lines should look like, but will try to find out for you. -Mark
Mark Round <mark@markround.com> writes: > If it is changed to ".section", any SunOS 4.1.x -based (pre-1992) system > will fail to compile it. Hmm. AFAIK no one has cared about SunOS for a couple of years now. I was more concerned about whether there were any Solaris versions that would fail to recognize .section. > I am guessing here (not a programmer), but as the ".seg" pseudo-op was a > SunOS 4.1.x construct, you could probably check for a 5.x version of > SunOS, and in which case, set the lines to ".section". I am not sure > what the appropriate #ifdef lines should look like, but will try to find > out for you. When I went looking a few days ago, it wasn't clear that there were any predefined symbols that would let one tell the difference --- "__sun" seems to be the only OS-specific predefine on Solaris, and I imagine it was defined in SunOS too. But if you find out anything please do let me know. regards, tom lane