diff options
author | Elliott Hughes <enh@google.com> | 2018-02-13 15:42:55 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-02-13 15:42:55 +0000 |
commit | f99b7a34c809ac658f06259d51efdb4cf052e166 (patch) | |
tree | 124dae1fcd9e0d3fd876088a5aee513f42af7f0b | |
parent | a8b179bcdd9c658ceacc9f944c92640ea2f219d0 (diff) | |
parent | 25f17e48df2e5e9e88b0c5cd2ebeded33c7cedc0 (diff) | |
download | bionic-f99b7a34c809ac658f06259d51efdb4cf052e166.tar.gz |
Merge "Better backwards compatibility for stat64."
-rw-r--r-- | libc/Android.bp | 1 | ||||
-rw-r--r-- | libc/include/ftw.h | 8 | ||||
-rw-r--r-- | libc/include/sys/cdefs.h | 10 | ||||
-rw-r--r-- | libc/include/sys/stat.h | 8 |
4 files changed, 18 insertions, 9 deletions
diff --git a/libc/Android.bp b/libc/Android.bp index 13e17fe32..f5491f5ac 100644 --- a/libc/Android.bp +++ b/libc/Android.bp @@ -33,6 +33,7 @@ libc_common_src_files_32 = [ libc_common_flags = [ "-D_LIBC=1", + "-D__BIONIC_LP32_USE_STAT64", "-Wall", "-Wextra", "-Wunused", diff --git a/libc/include/ftw.h b/libc/include/ftw.h index 300f6243f..a2896431a 100644 --- a/libc/include/ftw.h +++ b/libc/include/ftw.h @@ -56,11 +56,9 @@ struct FTW { __BEGIN_DECLS int ftw(const char* __dir_path, int (*__callback)(const char*, const struct stat*, int), int __max_fd_count) __INTRODUCED_IN(17); -int nftw(const char* __dir_path, int (*__callback)(const char*, const struct stat*, int, struct FTW*), int __max_fd_count, int __flags) - __INTRODUCED_IN(17); -int ftw64(const char* __dir_path, int (*__callback)(const char*, const struct stat64*, int), int __max_fd_count) __INTRODUCED_IN(21); -int nftw64(const char* __dir_path, int (*__callback)(const char*, const struct stat64*, int, struct FTW*), int __max_fd_count, int __flags) - __INTRODUCED_IN(21); +int nftw(const char* __dir_path, int (*__callback)(const char*, const struct stat*, int, struct FTW*), int __max_fd_count, int __flags) __INTRODUCED_IN(17); +int ftw64(const char* __dir_path, int (*__callback)(const char*, const struct stat64*, int), int __max_fd_count) __RENAME_STAT64(ftw, 17, 21); +int nftw64(const char* __dir_path, int (*__callback)(const char*, const struct stat64*, int, struct FTW*), int __max_fd_count, int __flags) __RENAME_STAT64(nftw, 17, 21); __END_DECLS #endif diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h index 27952b90a..26dd9a2e3 100644 --- a/libc/include/sys/cdefs.h +++ b/libc/include/sys/cdefs.h @@ -245,6 +245,16 @@ #define __RENAME_LDBL(rewrite,rewrite_api_level,regular_api_level) __RENAME(rewrite) __INTRODUCED_IN(rewrite_api_level) #endif +/* + * On all architectures, `struct stat` == `struct stat64`, but LP32 didn't gain the *64 functions + * until API level 21. + */ +#if defined(__LP64__) || defined(__BIONIC_LP32_USE_STAT64) +#define __RENAME_STAT64(rewrite,rewrite_api_level,regular_api_level) __INTRODUCED_IN(regular_api_level) +#else +#define __RENAME_STAT64(rewrite,rewrite_api_level,regular_api_level) __RENAME(rewrite) __INTRODUCED_IN(rewrite_api_level) +#endif + /* glibc compatibility. */ #if defined(__LP64__) #define __WORDSIZE 64 diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h index 6fce0a5ac..84a50152a 100644 --- a/libc/include/sys/stat.h +++ b/libc/include/sys/stat.h @@ -156,13 +156,13 @@ int fchmod(int __fd, mode_t __mode); int mkdir(const char* __path, mode_t __mode); int fstat(int __fd, struct stat* __buf); -int fstat64(int __fd, struct stat64* __buf) __INTRODUCED_IN(21); +int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21); int fstatat(int __dir_fd, const char* __path, struct stat* __buf, int __flags); -int fstatat64(int __dir_fd, const char* __path, struct stat64* __buf, int __flags) __INTRODUCED_IN(21); +int fstatat64(int __dir_fd, const char* __path, struct stat64* __buf, int __flags) __RENAME_STAT64(fstatat, 3, 21); int lstat(const char* __path, struct stat* __buf); -int lstat64(const char* __path, struct stat64* __buf) __INTRODUCED_IN(21); +int lstat64(const char* __path, struct stat64* __buf) __RENAME_STAT64(lstat, 3, 21); int stat(const char* __path, struct stat* __buf); -int stat64(const char* __path, struct stat64* __buf) __INTRODUCED_IN(21); +int stat64(const char* __path, struct stat64* __buf) __RENAME_STAT64(stat, 3, 21); int mknod(const char* __path, mode_t __mode, dev_t __dev); mode_t umask(mode_t __mask); |