[glibc] Break systemtap patches out of glibc-fedora.patch into glibc-stap.patch

Jeffrey Law law at fedoraproject.org
Thu Jan 26 04:43:27 UTC 2012


commit 26b6b52f86fc01d67a43ba62429396f6b3ffc74d
Author: Jeff Law <law at redhat.com>
Date:   Wed Jan 25 21:42:59 2012 -0700

    Break systemtap patches out of glibc-fedora.patch into glibc-stap.patch

 glibc-fedora.patch |  596 ----------------------------------------------------
 glibc-stap.patch   |  567 +++++++++++++++++++++++++++++++++++++++++++++++++
 glibc.spec         |   26 ++-
 3 files changed, 581 insertions(+), 608 deletions(-)
---
diff --git a/glibc-fedora.patch b/glibc-fedora.patch
index 25fa067..889b8cf 100644
--- a/glibc-fedora.patch
+++ b/glibc-fedora.patch
@@ -79,38 +79,6 @@ diff -Nrup a/ChangeLog b/ChangeLog
  2011-04-11  Andreas Krebbel  <Andreas.Krebbel at de.ibm.com>
  
  	* sysdeps/s390/s390-32/elf/start.S (_start): Skip extra zeroes
-@@ -4883,6 +4905,31 @@
- 	* sysdeps/unix/sysv/linux/Versions [GLIBC_2.14] (clock_adjtime):
- 	Export.
- 
-+2011-04-06  Andreas Schwab  <schwab at redhat.com>
-+
-+	* scripts/check-local-headers.sh: Ignore systemtap headers.
-+
-+2011-02-21  Roland McGrath  <roland at redhat.com>
-+
-+	* sysdeps/x86_64/__longjmp.S: Add a static probe here.
-+	* sysdeps/x86_64/setjmp.S: Likewise.
-+	* sysdeps/i386/bsd-setjmp.S: Likewise.
-+	* sysdeps/i386/bsd-_setjmp.S: Likewise.
-+	* sysdeps/i386/setjmp.S: Likewise.
-+	* sysdeps/i386/__longjmp.S: Likewise.
-+	* sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S: Likewise.
-+	* sysdeps/unix/sysv/linux/i386/____longjmp_chk.S: Likewise.
-+
-+2011-02-08  Roland McGrath  <roland at redhat.com>
-+
-+	* include/stap-probe.h: New file.
-+	* configure.in: Handle --enable-systemtap.
-+	* configure: Regenerated.
-+	* config.h.in (USE_STAP_PROBE): New #undef.
-+	* extra-lib.mk (CPPFLAGS-$(lib)): Add -DIN_LIB=$(lib).
-+	* elf/Makefile (CPPFLAGS-.os): Add -DIN_LIB=rtld.
-+	* elf/rtld-Rules (rtld-CPPFLAGS): Likewise.
-+
- 2011-03-22  Ulrich Drepper  <drepper at gmail.com>
- 
- 	* sysdeps/unix/sysv/linux/i386/sysconf.c (intel_check_word): Increment
 @@ -4943,6 +4990,16 @@
  	$LDFLAGS and -nostdlib -nostartfiles to linking step.  Change main
  	to _start.
@@ -407,123 +375,6 @@ diff -Nrup a/NEWS b/NEWS
  * New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
    syncfs, setns, sendmmsg
  
-diff -Nrup a/config.h.in b/config.h.in
---- a/config.h.in	2012-01-01 05:16:32.000000000 -0700
-+++ b/config.h.in	2012-01-01 20:41:26.632439843 -0700
-@@ -187,6 +187,9 @@
- /* Define if `.ctors' and `.dtors' sections shouldn't be used.  */
- #undef	NO_CTORS_DTORS_SECTIONS
- 
-+/* Define if Systemtap <sys/sdt.h> probes should be defined.  */
-+#undef USE_STAP_PROBE
-+
- /*
-  */
- 
-diff -Nrup a/configure b/configure
---- a/configure	2012-01-01 20:40:50.423446105 -0700
-+++ b/configure	2012-01-01 20:41:26.634439843 -0700
-@@ -791,6 +791,7 @@ enable_kernel
- enable_all_warnings
- enable_multi_arch
- enable_nss_crypt
-+enable_systemtap
- with_cpu
- '
-       ac_precious_vars='build_alias
-@@ -1450,6 +1451,7 @@ Optional Features:
-   --enable-multi-arch     enable single DSO with optimizations for multiple
-                           architectures
-   --enable-nss-crypt      enable libcrypt to use nss
-+  --enable-systemtap      enable systemtap static probe points [default=no]
- 
- Optional Packages:
-   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-@@ -3804,6 +3806,51 @@ else
- fi
- 
- 
-+# Check whether --enable-systemtap was given.
-+if test "${enable_systemtap+set}" = set; then :
-+  enableval=$enable_systemtap; systemtap=$enableval
-+else
-+  systemtap=no
-+fi
-+
-+if test x$systemtap != xno; then
-+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemtap static probe support" >&5
-+$as_echo_n "checking for systemtap static probe support... " >&6; }
-+if test "${libc_cv_sdt+set}" = set; then :
-+  $as_echo_n "(cached) " >&6
-+else
-+    old_CFLAGS="$CFLAGS"
-+  CFLAGS="-std=gnu99 $CFLAGS"
-+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-+/* end confdefs.h.  */
-+#include <sys/sdt.h>
-+void foo (int i, void *p)
-+{
-+  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
-+       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
-+}
-+_ACEOF
-+if ac_fn_c_try_compile "$LINENO"; then :
-+  libc_cv_sdt=yes
-+else
-+  libc_cv_sdt=no
-+fi
-+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-+  CFLAGS="$old_CFLAGS"
-+fi
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sdt" >&5
-+$as_echo "$libc_cv_sdt" >&6; }
-+  if test $libc_cv_sdt = yes; then
-+    $as_echo "#define USE_STAP_PROBE 1" >>confdefs.h
-+
-+  else
-+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-+as_fn_error $? "systemtap support needs sys/sdt.h with asm support
-+See \`config.log' for more details" "$LINENO" 5; }
-+  fi
-+fi
-+
- # The way shlib-versions is used to generate soversions.mk uses a
- # fairly simplistic model for name recognition that can't distinguish
- # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
-diff -Nrup a/configure.in b/configure.in
---- a/configure.in	2012-01-01 05:16:32.000000000 -0700
-+++ b/configure.in	2012-01-01 20:41:26.635439843 -0700
-@@ -290,6 +290,29 @@ else
- fi
- AC_SUBST(libc_cv_nss_crypt)
- 
-+AC_ARG_ENABLE([systemtap],
-+              [AS_HELP_STRING([--enable-systemtap],
-+	       [enable systemtap static probe points @<:@default=no@:>@])],
-+              [systemtap=$enableval],
-+	      [systemtap=no])
-+if test x$systemtap != xno; then
-+  AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
-+  old_CFLAGS="$CFLAGS"
-+  CFLAGS="-std=gnu99 $CFLAGS"
-+  AC_COMPILE_IFELSE([#include <sys/sdt.h>
-+void foo (int i, void *p)
-+{
-+  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
-+       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
-+}], [libc_cv_sdt=yes], [libc_cv_sdt=no])
-+  CFLAGS="$old_CFLAGS"])
-+  if test $libc_cv_sdt = yes; then
-+    AC_DEFINE([USE_STAP_PROBE])
-+  else
-+    AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
-+  fi
-+fi
-+
- # The way shlib-versions is used to generate soversions.mk uses a
- # fairly simplistic model for name recognition that can't distinguish
- # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
 diff -Nrup a/csu/Makefile b/csu/Makefile
 --- a/csu/Makefile	2012-01-01 05:16:32.000000000 -0700
 +++ b/csu/Makefile	2012-01-01 20:41:26.635439843 -0700
@@ -606,16 +457,6 @@ diff -Nrup a/elf/Makefile b/elf/Makefile
  endif
  
  before-compile  = $(objpfx)trusted-dirs.h
-@@ -505,7 +506,8 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'
- CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
- CFLAGS-cache.c = $(SYSCONF-FLAGS)
- 
--CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1)
-+CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
-+		     -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
- 
- test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
- generated += $(addsuffix .so,$(strip $(modules-names)))
 diff -Nrup a/elf/dl-close.c b/elf/dl-close.c
 --- a/elf/dl-close.c	2012-01-01 05:16:32.000000000 -0700
 +++ b/elf/dl-close.c	2012-01-01 20:41:26.638439843 -0700
@@ -932,26 +773,6 @@ diff -Nrup a/elf/ldd.bash.in b/elf/ldd.bash.in
        try_trace "$RTLD" "$file" || result=1
        ;;
      *)
-diff -Nrup a/elf/rtld-Rules b/elf/rtld-Rules
---- a/elf/rtld-Rules	2012-01-01 05:16:32.000000000 -0700
-+++ b/elf/rtld-Rules	2012-01-01 20:41:26.642439841 -0700
-@@ -1,7 +1,7 @@
- # Subroutine makefile for compiling libc modules linked into dynamic linker.
- 
- # Copyright (C) 2002,2003,2005,2006,2008,2010,2011
--#   Free Software Foundation, Inc.
-+#	Free Software Foundation, Inc.
- # This file is part of the GNU C Library.
- 
- # The GNU C Library is free software; you can redistribute it and/or
-@@ -131,6 +131,6 @@ ifdef rtld-depfiles
- endif
- 
- # This here is the whole point of all the shenanigans.
--rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1
-+rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld
- 
- endif
 diff -Nrup a/elf/rtld.c b/elf/rtld.c
 --- a/elf/rtld.c	2012-01-01 05:16:32.000000000 -0700
 +++ b/elf/rtld.c	2012-01-01 20:41:26.643439841 -0700
@@ -1009,15 +830,6 @@ diff -Nrup a/elf/rtld.c b/elf/rtld.c
    if (! prelinked && rtld_multiple_ref)
      {
        /* There was an explicit ref to the dynamic linker as a shared lib.
-diff -Nrup a/extra-lib.mk b/extra-lib.mk
---- a/extra-lib.mk	2012-01-01 05:16:32.000000000 -0700
-+++ b/extra-lib.mk	2012-01-01 20:41:26.644439841 -0700
-@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left))
- include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
- endif
- 
--CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1
-+CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib)
 diff -Nrup a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h
 --- a/include/bits/stdlib-ldbl.h	1969-12-31 17:00:00.000000000 -0700
 +++ b/include/bits/stdlib-ldbl.h	2012-01-01 20:41:26.644439841 -0700
@@ -1099,150 +911,6 @@ diff -Nrup a/include/link.h b/include/link.h
  # elif NO_TLS_OFFSET == -1
  #  define FORCED_DYNAMIC_TLS_OFFSET -2
  # else
-diff -Nrup a/include/stap-probe.h b/include/stap-probe.h
---- a/include/stap-probe.h	1969-12-31 17:00:00.000000000 -0700
-+++ b/include/stap-probe.h	2012-01-01 20:41:26.646439841 -0700
-@@ -0,0 +1,140 @@
-+/* Macros for defining Systemtap <sys/sdt.h> static probe points.
-+   Copyright (C) 2011 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   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.  */
-+
-+#ifndef _STAP_PROBE_H
-+#define _STAP_PROBE_H 1
-+
-+#ifdef USE_STAP_PROBE
-+
-+# include <sys/sdt.h>
-+
-+/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn).
-+
-+   Without USE_STAP_PROBE, that does nothing but evaluates all
-+   its arguments (to prevent bit rot, unlike e.g. assert).
-+
-+   Systemtap's header defines the macros STAP_PROBE (provider, name) and
-+   STAP_PROBEn (provider, name, arg1, ..., argn).  For "provider" we paste
-+   in the IN_LIB name (libc, libpthread, etc.) automagically.  */
-+
-+# ifndef NOT_IN_libc
-+#  define IN_LIB	libc
-+# elif !defined IN_LIB
-+/* This is intentionally defined with extra unquoted commas in it so
-+   that macro substitution will bomb out when it is used.  We don't
-+   just use #error here, so that this header can be included by
-+   other headers that use LIBC_PROBE inside their own macros.  We
-+   only want such headers to fail to compile if those macros are
-+   actually used in a context where IN_LIB has not been defined.  */
-+#  define IN_LIB	,,,missing -DIN_LIB=... -- not extra-lib.mk?,,,
-+# endif
-+
-+# define LIBC_PROBE(name, n, ...)	\
-+  LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__)
-+
-+# define LIBC_PROBE_1(lib, name, n, ...) \
-+  STAP_PROBE##n (lib, name, ## __VA_ARGS__)
-+
-+# define STAP_PROBE0		STAP_PROBE
-+
-+# define LIBC_PROBE_ASM(name, template) \
-+  STAP_PROBE_ASM (IN_LIB, name, template)
-+
-+# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS
-+
-+#else  /* Not USE_STAP_PROBE.  */
-+
-+# ifndef __ASSEMBLER__
-+#  define LIBC_PROBE(name, n, ...)		DUMMY_PROBE##n (__VA_ARGS__)
-+# else
-+#  define LIBC_PROBE(name, n, ...)		/* Nothing.  */
-+# endif
-+
-+# define LIBC_PROBE_ASM(name, template)		/* Nothing.  */
-+# define LIBC_PROBE_ASM_OPERANDS(n, ...)	/* Nothing.  */
-+
-+/* This silliness lets us evaluate all the arguments for each arity
-+   of probe.  My kingdom for a real macro system.  */
-+
-+# define DUMMY_PROBE0()			do {} while (0)
-+# define DUMMY_PROBE1(a1)		do {} while ((void) (a1), 0)
-+# define DUMMY_PROBE2(a1, a2)		do {} while ((void) (a1), \
-+						     (void) (a2), 0)
-+# define DUMMY_PROBE3(a1, a2, a3)	do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), 0)
-+# define DUMMY_PROBE4(a1, a2, a3, a4)	do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), 0)
-+# define DUMMY_PROBE5(a1, a2, a3, a4, a5)			  \
-+					do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), \
-+						     (void) (a5), 0)
-+# define DUMMY_PROBE6(a1, a2, a3, a4, a5, a6)			  \
-+					do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), \
-+						     (void) (a5), \
-+						     (void) (a6), 0)
-+# define DUMMY_PROBE7(a1, a2, a3, a4, a5, a6, a7)		  \
-+					do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), \
-+						     (void) (a5), \
-+						     (void) (a6), \
-+						     (void) (a7), 0)
-+# define DUMMY_PROBE8(a1, a2, a3, a4, a5, a6, a7, a8)		  \
-+					do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), \
-+						     (void) (a5), \
-+						     (void) (a6), \
-+						     (void) (a7), \
-+						     (void) (a8), 0)
-+# define DUMMY_PROBE9(a1, a2, a3, a4, a5, a6, a7, a8, a9)	  \
-+					do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), \
-+						     (void) (a5), \
-+						     (void) (a6), \
-+						     (void) (a7), \
-+						     (void) (a8), \
-+						     (void) (a9), 0)
-+# define DUMMY_PROBE10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)	  \
-+					do {} while ((void) (a1), \
-+						     (void) (a2), \
-+						     (void) (a3), \
-+						     (void) (a4), \
-+						     (void) (a5), \
-+						     (void) (a6), \
-+						     (void) (a7), \
-+						     (void) (a8), \
-+						     (void) (a9), \
-+						     (void) (a10), 0)
-+
-+#endif	/* USE_STAP_PROBE.  */
-+
-+#endif	/* stap-probe.h */
 diff -Nrup a/include/sys/resource.h b/include/sys/resource.h
 --- a/include/sys/resource.h	2012-01-01 05:16:32.000000000 -0700
 +++ b/include/sys/resource.h	2012-01-01 20:41:26.647439841 -0700
@@ -3272,18 +2940,6 @@ diff -Nrup a/resource/getrlimit.c b/resource/getrlimit.c
  weak_alias (__getrlimit, getrlimit)
  
  stub_warning (getrlimit)
-diff -Nrup a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh
---- a/scripts/check-local-headers.sh	2012-01-01 05:16:32.000000000 -0700
-+++ b/scripts/check-local-headers.sh	2012-01-01 20:41:26.683439836 -0700
-@@ -29,7 +29,7 @@ exec ${AWK} -v includedir="$includedir"
- BEGIN {
-   status = 0
-   exclude = "^" includedir \
--    "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h|libaudit\\.h)"
-+    "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h|libaudit\\.h|sys/sdt(-config)?\\.h))"
- }
- /^[^ ]/ && $1 ~ /.*:/ { obj = $1 }
- {
 diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
 --- a/stdio-common/vfprintf.c	2012-01-01 05:16:32.000000000 -0700
 +++ b/stdio-common/vfprintf.c	2012-01-01 20:41:26.683439836 -0700
@@ -3412,109 +3068,6 @@ diff -Nrup a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile
  endif
  
  ifeq ($(subdir),elf)
-diff -Nrup a/sysdeps/i386/__longjmp.S b/sysdeps/i386/__longjmp.S
---- a/sysdeps/i386/__longjmp.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/i386/__longjmp.S	2012-01-01 20:41:26.686439835 -0700
-@@ -1,5 +1,5 @@
- /* longjmp for i386.
--   Copyright (C) 1995-1998,2000,2002,2005,2006,2009
-+   Copyright (C) 1995-1998,2000,2002,2005,2006,2009,2011
-    Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-@@ -21,6 +21,7 @@
- #include <sysdep.h>
- #include <jmpbuf-offsets.h>
- #include <asm-syntax.h>
-+#include <stap-probe.h>
- 
- 	.text
- ENTRY (__longjmp)
-@@ -33,6 +34,7 @@ ENTRY (__longjmp)
- 	movl (JB_SP*4)(%eax), %ecx
- 	PTR_DEMANGLE (%edx)
- 	PTR_DEMANGLE (%ecx)
-+	LIBC_PROBE (longjmp, 3, 4@%eax, -4 at 8(%esp), 4@%edx)
- 	cfi_def_cfa(%eax, 0)
- 	cfi_register(%eip, %edx)
- 	cfi_register(%esp, %ecx)
-@@ -50,6 +52,7 @@ ENTRY (__longjmp)
- 	cfi_restore(%edi)
- 	cfi_restore(%ebp)
- 
-+	LIBC_PROBE (longjmp_target, 3, 4@%eax, -4 at 8(%esp), 4@%edx)
- 	movl 8(%esp), %eax	/* Second argument is return value.  */
- 	movl %ecx, %esp
- #else
-@@ -57,12 +60,14 @@ ENTRY (__longjmp)
- 	movl 8(%esp), %eax	/* Second argument is return value.  */
- 	/* Save the return address now.  */
- 	movl (JB_PC*4)(%ecx), %edx
-+	LIBC_PROBE (longjmp, 3, 4@%ecx, -4@%eax, 4@%edx)
-      	/* Restore registers.  */
- 	movl (JB_BX*4)(%ecx), %ebx
- 	movl (JB_SI*4)(%ecx), %esi
- 	movl (JB_DI*4)(%ecx), %edi
- 	movl (JB_BP*4)(%ecx), %ebp
- 	movl (JB_SP*4)(%ecx), %esp
-+	LIBC_PROBE (longjmp_target, 3, 4@%ecx, -4@%ecx, 4@%edx)
- #endif
- 	/* Jump to saved PC.  */
-      	jmp *%edx
-diff -Nrup a/sysdeps/i386/bsd-_setjmp.S b/sysdeps/i386/bsd-_setjmp.S
---- a/sysdeps/i386/bsd-_setjmp.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/i386/bsd-_setjmp.S	2012-01-01 20:41:26.686439835 -0700
-@@ -1,5 +1,6 @@
- /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'.  i386 version.
--   Copyright (C) 1994-1997,2000-2002,2005, 2006 Free Software Foundation, Inc.
-+   Copyright (C) 1994-1997,2000-2002,2005,2006,2011
-+	Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -25,6 +26,7 @@
- #include <jmpbuf-offsets.h>
- #include "bp-sym.h"
- #include "bp-asm.h"
-+#include <stap-probe.h>
- 
- #define PARMS	LINKAGE		/* no space for saved regs */
- #define JMPBUF	PARMS
-@@ -47,6 +49,7 @@ ENTRY (BP_SYM (_setjmp))
- #endif
-      	movl %ecx, (JB_SP*4)(%edx)
- 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
-+	LIBC_PROBE (setjmp, 3, 4@%edx, -4@$0, 4@%ecx)
- #ifdef PTR_MANGLE
- 	PTR_MANGLE (%ecx)
- #endif
-diff -Nrup a/sysdeps/i386/bsd-setjmp.S b/sysdeps/i386/bsd-setjmp.S
---- a/sysdeps/i386/bsd-setjmp.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/i386/bsd-setjmp.S	2012-01-01 20:41:26.687439834 -0700
-@@ -1,5 +1,6 @@
- /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'.  i386 version.
--   Copyright (C) 1994-1997,2000,2001,2005, 2006 Free Software Foundation, Inc.
-+   Copyright (C) 1994-1997,2000,2001,2005,2006,2011
-+	Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -25,6 +26,7 @@
- #include <jmpbuf-offsets.h>
- #include "bp-sym.h"
- #include "bp-asm.h"
-+#include <stap-probe.h>
- 
- #define PARMS  LINKAGE		/* no space for saved regs */
- #define JMPBUF PARMS
-@@ -49,6 +51,7 @@ ENTRY (BP_SYM (setjmp))
- #endif
-      	movl %ecx, (JB_SP*4)(%eax)
- 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
-+	LIBC_PROBE (setjmp, 3, 4@%eax, -4@$1, 4@%ecx)
- #ifdef PTR_MANGLE
- 	PTR_MANGLE (%ecx)
- #endif
 diff -Nrup a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile
 --- a/sysdeps/i386/i686/Makefile	2012-01-01 05:16:32.000000000 -0700
 +++ b/sysdeps/i386/i686/Makefile	2012-01-01 20:41:26.687439834 -0700
@@ -3538,32 +3091,6 @@ diff -Nrup a/sysdeps/i386/i686/Makefile b/sysdeps/i386/i686/Makefile
 -ASFLAGS-.ob += -Wa,-mtune=i686
 -ASFLAGS-.oS += -Wa,-mtune=i686
 -endif
-diff -Nrup a/sysdeps/i386/setjmp.S b/sysdeps/i386/setjmp.S
---- a/sysdeps/i386/setjmp.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/i386/setjmp.S	2012-01-01 20:41:26.687439834 -0700
-@@ -1,5 +1,5 @@
- /* setjmp for i386.
--   Copyright (C) 1995,1996,1997,2000,2001,2005,2006
-+   Copyright (C) 1995,1996,1997,2000,2001,2005,2006,2011
- 	Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-@@ -23,6 +23,7 @@
- #include <asm-syntax.h>
- #include "bp-sym.h"
- #include "bp-asm.h"
-+#include <stap-probe.h>
- 
- #define PARMS	LINKAGE		/* no space for saved regs */
- #define JMPBUF	PARMS
-@@ -44,6 +45,7 @@ ENTRY (BP_SYM (__sigsetjmp))
- #endif
-      	movl %ecx, (JB_SP*4)(%eax)
- 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
-+	LIBC_PROBE (setjmp, 3, 4@%eax, -4 at SIGMSK(%esp), 4@%ecx)
- #ifdef PTR_MANGLE
- 	PTR_MANGLE (%ecx)
- #endif
 diff -Nrup a/sysdeps/ia64/Makefile b/sysdeps/ia64/Makefile
 --- a/sysdeps/ia64/Makefile	2012-01-01 05:16:32.000000000 -0700
 +++ b/sysdeps/ia64/Makefile	2012-01-01 20:41:26.688439833 -0700
@@ -4305,42 +3832,6 @@ diff -Nrup a/sysdeps/unix/sysv/linux/futimesat.c b/sysdeps/unix/sysv/linux/futim
      {
        size_t filelen = strlen (file);
        if (__builtin_expect (filelen == 0, 0))
-diff -Nrup a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
---- a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S	2012-01-01 20:41:26.699439832 -0700
-@@ -1,4 +1,5 @@
--/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc.
-+/* Copyright (C) 2001,2004,2005,2006,2009,2011
-+	Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -19,6 +20,7 @@
- #include <sysdep.h>
- #include <jmpbuf-offsets.h>
- #include <asm-syntax.h>
-+#include <stap-probe.h>
- 
- 
- 	.section .rodata.str1.1,"aMS", at progbits,1
-@@ -79,7 +81,9 @@ ENTRY (____longjmp_chk)
- 	cfi_adjust_cfa_offset(-12)
- 	movl	4(%esp), %ecx
- 
--.Lok:	/* We add unwind information for the target here.  */
-+.Lok:
-+	LIBC_PROBE (longjmp, 3, 4@%ecx, -4 at 8(%esp), 4@%edx)
-+	/* We add unwind information for the target here.  */
- 	cfi_def_cfa(%ecx, 0)
- 	cfi_register(%eip, %edx)
- 	cfi_register(%esp, %edi)
-@@ -102,5 +106,6 @@ ENTRY (____longjmp_chk)
- 	cfi_restore(%ebp)
- 
- 	/* Jump to saved PC.  */
-+	LIBC_PROBE (longjmp_target, 3, 4@%ecx, -4@%eax, 4@%edx)
- 	jmp	*%edx
- END (____longjmp_chk)
 diff -Nrup a/sysdeps/unix/sysv/linux/i386/dl-cache.h b/sysdeps/unix/sysv/linux/i386/dl-cache.h
 --- a/sysdeps/unix/sysv/linux/i386/dl-cache.h	1969-12-31 17:00:00.000000000 -0700
 +++ b/sysdeps/unix/sysv/linux/i386/dl-cache.h	2012-01-01 20:41:26.700439831 -0700
@@ -4560,93 +4051,6 @@ diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcset
 +  return retval;
  }
  libc_hidden_def (tcsetattr)
-diff -Nrup a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
---- a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S	2012-01-01 20:41:26.703439831 -0700
-@@ -19,6 +19,7 @@
- #include <sysdep.h>
- #include <jmpbuf-offsets.h>
- #include <asm-syntax.h>
-+#include <stap-probe.h>
- 
- 	.section .rodata.str1.1,"aMS", at progbits,1
- 	.type	longjmp_msg, at object
-@@ -94,7 +95,9 @@ ENTRY(____longjmp_chk)
- 	movl	%ebx, %esi
- 	cfi_restore (%rsi)
- 
--.Lok:	/* We add unwind information for the target here.  */
-+.Lok:
-+	LIBC_PROBE (longjmp, 3, 8@%rdi, -4@%esi, 8@%rdx)
-+	/* We add unwind information for the target here.  */
- 	cfi_def_cfa(%rdi, 0)
- 	cfi_register(%rsp,%r8)
- 	cfi_register(%rbp,%r9)
-@@ -113,5 +116,6 @@ ENTRY(____longjmp_chk)
- 	movl	%esi, %eax
- 	movq	%r8,%rsp
- 	movq	%r9,%rbp
-+	LIBC_PROBE (longjmp_target, 3, 8@%rdi, -4@%eax, 8@%rdx)
- 	jmpq	*%rdx
- END (____longjmp_chk)
-diff -Nrup a/sysdeps/x86_64/__longjmp.S b/sysdeps/x86_64/__longjmp.S
---- a/sysdeps/x86_64/__longjmp.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/x86_64/__longjmp.S	2012-01-01 20:41:26.703439831 -0700
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc.
-+/* Copyright (C) 2001,2004,2005,2006,2009,2011 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -19,6 +19,7 @@
- #include <sysdep.h>
- #include <jmpbuf-offsets.h>
- #include <asm-syntax.h>
-+#include <stap-probe.h>
- 
- /* Jump to the position specified by ENV, causing the
-    setjmp call there to return VAL, or 1 if VAL is 0.
-@@ -34,6 +35,7 @@ ENTRY(__longjmp)
- 	PTR_DEMANGLE (%r9)
- 	PTR_DEMANGLE (%rdx)
- #endif
-+	LIBC_PROBE (longjmp, 3, 8@%rdi, -4@%esi, 8@%rdx)
- 	/* We add unwind information for the target here.  */
- 	cfi_def_cfa(%rdi, 0)
- 	cfi_register(%rsp,%r8)
-@@ -53,5 +55,6 @@ ENTRY(__longjmp)
- 	mov %esi, %eax
- 	movq %r8,%rsp
- 	movq %r9,%rbp
-+	LIBC_PROBE (longjmp_target, 3, 8@%rdi, -4@%eax, 8@%rdx)
- 	jmpq *%rdx
- END (__longjmp)
-diff -Nrup a/sysdeps/x86_64/setjmp.S b/sysdeps/x86_64/setjmp.S
---- a/sysdeps/x86_64/setjmp.S	2012-01-01 05:16:32.000000000 -0700
-+++ b/sysdeps/x86_64/setjmp.S	2012-01-01 20:41:26.704439831 -0700
-@@ -1,5 +1,5 @@
- /* setjmp for x86-64.
--   Copyright (C) 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
-+   Copyright (C) 2001,2003,2005,2006,2011 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -20,6 +20,7 @@
- #include <sysdep.h>
- #include <jmpbuf-offsets.h>
- #include <asm-syntax.h>
-+#include <stap-probe.h>
- 
- ENTRY (__sigsetjmp)
- 	/* Save registers.  */
-@@ -41,6 +42,7 @@ ENTRY (__sigsetjmp)
- #endif
- 	movq %rdx, (JB_RSP*8)(%rdi)
- 	movq (%rsp), %rax	/* Save PC we are returning to now.  */
-+	LIBC_PROBE (setjmp, 3, 8@%rdi, -4@%esi, 8@%rax)
- #ifdef PTR_MANGLE
- 	PTR_MANGLE (%rax)
- #endif
 diff -Nrup a/timezone/zic.c b/timezone/zic.c
 --- a/timezone/zic.c	2012-01-01 05:16:32.000000000 -0700
 +++ b/timezone/zic.c	2012-01-01 20:41:26.705439831 -0700
diff --git a/glibc-stap.patch b/glibc-stap.patch
new file mode 100644
index 0000000..b3ff9fa
--- /dev/null
+++ b/glibc-stap.patch
@@ -0,0 +1,567 @@
+diff -Nrup a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh
+--- a/scripts/check-local-headers.sh	2012-01-01 05:16:32.000000000 -0700
++++ b/scripts/check-local-headers.sh	2012-01-01 20:41:26.683439836 -0700
+@@ -29,7 +29,7 @@ exec ${AWK} -v includedir="$includedir"
+ BEGIN {
+   status = 0
+   exclude = "^" includedir \
+-    "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h|libaudit\\.h)"
++    "/(asm[-/]|linux/|selinux/|gd|nss3/|sys/capability\\.h|libaudit\\.h|sys/sdt(-config)?\\.h))"
+ }
+ /^[^ ]/ && $1 ~ /.*:/ { obj = $1 }
+ {
+diff -Nrup a/sysdeps/i386/__longjmp.S b/sysdeps/i386/__longjmp.S
+--- a/sysdeps/i386/__longjmp.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/i386/__longjmp.S	2012-01-01 20:41:26.686439835 -0700
+@@ -1,5 +1,5 @@
+ /* longjmp for i386.
+-   Copyright (C) 1995-1998,2000,2002,2005,2006,2009
++   Copyright (C) 1995-1998,2000,2002,2005,2006,2009,2011
+    Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+@@ -21,6 +21,7 @@
+ #include <sysdep.h>
+ #include <jmpbuf-offsets.h>
+ #include <asm-syntax.h>
++#include <stap-probe.h>
+ 
+ 	.text
+ ENTRY (__longjmp)
+@@ -33,6 +34,7 @@ ENTRY (__longjmp)
+ 	movl (JB_SP*4)(%eax), %ecx
+ 	PTR_DEMANGLE (%edx)
+ 	PTR_DEMANGLE (%ecx)
++	LIBC_PROBE (longjmp, 3, 4@%eax, -4 at 8(%esp), 4@%edx)
+ 	cfi_def_cfa(%eax, 0)
+ 	cfi_register(%eip, %edx)
+ 	cfi_register(%esp, %ecx)
+@@ -50,6 +52,7 @@ ENTRY (__longjmp)
+ 	cfi_restore(%edi)
+ 	cfi_restore(%ebp)
+ 
++	LIBC_PROBE (longjmp_target, 3, 4@%eax, -4 at 8(%esp), 4@%edx)
+ 	movl 8(%esp), %eax	/* Second argument is return value.  */
+ 	movl %ecx, %esp
+ #else
+@@ -57,12 +60,14 @@ ENTRY (__longjmp)
+ 	movl 8(%esp), %eax	/* Second argument is return value.  */
+ 	/* Save the return address now.  */
+ 	movl (JB_PC*4)(%ecx), %edx
++	LIBC_PROBE (longjmp, 3, 4@%ecx, -4@%eax, 4@%edx)
+      	/* Restore registers.  */
+ 	movl (JB_BX*4)(%ecx), %ebx
+ 	movl (JB_SI*4)(%ecx), %esi
+ 	movl (JB_DI*4)(%ecx), %edi
+ 	movl (JB_BP*4)(%ecx), %ebp
+ 	movl (JB_SP*4)(%ecx), %esp
++	LIBC_PROBE (longjmp_target, 3, 4@%ecx, -4@%ecx, 4@%edx)
+ #endif
+ 	/* Jump to saved PC.  */
+      	jmp *%edx
+diff -Nrup a/sysdeps/i386/bsd-_setjmp.S b/sysdeps/i386/bsd-_setjmp.S
+--- a/sysdeps/i386/bsd-_setjmp.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/i386/bsd-_setjmp.S	2012-01-01 20:41:26.686439835 -0700
+@@ -1,5 +1,6 @@
+ /* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'.  i386 version.
+-   Copyright (C) 1994-1997,2000-2002,2005, 2006 Free Software Foundation, Inc.
++   Copyright (C) 1994-1997,2000-2002,2005,2006,2011
++	Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -25,6 +26,7 @@
+ #include <jmpbuf-offsets.h>
+ #include "bp-sym.h"
+ #include "bp-asm.h"
++#include <stap-probe.h>
+ 
+ #define PARMS	LINKAGE		/* no space for saved regs */
+ #define JMPBUF	PARMS
+@@ -47,6 +49,7 @@ ENTRY (BP_SYM (_setjmp))
+ #endif
+      	movl %ecx, (JB_SP*4)(%edx)
+ 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
++	LIBC_PROBE (setjmp, 3, 4@%edx, -4@$0, 4@%ecx)
+ #ifdef PTR_MANGLE
+ 	PTR_MANGLE (%ecx)
+ #endif
+diff -Nrup a/sysdeps/i386/bsd-setjmp.S b/sysdeps/i386/bsd-setjmp.S
+--- a/sysdeps/i386/bsd-setjmp.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/i386/bsd-setjmp.S	2012-01-01 20:41:26.687439834 -0700
+@@ -1,5 +1,6 @@
+ /* BSD `setjmp' entry point to `sigsetjmp (..., 1)'.  i386 version.
+-   Copyright (C) 1994-1997,2000,2001,2005, 2006 Free Software Foundation, Inc.
++   Copyright (C) 1994-1997,2000,2001,2005,2006,2011
++	Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -25,6 +26,7 @@
+ #include <jmpbuf-offsets.h>
+ #include "bp-sym.h"
+ #include "bp-asm.h"
++#include <stap-probe.h>
+ 
+ #define PARMS  LINKAGE		/* no space for saved regs */
+ #define JMPBUF PARMS
+@@ -49,6 +51,7 @@ ENTRY (BP_SYM (setjmp))
+ #endif
+      	movl %ecx, (JB_SP*4)(%eax)
+ 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
++	LIBC_PROBE (setjmp, 3, 4@%eax, -4@$1, 4@%ecx)
+ #ifdef PTR_MANGLE
+ 	PTR_MANGLE (%ecx)
+ #endif
+diff -Nrup a/sysdeps/i386/setjmp.S b/sysdeps/i386/setjmp.S
+--- a/sysdeps/i386/setjmp.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/i386/setjmp.S	2012-01-01 20:41:26.687439834 -0700
+@@ -1,5 +1,5 @@
+ /* setjmp for i386.
+-   Copyright (C) 1995,1996,1997,2000,2001,2005,2006
++   Copyright (C) 1995,1996,1997,2000,2001,2005,2006,2011
+ 	Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+@@ -23,6 +23,7 @@
+ #include <asm-syntax.h>
+ #include "bp-sym.h"
+ #include "bp-asm.h"
++#include <stap-probe.h>
+ 
+ #define PARMS	LINKAGE		/* no space for saved regs */
+ #define JMPBUF	PARMS
+@@ -44,6 +45,7 @@ ENTRY (BP_SYM (__sigsetjmp))
+ #endif
+      	movl %ecx, (JB_SP*4)(%eax)
+ 	movl PCOFF(%esp), %ecx	/* Save PC we are returning to now.  */
++	LIBC_PROBE (setjmp, 3, 4@%eax, -4 at SIGMSK(%esp), 4@%ecx)
+ #ifdef PTR_MANGLE
+ 	PTR_MANGLE (%ecx)
+ #endif
+diff -Nrup a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
+--- a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S	2012-01-01 20:41:26.699439832 -0700
+@@ -1,4 +1,5 @@
+-/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc.
++/* Copyright (C) 2001,2004,2005,2006,2009,2011
++	Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -19,6 +20,7 @@
+ #include <sysdep.h>
+ #include <jmpbuf-offsets.h>
+ #include <asm-syntax.h>
++#include <stap-probe.h>
+ 
+ 
+ 	.section .rodata.str1.1,"aMS", at progbits,1
+@@ -79,7 +81,9 @@ ENTRY (____longjmp_chk)
+ 	cfi_adjust_cfa_offset(-12)
+ 	movl	4(%esp), %ecx
+ 
+-.Lok:	/* We add unwind information for the target here.  */
++.Lok:
++	LIBC_PROBE (longjmp, 3, 4@%ecx, -4 at 8(%esp), 4@%edx)
++	/* We add unwind information for the target here.  */
+ 	cfi_def_cfa(%ecx, 0)
+ 	cfi_register(%eip, %edx)
+ 	cfi_register(%esp, %edi)
+@@ -102,5 +106,6 @@ ENTRY (____longjmp_chk)
+ 	cfi_restore(%ebp)
+ 
+ 	/* Jump to saved PC.  */
++	LIBC_PROBE (longjmp_target, 3, 4@%ecx, -4@%eax, 4@%edx)
+ 	jmp	*%edx
+ END (____longjmp_chk)
+diff -Nrup a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
+--- a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S	2012-01-01 20:41:26.703439831 -0700
+@@ -19,6 +19,7 @@
+ #include <sysdep.h>
+ #include <jmpbuf-offsets.h>
+ #include <asm-syntax.h>
++#include <stap-probe.h>
+ 
+ 	.section .rodata.str1.1,"aMS", at progbits,1
+ 	.type	longjmp_msg, at object
+@@ -94,7 +95,9 @@ ENTRY(____longjmp_chk)
+ 	movl	%ebx, %esi
+ 	cfi_restore (%rsi)
+ 
+-.Lok:	/* We add unwind information for the target here.  */
++.Lok:
++	LIBC_PROBE (longjmp, 3, 8@%rdi, -4@%esi, 8@%rdx)
++	/* We add unwind information for the target here.  */
+ 	cfi_def_cfa(%rdi, 0)
+ 	cfi_register(%rsp,%r8)
+ 	cfi_register(%rbp,%r9)
+@@ -113,5 +116,6 @@ ENTRY(____longjmp_chk)
+ 	movl	%esi, %eax
+ 	movq	%r8,%rsp
+ 	movq	%r9,%rbp
++	LIBC_PROBE (longjmp_target, 3, 8@%rdi, -4@%eax, 8@%rdx)
+ 	jmpq	*%rdx
+ END (____longjmp_chk)
+diff -Nrup a/sysdeps/x86_64/__longjmp.S b/sysdeps/x86_64/__longjmp.S
+--- a/sysdeps/x86_64/__longjmp.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/x86_64/__longjmp.S	2012-01-01 20:41:26.703439831 -0700
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc.
++/* Copyright (C) 2001,2004,2005,2006,2009,2011 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -19,6 +19,7 @@
+ #include <sysdep.h>
+ #include <jmpbuf-offsets.h>
+ #include <asm-syntax.h>
++#include <stap-probe.h>
+ 
+ /* Jump to the position specified by ENV, causing the
+    setjmp call there to return VAL, or 1 if VAL is 0.
+@@ -34,6 +35,7 @@ ENTRY(__longjmp)
+ 	PTR_DEMANGLE (%r9)
+ 	PTR_DEMANGLE (%rdx)
+ #endif
++	LIBC_PROBE (longjmp, 3, 8@%rdi, -4@%esi, 8@%rdx)
+ 	/* We add unwind information for the target here.  */
+ 	cfi_def_cfa(%rdi, 0)
+ 	cfi_register(%rsp,%r8)
+@@ -53,5 +55,6 @@ ENTRY(__longjmp)
+ 	mov %esi, %eax
+ 	movq %r8,%rsp
+ 	movq %r9,%rbp
++	LIBC_PROBE (longjmp_target, 3, 8@%rdi, -4@%eax, 8@%rdx)
+ 	jmpq *%rdx
+ END (__longjmp)
+diff -Nrup a/sysdeps/x86_64/setjmp.S b/sysdeps/x86_64/setjmp.S
+--- a/sysdeps/x86_64/setjmp.S	2012-01-01 05:16:32.000000000 -0700
++++ b/sysdeps/x86_64/setjmp.S	2012-01-01 20:41:26.704439831 -0700
+@@ -1,5 +1,5 @@
+ /* setjmp for x86-64.
+-   Copyright (C) 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
++   Copyright (C) 2001,2003,2005,2006,2011 Free Software Foundation, Inc.
+    This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+@@ -20,6 +20,7 @@
+ #include <sysdep.h>
+ #include <jmpbuf-offsets.h>
+ #include <asm-syntax.h>
++#include <stap-probe.h>
+ 
+ ENTRY (__sigsetjmp)
+ 	/* Save registers.  */
+@@ -41,6 +42,7 @@ ENTRY (__sigsetjmp)
+ #endif
+ 	movq %rdx, (JB_RSP*8)(%rdi)
+ 	movq (%rsp), %rax	/* Save PC we are returning to now.  */
++	LIBC_PROBE (setjmp, 3, 8@%rdi, -4@%esi, 8@%rax)
+ #ifdef PTR_MANGLE
+ 	PTR_MANGLE (%rax)
+ #endif
+diff -Nrup a/include/stap-probe.h b/include/stap-probe.h
+--- a/include/stap-probe.h	1969-12-31 17:00:00.000000000 -0700
++++ b/include/stap-probe.h	2012-01-01 20:41:26.646439841 -0700
+@@ -0,0 +1,140 @@
++/* Macros for defining Systemtap <sys/sdt.h> static probe points.
++   Copyright (C) 2011 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   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.  */
++
++#ifndef _STAP_PROBE_H
++#define _STAP_PROBE_H 1
++
++#ifdef USE_STAP_PROBE
++
++# include <sys/sdt.h>
++
++/* Our code uses one macro LIBC_PROBE (name, n, arg1, ..., argn).
++
++   Without USE_STAP_PROBE, that does nothing but evaluates all
++   its arguments (to prevent bit rot, unlike e.g. assert).
++
++   Systemtap's header defines the macros STAP_PROBE (provider, name) and
++   STAP_PROBEn (provider, name, arg1, ..., argn).  For "provider" we paste
++   in the IN_LIB name (libc, libpthread, etc.) automagically.  */
++
++# ifndef NOT_IN_libc
++#  define IN_LIB	libc
++# elif !defined IN_LIB
++/* This is intentionally defined with extra unquoted commas in it so
++   that macro substitution will bomb out when it is used.  We don't
++   just use #error here, so that this header can be included by
++   other headers that use LIBC_PROBE inside their own macros.  We
++   only want such headers to fail to compile if those macros are
++   actually used in a context where IN_LIB has not been defined.  */
++#  define IN_LIB	,,,missing -DIN_LIB=... -- not extra-lib.mk?,,,
++# endif
++
++# define LIBC_PROBE(name, n, ...)	\
++  LIBC_PROBE_1 (IN_LIB, name, n, ## __VA_ARGS__)
++
++# define LIBC_PROBE_1(lib, name, n, ...) \
++  STAP_PROBE##n (lib, name, ## __VA_ARGS__)
++
++# define STAP_PROBE0		STAP_PROBE
++
++# define LIBC_PROBE_ASM(name, template) \
++  STAP_PROBE_ASM (IN_LIB, name, template)
++
++# define LIBC_PROBE_ASM_OPERANDS STAP_PROBE_ASM_OPERANDS
++
++#else  /* Not USE_STAP_PROBE.  */
++
++# ifndef __ASSEMBLER__
++#  define LIBC_PROBE(name, n, ...)		DUMMY_PROBE##n (__VA_ARGS__)
++# else
++#  define LIBC_PROBE(name, n, ...)		/* Nothing.  */
++# endif
++
++# define LIBC_PROBE_ASM(name, template)		/* Nothing.  */
++# define LIBC_PROBE_ASM_OPERANDS(n, ...)	/* Nothing.  */
++
++/* This silliness lets us evaluate all the arguments for each arity
++   of probe.  My kingdom for a real macro system.  */
++
++# define DUMMY_PROBE0()			do {} while (0)
++# define DUMMY_PROBE1(a1)		do {} while ((void) (a1), 0)
++# define DUMMY_PROBE2(a1, a2)		do {} while ((void) (a1), \
++						     (void) (a2), 0)
++# define DUMMY_PROBE3(a1, a2, a3)	do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), 0)
++# define DUMMY_PROBE4(a1, a2, a3, a4)	do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), 0)
++# define DUMMY_PROBE5(a1, a2, a3, a4, a5)			  \
++					do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), \
++						     (void) (a5), 0)
++# define DUMMY_PROBE6(a1, a2, a3, a4, a5, a6)			  \
++					do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), \
++						     (void) (a5), \
++						     (void) (a6), 0)
++# define DUMMY_PROBE7(a1, a2, a3, a4, a5, a6, a7)		  \
++					do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), \
++						     (void) (a5), \
++						     (void) (a6), \
++						     (void) (a7), 0)
++# define DUMMY_PROBE8(a1, a2, a3, a4, a5, a6, a7, a8)		  \
++					do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), \
++						     (void) (a5), \
++						     (void) (a6), \
++						     (void) (a7), \
++						     (void) (a8), 0)
++# define DUMMY_PROBE9(a1, a2, a3, a4, a5, a6, a7, a8, a9)	  \
++					do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), \
++						     (void) (a5), \
++						     (void) (a6), \
++						     (void) (a7), \
++						     (void) (a8), \
++						     (void) (a9), 0)
++# define DUMMY_PROBE10(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)	  \
++					do {} while ((void) (a1), \
++						     (void) (a2), \
++						     (void) (a3), \
++						     (void) (a4), \
++						     (void) (a5), \
++						     (void) (a6), \
++						     (void) (a7), \
++						     (void) (a8), \
++						     (void) (a9), \
++						     (void) (a10), 0)
++
++#endif	/* USE_STAP_PROBE.  */
++
++#endif	/* stap-probe.h */
+diff -Nrup a/config.h.in b/config.h.in
+--- a/config.h.in	2012-01-01 05:16:32.000000000 -0700
++++ b/config.h.in	2012-01-01 20:41:26.632439843 -0700
+@@ -187,6 +187,9 @@
+ /* Define if `.ctors' and `.dtors' sections shouldn't be used.  */
+ #undef	NO_CTORS_DTORS_SECTIONS
+ 
++/* Define if Systemtap <sys/sdt.h> probes should be defined.  */
++#undef USE_STAP_PROBE
++
+ /*
+  */
+ 
+diff -Nrup a/configure b/configure
+--- a/configure	2012-01-01 20:40:50.423446105 -0700
++++ b/configure	2012-01-01 20:41:26.634439843 -0700
+@@ -791,6 +791,7 @@ enable_kernel
+ enable_all_warnings
+ enable_multi_arch
+ enable_nss_crypt
++enable_systemtap
+ with_cpu
+ '
+       ac_precious_vars='build_alias
+@@ -1450,6 +1451,7 @@ Optional Features:
+   --enable-multi-arch     enable single DSO with optimizations for multiple
+                           architectures
+   --enable-nss-crypt      enable libcrypt to use nss
++  --enable-systemtap      enable systemtap static probe points [default=no]
+ 
+ Optional Packages:
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+@@ -3804,6 +3806,51 @@ else
+ fi
+ 
+ 
++# Check whether --enable-systemtap was given.
++if test "${enable_systemtap+set}" = set; then :
++  enableval=$enable_systemtap; systemtap=$enableval
++else
++  systemtap=no
++fi
++
++if test x$systemtap != xno; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemtap static probe support" >&5
++$as_echo_n "checking for systemtap static probe support... " >&6; }
++if test "${libc_cv_sdt+set}" = set; then :
++  $as_echo_n "(cached) " >&6
++else
++    old_CFLAGS="$CFLAGS"
++  CFLAGS="-std=gnu99 $CFLAGS"
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++#include <sys/sdt.h>
++void foo (int i, void *p)
++{
++  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
++       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
++}
++_ACEOF
++if ac_fn_c_try_compile "$LINENO"; then :
++  libc_cv_sdt=yes
++else
++  libc_cv_sdt=no
++fi
++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
++  CFLAGS="$old_CFLAGS"
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sdt" >&5
++$as_echo "$libc_cv_sdt" >&6; }
++  if test $libc_cv_sdt = yes; then
++    $as_echo "#define USE_STAP_PROBE 1" >>confdefs.h
++
++  else
++    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "systemtap support needs sys/sdt.h with asm support
++See \`config.log' for more details" "$LINENO" 5; }
++  fi
++fi
++
+ # The way shlib-versions is used to generate soversions.mk uses a
+ # fairly simplistic model for name recognition that can't distinguish
+ # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
+diff -Nrup a/configure.in b/configure.in
+--- a/configure.in	2012-01-01 05:16:32.000000000 -0700
++++ b/configure.in	2012-01-01 20:41:26.635439843 -0700
+@@ -290,6 +290,29 @@ else
+ fi
+ AC_SUBST(libc_cv_nss_crypt)
+ 
++AC_ARG_ENABLE([systemtap],
++              [AS_HELP_STRING([--enable-systemtap],
++	       [enable systemtap static probe points @<:@default=no@:>@])],
++              [systemtap=$enableval],
++	      [systemtap=no])
++if test x$systemtap != xno; then
++  AC_CACHE_CHECK([for systemtap static probe support], libc_cv_sdt, [dnl
++  old_CFLAGS="$CFLAGS"
++  CFLAGS="-std=gnu99 $CFLAGS"
++  AC_COMPILE_IFELSE([#include <sys/sdt.h>
++void foo (int i, void *p)
++{
++  asm ("" STAP_PROBE_ASM (foo, bar, STAP_PROBE_ASM_TEMPLATE (2)) ""
++       :: STAP_PROBE_ASM_OPERANDS (2, i, p));
++}], [libc_cv_sdt=yes], [libc_cv_sdt=no])
++  CFLAGS="$old_CFLAGS"])
++  if test $libc_cv_sdt = yes; then
++    AC_DEFINE([USE_STAP_PROBE])
++  else
++    AC_MSG_FAILURE([systemtap support needs sys/sdt.h with asm support])
++  fi
++fi
++
+ # The way shlib-versions is used to generate soversions.mk uses a
+ # fairly simplistic model for name recognition that can't distinguish
+ # i486-pc-linux-gnu fully from i486-pc-gnu.  So we mutate a $host_os
+diff -Nrup a/extra-lib.mk b/extra-lib.mk
+--- a/extra-lib.mk	2012-01-01 05:16:32.000000000 -0700
++++ b/extra-lib.mk	2012-01-01 20:41:26.644439841 -0700
+@@ -101,4 +101,4 @@ ifneq (,$(cpp-srcs-left))
+ include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left))
+ endif
+ 
+-CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1
++CPPFLAGS-$(lib) := -DNOT_IN_libc=1 -DIS_IN_$(lib)=1 -DIN_LIB=$(lib)
+diff -Nrup a/elf/Makefile b/elf/Makefile
+--- a/elf/Makefile	2012-01-01 05:16:32.000000000 -0700
++++ b/elf/Makefile	2012-01-01 20:41:26.637439843 -0700
+@@ -505,7 +506,8 @@ CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'
+ CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
+ CFLAGS-cache.c = $(SYSCONF-FLAGS)
+ 
+-CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),-DNOT_IN_libc=1 -DIS_IN_rtld=1)
++CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\
++		     -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld)
+ 
+ test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names))))
+ generated += $(addsuffix .so,$(strip $(modules-names)))
+diff -Nrup a/elf/rtld-Rules b/elf/rtld-Rules
+--- a/elf/rtld-Rules	2012-01-01 05:16:32.000000000 -0700
++++ b/elf/rtld-Rules	2012-01-01 20:41:26.642439841 -0700
+@@ -1,7 +1,7 @@
+ # Subroutine makefile for compiling libc modules linked into dynamic linker.
+ 
+ # Copyright (C) 2002,2003,2005,2006,2008,2010,2011
+-#   Free Software Foundation, Inc.
++#	Free Software Foundation, Inc.
+ # This file is part of the GNU C Library.
+ 
+ # The GNU C Library is free software; you can redistribute it and/or
+@@ -131,6 +131,6 @@ ifdef rtld-depfiles
+ endif
+ 
+ # This here is the whole point of all the shenanigans.
+-rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1
++rtld-CPPFLAGS := -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld
+ 
+ endif
diff --git a/glibc.spec b/glibc.spec
index c9aaae5..ecbd72b 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -41,23 +41,24 @@ Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.gz
 Source1: %{?glibc_release_url}%{glibcportsdir}.tar.gz
 Source2: %{glibcsrcdir}-fedora.tar.gz
 Patch0: %{name}-fedora.patch
-Patch1: %{name}-ia64-lib64.patch
+Patch1: %{name}-stap.patch
+Patch2: %{name}-ia64-lib64.patch
 # Uli wants to see this undergo more analyis (what happens when thread B calls into malloc when
 # thread A has unlocked on the error path
 # There's an alternate approach using mmap after detecting an error that needs discussion
-Patch2: %{name}-rh757881.patch
+Patch3: %{name}-rh757881.patch
 # Sent upstream, awaiting responses
-Patch3: %{name}-rh740506.patch
+Patch4: %{name}-rh740506.patch
 # Not sure of upstream status
-Patch4: %{name}-rh730856.patch
+Patch5: %{name}-rh730856.patch
 # Reverting an upstream patch.  I don't think this has been discussed upstream yet.
 # Caused a variety of problems for Fedora & Debian
-Patch5: %{name}-rh769421.patch
-Patch6: %{name}-rh729661.patch
-Patch7: %{name}-rh446078.patch
-Patch8: %{name}-rh454629.patch
-Patch9: %{name}-rh784402.patch
-Patch10: %{name}-rh622499.patch
+Patch6: %{name}-rh769421.patch
+Patch7: %{name}-rh729661.patch
+Patch8: %{name}-rh446078.patch
+Patch9: %{name}-rh454629.patch
+Patch10: %{name}-rh784402.patch
+Patch11: %{name}-rh622499.patch
 
 Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Obsoletes: glibc-profile < 2.4
@@ -272,12 +273,12 @@ package or when debugging this package.
 rm -rf %{glibcportsdir}
 %setup -q -n %{glibcsrcdir} -b1 -b2
 %patch0 -E -p1
+%patch1 -E -p1
 %ifarch ia64
 %if "%{_lib}" == "lib64"
-%patch1 -p1
+%patch2 -p1
 %endif
 %endif
-%patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
@@ -286,6 +287,7 @@ rm -rf %{glibcportsdir}
 %patch8 -p1
 %patch9 -p1
 %patch10 -p1
+%patch11 -p1
 
 # A lot of programs still misuse memcpy when they have to use
 # memmove. The memcpy implementation below is not tolerant at


More information about the scm-commits mailing list