Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / g++.dg / other / pr20366.C
blob36a689ebf42de4a9109d209aeeb8f9631e5e9683
1 // 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.
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:
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);
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.
68 #include <cstdio>
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 *);
78 int main() { 
79   return 0;