[Fontconfig] issue with _LARGE_FILES and AIX with version 2.11.92, not with 2.4.2

Michael Felt aixtools at gmail.com
Sun Feb 15 12:34:23 PST 2015


"/usr/include/unistd.h", line 171.17: 1506-343 (S) Redeclaration of lseek64
differs from previous declaration on line 169 of "/usr/include/unistd.h".
"/usr/include/unistd.h", line 171.17: 1506-050 (I) Return type "long long"
in redeclaration is not compatible with the previous return type "long".
"/usr/include/unistd.h", line 171.17: 1506-377 (I) The type "long long" of
parameter 2 differs from the previous type "long".
"/usr/include/sys/lockf.h", line 64.20: 1506-343 (S) Redeclaration of
lockf64 differs from previous declaration on line 62 of
"/usr/include/sys/lockf.h".
"/usr/include/sys/lockf.h", line 64.20: 1506-377 (I) The type "long long"
of parameter 3 differs from the previous type "long".
"/usr/include/unistd.h", line 800.33: 1506-343 (S) Redeclaration of
ftruncate64 differs from previous declaration on line 798 of
"/usr/include/unistd.h".
"/usr/include/unistd.h", line 800.33: 1506-377 (I) The type "long long" of
parameter 2 differs from the previous type "long".
"/usr/include/unistd.h", line 836.33: 1506-343 (S) Redeclaration of
truncate64 differs from previous declaration on line 834 of
"/usr/include/unistd.h".
"/usr/include/unistd.h", line 836.33: 1506-377 (I) The type "long long" of
parameter 2 differs from the previous type "long".
"/usr/include/unistd.h", line 853.33: 1506-343 (S) Redeclaration of pread64
differs from previous declaration on line 850 of "/usr/include/unistd.h".
"/usr/include/unistd.h", line 853.33: 1506-377 (I) The type "long long" of
parameter 4 differs from the previous type "long".
"/usr/include/unistd.h", line 854.33: 1506-343 (S) Redeclaration of
pwrite64 differs from previous declaration on line 851 of
"/usr/include/unistd.h".
"/usr/include/unistd.h", line 854.33: 1506-377 (I) The type "long long" of
parameter 4 differs from the previous type "long".
"/usr/include/unistd.h", line 921.25: 1506-343 (S) Redeclaration of
fclear64 differs from previous declaration on line 918 of
"/usr/include/unistd.h".
"/usr/include/unistd.h", line 921.25: 1506-050 (I) Return type "long long"
in redeclaration is not compatible with the previous return type "long".
"/usr/include/unistd.h", line 921.25: 1506-377 (I) The type "long long" of
parameter 2 differs from the previous type "long".
"/usr/include/unistd.h", line 922.25: 1506-343 (S) Redeclaration of
fsync_range64 differs from previous declaration on line 919 of
"/usr/include/unistd.h".
"/usr/include/unistd.h", line 922.25: 1506-377 (I) The type "long long" of
parameter 3 differs from the previous type "long".
An example of the error:

In the include file is:
  +168  extern int link(const char *, const char *);
  +169  extern off_t lseek(int, off_t, int);
  +170  #ifdef _LARGE_FILE_API
  +171  extern off64_t  lseek64(int, off64_t, int);
  +172  #endif
Lines 169 and 171 look different enough.

After
cc_r -DHAVE_CONFIG_H -I.. -I../src -I/opt/include/freetype2
-I/opt/include    -I/opt/include/libxml2 -E fcarch.c >x.i

in x.i
 +2393  extern int isatty(int);
 +2394  extern int link(const char *, const char *);
 +2395  extern off_t lseek64(int, off_t, int);
 +2396
 +2397  extern off64_t  lseek64(int, off64_t, int);
 +2398
 +2399  extern long pathconf(const char *, int);

cc_r -I.. -I../src -I/opt/include/freetype2 -I/opt/include
-I/opt/include/libxml2 -E fcarch.c >x.i

in x.i
 +2393  extern int isatty(int);
 +2394  extern int link(const char *, const char *);
 +2395  extern off_t lseek(int, off_t, int);
 +2396
 +2397  extern off64_t  lseek64(int, off64_t, int);
 +2398
 +2399  extern long pathconf(const char *, int);

So, it seems there is something in config.h that is trigering a define of
lseek to lseek64 and "a problem"

>From an examination of /usr/include/unistd.h the define - in the way -
seems to be _LARGE_FILES

in /usr/include/stdint.h

Again...
  +164  extern pid_t getpid(void);
  +165  extern pid_t getppid(void);
  +166  extern uid_t getuid(void);
  +167  extern int isatty(int);
  +168  extern int link(const char *, const char *);
  +169  extern off_t lseek(int, off_t, int);
  +170  #ifdef _LARGE_FILE_API
  +171  extern off64_t  lseek64(int, off64_t, int);
  +172  #endif
  +173  extern long pathconf(const char *, int);
  +174  extern int pause(void);
  +175  extern int pipe(int []);

but preceding this there is:
   +68  #ifdef _POSIX_SOURCE
   +69  #ifdef _LARGE_FILES
   +70  #define lseek lseek64
   +71  #endif
   +72

And later,
  +730  #if _XOPEN_SOURCE_EXTENDED==1
  +731  #ifdef _LARGE_FILES
  +732  #define ftruncate       ftruncate64
  +733  #define truncate        truncate64
  +734  #endif
  +735

  +845  #ifdef _LARGE_FILES
  +846  #define pread           pread64
  +847  #define pwrite          pwrite64
  +848  #endif /* _LARGE_FILES */

  +914  #ifdef _LARGE_FILES
  +915  #define fclear fclear64
  +916  #define fsync_range     fsync_range64
  +917  #endif
  +918          extern off_t    fclear(int, off_t);
  +919          extern int      fsync_range(int, int, off_t, off_t);
  +920  #ifdef _LARGE_FILE_API
  +921          extern off64_t  fclear64(int, off64_t);
  +922          extern int      fsync_range64(int, int, off64_t, off64_t);
  +923  #endif

So, it seems there is an inaccurate assumption regarding the
affect/interaction of _LARGE_FILES and _LARGE_FILE_API

Looking at config.h.in - it looks as it _LARGE_FILES was added to assist
with AIX, and now it is getting the way (fun :p)

I cannot find where the code for configure is generated. I suspect that -
MAYBE - this was important for when
32-bit hardware was out there (in 1997 64-bit file support was added to AIX
4.2.0 even though the kernel was
still 32-bit as well as 'normal' pointers.

In any case - this was not a problem I encounter with fontconfig-2.4.2
(ancient!!) but do now.

Give me hints, and I shall test them (as I have time).

Sincerely,
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/fontconfig/attachments/20150215/06bb57ab/attachment.html>


More information about the Fontconfig mailing list