summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--VERSION1
-rw-r--r--src/internal/version.c12
-rw-r--r--src/ldso/dynlink.c9
-rw-r--r--tools/version.sh12
5 files changed, 39 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 7ac58d48..69ab304b 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,7 @@ SRCS = $(sort $(wildcard src/*/*.c arch/$(ARCH)/src/*.c))
OBJS = $(SRCS:.c=.o)
LOBJS = $(OBJS:.o=.lo)
GENH = include/bits/alltypes.h
+GENH_INT = src/internal/version.h
IMPH = src/internal/stdio_impl.h src/internal/pthread_impl.h src/internal/libc.h
LDFLAGS =
@@ -64,7 +65,7 @@ clean:
rm -f $(LOBJS)
rm -f $(ALL_LIBS) lib/*.[ao] lib/*.so
rm -f $(ALL_TOOLS)
- rm -f $(GENH)
+ rm -f $(GENH) $(GENH_INT)
rm -f include/bits
distclean: clean
@@ -79,6 +80,11 @@ include/bits/alltypes.h.in: include/bits
include/bits/alltypes.h: include/bits/alltypes.h.in include/alltypes.h.in tools/mkalltypes.sed
sed -f tools/mkalltypes.sed include/bits/alltypes.h.in include/alltypes.h.in > $@
+src/internal/version.h: $(wildcard VERSION .git .git/*)
+ printf '#define VERSION "%s"\n' "$$(sh tools/version.sh)" > $@
+
+src/internal/version.lo: src/internal/version.h
+
src/ldso/dynlink.lo: arch/$(ARCH)/reloc.h
crt/crt1.o crt/Scrt1.o: $(wildcard arch/$(ARCH)/crt_arch.h)
diff --git a/VERSION b/VERSION
new file mode 100644
index 00000000..6d44d227
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+0.9.14
diff --git a/src/internal/version.c b/src/internal/version.c
new file mode 100644
index 00000000..16554ba2
--- /dev/null
+++ b/src/internal/version.c
@@ -0,0 +1,12 @@
+#ifdef SHARED
+
+#include "version.h"
+
+static const char version[] = VERSION;
+
+const char *__libc_get_version()
+{
+ return version;
+}
+
+#endif
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 174df572..27d92f2b 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -93,6 +93,8 @@ void __init_ssp(size_t *);
void *__install_initial_tls(void *);
void __init_libc(char **, char *);
+const char *__libc_get_version(void);
+
static struct dso *head, *tail, *ldso, *fini_head;
static char *env_path, *sys_path;
static unsigned long long gencnt;
@@ -1040,8 +1042,11 @@ void *__dynlink(int argc, char **argv)
*argv++ = (void *)-1;
if (argv[0] && !strcmp(argv[0], "--")) *argv++ = (void *)-1;
if (!argv[0]) {
- dprintf(2, "musl libc/dynamic program loader\n");
- dprintf(2, "usage: %s pathname%s\n", ldname,
+ dprintf(2, "musl libc\n"
+ "Version %s\n"
+ "Dynamic Program Loader\n"
+ "Usage: %s [--] pathname%s\n",
+ __libc_get_version(), ldname,
ldd_mode ? "" : " [args]");
_exit(1);
}
diff --git a/tools/version.sh b/tools/version.sh
new file mode 100644
index 00000000..f1cc5948
--- /dev/null
+++ b/tools/version.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+if test -d .git ; then
+if type git >/dev/null 2>&1 ; then
+git describe --tags --match 'v[0-9]*' 2>/dev/null \
+| sed -e 's/^v//' -e 's/-/-git-/'
+else
+sed 's/$/-git/' < VERSION
+fi
+else
+cat VERSION
+fi