From 8a3b438c22e67d829f17e2947f0bc02cfb2eaf11 Mon Sep 17 00:00:00 2001 From: hariharandev1 Date: Mon, 30 Sep 2024 12:48:36 -0700 Subject: [PATCH] fixed readlinkat to handle AT_FDCWD --- src/dftracer/brahma/posix.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/dftracer/brahma/posix.cpp b/src/dftracer/brahma/posix.cpp index 587ff3e..18f4b01 100644 --- a/src/dftracer/brahma/posix.cpp +++ b/src/dftracer/brahma/posix.cpp @@ -382,11 +382,21 @@ ssize_t brahma::POSIXDFTracer::readlink(const char *path, char *buf, ssize_t brahma::POSIXDFTracer::readlinkat(int fd, const char *path, char *buf, size_t bufsize) { BRAHMA_MAP_OR_FAIL(readlinkat); - DFT_LOGGER_START(fd); - DFT_LOGGER_UPDATE(fd); - DFT_LOGGER_UPDATE(bufsize); - ssize_t ret = __real_readlinkat(fd, path, buf, bufsize); - DFT_LOGGER_END(); + ssize_t ret; + if (fd != AT_FDCWD) { + DFT_LOGGER_START(fd); + DFT_LOGGER_UPDATE(fd); + DFT_LOGGER_UPDATE(path); + DFT_LOGGER_UPDATE(bufsize); + ret = __real_readlinkat(fd, path, buf, bufsize); + DFT_LOGGER_END(); + } else { + DFT_LOGGER_START(path); + DFT_LOGGER_UPDATE(fd); + DFT_LOGGER_UPDATE(bufsize); + ret = __real_readlinkat(fd, path, buf, bufsize); + DFT_LOGGER_END(); + } return ret; }