From f6f19a39ecfe962cb8a05522c27f513308687a74 Mon Sep 17 00:00:00 2001 From: Vladimir Mezentsev Date: Thu, 16 Feb 2023 19:00:47 -0800 Subject: [PATCH] gprofng: PR30036 Build failure on aarch64 w/ glibc: symbol `pwrite64' is already defined gprofng/ChangeLog 2023-02-16 Vladimir Mezentsev PR gprofng/30036 * libcollector/iotrace.c: Define creat64 and pwrite64 only when __USE_LARGEFILE64 and __USE_FILE_OFFSET64 are not defined. * libcollector/mmaptrace.c: Likewise for mmap64. --- gprofng/libcollector/iotrace.c | 15 ++++++++------- gprofng/libcollector/mmaptrace.c | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/gprofng/libcollector/iotrace.c b/gprofng/libcollector/iotrace.c index af90cc31f1a..d8439b02b3a 100644 --- a/gprofng/libcollector/iotrace.c +++ b/gprofng/libcollector/iotrace.c @@ -1441,7 +1441,7 @@ creat (const char *path, mode_t mode) } /*------------------------------------------------------------- creat64 */ -#if WSIZE(32) +#if WSIZE(32) && !defined(__USE_LARGEFILE64) int creat64 (const char *path, mode_t mode) { @@ -2476,7 +2476,7 @@ __collector_pwrite_2_1 (int fildes, const void *buf, size_t nbyte, off_t offset) return ret; } -#else +#endif ssize_t pwrite (int fildes, const void *buf, size_t nbyte, off_t offset) { @@ -2497,11 +2497,10 @@ pwrite (int fildes, const void *buf, size_t nbyte, off_t offset) POP_REENTRANCE (guard); return ret; } -#endif /*------------------------------------------------------------- pwrite64 */ -#if WSIZE(32) -#if !defined(__MUSL_LIBC) && ARCH(Intel) +#if WSIZE(32) && ARCH(Intel) +#if !defined(__MUSL_LIBC) // map interposed symbol versions SYMVER_ATTRIBUTE (__collector_pwrite64_2_2, pwrite64@GLIBC_2.2) @@ -2547,8 +2546,9 @@ __collector_pwrite64_2_1 (int fildes, const void *buf, size_t nbyte, off64_t off POP_REENTRANCE (guard); return ret; } +#endif -#else +#if !defined(__USE_FILE_OFFSET64) ssize_t pwrite64 (int fildes, const void *buf, size_t nbyte, off64_t offset) { @@ -2570,7 +2570,8 @@ pwrite64 (int fildes, const void *buf, size_t nbyte, off64_t offset) return ret; } #endif -#endif /* SIZE(32) */ + +#endif /* SIZE(32) && ARCH(Intel) */ /*------------------------------------------------------------- fgets */ char* diff --git a/gprofng/libcollector/mmaptrace.c b/gprofng/libcollector/mmaptrace.c index 61613c21560..221b4e2d176 100644 --- a/gprofng/libcollector/mmaptrace.c +++ b/gprofng/libcollector/mmaptrace.c @@ -1494,7 +1494,7 @@ mmap (void *start, size_t length, int prot, int flags, int fd, off_t offset) } /*------------------------------------------------------------- mmap64 */ -#if WSIZE(32) /* mmap64 only defined for non-64-bit */ +#if WSIZE(32) && !defined(__USE_FILE_OFFSET64) void * mmap64 (void *start, size_t length, int prot, int flags, int fd, off64_t offset) -- 2.30.2