about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nptl/Banner2
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/Makefile11
-rw-r--r--nptl/version.c40
4 files changed, 56 insertions, 3 deletions
diff --git a/nptl/Banner b/nptl/Banner
index 558f6d83aa..aaca2401a2 100644
--- a/nptl/Banner
+++ b/nptl/Banner
@@ -1 +1 @@
-nptl 0.15 by Ulrich Drepper
+NPTL 0.16 by Ulrich Drepper
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 20e4c7ac35..a3692f77a4 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2003-01-13  Ulrich Drepper  <drepper@redhat.com>
+
+	* Makefile (libpthread-routines): Add version.  Add rules to build
+	version.os and banner.h.
+	* version.c: New file.
+
 2003-01-13  Jakub Jelinek  <jakub@redhat.com>
 
 	* pthread_mutex_lock.c (__pthread_mutex_lock_internal): Make
diff --git a/nptl/Makefile b/nptl/Makefile
index 487e58ac33..e106172e54 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -32,7 +32,7 @@ routines = alloca_cutoff forward libc-lowlevellock libc-lowlevelmutex \
 	   libc-cancellation
 shared-only-routines = forward
 
-libpthread-routines = init events \
+libpthread-routines = init events version \
 		      pthread_create pthread_exit pthread_detach \
 		      pthread_join pthread_tryjoin pthread_timedjoin \
 		      pthread_self pthread_equal pthread_yield \
@@ -109,7 +109,7 @@ libpthread-routines = init events \
 		      herrno res pt-allocrtsig \
 		      pthread_kill_other_threads
 
-libpthread-shared-only-routines = pt-allocrtsig
+libpthread-shared-only-routines = version pt-allocrtsig
 
 libpthread-nonshared = pthread_atfork
 
@@ -263,6 +263,13 @@ $(objpfx)crti.o: $(objpfx)crti.S $(objpfx)defs.h
 	$(compile.S) -g0 $(ASFLAGS-.os) -o $@
 
 generated += crti.S defs.h pt-initfini.s
+
+$(objpfx)version.os: $(objpfx)banner.h
+$(objpfx)banner.h: Banner
+	sed 's/\(.*\)/"\1\\n"/' $< > $@
+generated += banner.h
+# Give libpthread.so an entry point and make it directly runnable itself.
+LDFLAGS-pthread.so += -e __nptl_main
 endif
 
 ifeq (no,$(cross-compiling))
diff --git a/nptl/version.c b/nptl/version.c
new file mode 100644
index 0000000000..0f12c6aa18
--- /dev/null
+++ b/nptl/version.c
@@ -0,0 +1,40 @@
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <unistd.h>
+#include <sysdep.h>
+
+
+static const char banner[] =
+#include "banner.h"
+"Copyright (C) 2003 Free Software Foundation, Inc.\n\
+This is free software; see the source for copying conditions.\n\
+There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\
+PARTICULAR PURPOSE.\n";
+
+
+extern void __nptl_main (void) __attribute__ ((noreturn));
+void
+__nptl_main (void)
+{
+  INTERNAL_SYSCALL_DECL (err);
+  INTERNAL_SYSCALL (write, err, 3, STDOUT_FILENO, banner, sizeof banner - 1);
+
+  _exit (0);
+}