bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

endian: Fix link error on CentOS 5


From: Bruno Haible
Subject: endian: Fix link error on CentOS 5
Date: Sat, 28 Dec 2024 18:44:45 +0100

Building a testdir of module 'endian' on CentOS 5, I get this build error:

gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../../gltests -I..  
-DGNULIB_STRICT_CHECKING=1 -DIN_GNULIB_TESTS=1 -I. -I../../gltests -I.. 
-I../../gltests/.. -I../gllib -I../../gltests/../gllib 
-I/home/bruno/inst-x86_64-64/include -Wall  -Wno-error -g -O -MT test-endian.o 
-MD -MP -MF .deps/test-endian.Tpo -c -o test-endian.o 
../../gltests/test-endian.c
../../gltests/test-endian.c: In function ‘test_convert_constant’:
../../gltests/test-endian.c:80: warning: implicit declaration of function 
‘be16toh’
../../gltests/test-endian.c:81: warning: implicit declaration of function 
‘htobe16’
../../gltests/test-endian.c:82: warning: implicit declaration of function 
‘le16toh’
../../gltests/test-endian.c:83: warning: implicit declaration of function 
‘htole16’
../../gltests/test-endian.c:86: warning: implicit declaration of function 
‘be32toh’
../../gltests/test-endian.c:87: warning: implicit declaration of function 
‘htobe32’
../../gltests/test-endian.c:88: warning: implicit declaration of function 
‘le32toh’
../../gltests/test-endian.c:89: warning: implicit declaration of function 
‘htole32’
../../gltests/test-endian.c:93: warning: implicit declaration of function 
‘be64toh’
../../gltests/test-endian.c:93: warning: comparison is always false due to 
limited range of data type
../../gltests/test-endian.c:95: warning: implicit declaration of function 
‘htobe64’
../../gltests/test-endian.c:95: warning: comparison is always false due to 
limited range of data type
../../gltests/test-endian.c:97: warning: implicit declaration of function 
‘le64toh’
../../gltests/test-endian.c:97: warning: comparison is always false due to 
limited range of data type
../../gltests/test-endian.c:99: warning: implicit declaration of function 
‘htole64’
../../gltests/test-endian.c:99: warning: comparison is always false due to 
limited range of data type
mv -f .deps/test-endian.Tpo .deps/test-endian.Po
gcc -std=gnu99  -Wno-error -g -O  -L/home/bruno/inst-x86_64-64/lib -o 
test-endian test-endian.o libtests.a ../gllib/libgnu.a libtests.a 
../gllib/libgnu.a libtests.a  
test-endian.o: In function `test_convert_constant':
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:80: undefined 
reference to `be16toh'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:81: undefined 
reference to `htobe16'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:82: undefined 
reference to `le16toh'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:83: undefined 
reference to `htole16'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:86: undefined 
reference to `be32toh'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:87: undefined 
reference to `htobe32'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:88: undefined 
reference to `le32toh'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:89: undefined 
reference to `htole32'
/home/bruno/testdir1/build-64/gltests/../../gltests/test-endian.c:93: undefined 
reference to `be64toh'
collect2: ld returned 1 exit status
make[4]: *** [test-endian] Error 1

The cause is a wrong configure test:
  checking if endian.h defines functions and macros... yes
when in fact endian.h does NOT declare or define the various functions.

This patch fixes it.


2024-12-28  Bruno Haible  <bruno@clisp.org>

        endian: Fix link error on CentOS 5.
        * m4/endian_h.m4 (gl_ENDIAN_H): Use AC_LINK_IFELSE, not
        AC_COMPILE_IFELSE.

diff --git a/m4/endian_h.m4 b/m4/endian_h.m4
index 712c435fe8..4dcaf1c790 100644
--- a/m4/endian_h.m4
+++ b/m4/endian_h.m4
@@ -1,5 +1,5 @@
 # endian_h.m4
-# serial 5
+# serial 6
 dnl Copyright 2024 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -34,7 +34,7 @@ AC_DEFUN_ONCE([gl_ENDIAN_H]
     AC_CACHE_CHECK([if endian.h defines functions and macros],
       [gl_cv_header_working_endian_h],
       [gl_cv_header_working_endian_h=no
-       AC_COMPILE_IFELSE(
+       AC_LINK_IFELSE(
          [AC_LANG_PROGRAM(
 [[
 #include <endian.h>
@@ -103,7 +103,7 @@ AC_DEFUN_ONCE([gl_ENDIAN_H]
     AC_CACHE_CHECK([if sys/endian.h defines functions and macros],
       [gl_cv_header_working_sys_endian_h],
       [gl_cv_header_working_sys_endian_h=no
-       AC_COMPILE_IFELSE(
+       AC_LINK_IFELSE(
          [AC_LANG_PROGRAM(
 [[
 #include <sys/endian.h>






reply via email to

[Prev in Thread] Current Thread [Next in Thread]