Michael Widenius wrote:
> >>>>> "hugh" == hugh <hugh@stripped> writes:
>
> >> Description:
> hugh> There is a known gcc/IRIX specific bug related to the use of semctl
> hugh> and some other calls such as inet_ntoa on IRIX using the standard C
> hugh> library. They are all are functions that get passed or return
> structs
> hugh> that are smaller than 16-bit long and not 8-bits long. See:
> hugh> http://freeware.sgi.com/1999Feb/shared/howto.html
> hugh> One effect of this is that the resolveip function always returns
> hugh> 255.255.255.255:
> hugh> opo 24% resolveip manu
> hugh> IP address of manu is 255.255.255.255
> hugh> opo 25%
> hugh> I also *think* this is stopping correct operation from remote
> clients.
> hugh> They report back that MySQL will not accept connections from
> hugh> 255.255.255.255.
>
> >> How-To-Repeat:
> hugh> Either 1. Compile on IRIX using GCC, or
> hugh> 2. Try the resolveip in the IRIX binary distribution
>
> >> Fix:
> hugh> This problem is not yours, but the GCC people evidently have no plans
> hugh> to fix the compiler. A suggestion given at SGI is to build a
> wrapper
> hugh> around the call.
>
> Hi!
>
> Do you have any examples of a wrapper ?
>
> (By the way, the hp address us gave me didn't work; I found some
> information at:
>
>
> http://toolbox.sgi.com/TasteOfDT/public/freeware/1999Aug/Installable/gcc-2.8.1-sgipl2.html
>
> but no example wrapper.
>
> Regards,
> Monty
>
Irix 6.2 and up has three ABIs, or Application Binary Interfaces-- see abi(5).
Here's an excerpt from abi(5).
_________________ABI_Summary_Table_______________
Category O32 N64 N32
Command_Line_Switch__-32______-64_______-n32_____
Supported ISA's mips1,2 mips 3,4 mips 3,4
Default_ISA__________mips2____mips4_____mips3____
Object file format ELF32 ELF64 ELF32
Symbol_table_format__.mdebug__DWARF_____DWARF____
Number of double 16 32 32
precision Floating
Point Registers
Calling_Convention___Old______New_______New______
sizeof(int) 32 32 32
sizeof(long)_________32_______64________32_______
sizeof(char *) 32 64 32
gcc 2.7.x compilers can only compile O32 (Old 32 bit ABI)
gcc 2.8.x and egcs compilers can only compile N32 (New high performance ABI) and N64 (64
bit
ABI, available only on Irix64). See
ftp://freeware.sgi.com/1999Aug/Installable/gcc-2.8.1-sgipl2.html. Only N32 compilations
have
the structures-smaller-than-16-bit-but-not-8-bits bug.
SGI MIPSPro compilers can compile in any of the three ABIs.
You have three ways to get a working MySQL:
- use gcc 2.7.x.
- use gcc 2.8.x and compile 64 bit
- use SGI cc and CC
gcc 2.95 was just released, reunifying egcs and gcc. I haven't tried it yet on Irix, and
I
don't know if it fixes the N32 bug in gcc 2.8.x.
Monty: If you use some kind of wrapper, please keep in mind that it's only necessary for
N32
compilation with gcc 2.8, egcs, and possibly gcc 2.95.
Thanks,
Dan Koch