forked from rpms/glibc
		
	Break systemtap patches out of glibc-fedora.patch into glibc-stap.patch
This commit is contained in:
		
							parent
							
								
									68357f8e9f
								
							
						
					
					
						commit
						26b6b52f86
					
				| @ -79,38 +79,6 @@ diff -Nrup a/ChangeLog b/ChangeLog | ||||
|  2011-04-11  Andreas Krebbel  <Andreas.Krebbel@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@redhat.com>
 | ||||
| +
 | ||||
| +	* scripts/check-local-headers.sh: Ignore systemtap headers.
 | ||||
| +
 | ||||
| +2011-02-21  Roland McGrath  <roland@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@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@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@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@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@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",@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@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",@progbits,1 | ||||
|  	.type	longjmp_msg,@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
 | ||||
|  | ||||
							
								
								
									
										567
									
								
								glibc-stap.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										567
									
								
								glibc-stap.patch
									
									
									
									
									
										Normal file
									
								
							| @ -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@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@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@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",@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@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",@progbits,1 | ||||
|  	.type	longjmp_msg,@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 | ||||
							
								
								
									
										28
									
								
								glibc.spec
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								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 | ||||
| %endif | ||||
| %endif | ||||
| %patch2 -p1 | ||||
| %endif | ||||
| %endif | ||||
| %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 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user