Version: 4.2.89 (using Devel) Compiler: Sun Studio 12 U1 (beta) OS: Solaris Installed from: Compiled sources compiling kdelibs fails with: ... "/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/util/kpixmapcache.cpp", line 475: Error: Formal argument addr of type char* in call to madvise(char*, unsigned, int) is being passed void*. 1 Error(s) and 1 Warning(s) detected. the command leading to this is: cd /export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/build-kdelibs-4.2.89svn977047/kdeui && /usr/bin/CC -library=no%Cstd -DQT_NO_STL -DQT_NO_CAST_TO_ASCII -D_REENTRANT -DKDE_DEPRECATED_WARNINGS -DMAKE_KDEUI_LIB -D__EXTENSIONS__ -DSOLARIS -D_REENTRANT -D__EXTENSIONS__ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_POSIX_PTHREAD_SEMANTICS -DSOLARIS -DSOLARIS10 -DNDEBUG -DNO_DEBUG -D_UNICODE -DUNICODE -D_RWSTD_REENTRANT -D_XOPEN_SOURCE=500 -D_XPG5 -I/opt/foss/include/stdcxx/ansi -I/opt/foss/include/stdcxx -I/opt/foss/include -D_REENTRANT -D__EXTENSIONS__ -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_POSIX_PTHREAD_SEMANTICS -DSOLARIS -DSOLARIS10 -DNDEBUG -DNO_DEBUG -D_UNICODE -DUNICODE -D_RWSTD_REENTRANT -D_XOPEN_SOURCE=500 -D_XPG5 -I/opt/foss/include/stdcxx/ansi -I/opt/foss/include/stdcxx -I/opt/foss/include -xtarget=pentium4 -m32 -xarch=sse2 -xchip=pentium4 -xcache=8/64/4:256/128/8 -library=no%Cstd -features=anachronisms,except,rtti,export,extensions,nestedaccess,tmplife,tmplrefstatic -instances=global -template=geninlinefuncs -s -xlang=c99 -xalias_level=compatible -xustr=ascii_utf16_ushort -Qoption ccfe -features=gcc -Qoption ccfe -features=zla -Qoption ccfe ++boolflag:sunwcch=false -mt -DQT_NO_DEBUG -KPIC -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/build-kdelibs-4.2.89svn977047/kdeui -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047 -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/build-kdelibs-4.2.89svn977047 -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/interfaces -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/interfaces/kregexpeditor -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/sonnet -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kjs -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/build-kdelibs-4.2.89svn977047/kjs -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/build-kdelibs-4.2.89svn977047/kdecore -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/compression -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/config -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/date -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/io -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/jobs -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/kernel -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/network -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/services -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/localization -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/sycoca -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/text -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdecore/util -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/actions -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/colors -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/config -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/dialogs -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/findreplace -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/fonts -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/icons -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/itemviews -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/jobs -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/kernel -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/paged -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/plotting -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/shortcuts -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/sonnet -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/util -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/widgets -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/windowmanagement -I/export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/xmlgui -I/opt/foss/qt4/include/phonon -I/opt/foss/qt4/include/QtXmlPatterns -I/opt/foss/qt4/include/QtWebKit -I/opt/foss/qt4/include/QtHelp -I/opt/foss/qt4/include/QtAssistant -I/opt/foss/qt4/include/QtDBus -I/opt/foss/qt4/include/QtTest -I/opt/foss/qt4/include/QtUiTools -I/opt/foss/qt4/include/QtScript -I/opt/foss/qt4/include/QtSvg -I/opt/foss/qt4/include/QtXml -I/opt/foss/qt4/include/QtSql -I/opt/foss/qt4/include/QtOpenGL -I/opt/foss/qt4/include/QtNetwork -I/opt/foss/qt4/include/QtDesigner -I/opt/foss/qt4/include/Qt3Support -I/opt/foss/qt4/include/QtGui -I/opt/foss/qt4/include/QtCore -I/opt/foss/qt4/include/Qt -I/opt/foss/qt4/share/mkspecs/default -I/opt/foss/qt4/include -I/usr/X11/include -D_LARGEFILE64_SOURCE -o CMakeFiles/kdeui.dir/util/kpixmapcache.o -c /export/home/test/packages/BUILD/kdelibs-4.2.89svn977047/kdeui/util/kpixmapcache.cpp this is on opensolaris 2009.06/x86_32
> this is on opensolaris 2009.06/x86_32 You'd think they'd have fixed madvise() by now. The first parameter should be void*, not char* (or caddr_t), both by POSIX and the original BSD implementation. Is this something we should have in kdefakes? I don't like the idea of #ifdef'ing it here. Alternatively, it there a configure flag we can add for Solaris to get more POSIX-ish #includes?
the sys/mman.h on opensolaris defines posix_madvise, which is probably what is needed: #if !defined(__XOPEN_OR_POSIX) || defined(_XPG6) || defined(__EXTENSIONS__) extern int posix_madvise(void *, size_t, int); #endif
SVN commit 979086 by mpyne: Fix compilation errors on Solaris for good by using a different function that does the exact same thing but has a different name, except this time the interface is defined properly. Or in other words s/madvise/posix_madvise/ Configure checks have also been updated. Not backporting to 4.2, but will be in KDE 4.3. BUG:195262 M +3 -3 ConfigureChecks.cmake M +3 -7 kdecore/sycoca/ksycoca.cpp M +2 -2 kdeui/util/kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=979086
tropikhajma: I said "for good" in the commit log but I'm not sure if we need to add any defines to the command line to actually get access to posix_madvise -- please reopen if it still doesn't compile (preferably with a patch containing the appropriate Sun magic incantation to get POSIX support).
Created attachment 37754 [details] POSIX_MADV_WILLNEED patch According to POSIX.1-2008[1], you also need to s/MADV_WILLNEED/POSIX_MADV_WILLNEED/ to those two source files. This is necessary to compile on Cygwin (where the first is not supported but the latter is). Patch against 4.3.2 attached. [1] http://www.opengroup.org/onlinepubs/9699919799/functions/posix_madvise.html
SVN commit 1039881 by mpyne: Fix a compile error with posix_madvise noted on Cygwin by yselkowitz, who also provided the patch. This is for KDE 4.4, will backport to KDE 4.3.3. CCBUG:195262 M +1 -1 kdecore/sycoca/ksycoca.cpp M +1 -1 kdeui/util/kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1039881
SVN commit 1039910 by mpyne: Backport compile fix for Cygwin usage of posix_madvise to KDE 4.3.3. Note: This code was wrong but happened to work on non-Cygwin, this is not a Cygwin-specific change. Patch provided, and issue reported by yselkowitz. CCBUG:195262 M +1 -1 kdecore/sycoca/ksycoca.cpp M +1 -1 kdeui/util/kpixmapcache.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1039910