|
From: <sv...@va...> - 2014-08-24 19:55:35
|
Author: florian
Date: Sun Aug 24 19:55:24 2014
New Revision: 14351
Log:
Merge from trunk to pick up IROp renames.
Modified:
branches/BUF_REMOVAL/ (props changed)
branches/BUF_REMOVAL/NEWS
branches/BUF_REMOVAL/callgrind/context.c
branches/BUF_REMOVAL/callgrind/costs.c
branches/BUF_REMOVAL/callgrind/costs.h
branches/BUF_REMOVAL/callgrind/events.c
branches/BUF_REMOVAL/callgrind/events.h
branches/BUF_REMOVAL/callgrind/global.h
branches/BUF_REMOVAL/coregrind/m_main.c
branches/BUF_REMOVAL/memcheck/docs/mc-manual.xml
branches/BUF_REMOVAL/memcheck/mc_include.h
branches/BUF_REMOVAL/memcheck/mc_main.c
branches/BUF_REMOVAL/memcheck/mc_malloc_wrappers.c
branches/BUF_REMOVAL/memcheck/mc_translate.c
branches/BUF_REMOVAL/memcheck/tests/vbit-test/irops.c
branches/BUF_REMOVAL/memcheck/tests/vbit-test/util.c
branches/BUF_REMOVAL/none/tests/filter_shell_output
Modified: branches/BUF_REMOVAL/NEWS
==============================================================================
--- branches/BUF_REMOVAL/NEWS (original)
+++ branches/BUF_REMOVAL/NEWS Sun Aug 24 19:55:24 2014
@@ -20,6 +20,8 @@
...) has several fields not initialised, an error is now reported for
each field. Previously, an error was reported only for the first wrong
field.
+ - new flag --show-mismatched-frees=no|yes [yes], to optionally disable
+ allocator/deallocator mismatch checking.
* Helgrind:
- Race condition error message with allocated blocks also show
@@ -213,6 +215,7 @@
338160 implement display of thread local storage in gdbsrv
338205 configure.ac and check for -Wno-tautological-compare
338445 amd64 vbit-test fails with unknown opcodes used by arm64 VEX
+338499 --sim-hints parsing broken due to wrong order in tokens
n-i-bz Fix KVM_CREATE_IRQCHIP ioctl handling
n-i-bz s390x: Fix memory corruption for multithreaded applications
n-i-bz vex arm->IR: allow PC as basereg in some LDRD cases
Modified: branches/BUF_REMOVAL/callgrind/context.c
==============================================================================
--- branches/BUF_REMOVAL/callgrind/context.c (original)
+++ branches/BUF_REMOVAL/callgrind/context.c Sun Aug 24 19:55:24 2014
@@ -82,11 +82,6 @@
cxts.table[i] = 0;
}
-cxt_hash* CLG_(get_cxt_hash)()
-{
- return &cxts;
-}
-
/* double size of cxt table */
static void resize_cxt_table(void)
{
Modified: branches/BUF_REMOVAL/callgrind/costs.c
==============================================================================
--- branches/BUF_REMOVAL/callgrind/costs.c (original)
+++ branches/BUF_REMOVAL/callgrind/costs.c Sun Aug 24 19:55:24 2014
@@ -46,6 +46,8 @@
CostChunk* cc = (CostChunk*) CLG_MALLOC("cl.costs.gc.1",
sizeof(CostChunk) +
COSTCHUNK_SIZE * sizeof(ULong));
+ CLG_ASSERT(size < COSTCHUNK_SIZE);
+
cc->size = COSTCHUNK_SIZE;
cc->used = 0;
cc->next = 0;
@@ -66,15 +68,3 @@
return ptr;
}
-
-void CLG_(free_costarrays)()
-{
- CostChunk* cc = cost_chunk_base, *cc_next;
- while(cc) {
- cc_next = cc->next;
- VG_(free)(cc);
- cc = cc_next;
- }
- cost_chunk_base = 0;
- cost_chunk_current = 0;
-}
Modified: branches/BUF_REMOVAL/callgrind/costs.h
==============================================================================
--- branches/BUF_REMOVAL/callgrind/costs.h (original)
+++ branches/BUF_REMOVAL/callgrind/costs.h Sun Aug 24 19:55:24 2014
@@ -40,7 +40,7 @@
/* Array of 64bit costs. This is separated from other structs
* to support a dynamic number of costs for a cost item.
- * Chunks are allocated on demand, and deallocated at program termination.
+ * Chunks are allocated on demand.
*/
typedef struct _CostChunk CostChunk;
struct _CostChunk {
@@ -53,7 +53,5 @@
/* Allocate a number of 64bit cost values.
* Typically used from ct_events.c */
ULong* CLG_(get_costarray)(Int size);
-void CLG_(free_costarrays)(void);
-
#endif /* CLG_COSTS */
Modified: branches/BUF_REMOVAL/callgrind/events.c
==============================================================================
--- branches/BUF_REMOVAL/callgrind/events.c (original)
+++ branches/BUF_REMOVAL/callgrind/events.c Sun Aug 24 19:55:24 2014
@@ -162,14 +162,6 @@
return eventset_from_mask((1u << id1) | (1u << id2));
}
-EventSet* CLG_(get_event_set3)(Int id1, Int id2, Int id3)
-{
- CLG_ASSERT(id1>=0 && id1<MAX_EVENTGROUP_COUNT);
- CLG_ASSERT(id2>=0 && id2<MAX_EVENTGROUP_COUNT);
- CLG_ASSERT(id3>=0 && id3<MAX_EVENTGROUP_COUNT);
- return eventset_from_mask((1u << id1) | (1u << id2) | (1u << id3));
-}
-
EventSet* CLG_(add_event_group)(EventSet* es, Int id)
{
CLG_ASSERT(id>=0 && id<MAX_EVENTGROUP_COUNT);
@@ -192,30 +184,6 @@
return eventset_from_mask(es1->mask | es2->mask);
}
-Int CLG_(sprint_eventset)(HChar* buf, EventSet* es)
-{
- Int i, j, pos;
- UInt mask;
- EventGroup* eg;
-
-
- CLG_ASSERT(es->size >0);
- pos = 0;
- for(i=0, mask=1; i<MAX_EVENTGROUP_COUNT; i++, mask=mask<<1) {
- if ((es->mask & mask)==0) continue;
- if (eventGroup[i] ==0) continue;
-
- eg = eventGroup[i];
- for(j=0; j<eg->size; j++) {
- if (pos>0) buf[pos++] = ' ';
- pos += VG_(sprintf)(buf + pos, "%s", eg->name[j]);
- }
- }
- buf[pos] = 0;
-
- return pos;
-}
-
/* Get cost array for an event set */
ULong* CLG_(get_eventset_cost)(EventSet* es)
@@ -269,19 +237,6 @@
return True;
}
-Bool CLG_(is_equal_cost)(EventSet* es, ULong* c1, ULong* c2)
-{
- Int i;
-
- if (!c1) return CLG_(is_zero_cost)(es, c2);
- if (!c2) return CLG_(is_zero_cost)(es, c1);
-
- for(i=0; i<es->size; i++)
- if (c1[i] != c2[i]) return False;
-
- return True;
-}
-
void CLG_(copy_cost)(EventSet* es, ULong* dst, ULong* src)
{
Int i;
@@ -445,33 +400,6 @@
}
-/* Returns number of characters written */
-Int CLG_(sprint_cost)(HChar* buf, EventSet* es, ULong* c)
-{
- Int i, pos, skipped = 0;
-
- if (!c || es->size==0) return 0;
-
- /* At least one entry */
- pos = VG_(sprintf)(buf, "%llu", c[0]);
- for(i=1; i<es->size; i++) {
- if (c[i] == 0) {
- skipped++;
- continue;
- }
- while(skipped>0) {
- buf[pos++] = ' ';
- buf[pos++] = '0';
- skipped--;
- }
- buf[pos++] = ' ';
- pos += VG_(sprintf)(buf+pos, "%llu", c[i]);
- }
-
- return pos;
-}
-
-
/* Allocate space for an event mapping */
EventMapping* CLG_(get_eventmapping)(EventSet* es)
{
Modified: branches/BUF_REMOVAL/callgrind/events.h
==============================================================================
--- branches/BUF_REMOVAL/callgrind/events.h (original)
+++ branches/BUF_REMOVAL/callgrind/events.h Sun Aug 24 19:55:24 2014
@@ -74,12 +74,9 @@
/* Same event set is returned when requesting same event groups */
EventSet* CLG_(get_event_set)(Int id);
EventSet* CLG_(get_event_set2)(Int id1, Int id2);
-EventSet* CLG_(get_event_set3)(Int id1, Int id2, Int id3);
EventSet* CLG_(add_event_group)(EventSet*, Int id);
EventSet* CLG_(add_event_group2)(EventSet*, Int id1, Int id2);
EventSet* CLG_(add_event_set)(EventSet*, EventSet*);
-/* Writes event names into buf. Returns number of characters written */
-Int CLG_(sprint_eventset)(HChar* buf, EventSet*);
/* Operations on costs. A cost pointer of 0 means zero cost.
@@ -93,7 +90,6 @@
/* Set costs of an event set to zero */
void CLG_(zero_cost)(EventSet*,ULong*);
Bool CLG_(is_zero_cost)(EventSet*,ULong*);
-Bool CLG_(is_equal_cost)(EventSet*,ULong*,ULong*);
void CLG_(copy_cost)(EventSet*,ULong* dst, ULong* src);
void CLG_(copy_cost_lz)(EventSet*,ULong** pdst, ULong* src);
void CLG_(add_cost)(EventSet*,ULong* dst, ULong* src);
@@ -105,8 +101,6 @@
* Returns false if nothing changed */
Bool CLG_(add_diff_cost)(EventSet*,ULong* dst, ULong* old, ULong* new_cost);
Bool CLG_(add_diff_cost_lz)(EventSet*,ULong** pdst, ULong* old, ULong* new_cost);
-/* Returns number of characters written */
-Int CLG_(sprint_cost)(HChar* buf, EventSet*, ULong*);
/* EventMapping: An ordered subset of events from an event set.
* This is used to print out part of an EventSet, or in another order.
Modified: branches/BUF_REMOVAL/callgrind/global.h
==============================================================================
--- branches/BUF_REMOVAL/callgrind/global.h (original)
+++ branches/BUF_REMOVAL/callgrind/global.h Sun Aug 24 19:55:24 2014
@@ -778,7 +778,6 @@
/* from jumps.c */
void CLG_(init_jcc_hash)(jcc_hash*);
void CLG_(copy_current_jcc_hash)(jcc_hash* dst);
-jcc_hash* CLG_(get_current_jcc_hash)(void);
void CLG_(set_current_jcc_hash)(jcc_hash*);
jCC* CLG_(get_jcc)(BBCC* from, UInt, BBCC* to);
@@ -795,11 +794,9 @@
/* from context.c */
void CLG_(init_fn_stack)(fn_stack*);
void CLG_(copy_current_fn_stack)(fn_stack*);
-fn_stack* CLG_(get_current_fn_stack)(void);
void CLG_(set_current_fn_stack)(fn_stack*);
void CLG_(init_cxt_table)(void);
-cxt_hash* CLG_(get_cxt_hash)(void);
Context* CLG_(get_cxt)(fn_node** fn);
void CLG_(push_cxt)(fn_node* fn);
Modified: branches/BUF_REMOVAL/coregrind/m_main.c
==============================================================================
--- branches/BUF_REMOVAL/coregrind/m_main.c (original)
+++ branches/BUF_REMOVAL/coregrind/m_main.c Sun Aug 24 19:55:24 2014
@@ -379,8 +379,8 @@
// running in an outer, to have "no-inner-prefix" enabled
// as early as possible.
else if VG_USETX_CLO (str, "--sim-hints",
- "no-inner-prefix,fuse-compatible,"
- "lax-ioctls,enable-outer,"
+ "lax-ioctls,fuse-compatible,"
+ "enable-outer,no-inner-prefix,"
"no-nptl-pthread-stackcache",
VG_(clo_sim_hints)) {}
}
Modified: branches/BUF_REMOVAL/memcheck/docs/mc-manual.xml
==============================================================================
--- branches/BUF_REMOVAL/memcheck/docs/mc-manual.xml (original)
+++ branches/BUF_REMOVAL/memcheck/docs/mc-manual.xml Sun Aug 24 19:55:24 2014
@@ -1090,6 +1090,44 @@
</listitem>
</varlistentry>
+ <varlistentry id="opt.show-mismatched-frees"
+ xreflabel="--show-mismatched-frees">
+ <term>
+ <option><![CDATA[--show-mismatched-frees=<yes|no> [default: yes] ]]></option>
+ </term>
+ <listitem>
+ <para>When enabled, Memcheck checks that heap blocks are
+ deallocated using a function that matches the allocating
+ function. That is, it expects <varname>free</varname> to be
+ used to deallocate blocks allocated
+ by <varname>malloc</varname>, <varname>delete</varname> for
+ blocks allocated by <varname>new</varname>,
+ and <varname>delete[]</varname> for blocks allocated
+ by <varname>new[]</varname>. If a mismatch is detected, an
+ error is reported. This is in general important because in some
+ environments, freeing with a non-matching function can cause
+ crashes.</para>
+
+ <para>There is however a scenario where such mismatches cannot
+ be avoided. That is when the user provides implementations of
+ <varname>new</varname>/<varname>new[]</varname> that
+ call <varname>malloc</varname> and
+ of <varname>delete</varname>/<varname>delete[]</varname> that
+ call <varname>free</varname>, and these functions are
+ asymmetrically inlined. For example, imagine
+ that <varname>delete[]</varname> is inlined
+ but <varname>new[]</varname> is not. The result is that
+ Memcheck "sees" all <varname>delete[]</varname> calls as direct
+ calls to <varname>free</varname>, even when the program source
+ contains no mismatched calls.</para>
+
+ <para>This causes a lot of confusing and irrelevant error
+ reports. <varname>--show-mismatched-frees=no</varname> disables
+ these checks. It is not generally advisable to disable them,
+ though, because you may miss real errors as a result.</para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.ignore-ranges" xreflabel="--ignore-ranges">
<term>
<option><![CDATA[--ignore-ranges=0xPP-0xQQ[,0xRR-0xSS] ]]></option>
Modified: branches/BUF_REMOVAL/memcheck/mc_include.h
==============================================================================
--- branches/BUF_REMOVAL/memcheck/mc_include.h (original)
+++ branches/BUF_REMOVAL/memcheck/mc_include.h Sun Aug 24 19:55:24 2014
@@ -588,6 +588,9 @@
*/
extern Int MC_(clo_mc_level);
+/* Should we show mismatched frees? Default: YES */
+extern Bool MC_(clo_show_mismatched_frees);
+
/*------------------------------------------------------------*/
/*--- Instrumentation ---*/
Modified: branches/BUF_REMOVAL/memcheck/mc_main.c
==============================================================================
--- branches/BUF_REMOVAL/memcheck/mc_main.c (original)
+++ branches/BUF_REMOVAL/memcheck/mc_main.c Sun Aug 24 19:55:24 2014
@@ -1286,7 +1286,7 @@
/* "at least one of the addresses is invalid" */
ok = False;
for (j = 0; j < szL; j++)
- ok |= pessim[j] != V_BITS8_DEFINED;
+ ok |= pessim[j] != V_BITS64_DEFINED;
tl_assert(ok);
if (0 == (a & (szB - 1)) && n_addrs_bad < szB) {
@@ -5194,6 +5194,7 @@
Int MC_(clo_free_fill) = -1;
KeepStacktraces MC_(clo_keep_stacktraces) = KS_alloc_then_free;
Int MC_(clo_mc_level) = 2;
+Bool MC_(clo_show_mismatched_frees) = True;
static const HChar * MC_(parse_leak_heuristics_tokens) =
"-,stdstring,length64,newarray,multipleinheritance";
@@ -5338,6 +5339,9 @@
else if VG_XACT_CLO(arg, "--keep-stacktraces=none",
MC_(clo_keep_stacktraces), KS_none) {}
+ else if VG_BOOL_CLO(arg, "--show-mismatched-frees",
+ MC_(clo_show_mismatched_frees)) {}
+
else
return VG_(replacement_malloc_process_cmd_line_option)(arg);
@@ -5384,6 +5388,7 @@
" --free-fill=<hexnumber> fill free'd areas with given value\n"
" --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none\n"
" stack trace(s) to keep for malloc'd/free'd areas [alloc-then-free]\n"
+" --show-mismatched-frees=no|yes show frees that don't match the allocator? [yes]\n"
, plo_default
);
}
Modified: branches/BUF_REMOVAL/memcheck/mc_malloc_wrappers.c
==============================================================================
--- branches/BUF_REMOVAL/memcheck/mc_malloc_wrappers.c (original)
+++ branches/BUF_REMOVAL/memcheck/mc_malloc_wrappers.c Sun Aug 24 19:55:24 2014
@@ -456,6 +456,10 @@
static
void record_freemismatch_error (ThreadId tid, MC_Chunk* mc)
{
+ /* Only show such an error if the user hasn't disabled doing so. */
+ if (!MC_(clo_show_mismatched_frees))
+ return;
+
/* MC_(record_freemismatch_error) reports errors for still
allocated blocks but we are in the middle of freeing it. To
report the error correctly, we re-insert the chunk (making it
Modified: branches/BUF_REMOVAL/memcheck/mc_translate.c
==============================================================================
--- branches/BUF_REMOVAL/memcheck/mc_translate.c (original)
+++ branches/BUF_REMOVAL/memcheck/mc_translate.c Sun Aug 24 19:55:24 2014
@@ -3307,8 +3307,8 @@
case Iop_CmpUN32Fx4:
case Iop_CmpGT32Fx4:
case Iop_CmpGE32Fx4:
- case Iop_Recps32Fx4:
- case Iop_Rsqrts32Fx4:
+ case Iop_RecipStep32Fx4:
+ case Iop_RSqrtStep32Fx4:
return binary32Fx4(mce, vatom1, vatom2);
case Iop_Sub32Fx2:
@@ -3319,8 +3319,8 @@
case Iop_CmpGT32Fx2:
case Iop_CmpGE32Fx2:
case Iop_Add32Fx2:
- case Iop_Recps32Fx2:
- case Iop_Rsqrts32Fx2:
+ case Iop_RecipStep32Fx2:
+ case Iop_RSqrtStep32Fx2:
return binary32Fx2(mce, vatom1, vatom2);
case Iop_Sub32F0x4:
@@ -4005,16 +4005,15 @@
return unary64F0x2(mce, vatom);
case Iop_Sqrt32Fx8:
- case Iop_RSqrt32Fx8:
- case Iop_Recip32Fx8:
+ case Iop_RSqrtEst32Fx8:
+ case Iop_RecipEst32Fx8:
return unary32Fx8(mce, vatom);
case Iop_Sqrt64Fx4:
return unary64Fx4(mce, vatom);
case Iop_Sqrt32Fx4:
- case Iop_RSqrt32Fx4:
- case Iop_Recip32Fx4:
+ case Iop_RecipEst32Fx4:
case Iop_I32UtoFx4:
case Iop_I32StoFx4:
case Iop_QFtoI32Ux4_RZ:
@@ -4023,24 +4022,24 @@
case Iop_RoundF32x4_RP:
case Iop_RoundF32x4_RN:
case Iop_RoundF32x4_RZ:
- case Iop_Recip32x4:
+ case Iop_RecipEst32Ux4:
case Iop_Abs32Fx4:
case Iop_Neg32Fx4:
- case Iop_Rsqrte32Fx4:
+ case Iop_RSqrtEst32Fx4:
return unary32Fx4(mce, vatom);
case Iop_I32UtoFx2:
case Iop_I32StoFx2:
- case Iop_Recip32Fx2:
- case Iop_Recip32x2:
+ case Iop_RecipEst32Fx2:
+ case Iop_RecipEst32Ux2:
case Iop_Abs32Fx2:
case Iop_Neg32Fx2:
- case Iop_Rsqrte32Fx2:
+ case Iop_RSqrtEst32Fx2:
return unary32Fx2(mce, vatom);
case Iop_Sqrt32F0x4:
- case Iop_RSqrt32F0x4:
- case Iop_Recip32F0x4:
+ case Iop_RSqrtEst32F0x4:
+ case Iop_RecipEst32F0x4:
return unary32F0x4(mce, vatom);
case Iop_32UtoV128:
@@ -4089,7 +4088,7 @@
case Iop_I32UtoF64:
case Iop_NegF64:
case Iop_AbsF64:
- case Iop_Est5FRSqrt:
+ case Iop_RSqrtEst5GoodF64:
case Iop_RoundF64toF64_NEAREST:
case Iop_RoundF64toF64_NegINF:
case Iop_RoundF64toF64_PosINF:
Modified: branches/BUF_REMOVAL/memcheck/tests/vbit-test/irops.c
==============================================================================
--- branches/BUF_REMOVAL/memcheck/tests/vbit-test/irops.c (original)
+++ branches/BUF_REMOVAL/memcheck/tests/vbit-test/irops.c Sun Aug 24 19:55:24 2014
@@ -248,7 +248,7 @@
{ DEFOP(Iop_MSubF64, UNDEF_ALL), .s390x = 1, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 },
{ DEFOP(Iop_MAddF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 },
{ DEFOP(Iop_MSubF64r32, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 },
- { DEFOP(Iop_Est5FRSqrt, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 },
+ { DEFOP(Iop_RSqrtEst5GoodF64, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 0 },
{ DEFOP(Iop_RoundF64toF64_NEAREST, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 },
{ DEFOP(Iop_RoundF64toF64_NegINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 },
{ DEFOP(Iop_RoundF64toF64_PosINF, UNDEF_ALL), .s390x = 0, .amd64 = 0, .x86 = 0, .arm = 0, .ppc64 = 1, .ppc32 = 1, .mips32 = 0, .mips64 = 1 },
@@ -298,10 +298,10 @@
{ DEFOP(Iop_CmpEQ32Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_CmpGT32Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_CmpGE32Fx2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip32Fx2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recps32Fx2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Rsqrte32Fx2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Rsqrts32Fx2, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipEst32Fx2, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipStep32Fx2, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtEst32Fx2, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtStep32Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Neg32Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Abs32Fx2, UNDEF_UNKNOWN), },
/* ------------------ 64-bit SIMD Integer. ------------------ */
@@ -474,8 +474,8 @@
{ DEFOP(Iop_Reverse32sIn64_x1, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Perm8x8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_GetMSBs8x8, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip32x2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Rsqrte32x2, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipEst32Ux2, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtEst32Ux2, UNDEF_UNKNOWN), },
/* ------------------ Decimal Floating Point ------------------ */
{ DEFOP(Iop_AddD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_SubD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
@@ -569,12 +569,11 @@
{ DEFOP(Iop_PwMin32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Abs32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt32Fx4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_RSqrt32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Neg32Fx4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip32Fx4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recps32Fx4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Rsqrte32Fx4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Rsqrts32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipEst32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipStep32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtEst32Fx4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtStep32Fx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_I32UtoFx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_I32StoFx4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_FtoI32Ux4_RZ, UNDEF_UNKNOWN), },
@@ -601,9 +600,9 @@
{ DEFOP(Iop_CmpLT32F0x4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_CmpLE32F0x4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_CmpUN32F0x4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip32F0x4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipEst32F0x4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt32F0x4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_RSqrt32F0x4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtEst32F0x4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Add64Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sub64Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Mul64Fx2, UNDEF_UNKNOWN), },
@@ -616,9 +615,7 @@
{ DEFOP(Iop_CmpUN64Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Abs64Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt64Fx2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_RSqrt64Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Neg64Fx2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip64Fx2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Add64F0x2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sub64F0x2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Mul64F0x2, UNDEF_UNKNOWN), },
@@ -629,9 +626,7 @@
{ DEFOP(Iop_CmpLT64F0x2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_CmpLE64F0x2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_CmpUN64F0x2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip64F0x2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt64F0x2, UNDEF_UNKNOWN), },
- { DEFOP(Iop_RSqrt64F0x2, UNDEF_UNKNOWN), },
{ DEFOP(Iop_V128to64, UNDEF_UNKNOWN), },
{ DEFOP(Iop_V128HIto64, UNDEF_UNKNOWN), },
{ DEFOP(Iop_64HLtoV128, UNDEF_UNKNOWN), },
@@ -943,8 +938,8 @@
{ DEFOP(Iop_Perm8x16, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Perm32x4, UNDEF_UNKNOWN), },
{ DEFOP(Iop_GetMSBs8x16, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip32x4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Rsqrte32x4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipEst32Ux4, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtEst32Ux4, UNDEF_UNKNOWN), },
/* ------------------ 256-bit SIMD Integer. ------------------ */
{ DEFOP(Iop_V256to64_0, UNDEF_UNKNOWN), },
{ DEFOP(Iop_V256to64_1, UNDEF_UNKNOWN), },
@@ -1025,8 +1020,8 @@
{ DEFOP(Iop_Div32Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt32Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Sqrt64Fx4, UNDEF_UNKNOWN), },
- { DEFOP(Iop_RSqrt32Fx8, UNDEF_UNKNOWN), },
- { DEFOP(Iop_Recip32Fx8, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RSqrtEst32Fx8, UNDEF_UNKNOWN), },
+ { DEFOP(Iop_RecipEst32Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Max32Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Min32Fx8, UNDEF_UNKNOWN), },
{ DEFOP(Iop_Max64Fx4, UNDEF_UNKNOWN), },
Modified: branches/BUF_REMOVAL/memcheck/tests/vbit-test/util.c
==============================================================================
--- branches/BUF_REMOVAL/memcheck/tests/vbit-test/util.c (original)
+++ branches/BUF_REMOVAL/memcheck/tests/vbit-test/util.c Sun Aug 24 19:55:24 2014
@@ -309,8 +309,8 @@
case Iop_Sal8x8: case Iop_Sal16x4: case Iop_Sal32x2: case Iop_Sal64x1:
case Iop_QShl8x8: case Iop_QShl16x4: case Iop_QShl32x2: case Iop_QShl64x1:
case Iop_QSal8x8: case Iop_QSal16x4: case Iop_QSal32x2: case Iop_QSal64x1:
- case Iop_Recps32Fx2:
- case Iop_Rsqrts32Fx2:
+ case Iop_RecipStep32Fx2:
+ case Iop_RSqrtStep32Fx2:
BINARY(Ity_I64,Ity_I64, Ity_I64);
case Iop_ShlN32x2: case Iop_ShlN16x4: case Iop_ShlN8x8:
@@ -354,10 +354,10 @@
case Iop_Reverse8sIn16_x4:
case Iop_FtoI32Sx2_RZ: case Iop_FtoI32Ux2_RZ:
case Iop_I32StoFx2: case Iop_I32UtoFx2:
- case Iop_Recip32x2: case Iop_Recip32Fx2:
+ case Iop_RecipEst32Ux2: case Iop_RecipEst32Fx2:
case Iop_Abs32Fx2:
- case Iop_Rsqrte32Fx2:
- case Iop_Rsqrte32x2:
+ case Iop_RSqrtEst32Fx2:
+ case Iop_RSqrtEst32Ux2:
case Iop_Neg32Fx2:
case Iop_Abs8x8: case Iop_Abs16x4: case Iop_Abs32x2:
UNARY(Ity_I64, Ity_I64);
@@ -549,7 +549,7 @@
case Iop_MAddF64r32: case Iop_MSubF64r32:
QUATERNARY(ity_RMode,Ity_F64,Ity_F64,Ity_F64, Ity_F64);
- case Iop_Est5FRSqrt:
+ case Iop_RSqrtEst5GoodF64:
case Iop_RoundF64toF64_NEAREST: case Iop_RoundF64toF64_NegINF:
case Iop_RoundF64toF64_PosINF: case Iop_RoundF64toF64_ZERO:
UNARY(Ity_F64, Ity_F64);
@@ -569,8 +569,8 @@
case Iop_RoundF32x4_RN:
case Iop_RoundF32x4_RZ:
case Iop_Abs32Fx4:
- case Iop_Rsqrte32Fx4:
- case Iop_Rsqrte32x4:
+ case Iop_RSqrtEst32Fx4:
+ case Iop_RSqrtEst32Ux4:
UNARY(Ity_V128, Ity_V128);
case Iop_64HLtoV128:
@@ -693,8 +693,8 @@
case Iop_InterleaveOddLanes16x8: case Iop_InterleaveEvenLanes16x8:
case Iop_InterleaveOddLanes32x4: case Iop_InterleaveEvenLanes32x4:
case Iop_Perm8x16: case Iop_Perm32x4:
- case Iop_Recps32Fx4:
- case Iop_Rsqrts32Fx4:
+ case Iop_RecipStep32Fx4:
+ case Iop_RSqrtStep32Fx4:
BINARY(Ity_V128,Ity_V128, Ity_V128);
case Iop_PolynomialMull8x8:
@@ -704,11 +704,9 @@
BINARY(Ity_I64, Ity_I64, Ity_V128);
case Iop_NotV128:
- case Iop_Recip32Fx4: case Iop_Recip32F0x4:
- case Iop_Recip32x4:
- case Iop_Recip64Fx2: case Iop_Recip64F0x2:
- case Iop_RSqrt32Fx4: case Iop_RSqrt32F0x4:
- case Iop_RSqrt64Fx2: case Iop_RSqrt64F0x2:
+ case Iop_RecipEst32Fx4: case Iop_RecipEst32F0x4:
+ case Iop_RecipEst32Ux4:
+ case Iop_RSqrtEst32F0x4:
case Iop_Sqrt32Fx4: case Iop_Sqrt32F0x4:
case Iop_Sqrt64Fx2: case Iop_Sqrt64F0x2:
case Iop_CmpNEZ8x16: case Iop_CmpNEZ16x8:
@@ -1032,10 +1030,10 @@
BINARY(Ity_V128,Ity_V128, Ity_V256);
case Iop_NotV256:
- case Iop_RSqrt32Fx8:
+ case Iop_RSqrtEst32Fx8:
case Iop_Sqrt32Fx8:
case Iop_Sqrt64Fx4:
- case Iop_Recip32Fx8:
+ case Iop_RecipEst32Fx8:
case Iop_CmpNEZ64x4: case Iop_CmpNEZ32x8:
UNARY(Ity_V256, Ity_V256);
Modified: branches/BUF_REMOVAL/none/tests/filter_shell_output
==============================================================================
--- branches/BUF_REMOVAL/none/tests/filter_shell_output (original)
+++ branches/BUF_REMOVAL/none/tests/filter_shell_output Sun Aug 24 19:55:24 2014
@@ -1,3 +1,4 @@
#!/bin/sh
-"$(dirname $0)"/filter_linenos | sed 's/Is a directory/is a directory/'
+"$(dirname $0)"/filter_linenos | sed 's/Is a directory/is a directory/' \
+ | sed 's/cannot execute binary file: Exec format error/cannot execute binary file/'
|