3.7.0-1
This commit is contained in:
parent
032a380edd
commit
81c97a1660
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,2 +1 @@
|
||||
valgrind-3.6.0.tar.bz2
|
||||
/valgrind-3.6.1.tar.bz2
|
||||
/valgrind-3.7.0.tar.bz2
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
2c3aa122498baecc9d69194057ca88f5 valgrind-3.6.1.tar.bz2
|
||||
a855fda56edf05614f099dca316d1775 valgrind-3.7.0.tar.bz2
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- valgrind/include/pub_tool_basics.h.jj 2010-10-20 22:19:27.000000000 +0200
|
||||
+++ valgrind/include/pub_tool_basics.h 2010-11-05 18:03:15.416830321 +0100
|
||||
@@ -316,7 +316,7 @@ static inline Bool sr_EQ ( SysRes sr1, S
|
||||
#define VG_BUGS_TO "www.valgrind.org"
|
||||
|
||||
/* Branch prediction hints. */
|
||||
-#if 1 /*HAVE_BUILTIN_EXPECT*/
|
||||
+#if defined(__GNUC__) && (__GNUC__ >= 3) /*HAVE_BUILTIN_EXPECT*/
|
||||
# define LIKELY(x) __builtin_expect(!!(x), 1)
|
||||
# define UNLIKELY(x) __builtin_expect((x), 0)
|
||||
#else
|
@ -1,190 +0,0 @@
|
||||
--- valgrind/none/tests/amd64/gen_insn_test.pl.jj 2010-10-20 22:19:31.000000000 +0200
|
||||
+++ valgrind/none/tests/amd64/gen_insn_test.pl 2011-02-22 18:36:34.767401963 +0100
|
||||
@@ -628,7 +628,7 @@ while (<>)
|
||||
|
||||
foreach my $result (@results)
|
||||
{
|
||||
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
|
||||
+ if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w|r(8|16|32|64)|mm|xmm)$/)
|
||||
{
|
||||
$result->{argnum} = $argnum++;
|
||||
}
|
||||
@@ -642,14 +642,6 @@ while (<>)
|
||||
}
|
||||
}
|
||||
|
||||
- foreach my $result (@results)
|
||||
- {
|
||||
- if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/)
|
||||
- {
|
||||
- $result->{argnum} = $argnum++;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
my $stateargnum = $argnum++;
|
||||
|
||||
print qq| char state\[108\];\n|;
|
||||
@@ -689,8 +681,8 @@ while (<>)
|
||||
}
|
||||
elsif ($arg->{type} eq "xmm")
|
||||
{
|
||||
- print qq| \"movlps 0+%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
- print qq| \"movhps 8+%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
+ print qq| \"movlps %$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
+ print qq| \"movhps %H$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
}
|
||||
elsif ($arg->{type} eq "st")
|
||||
{
|
||||
@@ -803,8 +795,8 @@ while (<>)
|
||||
}
|
||||
elsif ($result->{type} eq "xmm")
|
||||
{
|
||||
- print qq| \"movlps %%$result->{register}, 0+%$result->{argnum}\\n\"\n|;
|
||||
- print qq| \"movhps %%$result->{register}, 8+%$result->{argnum}\\n\"\n|;
|
||||
+ print qq| \"movlps %%$result->{register}, %$result->{argnum}\\n\"\n|;
|
||||
+ print qq| \"movhps %%$result->{register}, %H$result->{argnum}\\n\"\n|;
|
||||
}
|
||||
elsif ($result->{type} eq "st")
|
||||
{
|
||||
@@ -852,11 +844,16 @@ while (<>)
|
||||
|
||||
foreach my $result (@results)
|
||||
{
|
||||
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
|
||||
+ if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w|r(8|16|32|64)|mm)$/)
|
||||
{
|
||||
print qq|$prefix\"=m\" \($result->{name}\)|;
|
||||
$prefix = ", ";
|
||||
}
|
||||
+ elsif ($result->{type} eq "xmm")
|
||||
+ {
|
||||
+ print qq|$prefix\"=o\" \($result->{name}\)|;
|
||||
+ $prefix = ", ";
|
||||
+ }
|
||||
}
|
||||
|
||||
print qq|\n|;
|
||||
@@ -867,20 +864,18 @@ while (<>)
|
||||
{
|
||||
if (defined($arg->{name}))
|
||||
{
|
||||
- print qq|$prefix\"m\" \($arg->{name}\)|;
|
||||
+ if ($arg->{type} eq "xmm")
|
||||
+ {
|
||||
+ print qq|$prefix\"o\" \($arg->{name}\)|;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ print qq|$prefix\"m\" \($arg->{name}\)|;
|
||||
+ }
|
||||
$prefix = ", ";
|
||||
}
|
||||
}
|
||||
|
||||
- foreach my $result (@results)
|
||||
- {
|
||||
- if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/)
|
||||
- {
|
||||
- print qq|$prefix\"m\" \($result->{name}\)|;
|
||||
- $prefix = ", ";
|
||||
- }
|
||||
- }
|
||||
-
|
||||
print qq|$prefix\"m\" \(state[0]\)\n|;
|
||||
|
||||
$prefix = " : ";
|
||||
--- valgrind/none/tests/x86/gen_insn_test.pl.jj 2010-10-20 22:19:35.000000000 +0200
|
||||
+++ valgrind/none/tests/x86/gen_insn_test.pl 2011-02-22 18:30:27.750683267 +0100
|
||||
@@ -605,7 +605,7 @@ while (<>)
|
||||
|
||||
foreach my $result (@results)
|
||||
{
|
||||
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
|
||||
+ if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w|r(8|16|32)|mm|xmm)$/)
|
||||
{
|
||||
$result->{argnum} = $argnum++;
|
||||
}
|
||||
@@ -619,14 +619,6 @@ while (<>)
|
||||
}
|
||||
}
|
||||
|
||||
- foreach my $result (@results)
|
||||
- {
|
||||
- if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/)
|
||||
- {
|
||||
- $result->{argnum} = $argnum++;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
my $stateargnum = $argnum++;
|
||||
|
||||
print qq| char state\[108\];\n|;
|
||||
@@ -658,8 +650,8 @@ while (<>)
|
||||
}
|
||||
elsif ($arg->{type} eq "xmm")
|
||||
{
|
||||
- print qq| \"movlps 0%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
- print qq| \"movhps 8%$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
+ print qq| \"movlps %$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
+ print qq| \"movhps %H$arg->{argnum}, %%$arg->{register}\\n\"\n|;
|
||||
}
|
||||
elsif ($arg->{type} eq "st")
|
||||
{
|
||||
@@ -767,8 +759,8 @@ while (<>)
|
||||
}
|
||||
elsif ($result->{type} eq "xmm")
|
||||
{
|
||||
- print qq| \"movlps %%$result->{register}, 0%$result->{argnum}\\n\"\n|;
|
||||
- print qq| \"movhps %%$result->{register}, 8%$result->{argnum}\\n\"\n|;
|
||||
+ print qq| \"movlps %%$result->{register}, %$result->{argnum}\\n\"\n|;
|
||||
+ print qq| \"movhps %%$result->{register}, %H$result->{argnum}\\n\"\n|;
|
||||
}
|
||||
elsif ($result->{type} eq "st")
|
||||
{
|
||||
@@ -817,11 +809,16 @@ while (<>)
|
||||
|
||||
foreach my $result (@results)
|
||||
{
|
||||
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
|
||||
+ if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w|r(8|16|32)|mm)$/)
|
||||
{
|
||||
print qq|$prefix\"=m\" \($result->{name}\)|;
|
||||
$prefix = ", ";
|
||||
}
|
||||
+ elsif ($result->{type} eq "xmm")
|
||||
+ {
|
||||
+ print qq|$prefix\"=o\" \($result->{name}\)|;
|
||||
+ $prefix = ", ";
|
||||
+ }
|
||||
}
|
||||
|
||||
print qq|\n|;
|
||||
@@ -832,20 +829,18 @@ while (<>)
|
||||
{
|
||||
if (defined($arg->{name}))
|
||||
{
|
||||
- print qq|$prefix\"m\" \($arg->{name}\)|;
|
||||
+ if ($arg->{type} eq "xmm")
|
||||
+ {
|
||||
+ print qq|$prefix\"o\" \($arg->{name}\)|;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ print qq|$prefix\"m\" \($arg->{name}\)|;
|
||||
+ }
|
||||
$prefix = ", ";
|
||||
}
|
||||
}
|
||||
|
||||
- foreach my $result (@results)
|
||||
- {
|
||||
- if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/)
|
||||
- {
|
||||
- print qq|$prefix\"m\" \($result->{name}\)|;
|
||||
- $prefix = ", ";
|
||||
- }
|
||||
- }
|
||||
-
|
||||
print qq|$prefix\"m\" \(state[0]\)\n|;
|
||||
|
||||
$prefix = " : ";
|
@ -1,49 +0,0 @@
|
||||
--- valgrind-3.5.0/glibc-2.X.supp.in.jj 2009-08-19 09:37:48.000000000 -0400
|
||||
+++ valgrind-3.5.0/glibc-2.X.supp.in 2009-08-21 09:03:55.168206000 -0400
|
||||
@@ -168,9 +168,9 @@
|
||||
Memcheck:Param
|
||||
socketcall.sendto(msg)
|
||||
fun:__sendto_nocancel
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
}
|
||||
{
|
||||
glibc24-64bit-padding-1c
|
||||
@@ -180,7 +180,7 @@
|
||||
fun:__nscd_get_map_ref
|
||||
fun:nscd_get*_r
|
||||
fun:*nscd*
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
}
|
||||
|
||||
|
||||
@@ -199,18 +199,18 @@
|
||||
Memcheck:Param
|
||||
socketcall.sendto(msg)
|
||||
fun:send
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
}
|
||||
{
|
||||
X11-64bit-padding-4b
|
||||
Memcheck:Param
|
||||
socketcall.send(msg)
|
||||
fun:send
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
- obj:/*libc-@GLIBC_VERSION@.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
+ obj:/*libc-@GLIBC_VERSION@*.so
|
||||
}
|
||||
|
||||
##----------------------------------------------------------------------##
|
@ -1,67 +0,0 @@
|
||||
--- valgrind/configure.in.jj 2010-10-21 03:14:02.000000000 +0200
|
||||
+++ valgrind/configure.in 2010-11-05 17:09:18.674455299 +0100
|
||||
@@ -749,6 +759,13 @@ case "${GLIBC_VERSION}" in
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
+ 2.14)
|
||||
+ AC_MSG_RESULT(2.14 family)
|
||||
+ AC_DEFINE([GLIBC_2_14], 1, [Define to 1 if you're using glibc 2.14.x])
|
||||
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
+ ;;
|
||||
aix5)
|
||||
AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
|
||||
AC_DEFINE([AIX5_LIBC], 1, [Define to 1 if you're using AIX 5.1 or 5.2 or 5.3])
|
||||
@@ -762,7 +779,7 @@ case "${GLIBC_VERSION}" in
|
||||
|
||||
*)
|
||||
AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
|
||||
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.13])
|
||||
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.14])
|
||||
AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
|
||||
AC_MSG_ERROR([or Darwin libc])
|
||||
;;
|
||||
--- valgrind/config.h.in.jj 2010-10-20 22:20:49.000000000 +0200
|
||||
+++ valgrind/config.h.in 2010-11-05 17:08:33.863454886 +0100
|
||||
@@ -33,6 +33,9 @@
|
||||
/* Define to 1 if you're using glibc 2.13.x */
|
||||
#undef GLIBC_2_13
|
||||
|
||||
+/* Define to 1 if you're using glibc 2.14.x */
|
||||
+#undef GLIBC_2_14
|
||||
+
|
||||
/* Define to 1 if you're using glibc 2.2.x */
|
||||
#undef GLIBC_2_2
|
||||
|
||||
--- valgrind/configure.jj 2010-10-21 03:16:18.000000000 +0200
|
||||
+++ valgrind/configure 2010-11-05 17:09:39.163455396 +0100
|
||||
@@ -6367,6 +6389,18 @@ $as_echo "#define GLIBC_2_13 1" >>confde
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
+ 2.14)
|
||||
+ echo "$as_me:$LINENO: result: 2.14 family" >&5
|
||||
+echo "${ECHO_T}2.14 family" >&6
|
||||
+
|
||||
+cat >>confdefs.h <<\_ACEOF
|
||||
+#define GLIBC_2_14 1
|
||||
+_ACEOF
|
||||
+
|
||||
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
+ ;;
|
||||
aix5)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: AIX 5.1 or 5.2 or 5.3" >&5
|
||||
$as_echo "AIX 5.1 or 5.2 or 5.3" >&6; }
|
||||
@@ -6387,7 +6421,7 @@ $as_echo "#define DARWIN_LIBC 1" >>confd
|
||||
*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
|
||||
$as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
|
||||
- as_fn_error "Valgrind requires glibc version 2.2 - 2.13" "$LINENO" 5
|
||||
+ as_fn_error "Valgrind requires glibc version 2.2 - 2.14" "$LINENO" 5
|
||||
as_fn_error "or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION" "$LINENO" 5
|
||||
as_fn_error "or Darwin libc" "$LINENO" 5
|
||||
;;
|
@ -1,60 +0,0 @@
|
||||
--- valgrind/helgrind/tests/tc07_hbl1.c.jj 2010-11-11 17:58:01.000000000 +0100
|
||||
+++ valgrind/helgrind/tests/tc07_hbl1.c 2010-11-12 17:46:11.144455060 +0100
|
||||
@@ -48,23 +48,23 @@
|
||||
|| defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5)
|
||||
# define INC(_lval,_lqual) \
|
||||
__asm__ __volatile__( \
|
||||
- "L1xyzzy1" _lqual ":\n" \
|
||||
+ "1:\n" \
|
||||
" lwarx 15,0,%0\n" \
|
||||
" addi 15,15,1\n" \
|
||||
" stwcx. 15,0,%0\n" \
|
||||
- " bne- L1xyzzy1" _lqual \
|
||||
+ " bne- 1b\n" \
|
||||
: /*out*/ : /*in*/ "b"(&(_lval)) \
|
||||
: /*trash*/ "r15", "cr0", "memory" \
|
||||
)
|
||||
#elif defined(PLAT_arm_linux)
|
||||
# define INC(_lval,_lqual) \
|
||||
__asm__ __volatile__( \
|
||||
- "L1xyzzy1" _lqual ":\n" \
|
||||
+ "1:\n" \
|
||||
" ldrex r8, [%0, #0]\n" \
|
||||
" add r8, r8, #1\n" \
|
||||
" strex r9, r8, [%0, #0]\n" \
|
||||
" cmp r9, #0\n" \
|
||||
- " bne L1xyzzy1" _lqual \
|
||||
+ " bne 1b\n" \
|
||||
: /*out*/ : /*in*/ "r"(&(_lval)) \
|
||||
: /*trash*/ "r8", "r9", "cc", "memory" \
|
||||
);
|
||||
--- valgrind/helgrind/tests/tc08_hbl2.c.jj 2010-11-11 17:58:01.000000000 +0100
|
||||
+++ valgrind/helgrind/tests/tc08_hbl2.c 2010-11-12 17:47:05.295830288 +0100
|
||||
@@ -65,23 +65,23 @@
|
||||
|| defined(PLAT_ppc32_aix5) || defined(PLAT_ppc64_aix5)
|
||||
# define INC(_lval,_lqual) \
|
||||
__asm__ __volatile__( \
|
||||
- "L1xyzzy1" _lqual ":\n" \
|
||||
+ "1:\n" \
|
||||
" lwarx 15,0,%0\n" \
|
||||
" addi 15,15,1\n" \
|
||||
" stwcx. 15,0,%0\n" \
|
||||
- " bne- L1xyzzy1" _lqual \
|
||||
+ " bne- 1b\n" \
|
||||
: /*out*/ : /*in*/ "b"(&(_lval)) \
|
||||
: /*trash*/ "r15", "cr0", "memory" \
|
||||
)
|
||||
#elif defined(PLAT_arm_linux)
|
||||
# define INC(_lval,_lqual) \
|
||||
__asm__ __volatile__( \
|
||||
- "L1xyzzy1" _lqual ":\n" \
|
||||
+ "1:\n" \
|
||||
" ldrex r8, [%0, #0]\n" \
|
||||
" add r8, r8, #1\n" \
|
||||
" strex r9, r8, [%0, #0]\n" \
|
||||
" cmp r9, #0\n" \
|
||||
- " bne L1xyzzy1" _lqual \
|
||||
+ " bne 1b\n" \
|
||||
: /*out*/ : /*in*/ "r"(&(_lval)) \
|
||||
: /*trash*/ "r8", "r9", "cc", "memory" \
|
||||
);
|
@ -1,78 +0,0 @@
|
||||
--- valgrind/coregrind/m_debuginfo/priv_storage.h (revision 11855)
|
||||
+++ valgrind/coregrind/m_debuginfo/priv_storage.h (revision 11904)
|
||||
@@ -249,7 +249,15 @@ typedef
|
||||
Cop_Add=0x321,
|
||||
Cop_Sub,
|
||||
Cop_And,
|
||||
- Cop_Mul
|
||||
+ Cop_Mul,
|
||||
+ Cop_Shl,
|
||||
+ Cop_Shr,
|
||||
+ Cop_Eq,
|
||||
+ Cop_Ge,
|
||||
+ Cop_Gt,
|
||||
+ Cop_Le,
|
||||
+ Cop_Lt,
|
||||
+ Cop_Ne
|
||||
}
|
||||
CfiOp;
|
||||
|
||||
--- valgrind/coregrind/m_debuginfo/readdwarf.c (revision 11855)
|
||||
+++ valgrind/coregrind/m_debuginfo/readdwarf.c (revision 11904)
|
||||
@@ -2899,6 +2899,22 @@ static Int dwarfexpr_to_dag ( UnwindCont
|
||||
op = Cop_And; opname = "and"; goto binop;
|
||||
case DW_OP_mul:
|
||||
op = Cop_Mul; opname = "mul"; goto binop;
|
||||
+ case DW_OP_shl:
|
||||
+ op = Cop_Shl; opname = "shl"; goto binop;
|
||||
+ case DW_OP_shr:
|
||||
+ op = Cop_Shr; opname = "shr"; goto binop;
|
||||
+ case DW_OP_eq:
|
||||
+ op = Cop_Eq; opname = "eq"; goto binop;
|
||||
+ case DW_OP_ge:
|
||||
+ op = Cop_Ge; opname = "ge"; goto binop;
|
||||
+ case DW_OP_gt:
|
||||
+ op = Cop_Gt; opname = "gt"; goto binop;
|
||||
+ case DW_OP_le:
|
||||
+ op = Cop_Le; opname = "le"; goto binop;
|
||||
+ case DW_OP_lt:
|
||||
+ op = Cop_Lt; opname = "lt"; goto binop;
|
||||
+ case DW_OP_ne:
|
||||
+ op = Cop_Ne; opname = "ne"; goto binop;
|
||||
binop:
|
||||
POP( ix );
|
||||
POP( ix2 );
|
||||
--- valgrind/coregrind/m_debuginfo/debuginfo.c (revision 11855)
|
||||
+++ valgrind/coregrind/m_debuginfo/debuginfo.c (revision 11904)
|
||||
@@ -1880,6 +1880,14 @@ UWord evalCfiExpr ( XArray* exprs, Int i
|
||||
case Cop_Sub: return wL - wR;
|
||||
case Cop_And: return wL & wR;
|
||||
case Cop_Mul: return wL * wR;
|
||||
+ case Cop_Shl: return wL << wR;
|
||||
+ case Cop_Shr: return wL >> wR;
|
||||
+ case Cop_Eq: return wL == wR ? 1 : 0;
|
||||
+ case Cop_Ge: return (Word) wL >= (Word) wR ? 1 : 0;
|
||||
+ case Cop_Gt: return (Word) wL > (Word) wR ? 1 : 0;
|
||||
+ case Cop_Le: return (Word) wL <= (Word) wR ? 1 : 0;
|
||||
+ case Cop_Lt: return (Word) wL < (Word) wR ? 1 : 0;
|
||||
+ case Cop_Ne: return wL != wR ? 1 : 0;
|
||||
default: goto unhandled;
|
||||
}
|
||||
/*NOTREACHED*/
|
||||
--- valgrind/coregrind/m_debuginfo/storage.c (revision 11855)
|
||||
+++ valgrind/coregrind/m_debuginfo/storage.c (revision 11904)
|
||||
@@ -603,6 +603,14 @@ static void ppCfiOp ( CfiOp op )
|
||||
case Cop_Sub: VG_(printf)("-"); break;
|
||||
case Cop_And: VG_(printf)("&"); break;
|
||||
case Cop_Mul: VG_(printf)("*"); break;
|
||||
+ case Cop_Shl: VG_(printf)("<<"); break;
|
||||
+ case Cop_Shr: VG_(printf)(">>"); break;
|
||||
+ case Cop_Eq: VG_(printf)("=="); break;
|
||||
+ case Cop_Ge: VG_(printf)(">="); break;
|
||||
+ case Cop_Gt: VG_(printf)(">"); break;
|
||||
+ case Cop_Le: VG_(printf)("<="); break;
|
||||
+ case Cop_Lt: VG_(printf)("<"); break;
|
||||
+ case Cop_Ne: VG_(printf)("!="); break;
|
||||
default: vg_assert(0);
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
--- valgrind/coregrind/m_dispatch/dispatch-ppc64-linux.S (revision 11699)
|
||||
+++ valgrind/coregrind/m_dispatch/dispatch-ppc64-linux.S (revision 11700)
|
||||
@@ -310,7 +310,7 @@
|
||||
/* start over */
|
||||
b .VG_(run_innerloop__dispatch_unprofiled)
|
||||
/*NOTREACHED*/
|
||||
- .size VG_(run_innerloop), .-VG_(run_innerloop)
|
||||
+ .size .VG_(run_innerloop), .-.VG_(run_innerloop)
|
||||
|
||||
|
||||
/*----------------------------------------------------*/
|
||||
@@ -385,7 +385,7 @@
|
||||
/* start over */
|
||||
b .VG_(run_innerloop__dispatch_profiled)
|
||||
/*NOTREACHED*/
|
||||
- .size VG_(run_a_noredir_translation), .-VG_(run_a_noredir_translation)
|
||||
+ .size .VG_(run_a_noredir_translation), .-.VG_(run_a_noredir_translation)
|
||||
|
||||
|
||||
/*----------------------------------------------------*/
|
@ -1,11 +0,0 @@
|
||||
--- valgrind/coregrind/m_syswrap/syswrap-ppc64-linux.c.jj 2010-10-20 22:19:41.000000000 +0200
|
||||
+++ valgrind/coregrind/m_syswrap/syswrap-ppc64-linux.c 2011-01-28 13:12:32.698670101 +0100
|
||||
@@ -1379,7 +1379,7 @@ static SyscallTableEntry syscall_table[]
|
||||
// _____(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 178
|
||||
GENXY(__NR_pread64, sys_pread64), // 179
|
||||
|
||||
-// _____(__NR_pwrite64, sys_pwrite64), // 180
|
||||
+ GENX_(__NR_pwrite64, sys_pwrite64), // 180
|
||||
GENX_(__NR_chown, sys_chown), // 181
|
||||
GENXY(__NR_getcwd, sys_getcwd), // 182
|
||||
LINXY(__NR_capget, sys_capget), // 183
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,303 +0,0 @@
|
||||
--- valgrind/VEX/priv/guest_s390_helpers.c
|
||||
+++ valgrind/VEX/priv/guest_s390_helpers.c
|
||||
@@ -146,7 +146,6 @@
|
||||
Bool
|
||||
guest_s390x_state_requires_precise_mem_exns(Int minoff, Int maxoff)
|
||||
{
|
||||
- /* fixs390: not sure whether all of these are needed */
|
||||
Int lr_min = offsetof(VexGuestS390XState, guest_LR);
|
||||
Int lr_max = lr_min + 8 - 1;
|
||||
Int sp_min = offsetof(VexGuestS390XState, guest_SP);
|
||||
--- valgrind/VEX/priv/guest_s390_toIR.c
|
||||
+++ valgrind/VEX/priv/guest_s390_toIR.c
|
||||
@@ -115,21 +115,6 @@
|
||||
dres.len = insn_length;
|
||||
dres.continueAt = 0;
|
||||
|
||||
- /* fixs390: special insn for test purposes only. */
|
||||
- /* All other special insns are handled in s390_decode_and_irgen() */
|
||||
- {
|
||||
- if (byte == 0x0) {
|
||||
- /* There is no insn whose first byte is all zero. There never will be.
|
||||
- So we use that for testing purposes when we hand-feed a basic block
|
||||
- to VEX. We terminate such a basic block with 0x0000 which will then
|
||||
- cause the translation to stop. */
|
||||
- dres.whatNext = Dis_StopHere;
|
||||
- dres.len = 2;
|
||||
- irsb->next = mkaddr_expr(0x0);
|
||||
- return dres;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
/* fixs390: we should probably pass the resteer-function and the callback
|
||||
data. It's not needed for correctness but improves performance. */
|
||||
|
||||
--- valgrind/coregrind/m_sigframe/sigframe-s390x-linux.c
|
||||
+++ valgrind/coregrind/m_sigframe/sigframe-s390x-linux.c
|
||||
@@ -333,9 +333,10 @@
|
||||
Addr sp = sp_top_of_frame;
|
||||
|
||||
vg_assert((flags & VKI_SA_SIGINFO) == 0);
|
||||
+ vg_assert((sizeof(*frame) & 7) == 0);
|
||||
+ vg_assert((sp & 7) == 0);
|
||||
|
||||
sp -= sizeof(*frame);
|
||||
- sp = VG_ROUNDDN(sp, 16);
|
||||
frame = (struct sigframe *)sp;
|
||||
|
||||
if (!extend(tst, sp, sizeof(*frame)))
|
||||
@@ -392,8 +393,10 @@
|
||||
Int sigNo = siginfo->si_signo;
|
||||
|
||||
vg_assert((flags & VKI_SA_SIGINFO) != 0);
|
||||
+ vg_assert((sizeof(*frame) & 7) == 0);
|
||||
+ vg_assert((sp & 7) == 0);
|
||||
+
|
||||
sp -= sizeof(*frame);
|
||||
- sp = VG_ROUNDDN(sp, 16);
|
||||
frame = (struct rt_sigframe *)sp;
|
||||
|
||||
if (!extend(tst, sp, sizeof(*frame)))
|
||||
@@ -545,6 +548,8 @@
|
||||
else
|
||||
size = restore_rt_sigframe(tst, (struct rt_sigframe *)sp, &sigNo);
|
||||
|
||||
+ /* same as for creation: we must announce the full memory (including
|
||||
+ alignment), otherwise massif might fail on longjmp */
|
||||
VG_TRACK( die_mem_stack_signal, sp - VG_STACK_REDZONE_SZB,
|
||||
size + VG_STACK_REDZONE_SZB );
|
||||
|
||||
--- valgrind/memcheck/tests/partiallydefinedeq.stderr.exp3
|
||||
+++ valgrind/memcheck/tests/partiallydefinedeq.stderr.exp3
|
||||
@@ -0,0 +1,20 @@
|
||||
+
|
||||
+On s390 we might see 2 or 3 errors.
|
||||
+Conditional jump or move depends on uninitialised value(s)
|
||||
+ at 0x........: foo (partiallydefinedeq.c:15)
|
||||
+ by 0x........: main (partiallydefinedeq.c:37)
|
||||
+
|
||||
+Conditional jump or move depends on uninitialised value(s)
|
||||
+ at 0x........: foo (partiallydefinedeq.c:15)
|
||||
+ by 0x........: main (partiallydefinedeq.c:52)
|
||||
+
|
||||
+
|
||||
+HEAP SUMMARY:
|
||||
+ in use at exit: ... bytes in ... blocks
|
||||
+ total heap usage: ... allocs, ... frees, ... bytes allocated
|
||||
+
|
||||
+For a detailed leak analysis, rerun with: --leak-check=full
|
||||
+
|
||||
+For counts of detected and suppressed errors, rerun with: -v
|
||||
+Use --track-origins=yes to see where uninitialised values come from
|
||||
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
|
||||
--- valgrind/memcheck/tests/partiallydefinedeq.stderr.exp4
|
||||
+++ valgrind/memcheck/tests/partiallydefinedeq.stderr.exp4
|
||||
@@ -0,0 +1,24 @@
|
||||
+
|
||||
+On s390 we might see 2 or 3 errors.
|
||||
+Conditional jump or move depends on uninitialised value(s)
|
||||
+ at 0x........: foo (partiallydefinedeq.c:15)
|
||||
+ by 0x........: main (partiallydefinedeq.c:37)
|
||||
+
|
||||
+Conditional jump or move depends on uninitialised value(s)
|
||||
+ at 0x........: foo (partiallydefinedeq.c:15)
|
||||
+ by 0x........: main (partiallydefinedeq.c:45)
|
||||
+
|
||||
+Conditional jump or move depends on uninitialised value(s)
|
||||
+ at 0x........: foo (partiallydefinedeq.c:15)
|
||||
+ by 0x........: main (partiallydefinedeq.c:52)
|
||||
+
|
||||
+
|
||||
+HEAP SUMMARY:
|
||||
+ in use at exit: ... bytes in ... blocks
|
||||
+ total heap usage: ... allocs, ... frees, ... bytes allocated
|
||||
+
|
||||
+For a detailed leak analysis, rerun with: --leak-check=full
|
||||
+
|
||||
+For counts of detected and suppressed errors, rerun with: -v
|
||||
+Use --track-origins=yes to see where uninitialised values come from
|
||||
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
|
||||
--- valgrind/VEX/auxprogs/genoffsets.c
|
||||
+++ valgrind/VEX/auxprogs/genoffsets.c
|
||||
@@ -157,28 +157,18 @@
|
||||
GENOFFSET(ARM,arm,R14);
|
||||
GENOFFSET(ARM,arm,R15T);
|
||||
|
||||
- // fixs390 later: strip down to what is actually needed
|
||||
- GENOFFSET(S390X,s390x,r0);
|
||||
- GENOFFSET(S390X,s390x,r1);
|
||||
+ // s390x
|
||||
GENOFFSET(S390X,s390x,r2);
|
||||
GENOFFSET(S390X,s390x,r3);
|
||||
GENOFFSET(S390X,s390x,r4);
|
||||
GENOFFSET(S390X,s390x,r5);
|
||||
GENOFFSET(S390X,s390x,r6);
|
||||
GENOFFSET(S390X,s390x,r7);
|
||||
- GENOFFSET(S390X,s390x,r8);
|
||||
- GENOFFSET(S390X,s390x,r9);
|
||||
- GENOFFSET(S390X,s390x,r10);
|
||||
- GENOFFSET(S390X,s390x,r11);
|
||||
- GENOFFSET(S390X,s390x,r12);
|
||||
- GENOFFSET(S390X,s390x,r13);
|
||||
- GENOFFSET(S390X,s390x,r14);
|
||||
GENOFFSET(S390X,s390x,r15);
|
||||
GENOFFSET(S390X,s390x,IA);
|
||||
GENOFFSET(S390X,s390x,SYSNO);
|
||||
GENOFFSET(S390X,s390x,IP_AT_SYSCALL);
|
||||
GENOFFSET(S390X,s390x,fpc);
|
||||
- GENOFFSET(S390X,s390x,counter);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------*/
|
||||
--- valgrind/coregrind/m_coredump/coredump-elf.c
|
||||
+++ valgrind/coregrind/m_coredump/coredump-elf.c
|
||||
@@ -237,7 +237,8 @@
|
||||
/* prs->pr_reg has struct type. Need to take address. */
|
||||
regs = (struct vki_user_regs_struct *)&(prs->pr_reg);
|
||||
#else
|
||||
- regs = (struct vki_user_regs_struct *)(prs->pr_reg);
|
||||
+ regs = (struct vki_user_regs_struct *)prs->pr_reg;
|
||||
+
|
||||
vg_assert(sizeof(*regs) == sizeof(prs->pr_reg));
|
||||
#endif
|
||||
|
||||
--- valgrind/coregrind/m_debuginfo/debuginfo.c
|
||||
+++ valgrind/coregrind/m_debuginfo/debuginfo.c
|
||||
@@ -1988,6 +1988,7 @@
|
||||
case Creg_IA_IP: return eec->uregs->ia;
|
||||
case Creg_IA_SP: return eec->uregs->sp;
|
||||
case Creg_IA_BP: return eec->uregs->fp;
|
||||
+ case Creg_S390_R14: return eec->uregs->lr;
|
||||
# elif defined(VGA_ppc32) || defined(VGA_ppc64)
|
||||
# else
|
||||
# error "Unsupported arch"
|
||||
@@ -2384,14 +2385,9 @@
|
||||
COMPUTE(uregsPrev.r11, uregsHere->r11, cfsi->r11_how, cfsi->r11_off);
|
||||
COMPUTE(uregsPrev.r7, uregsHere->r7, cfsi->r7_how, cfsi->r7_off);
|
||||
# elif defined(VGA_s390x)
|
||||
- /* sepcial case for the first frame */
|
||||
- if (cfsi->ra_how == CFIR_UNKNOWN)
|
||||
- uregsPrev.ia = uregsHere->lr;
|
||||
- else
|
||||
- COMPUTE(uregsPrev.ia, uregsHere->ia, cfsi->ra_how, cfsi->ra_off);
|
||||
+ COMPUTE(uregsPrev.ia, uregsHere->ia, cfsi->ra_how, cfsi->ra_off);
|
||||
COMPUTE(uregsPrev.sp, uregsHere->sp, cfsi->sp_how, cfsi->sp_off);
|
||||
COMPUTE(uregsPrev.fp, uregsHere->fp, cfsi->fp_how, cfsi->fp_off);
|
||||
- /* we only need R14 for the first time, no need to calculate further*/
|
||||
# elif defined(VGA_ppc32) || defined(VGA_ppc64)
|
||||
# else
|
||||
# error "Unknown arch"
|
||||
--- valgrind/coregrind/m_debuginfo/priv_storage.h
|
||||
+++ valgrind/coregrind/m_debuginfo/priv_storage.h
|
||||
@@ -245,7 +245,8 @@
|
||||
Creg_ARM_R13,
|
||||
Creg_ARM_R12,
|
||||
Creg_ARM_R15,
|
||||
- Creg_ARM_R14
|
||||
+ Creg_ARM_R14,
|
||||
+ Creg_S390_R14
|
||||
}
|
||||
CfiReg;
|
||||
|
||||
--- valgrind/coregrind/m_debuginfo/readdwarf.c
|
||||
+++ valgrind/coregrind/m_debuginfo/readdwarf.c
|
||||
@@ -2327,6 +2327,16 @@
|
||||
si->cfa_how = CFIC_IA_SPREL;
|
||||
si->cfa_off = 160;
|
||||
}
|
||||
+ if (si->ra_how == CFIR_UNKNOWN) {
|
||||
+ if (!debuginfo->cfsi_exprs)
|
||||
+ debuginfo->cfsi_exprs = VG_(newXA)( ML_(dinfo_zalloc),
|
||||
+ "di.ccCt.2a",
|
||||
+ ML_(dinfo_free),
|
||||
+ sizeof(CfiExpr) );
|
||||
+ si->ra_how = CFIR_EXPR;
|
||||
+ si->ra_off = ML_(CfiExpr_CfiReg)( debuginfo->cfsi_exprs,
|
||||
+ Creg_S390_R14);
|
||||
+ }
|
||||
|
||||
/* knock out some obviously stupid cases */
|
||||
if (si->ra_how == CFIR_SAME)
|
||||
--- valgrind/coregrind/m_machine.c
|
||||
+++ valgrind/coregrind/m_machine.c
|
||||
@@ -268,7 +268,6 @@
|
||||
(*f)(vex->guest_R13);
|
||||
(*f)(vex->guest_R14);
|
||||
#elif defined(VGA_s390x)
|
||||
-/* fixs390: revisit once guest state is finalized */
|
||||
(*f)(vex->guest_r0);
|
||||
(*f)(vex->guest_r1);
|
||||
(*f)(vex->guest_r2);
|
||||
--- valgrind/coregrind/m_redir.c
|
||||
+++ valgrind/coregrind/m_redir.c
|
||||
@@ -1066,7 +1066,7 @@
|
||||
}
|
||||
|
||||
# elif defined(VGP_s390x_linux)
|
||||
- /* fixs390 */
|
||||
+ /* nothing so far */
|
||||
|
||||
# else
|
||||
# error Unknown platform
|
||||
--- valgrind/coregrind/m_syswrap/syswrap-main.c
|
||||
+++ valgrind/coregrind/m_syswrap/syswrap-main.c
|
||||
@@ -160,7 +160,8 @@
|
||||
x86: Success(N) ==> edx:eax = N, cc = 0
|
||||
Fail(N) ==> edx:eax = N, cc = 1
|
||||
|
||||
- s390x: fixs390 later: document it here
|
||||
+ s390x: Success(N) ==> r2 = N
|
||||
+ Fail(N) ==> r2 = -N
|
||||
|
||||
* The post wrapper is called if:
|
||||
|
||||
--- valgrind/memcheck/tests/partiallydefinedeq.c
|
||||
+++ valgrind/memcheck/tests/partiallydefinedeq.c
|
||||
@@ -66,7 +66,14 @@
|
||||
// Hence also on ARM we get 3 errors, not 2.
|
||||
+//
|
||||
+// s390x is even more complicated: Depending on the architecture
|
||||
+// level we have the 0x80808080 either in the literal pool (3 errors)
|
||||
+// or with the extended immediate facility in an instruction (2 errors).
|
||||
static __attribute__((noinline)) void bar ( void )
|
||||
{
|
||||
-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__) || defined(__s390x__)
|
||||
- fprintf(stderr, "Currently running on ppc32/64/arm/s390x: this test should give 3 errors, not 2.\n");
|
||||
+#if defined(__powerpc__) || defined(__powerpc64__) || defined(__arm__)
|
||||
+ fprintf(stderr, "Currently running on ppc32/64/arm: this test should give 3 errors, not 2.\n");
|
||||
#endif
|
||||
+#if defined(__s390__)
|
||||
+ fprintf(stderr, "On s390 we might see 2 or 3 errors.\n");
|
||||
+#endif
|
||||
}
|
||||
--- valgrind/memcheck/tests/partiallydefinedeq.stderr.exp2
|
||||
+++ valgrind/memcheck/tests/partiallydefinedeq.stderr.exp2
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
-Currently running on ppc32/64/arm/s390x: this test should give 3 errors, not 2.
|
||||
+Currently running on ppc32/64/arm: this test should give 3 errors, not 2.
|
||||
Conditional jump or move depends on uninitialised value(s)
|
||||
at 0x........: foo (partiallydefinedeq.c:15)
|
||||
by 0x........: main (partiallydefinedeq.c:37)
|
||||
--- valgrind/lackey/lk_main.c
|
||||
+++ valgrind/lackey/lk_main.c
|
||||
@@ -314,7 +314,8 @@ static Int type2index ( IRType ty )
|
||||
case Ity_I128: return 5;
|
||||
case Ity_F32: return 6;
|
||||
case Ity_F64: return 7;
|
||||
- case Ity_V128: return 8;
|
||||
+ case Ity_F128: return 8;
|
||||
+ case Ity_V128: return 9;
|
||||
default: tl_assert(0);
|
||||
}
|
||||
}
|
||||
@@ -330,7 +331,8 @@ static HChar* nameOfTypeIndex ( Int i )
|
||||
case 5: return "I128"; break;
|
||||
case 6: return "F32"; break;
|
||||
case 7: return "F64"; break;
|
||||
- case 8: return "V128"; break;
|
||||
+ case 8: return "F128"; break;
|
||||
+ case 9: return "V128"; break;
|
||||
default: tl_assert(0);
|
||||
}
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
--- valgrind/VEX/priv/guest_s390_cc.c.jj 2010-11-11 16:55:05.000000000 +0100
|
||||
+++ valgrind/VEX/priv/guest_s390_cc.c 2010-11-11 17:38:10.786580286 +0100
|
||||
@@ -39,8 +39,6 @@
|
||||
#include "guest_s390_priv.h" /* irsb */
|
||||
#include "guest_s390_cc.h"
|
||||
|
||||
-#if defined(VGA_s390x) /* guard the file */
|
||||
-
|
||||
static UInt s390_calculate_cc(ULong cc_op, ULong cc_dep1, ULong cc_dep2,
|
||||
ULong cc_ndep);
|
||||
|
||||
@@ -418,6 +416,7 @@ s390_calculate_cc(ULong cc_op, ULong cc_
|
||||
{
|
||||
UInt psw;
|
||||
|
||||
+#if defined(VGA_s390x)
|
||||
switch (cc_op) {
|
||||
|
||||
case S390_CC_OP_BITWISE:
|
||||
@@ -611,6 +610,7 @@ s390_calculate_cc(ULong cc_op, ULong cc_
|
||||
default:
|
||||
break;
|
||||
}
|
||||
+#endif
|
||||
vpanic("s390_calculate_cc");
|
||||
}
|
||||
|
||||
@@ -680,8 +680,6 @@ s390_call_calculate_cond(UInt m)
|
||||
return call;
|
||||
}
|
||||
|
||||
-#endif /* VGA_s390x */
|
||||
-
|
||||
/*---------------------------------------------------------------*/
|
||||
/*--- end guest_s390_cc.c ---*/
|
||||
/*---------------------------------------------------------------*/
|
@ -1,90 +0,0 @@
|
||||
--- valgrind/memcheck/tests/x86-linux/scalar.c (revision 11801)
|
||||
+++ valgrind/memcheck/tests/x86-linux/scalar.c (revision 11802)
|
||||
@@ -1,3 +1,5 @@
|
||||
+#define _GNU_SOURCE
|
||||
+
|
||||
#include "../../memcheck.h"
|
||||
#include "scalar.h"
|
||||
#include <unistd.h>
|
||||
--- valgrind/memcheck/tests/x86-linux/scalar.stderr.exp (revision 11801)
|
||||
+++ valgrind/memcheck/tests/x86-linux/scalar.stderr.exp (revision 11802)
|
||||
@@ -578,25 +578,25 @@
|
||||
...
|
||||
Address 0x........ is 0 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
Syscall param sigaction(act->sa_mask) points to unaddressable byte(s)
|
||||
...
|
||||
Address 0x........ is 4 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
Syscall param sigaction(act->sa_flags) points to unaddressable byte(s)
|
||||
...
|
||||
Address 0x........ is 8 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
Syscall param sigaction(oldact) points to unaddressable byte(s)
|
||||
...
|
||||
Address 0x........ is 0 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
-----------------------------------------------------
|
||||
68: __NR_sgetmask n/a
|
||||
@@ -1228,13 +1228,13 @@
|
||||
...
|
||||
Address 0x........ is 0 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
Syscall param sigprocmask(oldset) points to unaddressable byte(s)
|
||||
...
|
||||
Address 0x........ is 0 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
-----------------------------------------------------
|
||||
127: __NR_create_module ni
|
||||
@@ -1747,7 +1747,7 @@
|
||||
...
|
||||
Address 0x........ is 4 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
Syscall param rt_sigaction(act->sa_mask) points to unaddressable byte(s)
|
||||
...
|
||||
@@ -1757,13 +1757,13 @@
|
||||
...
|
||||
Address 0x........ is 8 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
Syscall param rt_sigaction(oldact) points to unaddressable byte(s)
|
||||
...
|
||||
Address 0x........ is 4 bytes after a block of size 4 alloc'd
|
||||
at 0x........: malloc (vg_replace_malloc.c:...)
|
||||
- by 0x........: main (scalar.c:28)
|
||||
+ by 0x........: main (scalar.c:30)
|
||||
|
||||
-----------------------------------------------------
|
||||
175: __NR_rt_sigprocmask 4s 2m
|
||||
--- valgrind/memcheck/tests/linux/stack_switch.c (revision 11801)
|
||||
+++ valgrind/memcheck/tests/linux/stack_switch.c (revision 11802)
|
||||
@@ -1,5 +1,6 @@
|
||||
#define _XOPEN_SOURCE 600
|
||||
#define _BSD_SOURCE
|
||||
+#define _GNU_SOURCE
|
||||
|
||||
#include <stdio.h>
|
||||
|
@ -1,78 +0,0 @@
|
||||
--- valgrind-3.6.1/coregrind/m_trampoline.S.jj 2011-02-22 15:47:55.000000000 +0100
|
||||
+++ valgrind-3.6.1/coregrind/m_trampoline.S 2011-02-23 11:32:20.923402349 +0100
|
||||
@@ -112,6 +112,27 @@ VG_(x86_linux_REDIR_FOR_index):
|
||||
ret
|
||||
.size VG_(x86_linux_REDIR_FOR_index), .-VG_(x86_linux_REDIR_FOR_index)
|
||||
|
||||
+/* There's no particular reason that this needs to be handwritten
|
||||
+ assembly, but since that's what this file contains, here's a
|
||||
+ simple strlen implementation (written in C and compiled by gcc.)
|
||||
+*/
|
||||
+.global VG_(x86_linux_REDIR_FOR_strlen)
|
||||
+.type VG_(x86_linux_REDIR_FOR_strlen), @function
|
||||
+VG_(x86_linux_REDIR_FOR_strlen):
|
||||
+ pushl %ebp
|
||||
+ movl %esp, %ebp
|
||||
+ movl 8(%ebp), %edx
|
||||
+ movl %edx, %eax
|
||||
+ jmp 2f
|
||||
+1: incl %eax
|
||||
+2: cmpb $0, (%eax)
|
||||
+ jne 1b
|
||||
+ subl %edx, %eax
|
||||
+ popl %ebp
|
||||
+ ret
|
||||
+.size VG_(x86_linux_REDIR_FOR_strlen), .-VG_(x86_linux_REDIR_FOR_strlen)
|
||||
+
|
||||
+
|
||||
.global VG_(trampoline_stuff_end)
|
||||
VG_(trampoline_stuff_end):
|
||||
|
||||
--- valgrind-3.6.1/coregrind/pub_core_trampoline.h.jj 2011-02-22 15:47:55.000000000 +0100
|
||||
+++ valgrind-3.6.1/coregrind/pub_core_trampoline.h 2011-02-23 11:25:40.350402084 +0100
|
||||
@@ -60,6 +60,7 @@ extern Addr VG_(trampoline_stuff_end);
|
||||
extern Addr VG_(x86_linux_SUBST_FOR_sigreturn);
|
||||
extern Addr VG_(x86_linux_SUBST_FOR_rt_sigreturn);
|
||||
extern Char* VG_(x86_linux_REDIR_FOR_index) ( const Char*, Int );
|
||||
+extern UInt VG_(x86_linux_REDIR_FOR_strlen)( void* );
|
||||
#endif
|
||||
|
||||
#if defined(VGP_amd64_linux)
|
||||
--- valgrind-3.6.1/coregrind/m_redir.c.jj 2011-02-22 15:51:02.000000000 +0100
|
||||
+++ valgrind-3.6.1/coregrind/m_redir.c 2011-02-23 11:24:33.502670646 +0100
|
||||
@@ -924,20 +924,23 @@ void VG_(redir_initialise) ( void )
|
||||
/* If we're using memcheck, use this intercept right from the
|
||||
start, otherwise ld.so (glibc-2.3.5) makes a lot of noise. */
|
||||
if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
|
||||
+ const HChar** mandatory;
|
||||
+# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \
|
||||
+ || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \
|
||||
+ || defined(GLIBC_2_8) || defined(GLIBC_2_9) \
|
||||
+ || defined(GLIBC_2_10) || defined(GLIBC_2_11)
|
||||
+ mandatory = NULL;
|
||||
+# else
|
||||
+ /* for glibc-2.12 and later, this is mandatory - can't sanely
|
||||
+ continue without it */
|
||||
+ mandatory = complain_about_stripped_glibc_ldso;
|
||||
+# endif
|
||||
add_hardwired_spec(
|
||||
"ld-linux.so.2", "index",
|
||||
- (Addr)&VG_(x86_linux_REDIR_FOR_index),
|
||||
-# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \
|
||||
- || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \
|
||||
- || defined(GLIBC_2_8) || defined(GLIBC_2_9) \
|
||||
- || defined(GLIBC_2_10) || defined(GLIBC_2_11)
|
||||
- NULL
|
||||
-# else
|
||||
- /* for glibc-2.12 and later, this is mandatory - can't sanely
|
||||
- continue without it */
|
||||
- complain_about_stripped_glibc_ldso
|
||||
-# endif
|
||||
- );
|
||||
+ (Addr)&VG_(x86_linux_REDIR_FOR_index), mandatory);
|
||||
+ add_hardwired_spec(
|
||||
+ "ld-linux.so.2", "strlen",
|
||||
+ (Addr)&VG_(x86_linux_REDIR_FOR_strlen), mandatory);
|
||||
}
|
||||
|
||||
# elif defined(VGP_amd64_linux)
|
@ -1,92 +0,0 @@
|
||||
--- valgrind/memcheck/mc_replace_strmem.c.jj 2011-06-08 17:26:29.000000000 +0200
|
||||
+++ valgrind/memcheck/mc_replace_strmem.c 2011-06-09 14:49:11.000000000 +0200
|
||||
@@ -558,11 +558,7 @@ MEMCHR(VG_Z_DYLD, memchr)
|
||||
#endif
|
||||
|
||||
|
||||
-#define MEMCPY(soname, fnname) \
|
||||
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
- ( void *dst, const void *src, SizeT len ); \
|
||||
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
- ( void *dst, const void *src, SizeT len ) \
|
||||
+#define MEMCPY_BODY \
|
||||
{ \
|
||||
if (is_overlap(dst, src, len, len)) \
|
||||
RECORD_OVERLAP_ERROR("memcpy", dst, src, len); \
|
||||
@@ -628,6 +624,18 @@ MEMCHR(VG_Z_DYLD, memchr)
|
||||
\
|
||||
return dst; \
|
||||
}
|
||||
+#define MEMCPY(soname, fnname) \
|
||||
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
+ ( void *dst, const void *src, SizeT len ); \
|
||||
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
+ ( void *dst, const void *src, SizeT len ) \
|
||||
+ MEMCPY_BODY
|
||||
+#define MEMCPY_ZZ(soname, fnname) \
|
||||
+ void* VG_REPLACE_FUNCTION_ZZ(soname,fnname) \
|
||||
+ ( void *dst, const void *src, SizeT len ); \
|
||||
+ void* VG_REPLACE_FUNCTION_ZZ(soname,fnname) \
|
||||
+ ( void *dst, const void *src, SizeT len ) \
|
||||
+ MEMCPY_BODY
|
||||
|
||||
MEMCPY(VG_Z_LIBC_SONAME, memcpy)
|
||||
#if defined(VGO_linux)
|
||||
@@ -636,6 +644,11 @@ MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64
|
||||
#elif defined(VGO_darwin)
|
||||
MEMCPY(VG_Z_DYLD, memcpy)
|
||||
#endif
|
||||
+#if defined(VGP_amd64_linux)
|
||||
+/* In glibc 2.14+, memcpy@GLIBC_2.2.5 is an alias to memmove and only
|
||||
+ memcpy@@GLIBC_2.14 is a real memcpy. */
|
||||
+MEMCPY_ZZ(VG_Z_LIBC_SONAME, memcpyZAZAGLIBCZu2Zd14) /* memcpy@@GLIBC_2.14 */
|
||||
+#endif
|
||||
/* icc9 blats these around all over the place. Not only in the main
|
||||
executable but various .so's. They are highly tuned and read
|
||||
memory beyond the source boundary (although work correctly and
|
||||
@@ -738,11 +751,7 @@ MEMSET(VG_Z_DYLD, memset)
|
||||
#endif
|
||||
|
||||
|
||||
-#define MEMMOVE(soname, fnname) \
|
||||
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
- (void *dstV, const void *srcV, SizeT n); \
|
||||
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
- (void *dstV, const void *srcV, SizeT n) \
|
||||
+#define MEMMOVE_BODY \
|
||||
{ \
|
||||
SizeT i; \
|
||||
Char* dst = (Char*)dstV; \
|
||||
@@ -758,12 +767,31 @@ MEMSET(VG_Z_DYLD, memset)
|
||||
} \
|
||||
return dst; \
|
||||
}
|
||||
+#define MEMMOVE(soname, fnname) \
|
||||
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
+ (void *dstV, const void *srcV, SizeT n); \
|
||||
+ void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
||||
+ (void *dstV, const void *srcV, SizeT n) \
|
||||
+ MEMMOVE_BODY
|
||||
+#define MEMMOVE_ZZ(soname, fnname) \
|
||||
+ void* VG_REPLACE_FUNCTION_ZZ(soname,fnname) \
|
||||
+ (void *dstV, const void *srcV, SizeT n); \
|
||||
+ void* VG_REPLACE_FUNCTION_ZZ(soname,fnname) \
|
||||
+ (void *dstV, const void *srcV, SizeT n) \
|
||||
+ MEMMOVE_BODY
|
||||
|
||||
MEMMOVE(VG_Z_LIBC_SONAME, memmove)
|
||||
#if defined(VGO_darwin)
|
||||
MEMMOVE(VG_Z_DYLD, memmove)
|
||||
#endif
|
||||
-
|
||||
+#if defined(VGP_amd64_linux)
|
||||
+/* In glibc 2.14+, memcpy@GLIBC_2.2.5 is an alias to memmove and only
|
||||
+ memcpy@@GLIBC_2.14 is a real memcpy. It would be nice for
|
||||
+ memcpy@GLIBC_2.2.5 to differentiate based on whether the caller
|
||||
+ was calling memmove or memcpy@GLIBC_2.2.5, for now just treat
|
||||
+ all such calls as memmove. */
|
||||
+MEMMOVE_ZZ(VG_Z_LIBC_SONAME, memcpyZAGLIBCZu2Zd2Zd5) /* memcpy@GLIBC_2.2.5 */
|
||||
+#endif
|
||||
|
||||
#define BCOPY(soname, fnname) \
|
||||
void VG_REPLACE_FUNCTION_ZU(soname,fnname) \
|
@ -1,18 +0,0 @@
|
||||
--- valgrind/none/tests/ppc32/xlc_dbl_u32.c.jj 2010-10-20 22:19:31.000000000 +0200
|
||||
+++ valgrind/none/tests/ppc32/xlc_dbl_u32.c 2010-11-12 14:16:41.108580219 +0100
|
||||
@@ -37,6 +37,7 @@ asm("\n"
|
||||
" .long 0\n"
|
||||
" .long 0x00000000\n"
|
||||
" .long 0x00000000\n"
|
||||
+".previous\n"
|
||||
"\n"
|
||||
" .section \".rodata\",\"a\"\n"
|
||||
" .align 3\n"
|
||||
@@ -48,6 +49,7 @@ asm("\n"
|
||||
" .long 0x3fe66666\n"
|
||||
" .long 0x66666666\n"
|
||||
" .long 0x25640a00\n"
|
||||
+".previous\n"
|
||||
);
|
||||
|
||||
int main (int argc, char** argv)
|
@ -1,5 +1,5 @@
|
||||
--- valgrind-3.4.0/cachegrind/cg_sim.c.jj 2007-01-08 02:43:10.000000000 -0500
|
||||
+++ valgrind-3.4.0/cachegrind/cg_sim.c 2007-02-13 07:15:46.000000000 -0500
|
||||
--- valgrind-3.7.0/cachegrind/cg_sim.c.jj 2011-10-26 23:24:32.000000000 +0200
|
||||
+++ valgrind-3.7.0/cachegrind/cg_sim.c 2011-12-09 17:31:19.256023683 +0100
|
||||
@@ -42,27 +42,30 @@ typedef struct {
|
||||
Int size; /* bytes */
|
||||
Int assoc;
|
||||
@ -52,13 +52,3 @@
|
||||
}
|
||||
|
||||
/* This is done as a macro rather than by passing in the cache_t2 as an
|
||||
@@ -138,8 +138,7 @@ void cachesim_##L##_doref(Addr a, UChar
|
||||
return; \
|
||||
\
|
||||
/* Second case: word straddles two lines. */ \
|
||||
- /* Nb: this is a fast way of doing ((set1+1) % L.sets) */ \
|
||||
- } else if (((set1 + 1) & (L.sets-1)) == set2) { \
|
||||
+ } else if (((set1 + 1) & (L.sets_min_1)) == set2) { \
|
||||
set = &(L.tags[set1 * L.assoc]); \
|
||||
if (tag == set[0]) { \
|
||||
goto block2; \
|
@ -1,5 +1,5 @@
|
||||
--- valgrind-3.5.0/coregrind/m_syswrap/syswrap-linux.c.jj 2010-04-07 08:14:12.000000000 -0400
|
||||
+++ valgrind-3.5.0/coregrind/m_syswrap/syswrap-linux.c 2010-04-12 07:24:12.838876000 -0400
|
||||
--- valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c.jj 2010-04-07 08:14:12.000000000 -0400
|
||||
+++ valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c 2010-04-12 07:24:12.838876000 -0400
|
||||
@@ -1955,8 +1955,9 @@ PRE(sys_capget)
|
||||
vki_cap_user_header_t, header, vki_cap_user_data_t, data);
|
||||
PRE_MEM_READ( "capget(header)", ARG1,
|
11
valgrind-3.7.0-config_h.patch
Normal file
11
valgrind-3.7.0-config_h.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- valgrind/include/pub_tool_basics.h.jj 2011-10-26 23:24:32.000000000 +0200
|
||||
+++ valgrind/include/pub_tool_basics.h 2011-12-09 17:42:50.828630546 +0100
|
||||
@@ -290,7 +290,7 @@ static inline Bool sr_EQ ( SysRes sr1, S
|
||||
#define VG_BUGS_TO "www.valgrind.org"
|
||||
|
||||
/* Branch prediction hints. */
|
||||
-#if defined(__GNUC__)
|
||||
+#if defined(__GNUC__) && (__GNUC__ >= 3)
|
||||
# define LIKELY(x) __builtin_expect(!!(x), 1)
|
||||
# define UNLIKELY(x) __builtin_expect(!!(x), 0)
|
||||
#else
|
180
valgrind-3.7.0-f-sgetown-ex.patch
Normal file
180
valgrind-3.7.0-f-sgetown-ex.patch
Normal file
@ -0,0 +1,180 @@
|
||||
--- valgrind-3.7.0/include/vki/vki-ppc64-linux.h.jj 2010-10-08 11:14:21.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-ppc64-linux.h 2012-01-27 16:45:19.418707191 +0100
|
||||
@@ -386,6 +386,16 @@ struct vki_sigcontext {
|
||||
#define VKI_F_SETSIG 10 /* for sockets. */
|
||||
#define VKI_F_GETSIG 11 /* for sockets. */
|
||||
|
||||
+#define VKI_F_SETOWN_EX 15
|
||||
+#define VKI_F_GETOWN_EX 16
|
||||
+
|
||||
+struct vki_f_owner_ex
|
||||
+{
|
||||
+ enum { VKI_F_OWNER_TID, VKI_F_OWNER_PID, VKI_F_OWNER_PGRP }
|
||||
+ type; /* Owner type of ID. */
|
||||
+ __vki_kernel_pid_t pid; /* ID of owner. */
|
||||
+};
|
||||
+
|
||||
/* for F_[GET|SET]FL */
|
||||
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
--- valgrind-3.7.0/include/vki/vki-arm-linux.h.jj 2011-03-28 16:09:17.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-arm-linux.h 2012-01-27 16:44:48.356887209 +0100
|
||||
@@ -270,6 +270,16 @@ struct vki_sigcontext {
|
||||
#define VKI_F_SETLK64 13
|
||||
#define VKI_F_SETLKW64 14
|
||||
|
||||
+#define VKI_F_SETOWN_EX 15
|
||||
+#define VKI_F_GETOWN_EX 16
|
||||
+
|
||||
+struct vki_f_owner_ex
|
||||
+{
|
||||
+ enum { VKI_F_OWNER_TID, VKI_F_OWNER_PID, VKI_F_OWNER_PGRP }
|
||||
+ type; /* Owner type of ID. */
|
||||
+ __vki_kernel_pid_t pid; /* ID of owner. */
|
||||
+};
|
||||
+
|
||||
/* for F_[GET|SET]FL */
|
||||
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
--- valgrind-3.7.0/include/vki/vki-x86-linux.h.jj 2010-10-08 11:14:21.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-x86-linux.h 2012-01-27 16:43:45.727249836 +0100
|
||||
@@ -308,6 +308,16 @@ struct vki_sigcontext {
|
||||
#define VKI_F_SETLK64 13
|
||||
#define VKI_F_SETLKW64 14
|
||||
|
||||
+#define VKI_F_SETOWN_EX 15
|
||||
+#define VKI_F_GETOWN_EX 16
|
||||
+
|
||||
+struct vki_f_owner_ex
|
||||
+{
|
||||
+ enum { VKI_F_OWNER_TID, VKI_F_OWNER_PID, VKI_F_OWNER_PGRP }
|
||||
+ type; /* Owner type of ID. */
|
||||
+ __vki_kernel_pid_t pid; /* ID of owner. */
|
||||
+};
|
||||
+
|
||||
/* for F_[GET|SET]FL */
|
||||
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
--- valgrind-3.7.0/include/vki/vki-ppc32-linux.h.jj 2010-10-08 11:14:21.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-ppc32-linux.h 2012-01-27 16:45:11.912752106 +0100
|
||||
@@ -337,6 +337,16 @@ struct vki_sigcontext {
|
||||
#define VKI_F_SETLK64 13
|
||||
#define VKI_F_SETLKW64 14
|
||||
|
||||
+#define VKI_F_SETOWN_EX 15
|
||||
+#define VKI_F_GETOWN_EX 16
|
||||
+
|
||||
+struct vki_f_owner_ex
|
||||
+{
|
||||
+ enum { VKI_F_OWNER_TID, VKI_F_OWNER_PID, VKI_F_OWNER_PGRP }
|
||||
+ type; /* Owner type of ID. */
|
||||
+ __vki_kernel_pid_t pid; /* ID of owner. */
|
||||
+};
|
||||
+
|
||||
/* for F_[GET|SET]FL */
|
||||
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
--- valgrind-3.7.0/include/vki/vki-s390x-linux.h.jj 2011-06-08 17:26:29.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-s390x-linux.h 2012-01-27 16:45:31.078639504 +0100
|
||||
@@ -332,6 +332,16 @@ typedef struct vki_sigaltstack {
|
||||
#define VKI_F_SETSIG 10 /* for sockets. */
|
||||
#define VKI_F_GETSIG 11 /* for sockets. */
|
||||
|
||||
+#define VKI_F_SETOWN_EX 15
|
||||
+#define VKI_F_GETOWN_EX 16
|
||||
+
|
||||
+struct vki_f_owner_ex
|
||||
+{
|
||||
+ enum { VKI_F_OWNER_TID, VKI_F_OWNER_PID, VKI_F_OWNER_PGRP }
|
||||
+ type; /* Owner type of ID. */
|
||||
+ __vki_kernel_pid_t pid; /* ID of owner. */
|
||||
+};
|
||||
+
|
||||
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
#define VKI_F_LINUX_SPECIFIC_BASE 1024
|
||||
--- valgrind-3.7.0/include/vki/vki-amd64-linux.h.jj 2010-10-08 11:14:21.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-amd64-linux.h 2012-01-27 16:44:23.592030914 +0100
|
||||
@@ -268,6 +268,16 @@ struct vki_sigcontext {
|
||||
#define VKI_F_SETSIG 10 /* for sockets. */
|
||||
#define VKI_F_GETSIG 11 /* for sockets. */
|
||||
|
||||
+#define VKI_F_SETOWN_EX 15
|
||||
+#define VKI_F_GETOWN_EX 16
|
||||
+
|
||||
+struct vki_f_owner_ex
|
||||
+{
|
||||
+ enum { VKI_F_OWNER_TID, VKI_F_OWNER_PID, VKI_F_OWNER_PGRP }
|
||||
+ type; /* Owner type of ID. */
|
||||
+ __vki_kernel_pid_t pid; /* ID of owner. */
|
||||
+};
|
||||
+
|
||||
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
|
||||
|
||||
#define VKI_F_LINUX_SPECIFIC_BASE 1024
|
||||
--- valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c.jj 2011-08-02 14:49:29.000000000 +0200
|
||||
+++ valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c 2012-01-27 17:08:11.621732289 +0100
|
||||
@@ -3778,6 +3778,22 @@ PRE(sys_fcntl)
|
||||
struct flock64 *, lock);
|
||||
break;
|
||||
|
||||
+ case VKI_F_SETOWN_EX:
|
||||
+ PRINT("sys_fcntl[F_SETOWN_EX] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
|
||||
+ PRE_REG_READ3(long, "fcntl",
|
||||
+ unsigned int, fd, unsigned int, cmd,
|
||||
+ struct vki_f_owner_ex *, arg);
|
||||
+ PRE_MEM_READ("fcntl(F_SETOWN_EX)", ARG3, sizeof(struct vki_f_owner_ex));
|
||||
+ break;
|
||||
+
|
||||
+ case VKI_F_GETOWN_EX:
|
||||
+ PRINT("sys_fcntl[F_GETOWN_EX] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
|
||||
+ PRE_REG_READ3(long, "fcntl",
|
||||
+ unsigned int, fd, unsigned int, cmd,
|
||||
+ struct vki_f_owner_ex *, arg);
|
||||
+ PRE_MEM_WRITE("fcntl(F_GETOWN_EX)", ARG3, sizeof(struct vki_f_owner_ex));
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
PRINT("sys_fcntl[UNKNOWN] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
|
||||
I_die_here;
|
||||
@@ -3812,6 +3828,8 @@ POST(sys_fcntl)
|
||||
if (VG_(clo_track_fds))
|
||||
ML_(record_fd_open_named)(tid, RES);
|
||||
}
|
||||
+ } else if (ARG2 == VKI_F_GETOWN_EX) {
|
||||
+ POST_MEM_WRITE(ARG3, sizeof(struct vki_f_owner_ex));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3857,6 +3875,22 @@ PRE(sys_fcntl64)
|
||||
unsigned int, fd, unsigned int, cmd,
|
||||
struct flock64 *, lock);
|
||||
break;
|
||||
+
|
||||
+ case VKI_F_SETOWN_EX:
|
||||
+ PRINT("sys_fcntl[F_SETOWN_EX] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
|
||||
+ PRE_REG_READ3(long, "fcntl",
|
||||
+ unsigned int, fd, unsigned int, cmd,
|
||||
+ struct vki_f_owner_ex *, arg);
|
||||
+ PRE_MEM_READ("fcntl(F_SETOWN_EX)", ARG3, sizeof(struct vki_f_owner_ex));
|
||||
+ break;
|
||||
+
|
||||
+ case VKI_F_GETOWN_EX:
|
||||
+ PRINT("sys_fcntl[F_GETOWN_EX] ( %ld, %ld, %ld )", ARG1,ARG2,ARG3);
|
||||
+ PRE_REG_READ3(long, "fcntl",
|
||||
+ unsigned int, fd, unsigned int, cmd,
|
||||
+ struct vki_f_owner_ex *, arg);
|
||||
+ PRE_MEM_WRITE("fcntl(F_GETOWN_EX)", ARG3, sizeof(struct vki_f_owner_ex));
|
||||
+ break;
|
||||
}
|
||||
|
||||
# if defined(VGP_x86_linux)
|
||||
@@ -3887,6 +3921,8 @@ POST(sys_fcntl64)
|
||||
if (VG_(clo_track_fds))
|
||||
ML_(record_fd_open_named)(tid, RES);
|
||||
}
|
||||
+ } else if (ARG2 == VKI_F_GETOWN_EX) {
|
||||
+ POST_MEM_WRITE(ARG3, sizeof(struct vki_f_owner_ex));
|
||||
}
|
||||
}
|
||||
|
65
valgrind-3.7.0-glibc-2.15.patch
Normal file
65
valgrind-3.7.0-glibc-2.15.patch
Normal file
@ -0,0 +1,65 @@
|
||||
--- valgrind-3.7.0/configure.in.jj 2011-11-05 12:13:30.000000000 +0100
|
||||
+++ valgrind-3.7.0/configure.in 2011-12-09 17:48:21.409848842 +0100
|
||||
@@ -775,6 +775,13 @@ case "${GLIBC_VERSION}" in
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
+ 2.15)
|
||||
+ AC_MSG_RESULT(2.15 family)
|
||||
+ AC_DEFINE([GLIBC_2_15], 1, [Define to 1 if you're using glibc 2.15.x])
|
||||
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
+ ;;
|
||||
darwin)
|
||||
AC_MSG_RESULT(Darwin)
|
||||
AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
|
||||
@@ -788,7 +795,7 @@ case "${GLIBC_VERSION}" in
|
||||
|
||||
*)
|
||||
AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
|
||||
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.14])
|
||||
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.15])
|
||||
AC_MSG_ERROR([or Darwin libc])
|
||||
;;
|
||||
esac
|
||||
--- valgrind-3.7.0/config.h.in.jj 2011-10-26 23:25:55.000000000 +0200
|
||||
+++ valgrind-3.7.0/config.h.in 2011-12-09 17:47:42.385804043 +0100
|
||||
@@ -39,6 +39,9 @@
|
||||
/* Define to 1 if you're using glibc 2.14.x */
|
||||
#undef GLIBC_2_14
|
||||
|
||||
+/* Define to 1 if you're using glibc 2.15.x */
|
||||
+#undef GLIBC_2_15
|
||||
+
|
||||
/* Define to 1 if you're using glibc 2.2.x */
|
||||
#undef GLIBC_2_2
|
||||
|
||||
--- valgrind-3.7.0/configure.jj 2011-11-05 12:24:39.000000000 +0100
|
||||
+++ valgrind-3.7.0/configure 2011-12-09 17:48:58.371930777 +0100
|
||||
@@ -6402,6 +6402,16 @@ $as_echo "#define GLIBC_2_14 1" >>confde
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
+ 2.15)
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5
|
||||
+$as_echo "2.15 family" >&6; }
|
||||
+
|
||||
+$as_echo "#define GLIBC_2_15 1" >>confdefs.h
|
||||
+
|
||||
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
+ ;;
|
||||
darwin)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
|
||||
$as_echo "Darwin" >&6; }
|
||||
@@ -6422,7 +6432,7 @@ $as_echo "#define BIONIC_LIBC 1" >>confd
|
||||
*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
|
||||
$as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
|
||||
- as_fn_error "Valgrind requires glibc version 2.2 - 2.14" "$LINENO" 5
|
||||
+ as_fn_error "Valgrind requires glibc version 2.2 - 2.15" "$LINENO" 5
|
||||
as_fn_error "or Darwin libc" "$LINENO" 5
|
||||
;;
|
||||
esac
|
@ -15,8 +15,8 @@ main (void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-linux.c.jj 2007-12-11 00:18:43.000000000 +0100
|
||||
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-linux.c 2008-03-03 11:35:15.000000000 +0100
|
||||
--- valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c.jj 2007-12-11 00:18:43.000000000 +0100
|
||||
+++ valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c 2008-03-03 11:35:15.000000000 +0100
|
||||
@@ -2455,10 +2455,15 @@ PRE(sys_openat)
|
||||
int, dfd, const char *, filename, int, flags);
|
||||
}
|
72
valgrind-3.7.0-scsi-ioctls.patch
Normal file
72
valgrind-3.7.0-scsi-ioctls.patch
Normal file
@ -0,0 +1,72 @@
|
||||
--- valgrind-3.7.0/include/vki/vki-linux.h.jj 2011-10-26 23:24:31.000000000 +0200
|
||||
+++ valgrind-3.7.0/include/vki/vki-linux.h 2012-01-27 16:11:53.373379491 +0100
|
||||
@@ -1730,6 +1730,15 @@ typedef struct vki_sg_scsi_id { /* used
|
||||
#define VKI_SG_SET_COMMAND_Q 0x2271 /* Change queuing state with 0 or 1 */
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
+// From linux-2.6.34/include/scsi/scsi.h and scsi/scsi_ioctl.h
|
||||
+//----------------------------------------------------------------------
|
||||
+
|
||||
+#define VKI_SCSI_IOCTL_DOORLOCK 0x5380 /* Lock the eject mechanism. */
|
||||
+#define VKI_SCSI_IOCTL_DOORUNLOCK 0x5381 /* Unlock the mechanism. */
|
||||
+#define VKI_SCSI_IOCTL_GET_IDLUN 0x5382
|
||||
+#define VKI_SCSI_IOCTL_GET_BUS_NUMBER 0x5386
|
||||
+
|
||||
+//----------------------------------------------------------------------
|
||||
// From linux-2.6.8.1/include/linux/cdrom.h
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
--- valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c.jj 2012-01-27 13:27:26.000000000 +0100
|
||||
+++ valgrind-3.7.0/coregrind/m_syswrap/syswrap-linux.c 2012-01-27 16:18:05.377177786 +0100
|
||||
@@ -3935,6 +3935,10 @@ PRE(sys_ioctl)
|
||||
case VKI_SNDRV_TIMER_IOCTL_STOP:
|
||||
case VKI_SNDRV_TIMER_IOCTL_CONTINUE:
|
||||
case VKI_SNDRV_TIMER_IOCTL_PAUSE:
|
||||
+
|
||||
+ /* SCSI no operand */
|
||||
+ case VKI_SCSI_IOCTL_DOORLOCK:
|
||||
+ case VKI_SCSI_IOCTL_DOORUNLOCK:
|
||||
PRINT("sys_ioctl ( %ld, 0x%lx )",ARG1,ARG2);
|
||||
PRE_REG_READ2(long, "ioctl",
|
||||
unsigned int, fd, unsigned int, request);
|
||||
@@ -4420,6 +4424,14 @@ PRE(sys_ioctl)
|
||||
VKI_SIZEOF_STRUCT_HD_DRIVEID );
|
||||
break;
|
||||
|
||||
+ /* SCSI */
|
||||
+ case VKI_SCSI_IOCTL_GET_IDLUN: /* 0x5382 */
|
||||
+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_IDLUN)", ARG3, 2*sizeof(int));
|
||||
+ break;
|
||||
+ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: /* 0x5386 */
|
||||
+ PRE_MEM_WRITE( "ioctl(SCSI_IOCTL_GET_BUS_NUMBER)", ARG3, sizeof(int));
|
||||
+ break;
|
||||
+
|
||||
/* CD ROM stuff (??) */
|
||||
case VKI_CDROM_GET_MCN:
|
||||
PRE_MEM_READ( "ioctl(CDROM_GET_MCN)", ARG3,
|
||||
@@ -5521,6 +5533,10 @@ POST(sys_ioctl)
|
||||
case VKI_SNDRV_TIMER_IOCTL_STOP:
|
||||
case VKI_SNDRV_TIMER_IOCTL_CONTINUE:
|
||||
case VKI_SNDRV_TIMER_IOCTL_PAUSE:
|
||||
+
|
||||
+ /* SCSI no operand */
|
||||
+ case VKI_SCSI_IOCTL_DOORLOCK:
|
||||
+ case VKI_SCSI_IOCTL_DOORUNLOCK:
|
||||
break;
|
||||
|
||||
/* Real Time Clock (/dev/rtc) ioctls */
|
||||
@@ -5587,6 +5603,14 @@ POST(sys_ioctl)
|
||||
POST_MEM_WRITE(ARG3, VKI_SIZEOF_STRUCT_HD_DRIVEID );
|
||||
break;
|
||||
|
||||
+ /* SCSI */
|
||||
+ case VKI_SCSI_IOCTL_GET_IDLUN: /* 0x5382 */
|
||||
+ POST_MEM_WRITE(ARG3, 2*sizeof(int));
|
||||
+ break;
|
||||
+ case VKI_SCSI_IOCTL_GET_BUS_NUMBER: /* 0x5386 */
|
||||
+ POST_MEM_WRITE(ARG3, sizeof(int));
|
||||
+ break;
|
||||
+
|
||||
/* CD ROM stuff (??) */
|
||||
case VKI_CDROMSUBCHNL:
|
||||
POST_MEM_WRITE(ARG3, sizeof(struct vki_cdrom_subchnl));
|
60
valgrind-3.7.0-tests.patch
Normal file
60
valgrind-3.7.0-tests.patch
Normal file
@ -0,0 +1,60 @@
|
||||
Disable some hanging tests, fix up bug125959-x86.c undefined behavior.
|
||||
|
||||
--- valgrind-3.7.0/helgrind/tests/Makefile.am.jj 2011-10-26 23:24:25.000000000 +0200
|
||||
+++ valgrind-3.7.0/helgrind/tests/Makefile.am 2012-01-27 15:01:58.955624195 +0100
|
||||
@@ -94,7 +94,6 @@ EXTRA_DIST = \
|
||||
# XXX: tc18_semabuse uses operations that are unsupported on Darwin. It
|
||||
# should be conditionally compiled like tc20_verifywrap is.
|
||||
check_PROGRAMS = \
|
||||
- annotate_hbefore \
|
||||
cond_timedwait_invalid \
|
||||
free_is_write \
|
||||
hg01_all_ok \
|
||||
--- valgrind-3.7.0/helgrind/tests/Makefile.in.jj 2011-11-05 12:26:51.000000000 +0100
|
||||
+++ valgrind-3.7.0/helgrind/tests/Makefile.in 2012-01-27 15:02:40.285383038 +0100
|
||||
@@ -46,8 +46,7 @@ host_triplet = @host@
|
||||
DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \
|
||||
$(top_srcdir)/Makefile.tool-tests.am
|
||||
-check_PROGRAMS = annotate_hbefore$(EXEEXT) \
|
||||
- cond_timedwait_invalid$(EXEEXT) free_is_write$(EXEEXT) \
|
||||
+check_PROGRAMS = cond_timedwait_invalid$(EXEEXT) free_is_write$(EXEEXT) \
|
||||
hg01_all_ok$(EXEEXT) hg02_deadlock$(EXEEXT) \
|
||||
hg03_inherit$(EXEEXT) hg04_race$(EXEEXT) hg05_race2$(EXEEXT) \
|
||||
hg06_readshared$(EXEEXT) locked_vs_unlocked1$(EXEEXT) \
|
||||
--- valgrind-3.7.0/none/tests/x86/bug125959-x86.c.jj 2011-10-26 23:24:38.000000000 +0200
|
||||
+++ valgrind-3.7.0/none/tests/x86/bug125959-x86.c 2012-01-27 15:00:11.648250429 +0100
|
||||
@@ -22,7 +22,8 @@ static int lookup ( int i )
|
||||
|
||||
int main(void)
|
||||
{
|
||||
- int i, j;
|
||||
+ int i;
|
||||
+ unsigned int j;
|
||||
for (i = 0; i < 256; i++)
|
||||
buf[i] = (unsigned char) i;
|
||||
|
||||
--- valgrind-3.7.0/gdbserver_tests/Makefile.am.jj 2011-10-26 23:24:26.000000000 +0200
|
||||
+++ valgrind-3.7.0/gdbserver_tests/Makefile.am 2012-01-27 14:56:43.369465872 +0100
|
||||
@@ -102,9 +102,7 @@ check_PROGRAMS = \
|
||||
clean_after_fork \
|
||||
fork_chain \
|
||||
passsigalrm \
|
||||
- sleepers \
|
||||
main_pic \
|
||||
- t \
|
||||
watchpoints
|
||||
|
||||
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
|
||||
--- valgrind-3.7.0/gdbserver_tests/Makefile.in.jj 2011-11-05 12:26:51.000000000 +0100
|
||||
+++ valgrind-3.7.0/gdbserver_tests/Makefile.in 2012-01-27 14:57:30.278191493 +0100
|
||||
@@ -47,8 +47,7 @@ DIST_COMMON = $(dist_noinst_SCRIPTS) $(s
|
||||
$(srcdir)/Makefile.in $(top_srcdir)/Makefile.all.am \
|
||||
$(top_srcdir)/Makefile.tool-tests.am
|
||||
check_PROGRAMS = clean_after_fork$(EXEEXT) fork_chain$(EXEEXT) \
|
||||
- passsigalrm$(EXEEXT) sleepers$(EXEEXT) main_pic$(EXEEXT) \
|
||||
- t$(EXEEXT) watchpoints$(EXEEXT)
|
||||
+ passsigalrm$(EXEEXT) main_pic$(EXEEXT) watchpoints$(EXEEXT)
|
||||
subdir = gdbserver_tests
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.in
|
@ -1,31 +1,20 @@
|
||||
Summary: Tool for finding memory management bugs in programs
|
||||
Name: valgrind
|
||||
Version: 3.6.1
|
||||
Release: 7%{?dist}
|
||||
Version: 3.7.0
|
||||
Release: 1%{?dist}
|
||||
Epoch: 1
|
||||
Source0: http://www.valgrind.org/downloads/valgrind-%{version}.tar.bz2
|
||||
Patch1: valgrind-3.6.1-cachegrind-improvements.patch
|
||||
Patch2: valgrind-3.6.1-openat.patch
|
||||
Patch3: valgrind-3.6.1-glibc-2.10.1.patch
|
||||
Patch4: valgrind-3.6.1-helgrind-race-supp.patch
|
||||
Patch5: valgrind-3.6.1-stat_h.patch
|
||||
Patch6: valgrind-3.6.1-config_h.patch
|
||||
Patch7: valgrind-3.6.1-capget.patch
|
||||
Patch8: valgrind-3.6.1-glibc-2.14.patch
|
||||
Patch9: valgrind-3.6.1-s390x-1.patch
|
||||
Patch10: valgrind-3.6.1-s390x-2.patch
|
||||
Patch11: valgrind-3.6.1-s390x-3.patch
|
||||
Patch12: valgrind-3.6.1-s390x-4.patch
|
||||
Patch13: valgrind-3.6.1-xlc_dbl_u32-test.patch
|
||||
Patch14: valgrind-3.6.1-helgrind-tests.patch
|
||||
Patch15: valgrind-3.6.1-ppc64-pwrite64.patch
|
||||
Patch16: valgrind-3.6.1-pie.patch
|
||||
Patch17: valgrind-3.6.1-gen_insn_test.patch
|
||||
Patch18: valgrind-3.6.1-x86-ldso-strlen.patch
|
||||
Patch19: valgrind-3.6.1-ppc64-build.patch
|
||||
Patch20: valgrind-3.6.1-tests-_GNU_SOURCE.patch
|
||||
Patch21: valgrind-3.6.1-x86_64-memcpy-memmove.patch
|
||||
Patch22: valgrind-3.6.1-plt-unwind-info.patch
|
||||
Patch1: valgrind-3.7.0-cachegrind-improvements.patch
|
||||
Patch2: valgrind-3.7.0-openat.patch
|
||||
Patch3: valgrind-3.7.0-helgrind-race-supp.patch
|
||||
Patch4: valgrind-3.7.0-stat_h.patch
|
||||
Patch5: valgrind-3.7.0-config_h.patch
|
||||
Patch6: valgrind-3.7.0-capget.patch
|
||||
Patch7: valgrind-3.7.0-glibc-2.15.patch
|
||||
Patch8: valgrind-3.7.0-pie.patch
|
||||
Patch9: valgrind-3.7.0-tests.patch
|
||||
Patch10: valgrind-3.7.0-f-sgetown-ex.patch
|
||||
Patch11: valgrind-3.7.0-scsi-ioctls.patch
|
||||
License: GPLv2
|
||||
URL: http://www.valgrind.org/
|
||||
Group: Development/Debuggers
|
||||
@ -111,19 +100,6 @@ for details.
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
%patch20 -p1
|
||||
%patch21 -p1
|
||||
%patch22 -p1
|
||||
|
||||
chmod 755 none/tests/s390x/filter_stderr || :
|
||||
|
||||
%build
|
||||
CC=gcc
|
||||
@ -223,8 +199,10 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:3.6.1-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
* Fri Jan 27 2012 Jakub Jelinek <jakub@redhat.com> 3.7.0-1
|
||||
- update to 3.7.0 (#769213, #782910, #772343)
|
||||
- handle some further SCSI ioctls (#783936)
|
||||
- handle fcntl F_SETOWN_EX and F_GETOWN_EX (#770746)
|
||||
|
||||
* Wed Aug 17 2011 Adam Jackson <ajax@redhat.com> 3.6.1-6
|
||||
- rebuild for rpm 4.9.1 trailing / bug
|
||||
|
Loading…
Reference in New Issue
Block a user