[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