| Bug #9063 | Compile problems using icc 8.1, 32 bit Linux | ||
|---|---|---|---|
| Submitted: | 8 Mar 2005 23:07 | Modified: | 28 Apr 2005 2:32 |
| Reporter: | Kent Boortz | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
| Version: | 4.1.10 | OS: | Linux (Linux/x86) |
| Assigned to: | Jim Winstead | CPU Architecture: | Any |
[17 Mar 2005 23:55]
Lenz Grimmer
http://softwareforums.intel.com/ids/board/message?board.id=16&message.id=2083 also discusses this issue
[12 Apr 2005 8:51]
Lenz Grimmer
Jim, AFAIK you are working on this one, correct?
[26 Apr 2005 1:02]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/24297
[26 Apr 2005 15:24]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/internals/24321
[26 Apr 2005 19:02]
Jim Winstead
Fixed in 4.1.12 and 5.0.4. Not sure if we document this sort of thing.
[28 Apr 2005 2:32]
Paul DuBois
No changelog note needed.

Description: Two problems, one is a bug in the Linux headers, "/usr/include/sys/resources.h" when using non gcc compilers, in effect doing #define setrlimit setrlimit64 extern int setrlimit64 (__rlimit_resource_t __resource, __const struct rlimit64 *__rlimits) __THROW; that will not work when setrlimit() is called in "mysqld.cc". The second problem, is that "acinclude.m4" accepts 'extern "C" void exit (int) throw ();'. This will include extern "C" void exit (int) throw (); #include <stdlib.h> in all C++ configure compilation tests. But this is the opposite order of lines from how it was decided the exit declaration was ok, and the order is significant. % uname -a Linux xxx.mysql.com 2.6.10-1.9_FC2smp #1 SMP Thu Jan 13 18:15:45 EST 2005 i686 i686 i386 GNU/Linux % icc -V Intel(R) C Compiler for 32-bit applications, Version 8.1 Build 20050207Z Package ID: l_cc_pc_8.1.028 How to repeat: Compile the 4.1.10 sources using icc 8.1 on Linux x86. Suggested fix: --- acinclude.m4.ORIG 2005-02-12 21:37:30.000000000 +0100 +++ acinclude.m4 2005-03-08 23:22:41.000000000 +0100 @@ -1881,8 +1881,8 @@ 'void exit (int);' \ '#include <stdlib.h>' do - _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([@%:@include <stdlib.h> -$ac_declaration], + _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$ac_declaration +@%:@include <stdlib.h>], [exit (42);])], [], [continue]) --- mysqld.cc.ORIG 2005-02-12 21:37:30.000000000 +0100 +++ mysqld.cc 2005-03-08 19:37:37.000000000 +0100 @@ -1947,7 +1947,11 @@ if (test_flags & TEST_CORE_ON_SIGNAL) { /* Change limits so that we will get a core file */ +#if defined(__INTEL_COMPILER) && defined(setrlimit) + struct rlimit64 rl; +#else struct rlimit rl; +#endif rl.rlim_cur = rl.rlim_max = RLIM_INFINITY;