>Description:
ft_dump failed to link on Tru64 UNIX V4.0F with gcc 3.1:
/bin/ksh ../libtool --mode=link gcc -O3 -DDBUG_OFF -mieee
-DUNDEF_HAVE_GETHOSTBYNAME_R -o ft_dump ft_dump.o libmyisam.a ../mysys/libmysys.a
../dbug/libdbug.a ../strings/libmystrings.a -lm -lpthread
gcc -O3 -DDBUG_OFF -mieee -DUNDEF_HAVE_GETHOSTBYNAME_R -o ft_dump ft_dump.o
libmyisam.a ../mysys/libmysys.a ../dbug/libdbug.a ../strings/libmystrings.a -lm
-lpthread
snprintf
collect2: ld returned 1 exit status
make[2]: *** [ft_dump] Error 1
Obviously, snprintf is undefined (true, since the system libc lacks that function).
>How-To-Repeat:
Configure and build mysql 4.0.14 as described in Environment below.
>Fix:
myisam/ft_dump.c used snprintf unconditionally, whitout regarding HAVE_SNPRINTF.
There are two other places where the test was broken: they used HAVE_SNPRINTF_
(which doesn't exist anywhere) instead of HAVE_SNPRINTF.
The following patch fixes all three errors and allows the mysql build to
complete successfully.
===================================================================
RCS file: libmysqld/RCS/field.cc,v
retrieving revision 1.1
diff -up -r1.1 libmysqld/field.cc
--- libmysqld/field.cc 2003/07/18 14:57:47 1.1
+++ libmysqld/field.cc 2003/08/07 23:27:22
@@ -742,7 +742,7 @@ void Field_decimal::store(double nr)
char buff[320];
fyllchar = zerofill ? (char) '0' : (char) ' ';
-#ifdef HAVE_SNPRINTF_
+#ifdef HAVE_SNPRINTF
buff[sizeof(buff)-1]=0; // Safety
snprintf(buff,sizeof(buff)-1, "%.*f",(int) dec,nr);
#else
===================================================================
RCS file: myisam/RCS/ft_dump.c,v
retrieving revision 1.1
diff -up -r1.1 myisam/ft_dump.c
--- myisam/ft_dump.c 2003/07/18 14:57:46 1.1
+++ myisam/ft_dump.c 2003/08/07 23:30:43
@@ -130,7 +130,12 @@ int main(int argc,char *argv[])
#error
#endif
- snprintf(buf,MAX_LEN,"%.*s",(int) keylen,info->lastkey+1);
+#ifdef HAVE_SNPRINTF
+ buf[sizeof(buf)-1]=0; // Safety
+ snprintf(buf,MAX_LEN,"%.*s",(int) keylen,info->lastkey+1);
+#else
+ sprintf(buf,"%.*s",(int) keylen,info->lastkey+1);
+#endif
casedn_str(buf);
total++;
lengths[keylen]++;
===================================================================
RCS file: sql/RCS/field.cc,v
retrieving revision 1.1
diff -up -r1.1 sql/field.cc
--- sql/field.cc 2003/07/18 14:57:47 1.1
+++ sql/field.cc 2003/08/07 23:25:53
@@ -742,7 +742,7 @@ void Field_decimal::store(double nr)
char buff[320];
fyllchar = zerofill ? (char) '0' : (char) ' ';
-#ifdef HAVE_SNPRINTF_
+#ifdef HAVE_SNPRINTF
buff[sizeof(buff)-1]=0; // Safety
snprintf(buff,sizeof(buff)-1, "%.*f",(int) dec,nr);
#else
>Submitter-Id: net
>Originator:
>Organization:
-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University
>
>MySQL support: none
>Synopsis: Several unconditional uses of snprintf cause link failure on Tru64
>UNIX V4.0F
>Severity: serious
>Priority: medium
>Category: mysql
>Class: sw-bug
>Release: mysql-4.0.14 (Source distribution)
>C compiler: gcc (GCC) 3.1
>C++ compiler: g++ (GCC) 3.1
>Environment:
System: OSF1 metropolitan V4.0 1229 alpha
Machine: alpha
Some paths: /vol/perl-5.8/bin/perl /vol/gnu/bin/make /vol/gnu/bin/gcc /usr/bin/cc
GCC: Reading specs from /vol/gnu/lib/gcc-lib/alpha-dec-osf4.0f/3.1/specs
Configured with: /vol/gnu/src/gcc/gcc-3.1-branch-dist/configure --prefix=/vol/gnu
--with-local-prefix=/vol/gnu --disable-nls alpha-dec-osf4.0f
Thread model: single
gcc version 3.1
Compilation info: CC='gcc' CFLAGS='' CXX='g++' CXXFLAGS='' LDFLAGS='' ASFLAGS=''
LIBC:
lrwxr-xr-x 1 root system 17 Dec 15 1999 /lib/libc.a -> ../ccs/lib/libc.a
lrwxr-xr-x 1 root system 17 Dec 15 1999 /usr/lib/libc.a ->
../ccs/lib/libc.a
Configure command: ./configure '--prefix=/vol/mysql-4.0'
'--infodir=/vol/mysql-4.0/share/info' '--libexecdir=/vol/mysql-4.0/lib'
'--with-berkeley-db' '--without-bench' '--build' 'alpha-dec-osf4.0f'
'build_alias=alpha-dec-osf4.0f'
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]