hurd: Fix ld.so __getcwd override from libc
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 1 Dec 2019 20:48:46 +0000 (20:48 +0000)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 1 Dec 2019 21:05:51 +0000 (21:05 +0000)
ld.so symbols to be overriden by libc need to be extern to really get
overriden. __getcwd happens to have never been exposed, putting it to
GLIBC_PRIVATE.

include/unistd.h
io/getcwd.c
sysdeps/mach/hurd/Versions
sysdeps/mach/hurd/getcwd.c
sysdeps/mach/hurd/i386/localplt.data
sysdeps/posix/getcwd.c
sysdeps/unix/sysv/linux/getcwd.c

index a043431..dbfa53d 100644 (file)
@@ -75,7 +75,8 @@ extern int __lchown (const char *__file, __uid_t __owner,
                     __gid_t __group);
 extern int __chdir (const char *__path) attribute_hidden;
 extern int __fchdir (int __fd) attribute_hidden;
-extern char *__getcwd (char *__buf, size_t __size) attribute_hidden;
+extern char *__getcwd (char *__buf, size_t __size);
+libc_hidden_proto (__getcwd)
 extern int __rmdir (const char *__path) attribute_hidden;
 extern int __execvpe (const char *file, char *const argv[],
                      char *const envp[]) attribute_hidden;
index 9744a5f..98e8cc1 100644 (file)
@@ -32,6 +32,7 @@ __getcwd (char *buf, size_t size)
   __set_errno (ENOSYS);
   return NULL;
 }
+libc_hidden_def (__getcwd)
 weak_alias (__getcwd, getcwd)
 
 stub_warning (__getcwd)
index c0b73cf..dc199bf 100644 (file)
@@ -1,7 +1,7 @@
 libc {
   GLIBC_2.0 {
     # functions with a weak definition in the dynamic linker
-    __access; __getcwd; __mmap;
+    __access; __mmap;
   }
   GLIBC_2.2.6 {
     # functions with a weak definition in the dynamic linker
@@ -10,7 +10,7 @@ libc {
   GLIBC_PRIVATE {
     # Functions shared with the dynamic linker
     __access_noerrno; __libc_read; __libc_write; __libc_lseek64;
-    __libc_lock_self0; __sigprocmask;
+    __libc_lock_self0; __sigprocmask; __getcwd;
 
     _dl_init_first;
   }
@@ -22,7 +22,7 @@ ld {
     __hurd_threadvar_stack_mask;  __hurd_threadvar_stack_offset;
 
     # functions that must be shared with libc
-    __access; __close; __getcwd; __getpid;
+    __access; __close; __getpid;
     __mmap; __open; __read; __sbrk; __strtoul_internal;
     __write; __writev; __xstat64; __fxstat64;
     _exit; _hurd_intr_rpc_mach_msg;
@@ -41,6 +41,6 @@ ld {
 
     # functions that must be shared with libc
     __access_noerrno; __libc_read; __libc_write; __libc_lseek64;
-    __libc_lock_self0; __sigprocmask;
+    __libc_lock_self0; __sigprocmask; __getcwd;
   }
 }
index 2757ac7..4114991 100644 (file)
@@ -306,4 +306,5 @@ __getcwd (char *buf, size_t size)
                                                            buf, size));
   return cwd;
 }
+libc_hidden_def (__getcwd)
 weak_alias (__getcwd, getcwd)
index 1aef944..0c1cf0f 100644 (file)
@@ -35,7 +35,7 @@ ld.so: __xstat64
 #ld.so: __access
 ld.so: __access_noerrno
 ld.so: __getpid
-#ld.so: __getcwd
+ld.so: __getcwd
 ld.so: __sbrk
 ld.so: __strtoul_internal
 #ld.so: _exit
index 86fb366..4a721c4 100644 (file)
@@ -531,5 +531,6 @@ __getcwd (char *buf, size_t size)
 }
 
 #if defined _LIBC && !defined __getcwd
+libc_hidden_def (__getcwd)
 weak_alias (__getcwd, getcwd)
 #endif
index eec986e..c031e1f 100644 (file)
@@ -127,6 +127,7 @@ __getcwd (char *buf, size_t size)
 
   return NULL;
 }
+libc_hidden_def (__getcwd)
 weak_alias (__getcwd, getcwd)
 
 /* Get the code for the generic version.  */