aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2018-09-06 16:17:56 -0400
committerRich Felker <dalias@aerifal.cx>2018-09-12 14:34:28 -0400
commit18bf0829a7545b14de3fe241a65298c5f36e8bbc (patch)
tree173183b30b68a4e84702b390de6383837107ed5f
parent3b028c28314a43e6fb65f3281149aecae8250f11 (diff)
downloadmusl-18bf0829a7545b14de3fe241a65298c5f36e8bbc.zip
musl-18bf0829a7545b14de3fe241a65298c5f36e8bbc.tar.gz
musl-18bf0829a7545b14de3fe241a65298c5f36e8bbc.tar.bz2
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.
-rw-r--r--ldso/dynlink.c4
-rw-r--r--src/internal/libc.h2
-rw-r--r--src/internal/version.c7
3 files changed, 4 insertions, 9 deletions
diff --git a/ldso/dynlink.c b/ldso/dynlink.c
index b46cbaf..b561454 100644
--- a/ldso/dynlink.c
+++ b/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);
}
diff --git a/src/internal/libc.h b/src/internal/libc.h
index 7307a73..f536eaf 100644
--- a/src/internal/libc.h
+++ b/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 *);
diff --git a/src/internal/version.c b/src/internal/version.c
index 0d6e1f8..08bbf5b 100644
--- a/src/internal/version.c
+++ b/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;