[COMMITTED] NPTL: Clean up gratuitous Linuxism in libpthread.so entry point.

Message ID 20141020215700.252102C3B0A@topped-with-meat.com
State Committed
Headers

Commit Message

Roland McGrath Oct. 20, 2014, 9:57 p.m. UTC
  There was never any reason either to microoptimize or to avoid possibly
setting errno, in __nptl_main.  It's only ever called when one runs
libpthread.so as a command.  While I was there, I noticed the copyright
year had not been updated in a long time.


Thanks,
Roland


	* nptl/version.c (__nptl_main): Use normal __write rather than
	INTERNAL_SYSCALL.
	(banner): Update copyright years.
  

Comments

Joseph Myers Oct. 21, 2014, 12:44 a.m. UTC | #1
On Mon, 20 Oct 2014, Roland McGrath wrote:

> 	* nptl/version.c (__nptl_main): Use normal __write rather than
> 	INTERNAL_SYSCALL.
> 	(banner): Update copyright years.

I'm seeing elf/check-localplt failing on x86_64 with

Extra PLT reference: libpthread.so: __write

(I haven't checked that this patch is responsible, but it seems likely; 
__write only uses libc_hidden_proto in include/unistd.h so an internal 
symbol name won't be used here, and __write is exported from libpthread).
  
Stefan Liebler Oct. 21, 2014, 9 a.m. UTC | #2
On 10/21/2014 02:44 AM, Joseph S. Myers wrote:
> On Mon, 20 Oct 2014, Roland McGrath wrote:
>
>> 	* nptl/version.c (__nptl_main): Use normal __write rather than
>> 	INTERNAL_SYSCALL.
>> 	(banner): Update copyright years.
>
> I'm seeing elf/check-localplt failing on x86_64 with
>
> Extra PLT reference: libpthread.so: __write
Same on s390/s390x

>
> (I haven't checked that this patch is responsible, but it seems likely;
> __write only uses libc_hidden_proto in include/unistd.h so an internal
> symbol name won't be used here, and __write is exported from libpthread).
>
This failure was introduced with this commit.
  

Patch

--- a/nptl/version.c
+++ b/nptl/version.c
@@ -1,4 +1,5 @@ 
-/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
+/* Entry point for libpthread DSO.
+   Copyright (C) 2002-2014 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -22,7 +23,7 @@ 
 
 static const char banner[] =
 #include "banner.h"
-"Copyright (C) 2006 Free Software Foundation, Inc.\n\
+"Copyright (C) 2006-2014 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"
@@ -32,13 +33,11 @@  PARTICULAR PURPOSE.\n"
 ;
 
 
-extern void __nptl_main (void) __attribute__ ((noreturn));
+/* This is made the e_entry of libpthread.so by LDFLAGS-pthread.so.  */
+__attribute__ ((noreturn))
 void
 __nptl_main (void)
 {
-  INTERNAL_SYSCALL_DECL (err);
-  INTERNAL_SYSCALL (write, err, 3, STDOUT_FILENO, (const char *) banner,
-		    sizeof banner - 1);
-
+  __write (STDOUT_FILENO, (const char *) banner, sizeof banner - 1);
   _exit (0);
 }