diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc
index 49fee7e..8dc055c 100644
--- a/src/sim/syscall_emul.cc
+++ b/src/sim/syscall_emul.cc
@@ -422,11 +422,11 @@
 SyscallReturn
 readlinkFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
 {
-    return readlinkFunc(desc, callnum, tc, 0);
+    return readlinkImpl(desc, callnum, tc, 0);
 }
 
 SyscallReturn
-readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc, int index)
+readlinkImpl(SyscallDesc *desc, int num, ThreadContext *tc, int index)
 {
     string path;
     auto p = tc->getProcessPtr();
@@ -1147,7 +1147,7 @@
 }
 
 SyscallReturn
-accessFunc(SyscallDesc *desc, int callnum, ThreadContext *tc, int index)
+accessImpl(SyscallDesc *desc, int callnum, ThreadContext *tc, int index)
 {
     string path;
     auto p = tc->getProcessPtr();
@@ -1166,7 +1166,7 @@
 SyscallReturn
 accessFunc(SyscallDesc *desc, int callnum, ThreadContext *tc)
 {
-    return accessFunc(desc, callnum, tc, 0);
+    return accessImpl(desc, callnum, tc, 0);
 }
 
 SyscallReturn
diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh
index 0eaec4c..fc6ed62 100644
--- a/src/sim/syscall_emul.hh
+++ b/src/sim/syscall_emul.hh
@@ -171,8 +171,8 @@
 SyscallReturn getcwdFunc(SyscallDesc *desc, int num, ThreadContext *tc);
 
 /// Target readlink() handler.
-SyscallReturn readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc,
-                           int index = 0);
+SyscallReturn readlinkImpl(SyscallDesc *desc, int num, ThreadContext *tc,
+                           int index);
 SyscallReturn readlinkFunc(SyscallDesc *desc, int num, ThreadContext *tc);
 
 /// Target unlink() handler.
@@ -313,9 +313,9 @@
 SyscallReturn getegidFunc(SyscallDesc *desc, int num, ThreadContext *tc);
 
 /// Target access() handler
-SyscallReturn accessFunc(SyscallDesc *desc, int num, ThreadContext *tc);
-SyscallReturn accessFunc(SyscallDesc *desc, int num, ThreadContext *tc,
+SyscallReturn accessImpl(SyscallDesc *desc, int num, ThreadContext *tc,
                          int index);
+SyscallReturn accessFunc(SyscallDesc *desc, int num, ThreadContext *tc);
 
 // Target getsockopt() handler.
 SyscallReturn getsockoptFunc(SyscallDesc *desc, int num, ThreadContext *tc);
@@ -953,7 +953,7 @@
     int dirfd = process->getSyscallArg(tc, index);
     if (dirfd != OS::TGT_AT_FDCWD)
         warn("faccessat: first argument not AT_FDCWD; unlikely to work");
-    return accessFunc(desc, callnum, tc, 1);
+    return accessImpl(desc, callnum, tc, 1);
 }
 
 /// Target readlinkat() handler
@@ -966,7 +966,7 @@
     int dirfd = process->getSyscallArg(tc, index);
     if (dirfd != OS::TGT_AT_FDCWD)
         warn("openat: first argument not AT_FDCWD; unlikely to work");
-    return readlinkFunc(desc, callnum, tc, 1);
+    return readlinkImpl(desc, callnum, tc, 1);
 }
 
 /// Target renameat() handler.
