[MDEV-8941] Compile on Solaris (SPARC) fails with errors in filamvct.cpp Created: 2015-10-14  Updated: 2024-01-10  Resolved: 2018-07-19

Status: Closed
Project: MariaDB Server
Component/s: Compiling, Storage Engine - Connect
Affects Version/s: 10.0.21
Fix Version/s: 10.0.36, 10.1.35, 10.2.17, 10.3.9

Type: Bug Priority: Major
Reporter: Eliott Spenser Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: SPARC
Environment:

Solaris 10 on SPARC


Attachments: File MDEV-8941-strerror.patch    
Issue Links:
Relates
relates to MDEV-88 use of anonymous unions and structs i... Closed
relates to MDEV-4976 errors in gcalc_slicescan.h / Solaris Closed
relates to MDEV-8448 cannot build on solaris 10 Sparc Closed
relates to MDEV-9381 [PATCH] solaris10 build fixes Closed
Sprint: 10.0.24, 10.0.25

 Description   

Doing a manual compile on Solaris. After setting the C, CXX, PATH and LD_LIBRARY_PATH variables I took the following steps:

  1. cd <src_dir>
  2. mkdir bld
  3. cd bld
  4. cmake ..
  5. make VERBOSE=1
Relevant make output

[ 87%] Building CXX object storage/connect/CMakeFiles/connect.dir/filamvct.cpp.o
cd /opt/install/mariadb-10.0.21/bld/storage/connect && /opt/csw/bin/g++  -m64  -DFORCE_INIT_OF_VARS -DHAVE_CONFIG_H -DHAVE_RWLOCK_T -DHUGE_SUPPORT -DLIBXML2_SUPPORT -DLINUX -DMARIADB -DMYSQL_DYNAMIC_PLUGIN -DPIVOT_SUPPORT -DUBUNTU -DUNIX -DXMAP -DZIP_SUPPORT -Dconnect_EXPORTS -m64  -fno-exceptions -fno-rtti -fpermissive -fexceptions -fPIC  -O2 -g -DNDEBUG -DDBUG_OFF -fPIC -I/opt/install/mariadb-10.0.21/bld/include -I/opt/install/mariadb-10.0.21/include -I/opt/install/mariadb-10.0.21/sql -I/opt/install/mariadb-10.0.21/bld/pcre -I/opt/install/mariadb-10.0.21/pcre -I/opt/install/mariadb-10.0.21/extra/yassl/include -I/opt/install/mariadb-10.0.21/extra/yassl/taocrypt/include -I/usr/include/libxml2    -Wall -Wmissing-declarations -Wno-write-strings -Wno-unused-variable -Wno-unused-value -Wno-unused-function -Wno-parentheses -o CMakeFiles/connect.dir/filamvct.cpp.o -c /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:23: error: ‘char* strerror(int)’ conflicts with a previous declaration
 char *strerror(int num);
                       ^
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: previous declaration ‘char* std::strerror(int)’
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VCTFAM::MakeEmptyFile(PGLOBAL, char*)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:401:68: error: call of overloaded ‘strerror(int&)’ is ambiguous
   sprintf(g->Message, MSG(MAKE_EMPTY_FILE), To_File, strerror(errno));
                                                                    ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:401:68: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VCTFAM::WriteBuffer(PGLOBAL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:730:75: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(WRITE_STRERROR), To_File, strerror(errno));
                                                                           ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:730:75: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VCTFAM::DeleteRecords(PGLOBAL, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:843:66: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(TRUNCATE_ERROR), strerror(errno));
                                                                  ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:843:66: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VCTFAM::MoveIntermediateLines(PGLOBAL, bool*)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:941:65: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(READ_SEEK_ERROR), strerror(errno));
                                                                 ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:941:65: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:965:66: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(WRITE_SEEK_ERR), strerror(errno));
                                                                  ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:965:66: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:970:67: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(DEL_WRITE_ERROR), strerror(errno));
                                                                   ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:970:67: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:998:65: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(DEL_WRITE_ERROR), strerror(errno));
                                                                 ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:998:65: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VCTFAM::CleanUnusedSpace(PGLOBAL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1040:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(WRITE_SEEK_ERR), strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1040:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1045:65: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(DEL_WRITE_ERROR), strerror(errno));
                                                                 ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1045:65: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1062:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(WRITE_SEEK_ERR), strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1062:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1067:65: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(DEL_WRITE_ERROR), strerror(errno));
                                                                 ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1067:65: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VCTFAM::ReadBlock(PGLOBAL, PVCTCOL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1222:57: error: call of overloaded ‘strerror(int&)’ is ambiguous
     sprintf(g->Message, MSG(FSEEK_ERROR), strerror(errno));
                                                         ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1222:57: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1234:38: error: call of overloaded ‘strerror(int&)’ is ambiguous
               To_File, strerror(errno));
                                      ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1234:38: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VCTFAM::WriteBlock(PGLOBAL, PVCTCOL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1273:57: error: call of overloaded ‘strerror(int&)’ is ambiguous
     sprintf(g->Message, MSG(FSEEK_ERROR), strerror(errno));
                                                         ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1273:57: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1285:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
             (UseTemp) ? To_Fbt->Fname : To_File, strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1285:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1288:47: error: call of overloaded ‘strerror(int&)’ is ambiguous
       htrc("Write error: %s\n", strerror(errno));
                                               ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1288:47: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VCMFAM::DeleteRecords(PGLOBAL, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1695:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(TRUNCATE_ERROR), strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:1695:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VECFAM::WriteBuffer(PGLOBAL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2176:75: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(WRITE_STRERROR), To_File, strerror(errno));
                                                                           ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2176:75: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VECFAM::DeleteRecords(PGLOBAL, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2281:66: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(TRUNCATE_ERROR), strerror(errno));
                                                                  ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2281:66: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VECFAM::MoveIntermediateLines(PGLOBAL, bool*)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2386:67: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(READ_SEEK_ERROR), strerror(errno));
                                                                   ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2386:67: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2402:66: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(WRITE_SEEK_ERR), strerror(errno));
                                                                  ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2402:66: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2407:65: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(DEL_WRITE_ERROR), strerror(errno));
                                                                 ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2407:65: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VECFAM::RenameTempFile(PGLOBAL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2456:51: error: call of overloaded ‘strerror(int&)’ is ambiguous
                 filename, filetemp, strerror(errno));
                                                   ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2456:51: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2460:51: error: call of overloaded ‘strerror(int&)’ is ambiguous
                 tempname, filename, strerror(errno));
                                                   ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2460:51: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2465:41: error: call of overloaded ‘strerror(int&)’ is ambiguous
                 filetemp, strerror(errno));
                                         ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2465:41: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VECFAM::ReadBlock(PGLOBAL, PVCTCOL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2566:57: error: call of overloaded ‘strerror(int&)’ is ambiguous
     sprintf(g->Message, MSG(FSEEK_ERROR), strerror(errno));
                                                         ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2566:57: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2585:33: error: call of overloaded ‘strerror(int&)’ is ambiguous
               fn, strerror(errno));
                                 ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2585:33: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool VECFAM::WriteBlock(PGLOBAL, PVCTCOL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2622:59: error: call of overloaded ‘strerror(int&)’ is ambiguous
       sprintf(g->Message, MSG(FSEEK_ERROR), strerror(errno));
                                                           ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2622:59: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2637:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
     sprintf(g->Message, MSG(WRITE_STRERROR), fn, strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2637:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2640:47: error: call of overloaded ‘strerror(int&)’ is ambiguous
       htrc("Write error: %s\n", strerror(errno));
                                               ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2640:47: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int VMPFAM::DeleteRecords(PGLOBAL, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2995:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
         sprintf(g->Message, MSG(TRUNCATE_ERROR), strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:2995:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘bool BGVFAM::BigRead(PGLOBAL, HANDLE, void*, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3118:60: error: call of overloaded ‘strerror(int&)’ is ambiguous
     sprintf(g->Message, MSG(READ_ERROR), fn, strerror(errno));
                                                            ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3118:60: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘bool BGVFAM::BigWrite(PGLOBAL, HANDLE, void*, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3172:64: error: call of overloaded ‘strerror(int&)’ is ambiguous
     sprintf(g->Message, MSG(WRITE_STRERROR), fn, strerror(errno));
                                                                ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3172:64: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool BGVFAM::MakeEmptyFile(PGLOBAL, char*)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3409:68: error: call of overloaded ‘strerror(int&)’ is ambiguous
   sprintf(g->Message, MSG(MAKE_EMPTY_FILE), To_File, strerror(errno));
                                                                    ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3409:68: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool BGVFAM::OpenTableFile(PGLOBAL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3601:38: error: call of overloaded ‘strerror(int&)’ is ambiguous
     strcat(g->Message, strerror(errno));
                                      ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3601:38: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual int BGVFAM::DeleteRecords(PGLOBAL, int)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3910:66: error: call of overloaded ‘strerror(int&)’ is ambiguous
           sprintf(g->Message, MSG(TRUNCATE_ERROR), strerror(errno));
                                                                  ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3910:66: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp: In member function ‘virtual bool BGVFAM::OpenTempFile(PGLOBAL)’:
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3973:38: error: call of overloaded ‘strerror(int&)’ is ambiguous
     strcat(g->Message, strerror(errno));
                                      ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:3973:38: note: candidates are:
In file included from /usr/include/string.h:18:0,
                 from /opt/install/mariadb-10.0.21/storage/connect/global.h:9,
                 from /opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:68:14: note: char* std::strerror(int)
 extern char *strerror(int);
              ^
/opt/install/mariadb-10.0.21/storage/connect/filamvct.cpp:70:7: note: char* strerror(int)
 char *strerror(int num);
       ^
*** Error code 1
make: Fatal error: Command failed for target `storage/connect/CMakeFiles/connect.dir/filamvct.cpp.o'
Current working directory /opt/install/mariadb-10.0.21/bld
*** Error code 1
make: Fatal error: Command failed for target `storage/connect/CMakeFiles/connect.dir/all'
Current working directory /opt/install/mariadb-10.0.21/bld
*** Error code 1
make: Fatal error: Command failed for target `all'
 



 Comments   
Comment by Elena Stepanova [ 2015-10-20 ]

We don't have a Sparc builder at the moment. If you have a fix for this issue, we'll be happy to apply it. Otherwise we'll have to wait until we get a Sparc builder.

Comment by Elena Stepanova [ 2015-11-18 ]

The new SPARC builder doesn't reach this point yet, it fails differently:
http://buildbot.askmonty.org/buildbot/builders/sol10-sparc/builds/73/steps/compile/logs/stdio

Comment by Eliott Spenser [ 2015-11-18 ]

I was able to get past this problem by simply removing the "char *strerror(int num);" lines from the code and re-running make. We do not use the connect engine, so I can not vouch for its functionality after my changes - but it got me where I need to be.

Comment by Predrag Zečević [ 2016-01-27 ]

Hi,

I can confirm this on OpenIndiana (Intel/AMD platform); Using GCC (GCC 3.4 builds w/o problems; GCC 4.7 - 4.9 produce error described here https://lists.launchpad.net/maria-developers/msg04818.html). Tried to compile mariadb-10.1.10... To shorten:

Have built GCC 5.3.0 and that one produced error explained in this ticket:

[ 17%] Building CXX object storage/connect/CMakeFiles/connect.dir/filamvct.cpp.o
/nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp:70:23: error: 'char* strerror(int)' conflicts with a previous declaration
 char *strerror(int num);
                       ^
In file included from /opt/SFW/lib/gcc/i386-pc-solaris2.11/5.3.0/include-fixed/string.h:42:0,
                 from /nobackup/Build/mariadb-10.1.10/storage/connect/global.h:9,
                 from /nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:84:14: note: previous declaration 'char* std::strerror(int)'
 extern char *strerror(int);
              ^
/nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp: In member function 'virtual bool VCTFAM::MakeEmptyFile(PGLOBAL, char*)':
/nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp:401:68: error: call of overloaded 'strerror(int&)' is ambiguous
   sprintf(g->Message, MSG(MAKE_EMPTY_FILE), To_File, strerror(errno));
                                                                    ^
In file included from /opt/SFW/lib/gcc/i386-pc-solaris2.11/5.3.0/include-fixed/string.h:42:0,
                 from /nobackup/Build/mariadb-10.1.10/storage/connect/global.h:9,
                 from /nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp:51:
/usr/include/iso/string_iso.h:84:14: note: candidate: char* std::strerror(int)
 extern char *strerror(int);
              ^
/nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp:70:7: note: candidate: char* strerror(int)
 char *strerror(int num);
       ^
/nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp: In member function 'virtual int VCTFAM::WriteBuffer(PGLOBAL)':
/nobackup/Build/mariadb-10.1.10/storage/connect/filamvct.cpp:730:75: error: call of overloaded 'strerror(int&)' is ambiguous
           sprintf(g->Message, MSG(WRITE_STRERROR), To_File, strerror(errno));
...

Definition:

#if defined(UNIX)
//add dummy strerror   (NGC)
char *strerror(int num);
#endif   // UNIX

appears in ./storage/connect/filamvct.cpp and ./storage/connect/tabvct.cpp files

That problem has been fixed by commenting block = compilation has finished and it has worked!

Best regards.

Comment by Daniel Black [ 2017-03-02 ]

Also in the filamvct.cpp strerror definition failure

09:16:40 -- The C compiler identification is GNU 7.0.1
09:16:40 -- The CXX compiler identification is GNU 7.0.1
..
09:22:05 cd /build/build/storage/connect && ccache /compiler/bin/x86_64-unknown-linux-gnu-g++   -DFORCE_INIT_OF_VARS -DGZ_SUPPORT -DHAVE_CONFIG_H -DHUGE_SUPPORT -DLIBXML2_SUPPORT -DLINUX -DMARIADB -DMYSQL_DYNAMIC_PLUGIN -DNOCRYPT -DPIVOT_SUPPORT -DUBUNTU -DUNIX -DVCT_SUPPORT -DXMAP -DZIP_SUPPORT -Dconnect_EXPORTS -I/build/build/include -I/source/include -I/source/sql -I/build/build/pcre -I/source/pcre -I/usr/include/libxml2  -I/usr/include -I/usr/include/x86_64-linux-gnu -O3 -g -mtune=native -fPIC -fno-exceptions -fno-rtti -fpermissive -fexceptions -fPIC  -g -DENABLED_DEBUG_SYNC -ggdb3 -DSAFE_MUTEX -DSAFEMALLOC -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter -fPIC   -Wall -Wmissing-declarations -Wno-write-strings -Wno-unused-variable -Wno-unused-value -Wno-unused-function -Wno-parentheses -o CMakeFiles/connect.dir/filamvct.cpp.o -c /source/storage/connect/filamvct.cpp
09:22:05 /source/storage/connect/filamvct.cpp:70:7: error: declaration of 'char* strerror(int)' has a different exception specifier
09:22:05  char *strerror(int num);
09:22:05        ^~~~~~~~
09:22:05 In file included from /source/storage/connect/global.h:9:0,
09:22:05                  from /source/storage/connect/filamvct.cpp:51:
09:22:05 /usr/include/string.h:408:14: note: from previous declaration 'char* strerror(int) throw ()'
09:22:05  extern char *strerror (int __errnum) __THROW;
09:22:05               ^~~~~~~~

Comment by Rainer Orth [ 2018-01-25 ]

I'm seeing the same problem when building MariaDB 10.2.12 on Solaris 11.4 Beta
with the bundled gcc 5.5.

I see several possible solutions:

  • Remove the strerror declaration completely. I've no idea why it ever was deemed necessary.
  • Guard the decl with && !(defined(_sun_ && defined(_svr4_)) (ugly as hell).
  • Guard the decl with the result of a cmake test for strerror declaration, like !HAVE_DECL_STRERROR (or however it is called).
Comment by Sergei Golubchik [ 2018-01-27 ]

I'll try to remove it

Comment by Rainer Orth [ 2023-12-20 ]

I've just tried to build MariaDB 10.11.6 on Solaris 11.4/x86 with the bundled
GCC 13.2 and the issue still exists almost 6 years later ;-(

Comment by Sergei Golubchik [ 2024-01-03 ]

We don't have Solaris in our CI (still). If you'll provide a patch (PR or attached to this MDEV or even in a comment, whatever) we can apply it. We cannot fix it otherwise.

Comment by Rainer Orth [ 2024-01-09 ]

We do run `mariadbd` on Solaris 11.4, but I cannot justify providing a Solaris buildbot myself. That said, I'll provide patches for all the issues I've found/reported so 11.4 builds cleanly.

For the case at hand, while there are a large number of uses of `strerror` in the codebase, the local declaration in `storage/connect/tabvct.cpp` is the only one. Given that none is needed elsewhere, I conclude that this instance can simply be removed.

Tested on `amd64-pc-solaris2.11` and `x86_64-pc-linux-gnu`. MDEV-8941-strerror.patch

Comment by Daniel Black [ 2024-01-09 ]

Thanks - created https://github.com/MariaDB/server/pull/2988 from this.

Generated at Thu Feb 08 07:30:56 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.