1 |
301 |
jeremybenn |
// Test fix for PR20366
|
2 |
|
|
//
|
3 |
|
|
// { dg-do compile { target *-*-aix* } }
|
4 |
|
|
// { dg-options "-D_LARGE_FILES" }
|
5 |
|
|
//
|
6 |
|
|
// cstdio includes stdio.h and undefs most of the functions declared
|
7 |
|
|
// therein, unfortunately this means that #define fopen fopen64 goes
|
8 |
|
|
// away. This tests the fix, and ensures that with -D_LARGE_FILES
|
9 |
|
|
// fopen et. al. are indeed aliased to the large file equivalents.
|
10 |
|
|
//
|
11 |
|
|
// There are many other #define foo foo64 in the AIX headers, but
|
12 |
|
|
// these all work out fine as they are not undefined in libstdc++.
|
13 |
|
|
// This list is probably incomplete:
|
14 |
|
|
//
|
15 |
|
|
// Symbol Return type Large file declaration.
|
16 |
|
|
//
|
17 |
|
|
// aio.h (different for different AIX versions)
|
18 |
|
|
// =====
|
19 |
|
|
// aio_read int aio_read64(int, struct aiocb64 *);
|
20 |
|
|
// aio_write int aio_write64(int, struct aiocb64 *);
|
21 |
|
|
// lio_listio int lio_listio64(int, struct liocb64 *[], int, void *);
|
22 |
|
|
// aio_cancel int aio_cancel64(int, struct aiocb64 *);
|
23 |
|
|
// aio_suspend int aio_suspend64(int, struct aiocb64 *[]);
|
24 |
|
|
//
|
25 |
|
|
// stdio.h
|
26 |
|
|
// =======
|
27 |
|
|
// fgetpos int fgetpos64(FILE *, fpos64_t *);
|
28 |
|
|
// fopen FILE *fopen64(const char *, const char *);
|
29 |
|
|
// freopen FILE *freopen64(const char *, const char *, FILE *);
|
30 |
|
|
// fseeko int fseeko64(FILE *, off64_t, int);
|
31 |
|
|
// fsetpos int fsetpos64(FILE *, const fpos64_t *);
|
32 |
|
|
// ftello off64_t ftello64(FILE *);
|
33 |
|
|
//
|
34 |
|
|
// unistd.h
|
35 |
|
|
// ========
|
36 |
|
|
// fclear off64_t fclear64(int, off64_t);
|
37 |
|
|
// fsync_range int fsync_range64(int, int, off64_t, off64_t);
|
38 |
|
|
// ftruncate int ftruncate64(int, off64_t);
|
39 |
|
|
// truncate int truncate64(const char *, off64_t);
|
40 |
|
|
// lseek off64_t lseek64(int, off64_t, int);
|
41 |
|
|
// pread ssize_t pread64(int, void *, size_t, off64_t);
|
42 |
|
|
// pwrite ssize_t pwrite64(int, const void *, size_t, off64_t);
|
43 |
|
|
//
|
44 |
|
|
// fcntl.h
|
45 |
|
|
// =======
|
46 |
|
|
// open int open64(const char *, int, ...);
|
47 |
|
|
// creat int creat64(const char *, mode_t);
|
48 |
|
|
//
|
49 |
|
|
// sys/stat.h
|
50 |
|
|
// ==========
|
51 |
|
|
// stat int stat64(const char *, struct stat64 *);
|
52 |
|
|
// fstat int fstat64(int, struct stat64 *);
|
53 |
|
|
// lstat int lstat64(const char *, struct stat64 *);
|
54 |
|
|
//
|
55 |
|
|
// stdlib.h
|
56 |
|
|
// ========
|
57 |
|
|
// mkstemp int mkstemp64(char *);
|
58 |
|
|
//
|
59 |
|
|
// ftw.h
|
60 |
|
|
// =====
|
61 |
|
|
// ftw int ftw64(const char *, int (*)(const char *,const struct stat64 *, int), int);
|
62 |
|
|
// nftw int nftw64(const char *, int (*)(const char *, const struct stat64 *, int, struct FTW*), int, int);
|
63 |
|
|
//
|
64 |
|
|
// It seems unlikely that any of these will be used (and #undef'ed) by
|
65 |
|
|
// libstdc++ in the future, if they are then this test and its
|
66 |
|
|
// associated patch to fixincludes will have to be revisited.
|
67 |
|
|
|
68 |
|
|
#include
|
69 |
|
|
|
70 |
|
|
extern "C" {
|
71 |
|
|
int fgetpos(FILE *, fpos64_t *);
|
72 |
|
|
FILE *fopen(const char *, const char *);
|
73 |
|
|
FILE *freopen(const char *, const char *, FILE *);
|
74 |
|
|
int fseeko(FILE *, off64_t, int);
|
75 |
|
|
int fsetpos(FILE *, const fpos64_t *);
|
76 |
|
|
off64_t ftello(FILE *);
|
77 |
|
|
}
|
78 |
|
|
int main() {
|
79 |
|
|
return 0;
|
80 |
|
|
}
|