bug-gnulib
[Top][All Lists]
Advanced

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

[PATCH] stdint, read-file: fix missing SIZE_MAX on Android


From: Kevin Cernekee
Subject: [PATCH] stdint, read-file: fix missing SIZE_MAX on Android
Date: Wed, 5 Mar 2014 12:10:56 -0800

Building read-file.c currently fails on Android (ARM):

    arm-linux-androideabi-gcc -DHAVE_CONFIG_H -I. -I..  
-DGNULIB_STRICT_CHECKING=1   -g -O2 -MT read-file.o -MD -MP -MF 
.deps/read-file.Tpo -c -o read-file.o read-file.c
    read-file.c: In function 'fread_file':
    read-file.c:62:17: error: 'SIZE_MAX' undeclared (first use in this function)
    read-file.c:62:17: note: each undeclared identifier is reported only once 
for each function it appears in
    make[4]: *** [read-file.o] Error 1

Bionic puts SIZE_MAX in <limits.h>, but gnulib tries to make it available
from our stdint.h.  However, the logic in our stdint.h intended to
prevent circular dependencies inadvertently causes the SIZE_MAX definition
to be omitted in some situations.

* lib/sys_types.in.h (_GL_INCLUDING_UNISTD_H): New macro, to work
around potential circular dependencies when stdint.h is included
by the system's sys/types.h.
* lib/stdint.in.h: Use _GL_INCLUDING_UNISTD_H to figure out if
we're being included from sys/types.h, as merely checking
_SYS_TYPES_H_ could return true if sys/types.h had been previously
included.
* modules/stdint (Depends-on): Add sys_types.
---
 ChangeLog          |   12 ++++++++++++
 lib/stdint.in.h    |    3 +--
 lib/sys_types.in.h |    2 ++
 modules/stdint     |    1 +
 4 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 4e1984c..17b9b88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2014-03-04  Kevin Cernekee <address@hidden>
+
+       stdint, read-file: fix missing SIZE_MAX on Android
+       * lib/sys_types.in.h (_GL_INCLUDING_UNISTD_H): New macro, to work
+       around potential circular dependencies when stdint.h is included
+       by the system's sys/types.h.
+       * lib/stdint.in.h: Use _GL_INCLUDING_UNISTD_H to figure out if
+       we're being included from sys/types.h, as merely checking
+       _SYS_TYPES_H_ could return true if sys/types.h had been previously
+       included.
+       * modules/stdint (Depends-on): Add sys_types.
+
 2014-02-26  Pádraig Brady <address@hidden>
 
        parse-datetime: fix crash or infloop in TZ="" parsing
diff --git a/lib/stdint.in.h b/lib/stdint.in.h
index 91fad37..98ee423 100644
--- a/lib/stdint.in.h
+++ b/lib/stdint.in.h
@@ -38,8 +38,7 @@
    other system header files; just include the system's <stdint.h>.
    Ideally we should test __BIONIC__ here, but it is only defined after
    <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
-#if defined __ANDROID__ \
-    && defined _SYS_TYPES_H_ && !defined __need_size_t
+#if defined __ANDROID__ && defined _GL_INCLUDING_SYS_TYPES_H
 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
 #else
 
diff --git a/lib/sys_types.in.h b/lib/sys_types.in.h
index 803d7b1..b3bf9f2 100644
--- a/lib/sys_types.in.h
+++ b/lib/sys_types.in.h
@@ -23,7 +23,9 @@
 #ifndef address@hidden@_SYS_TYPES_H
 
 /* The include_next requires a split double-inclusion guard.  */
+# define _GL_INCLUDING_SYS_TYPES_H
 address@hidden@ @NEXT_SYS_TYPES_H@
+# undef _GL_INCLUDING_SYS_TYPES_H
 
 #ifndef address@hidden@_SYS_TYPES_H
 #define address@hidden@_SYS_TYPES_H
diff --git a/modules/stdint b/modules/stdint
index 92eb59f..62a5797 100644
--- a/modules/stdint
+++ b/modules/stdint
@@ -14,6 +14,7 @@ m4/longlong.m4
 Depends-on:
 include_next
 multiarch
+sys_types
 
 configure.ac:
 gl_STDINT_H
-- 
1.7.9.5




reply via email to

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