Message ID | 20141020215700.252102C3B0A@topped-with-meat.com |
---|---|
State | New |
Headers | show |
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).
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.
--- 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); }