This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[IRIX 6] Non-ABI conformant passing of small structures


The bug explained in http://egcs.cygnus.com/faq.html#irix6n32bugs (gcc
conventions for passing small structures in N32 and N64 ABIs on IRIX are
not MIPS ABI conformant) exists since egcs 1.0 and gcc 2.8.  Although it
primarily affects two functions (inet_ntoa and semctl), it causes lots of
trouble since almost all networking code is affected.  While the programs
seem to run fine at first, passing wrong args to inet_ntoa() causes hard to
find failures.  To date, I've seen it in Tcl/Tk, Squid, GNU wget, and
GNU/ICSI finger; there are probably many more.  The problem has caused much
confusion with many users, and several packages are starting to work around
it individually, or avoid gcc/egcs on IRIX 6 altogether.  This severely
damages gcc's reputation and should be fixed for the upcoming gcc 2.95
release if at all possible.

Unfortunatly, the problem is claimed to be quite hard to fix and involves
areas of gcc I know plain nothing about.  Thus, while I'd like to help
getting this fixed, I doubt I will be able to devote enough time to
learn the necessary gcc internals to do this on my own.

If it proves impossible to properly fix the problem, as a last resort
(read: terrible hack), it were possible to include an implementation of
inet_ntoa() compiled with gcc in libgcc, while this isn't easy for
semget(), which is implemented via the (undocmented) semsys() system call.

Any suggestions on how to proceed?

	Rainer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]