Add fopen64/freopen64/tmpfile64 aliases.
Our fopen/freopen/tmpfile are already always O_LARGEFILE, but let's add
the aliases for _LARGEFILE_SOURCE compatibility.
Bug: http://b/24807045
Change-Id: I5d99b3ef3c9f27ce70f13313f6a92e96c7f21f80
diff --git a/libc/bionic/tmpfile.cpp b/libc/bionic/tmpfile.cpp
index 602d407..dc142a9 100644
--- a/libc/bionic/tmpfile.cpp
+++ b/libc/bionic/tmpfile.cpp
@@ -112,3 +112,4 @@
}
return fp;
}
+__strong_alias(tmpfile64, tmpfile);
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index b618091..623995b 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -109,14 +109,11 @@
int fflush(FILE *);
int fgetc(FILE *);
char *fgets(char * __restrict, int, FILE * __restrict);
-FILE *fopen(const char * __restrict , const char * __restrict);
int fprintf(FILE * __restrict , const char * __restrict, ...)
__printflike(2, 3);
int fputc(int, FILE *);
int fputs(const char * __restrict, FILE * __restrict);
size_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
-FILE *freopen(const char * __restrict, const char * __restrict,
- FILE * __restrict);
int fscanf(FILE * __restrict, const char * __restrict, ...)
__scanflike(2, 3);
size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict);
@@ -140,7 +137,6 @@
int setvbuf(FILE * __restrict, char * __restrict, int, size_t);
int sscanf(const char * __restrict, const char * __restrict, ...)
__scanflike(2, 3);
-FILE *tmpfile(void);
int ungetc(int, FILE *);
int vfprintf(FILE * __restrict, const char * __restrict, __va_list)
__printflike(2, 0);
@@ -208,6 +204,13 @@
int (*)(void*));
#endif
+FILE* fopen(const char* __restrict, const char* __restrict);
+FILE* fopen64(const char* __restrict, const char* __restrict);
+FILE* freopen(const char* __restrict, const char* __restrict, FILE* __restrict);
+FILE* freopen64(const char* __restrict, const char* __restrict, FILE* __restrict);
+FILE* tmpfile(void);
+FILE* tmpfile64(void);
+
#if __ISO_C_VISIBLE >= 1999 || __BSD_VISIBLE
int snprintf(char * __restrict, size_t, const char * __restrict, ...)
__printflike(3, 4);
diff --git a/libc/libc.arm.brillo.map b/libc/libc.arm.brillo.map
index 84cd9d1..9251de2 100644
--- a/libc/libc.arm.brillo.map
+++ b/libc/libc.arm.brillo.map
@@ -1226,7 +1226,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1258,6 +1260,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.arm.map b/libc/libc.arm.map
index 001476e..f5ddfd3 100644
--- a/libc/libc.arm.map
+++ b/libc/libc.arm.map
@@ -1226,7 +1226,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1258,6 +1260,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.arm64.map b/libc/libc.arm64.map
index 14f90ad..271460f 100644
--- a/libc/libc.arm64.map
+++ b/libc/libc.arm64.map
@@ -1149,7 +1149,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1180,6 +1182,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index e2aede5..c859d81 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1252,7 +1252,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1284,6 +1286,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.mips.brillo.map b/libc/libc.mips.brillo.map
index ee33d0e..e5376be 100644
--- a/libc/libc.mips.brillo.map
+++ b/libc/libc.mips.brillo.map
@@ -1210,7 +1210,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1242,6 +1244,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.mips.map b/libc/libc.mips.map
index c658460..4902f57 100644
--- a/libc/libc.mips.map
+++ b/libc/libc.mips.map
@@ -1210,7 +1210,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1242,6 +1244,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.mips64.map b/libc/libc.mips64.map
index 14f90ad..271460f 100644
--- a/libc/libc.mips64.map
+++ b/libc/libc.mips64.map
@@ -1149,7 +1149,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1180,6 +1182,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.x86.brillo.map b/libc/libc.x86.brillo.map
index a72fa61..bbf9d57 100644
--- a/libc/libc.x86.brillo.map
+++ b/libc/libc.x86.brillo.map
@@ -1209,7 +1209,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1241,6 +1243,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.x86.map b/libc/libc.x86.map
index 5a7a504..fb0f109 100644
--- a/libc/libc.x86.map
+++ b/libc/libc.x86.map
@@ -1209,7 +1209,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1241,6 +1243,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/libc.x86_64.map b/libc/libc.x86_64.map
index 14f90ad..271460f 100644
--- a/libc/libc.x86_64.map
+++ b/libc/libc.x86_64.map
@@ -1149,7 +1149,9 @@
__write_chk;
fgetpos64;
fileno_unlocked;
+ fopen64;
freeifaddrs;
+ freopen64;
fseeko64;
fsetpos64;
ftello64;
@@ -1180,6 +1182,7 @@
scandirat;
scandirat64;
strchrnul;
+ tmpfile64;
} LIBC;
LIBC_PRIVATE {
diff --git a/libc/stdio/stdio.cpp b/libc/stdio/stdio.cpp
index 16cbd55..1c31a27 100644
--- a/libc/stdio/stdio.cpp
+++ b/libc/stdio/stdio.cpp
@@ -222,6 +222,7 @@
return fp;
}
+__strong_alias(fopen64, fopen);
FILE* fdopen(int fd, const char* mode) {
int oflags;
@@ -358,6 +359,7 @@
if (oflags & O_APPEND) __sseek64(fp, 0, SEEK_END);
return fp;
}
+__strong_alias(freopen64, freopen);
int fclose(FILE* fp) {
if (fp->_flags == 0) {
diff --git a/libc/tools/check-symbols-glibc.py b/libc/tools/check-symbols-glibc.py
index 27b92c4..c5dbdcf 100755
--- a/libc/tools/check-symbols-glibc.py
+++ b/libc/tools/check-symbols-glibc.py
@@ -79,6 +79,7 @@
'fgetln',
'fpurge',
'funopen',
+ 'funopen64',
'gamma_r',
'gammaf_r',
'getprogname',