This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH roland/nptl] NPTL is no longer an add-on!


Hi,

now the roland/nptl branch builds on s390. Thanks.

the diffs of the remaining files show the same different paths or the build date.
Tested for s390/s390x with/without lock-elision.
The testsuite also passes for these.

Bye

On 07/03/2014 05:46 PM, Stefan Liebler wrote:
Hi Roland,

iÂve checked out roland/nptl and build fails on s390 without appended
patch, because files are not found. So please add it to your branch.

make test|xtest runs without failures.

IÂve compared *.o files bytewise in build-directory before/after branch,
but i couldnÂt look at all differences yet. Thus here is the list with
differences:
-nptl/stamp.o: different ordering of object files
     before:
         ...
         nptl/register-atfork.o
         nptl/unregister-atfork.o
         nptl/libc_pthread_init.o
         nptl/libc_multiple_threads.o
     after:
         ...
         nptl/libc_pthread_init.o
         nptl/libc_multiple_threads.o
         nptl/register-atfork.o
         nptl/unregister-atfork.o

-nptl/pthread_create.o:
     objdump -s -j .rodata.str1.2 nptl/pthread_create.o
     -after branch:
...
  00e0 2d3e6865 61646572 2e746362 20213d20  ->header.tcb !=
  00f0 2828766f 6964202a 29302900 2e2f6372  ((void *)0)../cr
  0100 65617465 74687265 61642e63 00005f5f  eatethread.c..__
  0110 7265636c 61696d5f 73746163 6b730000  reclaim_stacks..
  0120 616c6c6f 63617465 5f737461 636b0000  allocate_stack..
  0130 63726561 74655f74 68726561 64007374  create_thread.st
  0140 6172745f 74687265 61640000           art_thread..

     -before branch:
...
  00e0 2d3e6865 61646572 2e746362 20213d20  ->header.tcb !=
  00f0 2828766f 6964202a 29302900 2e2e2f6e  ((void *)0).../n
  0100 70746c2f 63726561 74657468 72656164  ptl/createthread
  0110 2e630000 5f5f7265 636c6169 6d5f7374  .c..__reclaim_st
  0120 61636b73 0000616c 6c6f6361 74655f73  acks..allocate_s
  0130 7461636b 00006372 65617465 5f746872  tack..create_thr
  0140 65616400 73746172 745f7468 72656164  ead.start_thread
  0150 0000                                 ..


-libio/tst_putwc.o
static const char outname[] = OBJPFX "tst_putwc.temp";
=> different paths

-intl/tst-gettext3.o
bindtextdomain ("codeset", OBJPFX "domaindir");
=> different paths

-intl/tst-gettext2.o
bindtextdomain ("tstlang", OBJPFX "domaindir");
=> different paths

-intl/tst-gettext6.o
bindtextdomain ("tstgettext6", OBJPFX "domaindir");
=> different paths

-intl/tst-codeset.o
bindtextdomain ("codeset", OBJPFX "domaindir");
=> different paths

-intl/tst-translit.o
bindtextdomain ("translit", OBJPFX "domaindir");
=> different paths

-intl/tst-gettext4.o
bindtextdomain ("multithread", OBJPFX "domaindir");
=> different paths

-intl/tst-gettext5.o
bindtextdomain ("codeset", OBJPFX "domaindir");
=> different paths

-posix/fork.o
     -Contents of section .rodata.str1.2:
	-before:
 0000 73656c66 2d3e7469 6420213d 20707069  self->tid != ppi
 0010 64002e2e 2f6e7074 6c2f7379 73646570  d.../nptl/sysdep
 0020 732f756e 69782f73 7973762f 6c696e75  s/unix/sysv/linu
 0030 782f666f 726b2e63 00002828 73747275  x/fork.c..((stru
	-after:
 0000 73656c66 2d3e7469 6420213d 20707069  self->tid != ppi
 0010 64002e2e 2f737973 64657073 2f6e7074  d.../sysdeps/npt
 0020 6c2f666f 726b2e63 00002828 73747275  l/fork.c..((stru
=> reflects file move

-elf/tst-dlopenrpath.o
static const char testsubdir[] = PFX "test-subdir";
if (system ("cp " PFX "firstobj.so " PFX "test-subdir/in-subdir.so")
unlink (PFX "test-subdir/in-subdir.so");
=> different paths

-elf/multiload.o
  if (chdir (OBJDIR) != 0)
=> different paths

-nscd/nscd_stat.o
static const char compilation[21] = __DATE__ " " __TIME__;


Bye

On 06/26/2014 01:47 AM, Roland McGrath wrote:
I think this completes the de-add-on-ification of NPTL.  I've tested on
x86_64-linux-gnu, i686-linux-gnu, and arm-linux-gnueabihf that there
are no
code changes from this.  I think I added all the Implies files necessary
for other machines to notice no changes, but I haven't tested those
builds.

But note that what I actually tested is a tree where the nptl/sysdeps
directory is gone, and its presence probably louses things up.  To
achieve
that state on the trunk requires merging in the roland/nptl-s390 branch.

Each machine with an outstanding per-machine branch needs that branch
merged (and verified, and fixed as necessary) before this.  Those are:

    roland/nptl-aarch64
    roland/nptl-hppa
    roland/nptl-ia64
    roland/nptl-microblaze
    roland/nptl-mips
    roland/nptl-s390

I reiterate my request for each of those machines' maintainers to get on
with the review and testing forthwith!

Tomorrow I will start the harangues in earnest, and start discussing
how we
should proceed for the lagging maintainers.  I would really like to get
this all resolved and in within the next week or so.


Thanks,
Roland


    NPTL is no longer an add-on!
    * nptl/internaltypes.h: Moved ...
    * sysdeps/nptl/internaltypes.h: ... here.
    * sysdeps/nptl/aio_misc.h: Use <nptl/pthreadP.h> in #include.
    * sysdeps/nptl/fork.c: Likewise.
    * sysdeps/nptl/gai_misc.h: Likewise.
    * sysdeps/nptl/jmp-unwind.c: Likewise.
    * sysdeps/nptl/setxid.h: Likewise.
    * sysdeps/unix/sysv/linux/aarch64/Implies: New file.
    * sysdeps/unix/sysv/linux/alpha/Implies: Add alpha/nptl.
    * sysdeps/unix/sysv/linux/arm/Implies: New file.
    * sysdeps/unix/sysv/linux/hppa/Implies: New file.
    * sysdeps/unix/sysv/linux/i386/Implies: Add i386/nptl.
    * sysdeps/unix/sysv/linux/i386/i686/Implies: New file.
    * sysdeps/unix/sysv/linux/ia64/Implies: Add ia64/nptl.
    * sysdeps/unix/sysv/linux/m68k/Implies: New file.
    * sysdeps/unix/sysv/linux/microblaze/Implies: New file.
    * sysdeps/unix/sysv/linux/mips/Implies: New file.
    * sysdeps/unix/sysv/linux/powerpc/Implies: New file.
    * sysdeps/unix/sysv/linux/s390/Implies: Add s390/nptl.
    * sysdeps/unix/sysv/linux/sh/Implies: New file.
    * sysdeps/unix/sysv/linux/sparc/Implies: New file.
    * sysdeps/unix/sysv/linux/tile/Implies: New file.
    * sysdeps/unix/sysv/linux/x86_64/Implies: Add x86_64/nptl.
    * sysdeps/unix/sysv/linux/x86_64/x32/Implies: New file.
    * nptl/Makeconfig: Moved ...
    * sysdeps/nptl/Makeconfig: ... here.
    * nptl/configure: File removed.
    * nptl/ANNOUNCE: File removed.
    * sysdeps/unix/sysv/linux/configure.ac: Remove nptl sanity check.
    * sysdeps/unix/sysv/linux/configure: Regenerated.

diff --git a/nptl/ANNOUNCE b/nptl/ANNOUNCE
deleted file mode 100644
index b63c657..0000000
--- a/nptl/ANNOUNCE
+++ /dev/null
@@ -1,92 +0,0 @@
-Now that the Linux kernel is once again able to run all the tests we
-have and since glibc 2.3 was released it was time for a new code drop.
-I've uploaded the second code drop for the Native POSIX Thread
-Library:
-
-  ftp://people.redhat.com/drepper/nptl/nptl-0.2.tar.bz2
-
-You need
-
-- the latest of Linus' kernel from BitKeeper (or 2.5.41 when it
-  is released);
-
-- glibc 2.3
-
-- the very latest in tools such as
-
-  + gcc either from the current development branch or the gcc 3.2
-    from Red Hat Linux 8;
-
-  + binutils preferrably from CVS, from H.J. Lu's latest release for
-    Linux, or from RHL 8.
-
-
-Compiling glibc should proceed smoothly.  But there are a number of
-tests which fail, mostly because some functionality is missing in
-glibc.  Ignore those errors.  It is only important that all tests in
-nptl/ are passing.  Run
-
-  make subdirs=nptl check
-
-to run all thread tests.
-
-
-This version features several improvements:
-
-- all APIs are now implemented;
-
-- fork handling has been improved; stacks in the child are freed;
-  atfork handlers are removed if they were registered from a module
-  which gets unloaded.
-
-- pthread_tryjoin_np and pthread_timedjoin_np are implemented
-
-- TSD handling corrected and optimized.
-
-- many more tests which also test the underlying kernel implementation.
-
-- the build infrastructure has been implemented so that the DSO and
-  archives are built in usable form and with correct named.
-
-- libthread_db has been implemented.  This is the library which is
-  needed by all program which need to get access to internals of
-  libpthread (mainly debuggers).
-
-- the CPU clock functions are implemented
-
-
-
-The white paper hasn't yet been updated.  It's still available at
-
-  http://people.redhat.com/drepper/nptl-design.pdf
-
-
-This release should be ready for some serious testing.  I know it is
-hard to compile which I why I'm looking into providing binary RPMs.
-They can be used on non-critical systems.  I'll only be able to
-provide binaries for RHL8 based systems, though, and the kernel still
-must be installed separately.
-
-
-The next steps will include:
-
-- write more tests and fix the bugs which are discovered this way
-
-- update the white paper
-
-- write and run more performance tests
-
-- port to IA-64
-
-
-Interested parties are once again invited to join the mailing we
-created:
-
-
-  phil-list@redhat.com
-
-Go to
-
-  https://listman.redhat.com/mailman/listinfo/phil-list
-
-to subscribe, unsubscribe, or review the archive.
diff --git a/nptl/configure b/nptl/configure
deleted file mode 100644
index dd246c7..0000000
--- a/nptl/configure
+++ /dev/null
@@ -1,13 +0,0 @@
-# This is a shell script fragment sourced by the main configure script.
-# We're obliged to give here the canonical name that will be used to
-# as a subdirectory to search for in other add-ons' sysdeps trees.
-
-libc_add_on_canonical=nptl
-
-# Only linux configurations support NPTL.
-if test $add_ons_automatic = yes; then
-  case "$config_os" in
-  *linux*) ;;
-  *) libc_add_on= ;;
-  esac
-fi
diff --git a/nptl/Makeconfig b/sysdeps/nptl/Makeconfig
similarity index 100%
rename from nptl/Makeconfig
rename to sysdeps/nptl/Makeconfig
diff --git a/sysdeps/nptl/aio_misc.h b/sysdeps/nptl/aio_misc.h
index ac3488c..c3de84b 100644
--- a/sysdeps/nptl/aio_misc.h
+++ b/sysdeps/nptl/aio_misc.h
@@ -21,7 +21,7 @@
     correct aio_suspend and lio_listio implementations.  */

  #include <assert.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
  #include <lowlevellock.h>

  #define DONT_NEED_AIO_MISC_COND    1
diff --git a/sysdeps/nptl/fork.c b/sysdeps/nptl/fork.c
index 70201a2..511533a 100644
--- a/sysdeps/nptl/fork.c
+++ b/sysdeps/nptl/fork.c
@@ -27,7 +27,7 @@
  #include <ldsodefs.h>
  #include <bits/stdio-lock.h>
  #include <atomic.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
  #include <fork.h>
  #include <arch-fork.h>

diff --git a/sysdeps/nptl/gai_misc.h b/sysdeps/nptl/gai_misc.h
index 946275e..942f2b1 100644
--- a/sysdeps/nptl/gai_misc.h
+++ b/sysdeps/nptl/gai_misc.h
@@ -22,7 +22,7 @@

  #include <assert.h>
  #include <signal.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
  #include <lowlevellock.h>

  #define DONT_NEED_GAI_MISC_COND    1
diff --git a/nptl/internaltypes.h b/sysdeps/nptl/internaltypes.h
similarity index 100%
rename from nptl/internaltypes.h
rename to sysdeps/nptl/internaltypes.h
diff --git a/sysdeps/nptl/jmp-unwind.c b/sysdeps/nptl/jmp-unwind.c
index b3a960c..0ac6b27 100644
--- a/sysdeps/nptl/jmp-unwind.c
+++ b/sysdeps/nptl/jmp-unwind.c
@@ -18,7 +18,7 @@

  #include <setjmp.h>
  #include <stddef.h>
-#include <pthreadP.h>
+#include <nptl/pthreadP.h>

  extern void __pthread_cleanup_upto (__jmp_buf env, char *targetframe);
  #pragma weak __pthread_cleanup_upto
diff --git a/sysdeps/nptl/setxid.h b/sysdeps/nptl/setxid.h
index 76c88e0..c02e92d 100644
--- a/sysdeps/nptl/setxid.h
+++ b/sysdeps/nptl/setxid.h
@@ -15,7 +15,7 @@
     License along with the GNU C Library; if not, see
     <http://www.gnu.org/licenses/>.  */

-#include <pthreadP.h>
+#include <nptl/pthreadP.h>
  #include <sysdep.h>

  #define __SETXID_1(cmd, arg1) \
diff --git a/sysdeps/unix/sysv/linux/aarch64/Implies
b/sysdeps/unix/sysv/linux/aarch64/Implies
index 37b6bda..4409e19 100644
--- a/sysdeps/unix/sysv/linux/aarch64/Implies
+++ b/sysdeps/unix/sysv/linux/aarch64/Implies
@@ -1,2 +1,3 @@
+aarch64/nptl
  unix/sysv/linux/generic
  unix/sysv/linux/wordsize-64
diff --git a/sysdeps/unix/sysv/linux/alpha/Implies
b/sysdeps/unix/sysv/linux/alpha/Implies
index 1616efe..fddb49e 100644
--- a/sysdeps/unix/sysv/linux/alpha/Implies
+++ b/sysdeps/unix/sysv/linux/alpha/Implies
@@ -1,3 +1,4 @@
+alpha/nptl
  unix/sysv/linux/wordsize-64
  # These supply the ABI compatibility for when long double was double.
  ieee754/ldbl-64-128
diff --git a/sysdeps/unix/sysv/linux/arm/Implies
b/sysdeps/unix/sysv/linux/arm/Implies
new file mode 100644
index 0000000..e609c13
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/arm/Implies
@@ -0,0 +1 @@
+arm/nptl
diff --git a/sysdeps/unix/sysv/linux/configure
b/sysdeps/unix/sysv/linux/configure
index 57fda6c..91ec602 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -279,33 +279,6 @@ if test -n "$sysheaders"; then
    CPPFLAGS=$OLD_CPPFLAGS
  fi

-# Under Linux the NPTL add-on should be available.
-case $add_ons in
-  # It is available.  Good.
-  *nptl*)
-    nptl_missing=
-    ;;
-  *)
-    nptl_missing=yes
-    ;;
-esac
-
-if test "$nptl_missing"; then
-  if test $enable_sanity = yes; then
-    echo "\
-*** On GNU/Linux systems it is normal to compile GNU libc with the
-*** \`nptl' add-on.  Without that, the library will be
-*** incompatible with normal GNU/Linux systems.
-*** If you really mean to not use this add-on, run configure again
-*** using the extra parameter \`--disable-sanity-checks'."
-    exit 1
-  else
-    echo "\
-*** WARNING: Are you sure you do not want to use the \`nptl'
-*** add-on?"
-  fi
-fi
-
  if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o
"$prefix" = "NONE"; then
    if test $enable_sanity = yes; then
      echo "\
diff --git a/sysdeps/unix/sysv/linux/configure.ac
b/sysdeps/unix/sysv/linux/configure.ac
index e172ffe..8127670 100644
--- a/sysdeps/unix/sysv/linux/configure.ac
+++ b/sysdeps/unix/sysv/linux/configure.ac
@@ -81,33 +81,6 @@ if test -n "$sysheaders"; then
    CPPFLAGS=$OLD_CPPFLAGS
  fi

-# Under Linux the NPTL add-on should be available.
-case $add_ons in
-  # It is available.  Good.
-  *nptl*)
-    nptl_missing=
-    ;;
-  *)
-    nptl_missing=yes
-    ;;
-esac
-
-if test "$nptl_missing"; then
-  if test $enable_sanity = yes; then
-    echo "\
-*** On GNU/Linux systems it is normal to compile GNU libc with the
-*** \`nptl' add-on.  Without that, the library will be
-*** incompatible with normal GNU/Linux systems.
-*** If you really mean to not use this add-on, run configure again
-*** using the extra parameter \`--disable-sanity-checks'."
-    exit 1
-  else
-    echo "\
-*** WARNING: Are you sure you do not want to use the \`nptl'
-*** add-on?"
-  fi
-fi
-
  if test "$prefix" = "/usr/local" -o "$prefix" = "/usr/local/" -o
"$prefix" = "NONE"; then
    if test $enable_sanity = yes; then
      echo "\
diff --git a/sysdeps/unix/sysv/linux/hppa/Implies
b/sysdeps/unix/sysv/linux/hppa/Implies
new file mode 100644
index 0000000..c3d145c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/hppa/Implies
@@ -0,0 +1 @@
+hppa/nptl
diff --git a/sysdeps/unix/sysv/linux/i386/Implies
b/sysdeps/unix/sysv/linux/i386/Implies
index ccc7eaa..4bf5f8b 100644
--- a/sysdeps/unix/sysv/linux/i386/Implies
+++ b/sysdeps/unix/sysv/linux/i386/Implies
@@ -1 +1,2 @@
  unix/sysv/linux/x86
+i386/nptl
diff --git a/sysdeps/unix/sysv/linux/i386/i686/Implies
b/sysdeps/unix/sysv/linux/i386/i686/Implies
new file mode 100644
index 0000000..8948a80
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/i686/Implies
@@ -0,0 +1 @@
+i386/i686/nptl
diff --git a/sysdeps/unix/sysv/linux/ia64/Implies
b/sysdeps/unix/sysv/linux/ia64/Implies
index 8d91c80..9762539 100644
--- a/sysdeps/unix/sysv/linux/ia64/Implies
+++ b/sysdeps/unix/sysv/linux/ia64/Implies
@@ -1 +1,2 @@
+ia64/nptl
  unix/sysv/linux/wordsize-64
diff --git a/sysdeps/unix/sysv/linux/m68k/Implies
b/sysdeps/unix/sysv/linux/m68k/Implies
new file mode 100644
index 0000000..77f1f7d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/Implies
@@ -0,0 +1 @@
+m68k/nptl
diff --git a/sysdeps/unix/sysv/linux/microblaze/Implies
b/sysdeps/unix/sysv/linux/microblaze/Implies
new file mode 100644
index 0000000..469a141
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/microblaze/Implies
@@ -0,0 +1 @@
+microblaze/nptl
diff --git a/sysdeps/unix/sysv/linux/mips/Implies
b/sysdeps/unix/sysv/linux/mips/Implies
new file mode 100644
index 0000000..656fa77
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/Implies
@@ -0,0 +1 @@
+mips/nptl
diff --git a/sysdeps/unix/sysv/linux/powerpc/Implies
b/sysdeps/unix/sysv/linux/powerpc/Implies
new file mode 100644
index 0000000..466b7f4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/Implies
@@ -0,0 +1 @@
+powerpc/nptl
diff --git a/sysdeps/unix/sysv/linux/s390/Implies
b/sysdeps/unix/sysv/linux/s390/Implies
index efda9d2..e6e51fa 100644
--- a/sysdeps/unix/sysv/linux/s390/Implies
+++ b/sysdeps/unix/sysv/linux/s390/Implies
@@ -1,3 +1,5 @@
+s390/nptl
+
  # These supply the ABI compatibility for when long double was double.
  ieee754/ldbl-64-128
  ieee754/ldbl-opt
diff --git a/sysdeps/unix/sysv/linux/sh/Implies
b/sysdeps/unix/sysv/linux/sh/Implies
new file mode 100644
index 0000000..c15a97e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sh/Implies
@@ -0,0 +1 @@
+sh/nptl
diff --git a/sysdeps/unix/sysv/linux/sparc/Implies
b/sysdeps/unix/sysv/linux/sparc/Implies
new file mode 100644
index 0000000..a8cc375
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/sparc/Implies
@@ -0,0 +1 @@
+sparc/nptl
diff --git a/sysdeps/unix/sysv/linux/tile/Implies
b/sysdeps/unix/sysv/linux/tile/Implies
new file mode 100644
index 0000000..e050152
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/tile/Implies
@@ -0,0 +1 @@
+tile/nptl
diff --git a/sysdeps/unix/sysv/linux/x86_64/Implies
b/sysdeps/unix/sysv/linux/x86_64/Implies
index c7a65c9..c9be3c4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Implies
+++ b/sysdeps/unix/sysv/linux/x86_64/Implies
@@ -1,2 +1,3 @@
  unix/sysv/linux/x86
  unix/sysv/linux/wordsize-64
+x86_64/nptl
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/Implies
b/sysdeps/unix/sysv/linux/x86_64/x32/Implies
new file mode 100644
index 0000000..b287872
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/Implies
@@ -0,0 +1 @@
+x86_64/x32/nptl



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]