This makes the references to getcwd() in getwd() and realpath() skip the
PLT. __getcwd() is already hidden by the link-time symbol list, but the
wrapping here lets the compiler generate a shorter code sequence on some
archs (I'm looking at you, i386).
check_sym report:
Dynamic export changes:
weakened:
getcwd
PLT removed:
getcwd
ok?
Philip Guenther
Index: gen/getcwd.c
===================================================================
RCS file: /cvs/src/lib/libc/gen/getcwd.c,v
retrieving revision 1.19
diff -u -p -r1.19 getcwd.c
--- gen/getcwd.c 30 Sep 2013 12:02:33 -0000 1.19
+++ gen/getcwd.c 5 Apr 2016 06:36:08 -0000
@@ -22,6 +22,7 @@
#include <unistd.h>
int __getcwd(char *buf, size_t len);
+PROTO_NORMAL(__getcwd);
char *
getcwd(char *buf, size_t size)
@@ -44,3 +45,4 @@ getcwd(char *buf, size_t size)
return (buf);
}
+DEF_WEAK(getcwd);
Index: hidden/unistd.h
===================================================================
RCS file: /cvs/src/lib/libc/hidden/unistd.h,v
retrieving revision 1.7
diff -u -p -r1.7 unistd.h
--- hidden/unistd.h 30 Mar 2016 07:52:47 -0000 1.7
+++ hidden/unistd.h 5 Apr 2016 06:36:08 -0000
@@ -61,7 +61,7 @@ PROTO_DEPRECATED(fflagstostr);
PROTO_NORMAL(fpathconf);
/*PROTO_CANCEL(fsync);*/
PROTO_NORMAL(ftruncate);
-/*PROTO_BARE(getcwd);*/
+PROTO_NORMAL(getcwd);
PROTO_NORMAL(getdomainname);
PROTO_NORMAL(getdtablecount);
PROTO_DEPRECATED(getdtablesize);