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