Просмотр исходного кода

improve machinery for ldso to report libc version

eliminate gratuitous glue function for reporting the version, which
was probably leftover from the old dynamic linker design which lacked
a clear barrier for when/how it could access global data. put the
declaration for the data object that replaces it in libc.h where it
can be type checked.
Rich Felker 6 лет назад
Родитель
Сommit
18bf0829a7
3 измененных файлов с 4 добавлено и 9 удалено
  1. 1 3
      ldso/dynlink.c
  2. 2 0
      src/internal/libc.h
  3. 1 6
      src/internal/version.c

+ 1 - 3
ldso/dynlink.c

@@ -99,8 +99,6 @@ int __init_tp(void *);
 void __init_libc(char **, char *);
 void *__copy_tls(unsigned char *);
 
-hidden const char *__libc_get_version(void);
-
 static struct builtin_tls {
 	char c;
 	struct pthread pt;
@@ -1562,7 +1560,7 @@ _Noreturn void __dls3(size_t *sp)
 				"Version %s\n"
 				"Dynamic Program Loader\n"
 				"Usage: %s [options] [--] pathname%s\n",
-				__libc_get_version(), ldname,
+				__libc_version, ldname,
 				ldd_mode ? "" : " [args]");
 			_exit(1);
 		}

+ 2 - 0
src/internal/libc.h

@@ -43,6 +43,8 @@ extern hidden size_t __hwcap;
 extern hidden size_t __sysinfo;
 extern char *__progname, *__progname_full;
 
+extern hidden const char __libc_version[];
+
 /* Designed to avoid any overhead in non-threaded processes */
 hidden void __lock(volatile int *);
 hidden void __unlock(volatile int *);

+ 1 - 6
src/internal/version.c

@@ -1,9 +1,4 @@
 #include "version.h"
 #include "libc.h"
 
-static const char version[] = VERSION;
-
-hidden const char *__libc_get_version()
-{
-	return version;
-}
+const char __libc_version[] = VERSION;