Hi, I've just been through the rfe list on the wiki and as far as I can tell the upcoming Sun Studio 12 Update 1 release (or the current Sun Studio Express releases) will address all the issues with the exception of recognising the -Wall gcc compiler flag.
Alan, are you still having issues with the MMX/SSE intrinsics. If so, perhaps you can provide me with more details so that we can better evaluate the problem. Regards, Darryl. On 01/23/09 07:55 AM, Alan Coopersmith wrote: > Halton Huo wrote: >> Hi All, >> >> I write a report on issues when porting OpenSource projects to >> Solaris/OpenSolaris. >> >> The report link is: >> http://wikis.sun.com/display/SolarisDeveloper/Issues+when+porting+OpenSource+projects+to+Solaris > > Thanks for collecting and sharing this information. > > Some additional notes from our work on X.Org code: > > - No support for GCC options: -Wall/-Werror/-Wl > > - Your sample patch just removes -Wall - the code integrated into X.Org > upstream checks for the compiler in a configure macro to set either -v > for Sun Studio or the -W flags for gcc: > http://cgit.freedesktop.org/xorg/util/macros/tree/xorg-macros.m4.in#n436 > > - MMX/SSE intrinsic functions are not compatible > > - We hit this issue in X a while ago, and filed CR 6224421 with the > compilers > for it, which though closed as duplicate of another bug, they never fully > addressed, and chose to remain at least partially incompatible with gcc in > the type definitions in a way that breaks the Xorg MMX code. > > Our solution was to build the code that used it (the Xorg server) with gcc > on x86, since the performance increase of being able to use the MMX code > was significant. (This code has since moved to libpixman, so we may be > able to move Xorg server back to Sun Studio builds soon.) > > - No definition for _FUNCTION_ > > - You give workarounds that use glib's G_STRFUNC or use Sun Studio express. > Our solution for non-glib code for Studio 12 is simply to use the C99 > equivalent version that Studio 12 already supports - for instance, in > Mesa: > http://cgit.freedesktop.org/mesa/mesa/tree/src/mesa/main/glheader.h#n288 > > Like you, we've had to upstream multiple fixes already for some of these: > - No definition for u_int8_t/u_int16_t/u_int32_t/u_int64_t causes build > failure > - libc printf(%s, NULL) segfaults > - Missing strcasestr() causes build failure > > Other things we've had to fix that I didn't see in your list: > - No support in Sun compilers for gcc's __builtin_expect > (Seems to be covered by compiler CR's 6603861 (C) & 6603858 (C++) ) > > Solution for now: > #if (!defined(__GNUC__) || __GNUC__ < 3) && (!defined(__IBMC__) || __IBMC__ < > 900) > # define __builtin_expect(x, y) x > #endif > > - Needing to add -R flags to pkgconfig *.pc files & Makefiles for finding > runtime libraries that aren't in /usr/lib > > - Adding checks for Sun Studio's __i386__, __amd64__, & __sparc__ defines > everywhere the code checks for gcc's __i386, __amd64, & __sparc defines > > - No support for gcc's __volatile keyword. > Solution: > +#ifdef __SUNPRO_C > +# if !defined(__volatile) > +# define __volatile volatile > +# endif > +#endif > > - Functions to get the name of the running program (used by some libraries > in error messages). > > Solution: On Solaris, use basename(getexecname()) where BSD uses > getprogname() & Linux uses program_invocation_short_name, as shown in: > http://cgit.freedesktop.org/mesa/mesa/tree/src/mesa/drivers/dri/common/xmlconfig.c#n51 > > - Different headers/names for byteswapping macros. > > Solution: Can either use platform-independent generic versions, such as: > http://cgit.freedesktop.org/xorg/xserver/tree/glx/glxbyteorder.h > or use Solaris <sys/byteorder.h> versions, as in: > http://cgit.freedesktop.org/xorg/lib/libpciaccess/tree/src/common_interface.c#n39 > > I believe the <sys/byteorder.h> versions are somewhat optimized, due to > CR 6729208: Optimize BSWAP_* and BE_* macros in sys/byteorder.h to use > inline > amd64 assembly > > > -- Darryl Gove Compiler Performance Engineering Blog : http://blogs.sun.com/d/ Books: http://www.sun.com/books/catalog/solaris_app_programming.xml http://my.safaribooksonline.com/0595352510
