You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
1
(5) |
2
(4) |
3
(8) |
4
(11) |
5
(23) |
|
6
(14) |
7
(17) |
8
(10) |
9
(8) |
10
(13) |
11
(10) |
12
(15) |
|
13
(12) |
14
(8) |
15
(15) |
16
(10) |
17
(19) |
18
(10) |
19
(5) |
|
20
(9) |
21
(8) |
22
(7) |
23
(4) |
24
(15) |
25
(6) |
26
(11) |
|
27
(5) |
28
(11) |
29
(9) |
30
(9) |
31
(4) |
|
|
|
From: <sv...@va...> - 2011-03-28 21:19:08
|
Author: sewardj
Date: 2011-03-28 22:19:00 +0100 (Mon, 28 Mar 2011)
New Revision: 11675
Log:
Remove a bunch more warnings generated by gcc-4.6 about dead
assignments ("[-Wunused-but-set-variable]"), in the test suite.
Modified:
trunk/callgrind/callgrind.h
trunk/include/valgrind.h
trunk/memcheck/memcheck.h
trunk/memcheck/tests/custom_alloc.c
Modified: trunk/callgrind/callgrind.h
===================================================================
--- trunk/callgrind/callgrind.h 2011-03-28 20:33:52 UTC (rev 11674)
+++ trunk/callgrind/callgrind.h 2011-03-28 21:19:00 UTC (rev 11675)
@@ -83,7 +83,7 @@
/* Dump current state of cost centers, and zero them afterwards */
#define CALLGRIND_DUMP_STATS \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__DUMP_STATS, \
0, 0, 0, 0, 0); \
@@ -94,7 +94,7 @@
the dump. This string is written as a description field into the
profile data dump. */
#define CALLGRIND_DUMP_STATS_AT(pos_str) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__DUMP_STATS_AT, \
pos_str, 0, 0, 0, 0); \
@@ -102,7 +102,7 @@
/* Zero cost centers */
#define CALLGRIND_ZERO_STATS \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__ZERO_STATS, \
0, 0, 0, 0, 0); \
@@ -113,7 +113,7 @@
should be noted or if they are to be ignored. Events are noted
by increment of counters in a cost center */
#define CALLGRIND_TOGGLE_COLLECT \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__TOGGLE_COLLECT, \
0, 0, 0, 0, 0); \
@@ -124,7 +124,7 @@
this will lead to an artifical cache warmup phase afterwards with
cache misses which would not have happened in reality. */
#define CALLGRIND_START_INSTRUMENTATION \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__START_INSTRUMENTATION, \
0, 0, 0, 0, 0); \
@@ -138,7 +138,7 @@
To start Callgrind in this mode to ignore the setup phase, use
the option "--instr-atstart=no". */
#define CALLGRIND_STOP_INSTRUMENTATION \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__STOP_INSTRUMENTATION, \
0, 0, 0, 0, 0); \
Modified: trunk/include/valgrind.h
===================================================================
--- trunk/include/valgrind.h 2011-03-28 20:33:52 UTC (rev 11674)
+++ trunk/include/valgrind.h 2011-03-28 21:19:00 UTC (rev 11675)
@@ -4955,7 +4955,7 @@
since it provides a way to make sure valgrind will retranslate the
invalidated area. Returns no value. */
#define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__DISCARD_TRANSLATIONS, \
_qzz_addr, _qzz_len, 0, 0, 0); \
@@ -5217,7 +5217,7 @@
Ignored if addr == 0.
*/
#define VALGRIND_MALLOCLIKE_BLOCK(addr, sizeB, rzB, is_zeroed) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MALLOCLIKE_BLOCK, \
addr, sizeB, rzB, is_zeroed, 0); \
@@ -5226,10 +5226,10 @@
/* See the comment for VALGRIND_MALLOCLIKE_BLOCK for details.
Ignored if addr == 0.
*/
-#define VALGRIND_RESIZEINPLACE_BLOCK(addr, oldSizeB, newSizeB, rzB)\
- {unsigned int _qzz_res; \
+#define VALGRIND_RESIZEINPLACE_BLOCK(addr, oldSizeB, newSizeB, rzB) \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
- VG_USERREQ__RESIZEINPLACE_BLOCK, \
+ VG_USERREQ__RESIZEINPLACE_BLOCK, \
addr, oldSizeB, newSizeB, rzB, 0); \
}
@@ -5237,7 +5237,7 @@
Ignored if addr == 0.
*/
#define VALGRIND_FREELIKE_BLOCK(addr, rzB) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__FREELIKE_BLOCK, \
addr, rzB, 0, 0, 0); \
@@ -5245,7 +5245,7 @@
/* Create a memory pool. */
#define VALGRIND_CREATE_MEMPOOL(pool, rzB, is_zeroed) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__CREATE_MEMPOOL, \
pool, rzB, is_zeroed, 0, 0); \
@@ -5253,7 +5253,7 @@
/* Destroy a memory pool. */
#define VALGRIND_DESTROY_MEMPOOL(pool) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__DESTROY_MEMPOOL, \
pool, 0, 0, 0, 0); \
@@ -5261,7 +5261,7 @@
/* Associate a piece of memory with a memory pool. */
#define VALGRIND_MEMPOOL_ALLOC(pool, addr, size) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MEMPOOL_ALLOC, \
pool, addr, size, 0, 0); \
@@ -5269,7 +5269,7 @@
/* Disassociate a piece of memory from a memory pool. */
#define VALGRIND_MEMPOOL_FREE(pool, addr) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MEMPOOL_FREE, \
pool, addr, 0, 0, 0); \
@@ -5277,7 +5277,7 @@
/* Disassociate any pieces outside a particular range. */
#define VALGRIND_MEMPOOL_TRIM(pool, addr, size) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MEMPOOL_TRIM, \
pool, addr, size, 0, 0); \
@@ -5285,7 +5285,7 @@
/* Resize and/or move a piece associated with a memory pool. */
#define VALGRIND_MOVE_MEMPOOL(poolA, poolB) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MOVE_MEMPOOL, \
poolA, poolB, 0, 0, 0); \
@@ -5293,7 +5293,7 @@
/* Resize and/or move a piece associated with a memory pool. */
#define VALGRIND_MEMPOOL_CHANGE(pool, addrA, addrB, size) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MEMPOOL_CHANGE, \
pool, addrA, addrB, size, 0); \
@@ -5322,7 +5322,7 @@
/* Unmark the piece of memory associated with a stack id as being a
stack. */
#define VALGRIND_STACK_DEREGISTER(id) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__STACK_DEREGISTER, \
id, 0, 0, 0, 0); \
@@ -5330,7 +5330,7 @@
/* Change the start and end address of the stack id. */
#define VALGRIND_STACK_CHANGE(id, start, end) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__STACK_CHANGE, \
id, start, end, 0, 0); \
@@ -5338,7 +5338,7 @@
/* Load PDB debug info for Wine PE image_map. */
#define VALGRIND_LOAD_PDB_DEBUGINFO(fd, ptr, total_size, delta) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__LOAD_PDB_DEBUGINFO, \
fd, ptr, total_size, delta, 0); \
@@ -5349,7 +5349,7 @@
result will be dumped in there and is guaranteed to be zero
terminated. If no info is found, the first byte is set to zero. */
#define VALGRIND_MAP_IP_TO_SRCLOC(addr, buf64) \
- {unsigned int _qzz_res; \
+ {unsigned int _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__MAP_IP_TO_SRCLOC, \
addr, buf64, 0, 0, 0); \
Modified: trunk/memcheck/memcheck.h
===================================================================
--- trunk/memcheck/memcheck.h 2011-03-28 20:33:52 UTC (rev 11674)
+++ trunk/memcheck/memcheck.h 2011-03-28 21:19:00 UTC (rev 11675)
@@ -184,7 +184,7 @@
/* Do a full memory leak check (like --leak-check=full) mid-execution. */
#define VALGRIND_DO_LEAK_CHECK \
- {unsigned long _qzz_res; \
+ {unsigned long _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__DO_LEAK_CHECK, \
0, 0, 0, 0, 0); \
@@ -192,7 +192,7 @@
/* Do a summary memory leak check (like --leak-check=summary) mid-execution. */
#define VALGRIND_DO_QUICK_LEAK_CHECK \
- {unsigned long _qzz_res; \
+ {unsigned long _qzz_res __attribute((unused)); \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
VG_USERREQ__DO_LEAK_CHECK, \
1, 0, 0, 0, 0); \
@@ -207,7 +207,7 @@
are. We also initialise '_qzz_leaked', etc because
VG_USERREQ__COUNT_LEAKS doesn't mark the values returned as
defined. */ \
- {unsigned long _qzz_res; \
+ {unsigned long _qzz_res __attribute((unused)); \
unsigned long _qzz_leaked = 0, _qzz_dubious = 0; \
unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
@@ -229,7 +229,7 @@
are. We also initialise '_qzz_leaked', etc because
VG_USERREQ__COUNT_LEAKS doesn't mark the values returned as
defined. */ \
- {unsigned long _qzz_res; \
+ {unsigned long _qzz_res __attribute((unused)); \
unsigned long _qzz_leaked = 0, _qzz_dubious = 0; \
unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; \
VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
Modified: trunk/memcheck/tests/custom_alloc.c
===================================================================
--- trunk/memcheck/tests/custom_alloc.c 2011-03-28 20:33:52 UTC (rev 11674)
+++ trunk/memcheck/tests/custom_alloc.c 2011-03-28 21:19:00 UTC (rev 11675)
@@ -63,7 +63,7 @@
void make_leak(void)
{
- int* array2 = custom_alloc(sizeof(int) * 10);
+ int* array2 __attribute__((unused)) = custom_alloc(sizeof(int) * 10);
array2 = 0; // leak
return;
}
|
|
From: Christian B. <bor...@de...> - 2011-03-28 20:35:11
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z10 (s390x) ) Started at 2011-03-28 22:10:01 CEST Ended at 2011-03-28 22:35:01 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 457 tests, 6 stderr failures, 0 stdout failures, 0 post failures == none/tests/faultstatus (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2011-03-28 20:34:01
|
Author: sewardj
Date: 2011-03-28 21:33:52 +0100 (Mon, 28 Mar 2011)
New Revision: 11674
Log:
Remove a bunch more warnings generated by gcc-4.6 about dead
assignments ("[-Wunused-but-set-variable]"), on ppc32-linux and
ppc64-linux.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/readelf.c
trunk/coregrind/m_initimg/initimg-linux.c
trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -2277,7 +2277,7 @@
{
CFSICacheEnt* ce;
DebugInfo* di;
- DiCfSI* cfsi;
+ DiCfSI* cfsi __attribute__((unused));
ce = cfsi_cache__find(ip);
@@ -2326,12 +2326,11 @@
Addr min_accessible,
Addr max_accessible )
{
- Bool ok;
DebugInfo* di;
DiCfSI* cfsi = NULL;
Addr cfa, ipHere = 0;
CFSICacheEnt* ce;
- CfiExprEvalContext eec;
+ CfiExprEvalContext eec __attribute__((unused));
D3UnwindRegs uregsPrev;
# if defined(VGA_x86) || defined(VGA_amd64)
@@ -2392,7 +2391,7 @@
eec.uregs = uregsHere; \
eec.min_accessible = min_accessible; \
eec.max_accessible = max_accessible; \
- ok = True; \
+ Bool ok = True; \
_prev = evalCfiExpr(di->cfsi_exprs, _off, &eec, &ok ); \
if (!ok) return False; \
break; \
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -2384,7 +2384,7 @@
Int srcix )
{
CfiExpr* src;
- Int cpL, cpR, cpA, dwreg;
+ Int cpL, cpR, cpA;
XArray* srcxa = srcuc->exprs;
vg_assert(srcxa);
vg_assert(dstxa);
@@ -2412,8 +2412,9 @@
/* should not see these in input (are created only by this
conversion step!) */
VG_(core_panic)("copy_convert_CfiExpr_tree: CfiReg in input");
- case Cex_DwReg:
+ case Cex_DwReg: {
/* This is the only place where the conversion can fail. */
+ Int dwreg __attribute__((unused));
dwreg = src->Cex.DwReg.reg;
# if defined(VGA_x86) || defined(VGA_amd64)
if (dwreg == SP_REG)
@@ -2442,6 +2443,7 @@
# endif
/* else we must fail - can't represent the reg */
return -1;
+ }
default:
VG_(core_panic)("copy_convert_CfiExpr_tree: default");
}
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_debuginfo/readelf.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -1985,10 +1985,10 @@
UChar* shdr_strtab_dimg = NULL;
/* SVMAs covered by rx and rw segments and corresponding bias. */
- Addr rx_dsvma_base = 0;
+ /* Addr rx_dsvma_base = 0; */ /* UNUSED */
Addr rx_dsvma_limit = 0;
PtrdiffT rx_dbias = 0;
- Addr rw_dsvma_base = 0;
+ /* Addr rw_dsvma_base = 0; */ /* UNUSED */
Addr rw_dsvma_limit = 0;
PtrdiffT rw_dbias = 0;
@@ -2045,15 +2045,16 @@
&& phdr->p_offset >= di->rx_map_foff
&& phdr->p_offset < di->rx_map_foff + di->rx_map_size
&& phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size) {
- rx_dsvma_base = phdr->p_vaddr;
+ /* rx_dsvma_base = phdr->p_vaddr; */ /* UNUSED */
rx_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
rx_dbias = di->rx_map_avma - di->rx_map_foff + phdr->p_offset - phdr->p_vaddr;
}
- else if (rw_dsvma_limit == 0
- && phdr->p_offset >= di->rw_map_foff
- && phdr->p_offset < di->rw_map_foff + di->rw_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
- rw_dsvma_base = phdr->p_vaddr;
+ else
+ if (rw_dsvma_limit == 0
+ && phdr->p_offset >= di->rw_map_foff
+ && phdr->p_offset < di->rw_map_foff + di->rw_map_size
+ && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
+ /* rw_dsvma_base = phdr->p_vaddr; */ /* UNUSED */
rw_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
rw_dbias = di->rw_map_avma - di->rw_map_foff + phdr->p_offset - phdr->p_vaddr;
}
Modified: trunk/coregrind/m_initimg/initimg-linux.c
===================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_initimg/initimg-linux.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -620,7 +620,6 @@
# endif
for (; orig_auxv->a_type != AT_NULL; auxv++, orig_auxv++) {
- const NSegment *ehdrseg;
/* copy the entry... */
*auxv = *orig_auxv;
@@ -725,13 +724,14 @@
break;
# if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64_linux)
- case AT_SYSINFO_EHDR:
+ case AT_SYSINFO_EHDR: {
/* Trash this, because we don't reproduce it */
- ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr);
+ const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr);
vg_assert(ehdrseg);
VG_(am_munmap_valgrind)(ehdrseg->start, ehdrseg->end - ehdrseg->start);
auxv->a_type = AT_IGNORE;
break;
+ }
# endif
case AT_RANDOM:
Modified: trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -189,7 +189,7 @@
Addr sp;
ThreadState* tst;
Int sigNo = siginfo->si_signo;
- Addr faultaddr;
+ /* Addr faultaddr; */ /* UNUSED */
struct rt_sigframe* frame;
/* Stack must be 16-byte aligned */
@@ -225,9 +225,11 @@
VG_TRACK( post_mem_write, Vg_CoreSignal, tid,
sp, sizeof(UWord) );
+ /* UNUSED:
faultaddr = (Addr)siginfo->_sifields._sigfault._addr;
if (sigNo == VKI_SIGILL && siginfo->si_code > 0)
faultaddr = tst->arch.vex.guest_CIA;
+ */
VG_(memcpy)(&frame->info, siginfo, sizeof(*siginfo));
VG_TRACK( post_mem_write, Vg_CoreSignal, tid,
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -1061,7 +1061,7 @@
/* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for
an explanation of what follows. */
- ThreadState* tst;
+ //ThreadState* tst;
PRINT("sys_sigreturn ( )");
vg_assert(VG_(is_valid_tid)(tid));
@@ -1070,7 +1070,7 @@
///* Adjust esp to point to start of frame; skip back up over
// sigreturn sequence's "popl %eax" and handler ret addr */
- tst = VG_(get_ThreadState)(tid);
+ //tst = VG_(get_ThreadState)(tid);
//tst->arch.vex.guest_ESP -= sizeof(Addr)+sizeof(Word);
// Should we do something equivalent on ppc32? Who knows.
@@ -1096,7 +1096,7 @@
/* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for
an explanation of what follows. */
- ThreadState* tst;
+ //ThreadState* tst;
PRINT("rt_sigreturn ( )");
vg_assert(VG_(is_valid_tid)(tid));
@@ -1105,7 +1105,7 @@
///* Adjust esp to point to start of frame; skip back up over handler
// ret addr */
- tst = VG_(get_ThreadState)(tid);
+ //tst = VG_(get_ThreadState)(tid);
//tst->arch.vex.guest_ESP -= sizeof(Addr);
// Should we do something equivalent on ppc32? Who knows.
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2011-03-28 16:26:42 UTC (rev 11673)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2011-03-28 20:33:52 UTC (rev 11674)
@@ -1046,7 +1046,7 @@
/* See comments on PRE(sys_rt_sigreturn) in syswrap-amd64-linux.c for
an explanation of what follows. */
- ThreadState* tst;
+ //ThreadState* tst;
PRINT("sys_rt_sigreturn ( )");
vg_assert(VG_(is_valid_tid)(tid));
@@ -1055,7 +1055,7 @@
///* Adjust esp to point to start of frame; skip back up over handler
// ret addr */
- tst = VG_(get_ThreadState)(tid);
+ //tst = VG_(get_ThreadState)(tid);
//tst->arch.vex.guest_ESP -= sizeof(Addr);
// Should we do something equivalent on ppc64-linux? Who knows.
|
|
From: Christian B. <bor...@de...> - 2011-03-28 20:29:34
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-03-28 22:10:01 CEST Ended at 2011-03-28 22:28:36 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 441 tests, 6 stderr failures, 0 stdout failures, 0 post failures == helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/annotate_spinlock (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2011-03-28 16:26:54
|
Author: sewardj
Date: 2011-03-28 17:26:42 +0100 (Mon, 28 Mar 2011)
New Revision: 11673
Log:
Fix up most but not all warnings generated by gcc-4.6 about
dead assignments ("[-Wunused-but-set-variable]").
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/readpdb.c
trunk/coregrind/m_debuginfo/readstabs.c
trunk/coregrind/m_debuglog.c
trunk/coregrind/m_libcprint.c
trunk/coregrind/m_machine.c
trunk/coregrind/m_main.c
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
trunk/coregrind/m_signals.c
trunk/coregrind/m_translate.c
trunk/coregrind/m_ume/elf.c
trunk/coregrind/vg_preloaded.c
trunk/drd/drd_pthread_intercepts.c
trunk/drd/drd_qtcore_intercepts.c
trunk/exp-dhat/dh_main.c
trunk/helgrind/hg_intercepts.c
trunk/memcheck/mc_replace_strmem.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -3410,7 +3410,6 @@
/* This is a derivation of consider_vars_in_frame() above. */
Word i;
DebugInfo* di;
- RegSummary regs;
Bool debug = False;
XArray* res = VG_(newXA)( ML_(dinfo_zalloc), "di.debuginfo.dgsbai.1",
@@ -3462,9 +3461,6 @@
variables on each such address range found are in scope right
now. Don't descend to level zero as that is the global
scope. */
- regs.ip = ip;
- regs.sp = 0;
- regs.fp = 0;
/* "for each scope, working outwards ..." */
for (i = VG_(sizeXA)(di->varinfo) - 1; i >= 1; i--) {
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -990,7 +990,7 @@
UInt acode, abcode;
ULong atoffs, blklen;
Int level;
- UShort ver;
+ /* UShort ver; */
UChar addr_size;
UChar* p = unitblock_img;
@@ -1007,7 +1007,7 @@
p += ui->dw64 ? 12 : 4;
/* version should be 2, 3 or 4 */
- ver = *((UShort*)p);
+ /* ver = *((UShort*)p); */
p += 2;
/* get offset in abbrev */
Modified: trunk/coregrind/m_debuginfo/readpdb.c
===================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_debuginfo/readpdb.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -2101,21 +2101,21 @@
*/
file = symbols_image + header_size;
while ( file - symbols_image < header_size + symbols.module_size ) {
- int file_nr, file_index, symbol_size, lineno_size;
+ int file_nr, /* file_index, */ symbol_size, lineno_size;
char *file_name;
if ( symbols.version < 19970000 ) {
PDB_SYMBOL_FILE *sym_file = (PDB_SYMBOL_FILE *) file;
file_nr = sym_file->file;
file_name = sym_file->filename;
- file_index = sym_file->range.index;
+ /* file_index = sym_file->range.index; */ /* UNUSED */
symbol_size = sym_file->symbol_size;
lineno_size = sym_file->lineno_size;
} else {
PDB_SYMBOL_FILE_EX *sym_file = (PDB_SYMBOL_FILE_EX *) file;
file_nr = sym_file->file;
file_name = sym_file->filename;
- file_index = sym_file->range.index;
+ /* file_index = sym_file->range.index; */ /* UNUSED */
symbol_size = sym_file->symbol_size;
lineno_size = sym_file->lineno_size;
}
Modified: trunk/coregrind/m_debuginfo/readstabs.c
===================================================================
--- trunk/coregrind/m_debuginfo/readstabs.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_debuginfo/readstabs.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -326,13 +326,11 @@
case N_FUN: { /* function start/end */
Addr addr = 0; /* end address for prev line/scope */
- Bool newfunc = False;
/* if this the end of the function or we haven't
previously finished the previous function... */
if (*string == '\0' || func.start != 0) {
/* end of function */
- newfunc = False;
line.first = False;
/* end line at end of function */
@@ -346,7 +344,6 @@
if (*string != '\0') {
/* new function */
- newfunc = True;
line.first = True;
/* line ends at start of next function */
Modified: trunk/coregrind/m_debuglog.c
===================================================================
--- trunk/coregrind/m_debuglog.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_debuglog.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -1013,7 +1013,7 @@
void VG_(debugLog) ( Int level, const HChar* modulename,
const HChar* format, ... )
{
- UInt ret, pid;
+ UInt pid;
Int indent, depth, i;
va_list vargs;
printf_buf buf;
@@ -1045,7 +1045,7 @@
va_start(vargs,format);
- ret = VG_(debugLog_vprintf) ( add_to_buf, &buf, format, vargs );
+ (void) VG_(debugLog_vprintf) ( add_to_buf, &buf, format, vargs );
if (buf.n > 0) {
emit( buf.buf, local_strlen(buf.buf) );
Modified: trunk/coregrind/m_libcprint.c
===================================================================
--- trunk/coregrind/m_libcprint.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_libcprint.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -233,14 +233,13 @@
UInt VG_(vsnprintf) ( Char* buf, Int size, const HChar *format, va_list vargs )
{
- Int ret;
snprintf_buf_t b;
b.buf = buf;
b.buf_size = size < 0 ? 0 : size;
b.buf_used = 0;
- ret = VG_(debugLog_vprintf)
- ( add_to__snprintf_buf, &b, format, vargs );
+ (void) VG_(debugLog_vprintf)
+ ( add_to__snprintf_buf, &b, format, vargs );
return b.buf_used;
}
Modified: trunk/coregrind/m_machine.c
===================================================================
--- trunk/coregrind/m_machine.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_machine.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -506,7 +506,7 @@
#if defined(VGA_x86)
{ Bool have_sse1, have_sse2, have_cx8, have_lzcnt;
- UInt eax, ebx, ecx, edx, max_basic, max_extended;
+ UInt eax, ebx, ecx, edx, max_extended;
UChar vstr[13];
vstr[0] = 0;
@@ -521,7 +521,6 @@
/* Get processor ID string, and max basic/extended index
values. */
- max_basic = eax;
VG_(memcpy)(&vstr[0], &ebx, 4);
VG_(memcpy)(&vstr[4], &edx, 4);
VG_(memcpy)(&vstr[8], &ecx, 4);
@@ -575,9 +574,9 @@
}
#elif defined(VGA_amd64)
- { Bool have_sse1, have_sse2, have_sse3, have_cx8, have_cx16;
+ { Bool have_sse3, have_cx8, have_cx16;
Bool have_lzcnt;
- UInt eax, ebx, ecx, edx, max_basic, max_extended;
+ UInt eax, ebx, ecx, edx, max_extended;
UChar vstr[13];
vstr[0] = 0;
@@ -592,7 +591,6 @@
/* Get processor ID string, and max basic/extended index
values. */
- max_basic = eax;
VG_(memcpy)(&vstr[0], &ebx, 4);
VG_(memcpy)(&vstr[4], &edx, 4);
VG_(memcpy)(&vstr[8], &ecx, 4);
@@ -604,8 +602,7 @@
/* get capabilities bits into edx */
VG_(cpuid)(1, &eax, &ebx, &ecx, &edx);
- have_sse1 = (edx & (1<<25)) != 0; /* True => have sse insns */
- have_sse2 = (edx & (1<<26)) != 0; /* True => have sse2 insns */
+ // we assume that SSE1 and SSE2 are available by default
have_sse3 = (ecx & (1<<0)) != 0; /* True => have sse3 insns */
// ssse3 is ecx:9
// sse41 is ecx:19
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_main.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -1811,8 +1811,7 @@
nul[0] = 0;
exename = VG_(args_the_exename) ? VG_(args_the_exename)
: "unknown_exename";
- VG_(write)(fd, VG_(args_the_exename),
- VG_(strlen)( VG_(args_the_exename) ));
+ VG_(write)(fd, exename, VG_(strlen)( exename ));
VG_(write)(fd, nul, 1);
for (i = 0; i < VG_(sizeXA)( VG_(args_for_client) ); i++) {
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -850,7 +850,7 @@
__attribute__((constructor))
static void init(void)
{
- int res;
+ int res __attribute__((unused));
// This doesn't look thread-safe, but it should be ok... Bart says:
//
Modified: trunk/coregrind/m_signals.c
===================================================================
--- trunk/coregrind/m_signals.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_signals.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -1414,8 +1414,10 @@
VG_(sigprocmask)(VKI_SIG_UNBLOCK, &mask, &origmask);
r = VG_(kill)(VG_(getpid)(), sigNo);
+# if defined(VGO_linux)
/* This sometimes fails with EPERM on Darwin. I don't know why. */
- /* vg_assert(r == 0); */
+ vg_assert(r == 0);
+# endif
VG_(convert_sigaction_fromK_to_toK)( &origsa, &origsa2 );
VG_(sigaction)(sigNo, &origsa2, NULL);
Modified: trunk/coregrind/m_translate.c
===================================================================
--- trunk/coregrind/m_translate.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_translate.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -1258,8 +1258,7 @@
Addr64 addr;
T_Kind kind;
Int tmpbuf_used, verbosity, i;
- Bool notrace_until_done, do_self_check;
- UInt notrace_until_limit = 0;
+ Bool do_self_check;
Bool (*preamble_fn)(void*,IRSB*);
VexArch vex_arch;
VexArchInfo vex_archinfo;
@@ -1320,15 +1319,6 @@
addr, name2 );
}
- /* If codegen tracing, don't start tracing until
- notrace_until_limit blocks have gone by. This avoids printing
- huge amounts of useless junk when all we want to see is the last
- few blocks translated prior to a failure. Set
- notrace_until_limit to be the number of translations to be made
- before --trace-codegen= style printing takes effect. */
- notrace_until_done
- = VG_(get_bbs_translated)() >= notrace_until_limit;
-
if (!debugging_translation)
VG_TRACK( pre_mem_read, Vg_CoreTranslate,
tid, "(translator)", addr, 1 );
Modified: trunk/coregrind/m_ume/elf.c
===================================================================
--- trunk/coregrind/m_ume/elf.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/m_ume/elf.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -305,7 +305,7 @@
ESZ(Addr) maxaddr = 0; /* highest mapped address */
ESZ(Addr) interp_addr = 0; /* interpreter (ld.so) address */
ESZ(Word) interp_size = 0; /* interpreter size */
- ESZ(Word) interp_align = VKI_PAGE_SIZE;
+ /* ESZ(Word) interp_align = VKI_PAGE_SIZE; */ /* UNUSED */
Int i;
void *entry;
ESZ(Addr) ebase = 0;
@@ -395,7 +395,7 @@
if (!baseaddr_set) {
interp_addr = iph->p_vaddr;
- interp_align = iph->p_align;
+ /* interp_align = iph->p_align; */ /* UNUSED */
baseaddr_set = 1;
}
@@ -504,6 +504,7 @@
#else
info->init_ip = (Addr)entry;
info->init_toc = 0; /* meaningless on this platform */
+ (void) interp_offset; /* stop gcc complaining it is unused */
#endif
VG_(free)(e->p);
VG_(free)(e);
Modified: trunk/coregrind/vg_preloaded.c
===================================================================
--- trunk/coregrind/vg_preloaded.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/coregrind/vg_preloaded.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -56,7 +56,7 @@
void VG_NOTIFY_ON_LOAD(freeres)( void );
void VG_NOTIFY_ON_LOAD(freeres)( void )
{
- int res;
+ int res __attribute__((unused));
#if !defined(__UCLIBC__) && !defined(VGO_aix5)
extern void __libc_freeres(void);
__libc_freeres();
@@ -77,7 +77,7 @@
{
OrigFn fn;
Addr result = 0;
- int res;
+ int res __attribute__((unused));
/* Call the original indirect function and get it's result */
VALGRIND_GET_ORIG_FN(fn);
Modified: trunk/drd/drd_pthread_intercepts.c
===================================================================
--- trunk/drd/drd_pthread_intercepts.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/drd/drd_pthread_intercepts.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -235,7 +235,7 @@
*/
static void DRD_(set_joinable)(const pthread_t tid, const int joinable)
{
- int res;
+ int res __attribute__((unused));
assert(joinable == 0 || joinable == 1);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__SET_JOINABLE,
tid, joinable, 0, 0, 0);
@@ -244,7 +244,7 @@
/** Tell DRD that the calling thread is about to enter pthread_create(). */
static __always_inline void DRD_(entering_pthread_create)(void)
{
- int res;
+ int res __attribute__((unused));
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__ENTERING_PTHREAD_CREATE,
0, 0, 0, 0, 0);
}
@@ -252,7 +252,7 @@
/** Tell DRD that the calling thread has left pthread_create(). */
static __always_inline void DRD_(left_pthread_create)(void)
{
- int res;
+ int res __attribute__((unused));
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__LEFT_PTHREAD_CREATE,
0, 0, 0, 0, 0);
}
@@ -263,7 +263,7 @@
*/
static void* DRD_(thread_wrapper)(void* arg)
{
- int res;
+ int res __attribute__((unused));
DrdPosixThreadArgs* arg_ptr;
DrdPosixThreadArgs arg_copy;
@@ -348,7 +348,7 @@
*/
static void DRD_(set_main_thread_state)(void)
{
- int res;
+ int res __attribute__((unused));
// Make sure that DRD knows about the main thread's POSIX thread ID.
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__SET_PTHREADID,
@@ -377,7 +377,7 @@
int pthread_create_intercept(pthread_t* thread, const pthread_attr_t* attr,
void* (*start)(void*), void* arg)
{
- int res;
+ int res __attribute__((unused));
int ret;
OrigFn fn;
DrdPosixThreadArgs thread_args;
@@ -428,7 +428,7 @@
int pthread_join_intercept(pthread_t pt_joinee, void **thread_return)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
@@ -467,7 +467,7 @@
static __always_inline
int pthread_cancel_intercept(pthread_t pt_thread)
{
- int res;
+ int res __attribute__((unused));
int ret;
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
@@ -509,7 +509,7 @@
const pthread_mutexattr_t* attr)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
int mt;
VALGRIND_GET_ORIG_FN(fn);
@@ -533,7 +533,7 @@
int pthread_mutex_destroy_intercept(pthread_mutex_t* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY,
@@ -551,7 +551,7 @@
int pthread_mutex_lock_intercept(pthread_mutex_t* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -569,7 +569,7 @@
int pthread_mutex_trylock_intercept(pthread_mutex_t* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -588,7 +588,7 @@
const struct timespec *abs_timeout)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -607,7 +607,7 @@
int pthread_mutex_unlock_intercept(pthread_mutex_t *mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1,
@@ -628,7 +628,7 @@
const pthread_condattr_t* attr)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_INIT,
@@ -647,7 +647,7 @@
int pthread_cond_destroy_intercept(pthread_cond_t* cond)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_DESTROY,
@@ -665,7 +665,7 @@
int pthread_cond_wait_intercept(pthread_cond_t *cond, pthread_mutex_t *mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_WAIT,
@@ -686,7 +686,7 @@
const struct timespec* abstime)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_WAIT,
@@ -712,7 +712,7 @@
int pthread_cond_signal_intercept(pthread_cond_t* cond)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_SIGNAL,
@@ -730,7 +730,7 @@
int pthread_cond_broadcast_intercept(pthread_cond_t* cond)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_COND_BROADCAST,
@@ -749,7 +749,7 @@
int pthread_spin_init_intercept(pthread_spinlock_t *spinlock, int pshared)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SPIN_INIT_OR_UNLOCK,
@@ -767,7 +767,7 @@
int pthread_spin_destroy_intercept(pthread_spinlock_t *spinlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY,
@@ -785,7 +785,7 @@
int pthread_spin_lock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -803,7 +803,7 @@
int pthread_spin_trylock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -821,7 +821,7 @@
int pthread_spin_unlock_intercept(pthread_spinlock_t *spinlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SPIN_INIT_OR_UNLOCK,
@@ -844,7 +844,7 @@
unsigned count)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_INIT,
@@ -863,7 +863,7 @@
int pthread_barrier_destroy_intercept(pthread_barrier_t* barrier)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_DESTROY,
@@ -881,7 +881,7 @@
int pthread_barrier_wait_intercept(pthread_barrier_t* barrier)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_BARRIER_WAIT,
@@ -903,7 +903,7 @@
int sem_init_intercept(sem_t *sem, int pshared, unsigned int value)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_INIT,
@@ -921,7 +921,7 @@
int sem_destroy_intercept(sem_t *sem)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_DESTROY,
@@ -939,7 +939,7 @@
unsigned int value)
{
sem_t *ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_OPEN,
@@ -958,7 +958,7 @@
static __always_inline int sem_close_intercept(sem_t *sem)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_CLOSE,
@@ -974,7 +974,7 @@
static __always_inline int sem_wait_intercept(sem_t *sem)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_WAIT,
@@ -990,7 +990,7 @@
static __always_inline int sem_trywait_intercept(sem_t *sem)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_WAIT,
@@ -1007,7 +1007,7 @@
int sem_timedwait_intercept(sem_t *sem, const struct timespec *abs_timeout)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_WAIT,
@@ -1025,7 +1025,7 @@
static __always_inline int sem_post_intercept(sem_t *sem)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_SEM_POST,
@@ -1043,7 +1043,7 @@
const pthread_rwlockattr_t* attr)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_INIT,
@@ -1061,7 +1061,7 @@
int pthread_rwlock_destroy_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
CALL_FN_W_W(ret, fn, rwlock);
@@ -1078,7 +1078,7 @@
int pthread_rwlock_rdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK,
@@ -1097,7 +1097,7 @@
int pthread_rwlock_wrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK,
@@ -1116,7 +1116,7 @@
int pthread_rwlock_timedrdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK,
@@ -1135,7 +1135,7 @@
int pthread_rwlock_timedwrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK,
@@ -1154,7 +1154,7 @@
int pthread_rwlock_tryrdlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_RDLOCK,
@@ -1173,7 +1173,7 @@
int pthread_rwlock_trywrlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_WRLOCK,
@@ -1192,7 +1192,7 @@
int pthread_rwlock_unlock_intercept(pthread_rwlock_t* rwlock)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_UNLOCK,
Modified: trunk/drd/drd_qtcore_intercepts.c
===================================================================
--- trunk/drd/drd_qtcore_intercepts.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/drd/drd_qtcore_intercepts.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -90,7 +90,7 @@
qt_mutex_mode mode)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_INIT,
@@ -106,7 +106,7 @@
qt_mutex_mode mode)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_INIT,
@@ -121,7 +121,7 @@
void* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY,
@@ -136,7 +136,7 @@
void** mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_MUTEX_DESTROY,
@@ -151,7 +151,7 @@
void* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -166,7 +166,7 @@
void* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -183,7 +183,7 @@
int timeout_ms)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__PRE_MUTEX_LOCK,
@@ -199,7 +199,7 @@
void* mutex)
{
int ret;
- int res;
+ int res __attribute__((unused));
OrigFn fn;
VALGRIND_GET_ORIG_FN(fn);
VALGRIND_DO_CLIENT_REQUEST(res, -1,
Modified: trunk/exp-dhat/dh_main.c
===================================================================
--- trunk/exp-dhat/dh_main.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/exp-dhat/dh_main.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -452,7 +452,7 @@
Bool is_zeroed )
{
tl_assert(p == NULL); // don't handle custom allocators right now
- SizeT actual_szB, slop_szB;
+ SizeT actual_szB /*, slop_szB*/;
if ((SSizeT)req_szB < 0) return NULL;
@@ -468,9 +468,9 @@
if (is_zeroed) VG_(memset)(p, 0, req_szB);
actual_szB = VG_(malloc_usable_size)(p);
tl_assert(actual_szB >= req_szB);
- slop_szB = actual_szB - req_szB;
+ /* slop_szB = actual_szB - req_szB; */
} else {
- slop_szB = 0;
+ /* slop_szB = 0; */
}
// Make new HP_Chunk node, add to malloc_list
Modified: trunk/helgrind/hg_intercepts.c
===================================================================
--- trunk/helgrind/hg_intercepts.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/helgrind/hg_intercepts.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -86,7 +86,8 @@
#define DO_CREQ_v_W(_creqF, _ty1F,_arg1F) \
do { \
- Word _unused_res, _arg1; \
+ Word _unused_res __attribute__((unused)); \
+ Word _arg1; \
assert(sizeof(_ty1F) == sizeof(Word)); \
_arg1 = (Word)(_arg1F); \
VALGRIND_DO_CLIENT_REQUEST(_unused_res, 0, \
@@ -96,7 +97,8 @@
#define DO_CREQ_v_WW(_creqF, _ty1F,_arg1F, _ty2F,_arg2F) \
do { \
- Word _unused_res, _arg1, _arg2; \
+ Word _unused_res __attribute__((unused)); \
+ Word _arg1, _arg2; \
assert(sizeof(_ty1F) == sizeof(Word)); \
assert(sizeof(_ty2F) == sizeof(Word)); \
_arg1 = (Word)(_arg1F); \
@@ -106,7 +108,8 @@
_arg1,_arg2,0,0,0); \
} while (0)
-#define DO_CREQ_W_WW(_resF, _creqF, _ty1F,_arg1F, _ty2F,_arg2F) \
+#define DO_CREQ_W_WW(_resF, _creqF, _ty1F,_arg1F, \
+ _ty2F,_arg2F) \
do { \
Word _res, _arg1, _arg2; \
assert(sizeof(_ty1F) == sizeof(Word)); \
@@ -122,7 +125,8 @@
#define DO_CREQ_v_WWW(_creqF, _ty1F,_arg1F, \
_ty2F,_arg2F, _ty3F, _arg3F) \
do { \
- Word _unused_res, _arg1, _arg2, _arg3; \
+ Word _unused_res __attribute__((unused)); \
+ Word _arg1, _arg2, _arg3; \
assert(sizeof(_ty1F) == sizeof(Word)); \
assert(sizeof(_ty2F) == sizeof(Word)); \
assert(sizeof(_ty3F) == sizeof(Word)); \
Modified: trunk/memcheck/mc_replace_strmem.c
===================================================================
--- trunk/memcheck/mc_replace_strmem.c 2011-03-28 13:51:41 UTC (rev 11672)
+++ trunk/memcheck/mc_replace_strmem.c 2011-03-28 16:26:42 UTC (rev 11673)
@@ -91,7 +91,7 @@
// extra function in the stack trace.
#define RECORD_OVERLAP_ERROR(s, src, dst, len) \
{ \
- Word unused_res; \
+ Word unused_res __attribute__((unused)); \
VALGRIND_DO_CLIENT_REQUEST(unused_res, 0, \
_VG_USERREQ__MEMCHECK_RECORD_OVERLAP_ERROR, \
s, src, dst, len, 0); \
|
|
From: <sv...@va...> - 2011-03-28 13:51:49
|
Author: tom
Date: 2011-03-28 14:51:41 +0100 (Mon, 28 Mar 2011)
New Revision: 11672
Log:
Use two separate assembler argument bindings for loading or storing
a value in an xmm register as trying to do it with offsets from a
single argument apparently causes problems in newer gcc versions.
Fix to bug #266931.
Modified:
trunk/none/tests/amd64/gen_insn_test.pl
trunk/none/tests/x86/gen_insn_test.pl
Modified: trunk/none/tests/amd64/gen_insn_test.pl
===================================================================
--- trunk/none/tests/amd64/gen_insn_test.pl 2011-03-28 13:08:52 UTC (rev 11671)
+++ trunk/none/tests/amd64/gen_insn_test.pl 2011-03-28 13:51:41 UTC (rev 11672)
@@ -628,14 +628,30 @@
foreach my $result (@results)
{
- $result->{argnum} = $argnum++;
+ if ($result->{type} eq "xmm")
+ {
+ $result->{argnuml} = $argnum++;
+ $result->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $result->{argnum} = $argnum++;
+ }
}
foreach my $arg (@presets, @args)
{
if (defined($arg->{name}))
{
- $arg->{argnum} = $argnum++;
+ if ($arg->{type} eq "xmm")
+ {
+ $arg->{argnuml} = $argnum++;
+ $arg->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $arg->{argnum} = $argnum++;
+ }
}
}
@@ -678,8 +694,8 @@
}
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->{argnuml}, %%$arg->{register}\\n\"\n|;
+ print qq| \"movhps %$arg->{argnumh}, %%$arg->{register}\\n\"\n|;
}
elsif ($arg->{type} eq "st")
{
@@ -792,8 +808,8 @@
}
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->{argnuml}\\n\"\n|;
+ print qq| \"movhps %%$result->{register}, %$result->{argnumh}\\n\"\n|;
}
elsif ($result->{type} eq "st")
{
@@ -841,7 +857,15 @@
foreach my $result (@results)
{
- print qq|$prefix\"=m\" \($result->{name}\)|;
+ if ($result->{type} eq "xmm")
+ {
+ print qq|$prefix\"=m\" \($result->{name}.uq[0]\), \"=m\" \($result->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"=m\" \($result->{name}\)|;
+ }
+
$prefix = ", ";
}
@@ -853,7 +877,15 @@
{
if (defined($arg->{name}))
{
- print qq|$prefix\"m\" \($arg->{name}\)|;
+ if ($arg->{type} eq "xmm")
+ {
+ print qq|$prefix\"m\" \($arg->{name}.uq[0]\), \"m\" \($arg->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"m\" \($arg->{name}\)|;
+ }
+
$prefix = ", ";
}
}
Modified: trunk/none/tests/x86/gen_insn_test.pl
===================================================================
--- trunk/none/tests/x86/gen_insn_test.pl 2011-03-28 13:08:52 UTC (rev 11671)
+++ trunk/none/tests/x86/gen_insn_test.pl 2011-03-28 13:51:41 UTC (rev 11672)
@@ -605,14 +605,30 @@
foreach my $result (@results)
{
- $result->{argnum} = $argnum++;
+ if ($result->{type} eq "xmm")
+ {
+ $result->{argnuml} = $argnum++;
+ $result->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $result->{argnum} = $argnum++;
+ }
}
foreach my $arg (@presets, @args)
{
if (defined($arg->{name}))
{
- $arg->{argnum} = $argnum++;
+ if ($arg->{type} eq "xmm")
+ {
+ $arg->{argnuml} = $argnum++;
+ $arg->{argnumh} = $argnum++;
+ }
+ else
+ {
+ $arg->{argnum} = $argnum++;
+ }
}
}
@@ -647,8 +663,8 @@
}
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->{argnuml}, %%$arg->{register}\\n\"\n|;
+ print qq| \"movhps %$arg->{argnumh}, %%$arg->{register}\\n\"\n|;
}
elsif ($arg->{type} eq "st")
{
@@ -756,8 +772,8 @@
}
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->{argnuml}\\n\"\n|;
+ print qq| \"movhps %%$result->{register}, %$result->{argnumh}\\n\"\n|;
}
elsif ($result->{type} eq "st")
{
@@ -806,7 +822,15 @@
foreach my $result (@results)
{
- print qq|$prefix\"=m\" \($result->{name}\)|;
+ if ($result->{type} eq "xmm")
+ {
+ print qq|$prefix\"=m\" \($result->{name}.uq[0]\), \"=m\" \($result->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"=m\" \($result->{name}\)|;
+ }
+
$prefix = ", ";
}
@@ -818,7 +842,15 @@
{
if (defined($arg->{name}))
{
- print qq|$prefix\"m\" \($arg->{name}\)|;
+ if ($arg->{type} eq "xmm")
+ {
+ print qq|$prefix\"m\" \($arg->{name}.uq[0]\), \"m\" \($arg->{name}.uq[1]\)|;
+ }
+ else
+ {
+ print qq|$prefix\"m\" \($arg->{name}\)|;
+ }
+
$prefix = ", ";
}
}
|
|
From: <sv...@va...> - 2011-03-28 13:09:00
|
Author: tom
Date: 2011-03-28 14:08:52 +0100 (Mon, 28 Mar 2011)
New Revision: 11671
Log:
Fix generated assembler which writes the result to memory to correctly
use an =m constraint to indicate that the address will be written to.
Partial fix to bug #266931.
Modified:
trunk/none/tests/amd64/gen_insn_test.pl
trunk/none/tests/x86/gen_insn_test.pl
Modified: trunk/none/tests/amd64/gen_insn_test.pl
===================================================================
--- trunk/none/tests/amd64/gen_insn_test.pl 2011-03-28 09:12:55 UTC (rev 11670)
+++ trunk/none/tests/amd64/gen_insn_test.pl 2011-03-28 13:08:52 UTC (rev 11671)
@@ -628,10 +628,7 @@
foreach my $result (@results)
{
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
- {
- $result->{argnum} = $argnum++;
- }
+ $result->{argnum} = $argnum++;
}
foreach my $arg (@presets, @args)
@@ -641,14 +638,6 @@
$arg->{argnum} = $argnum++;
}
}
-
- foreach my $result (@results)
- {
- if ($result->{type} =~ /^(r(8|16|32|64)|mm|xmm)$/)
- {
- $result->{argnum} = $argnum++;
- }
- }
my $stateargnum = $argnum++;
@@ -852,11 +841,8 @@
foreach my $result (@results)
{
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
- {
- print qq|$prefix\"=m\" \($result->{name}\)|;
- $prefix = ", ";
- }
+ print qq|$prefix\"=m\" \($result->{name}\)|;
+ $prefix = ", ";
}
print qq|\n|;
@@ -871,15 +857,6 @@
$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|;
Modified: trunk/none/tests/x86/gen_insn_test.pl
===================================================================
--- trunk/none/tests/x86/gen_insn_test.pl 2011-03-28 09:12:55 UTC (rev 11670)
+++ trunk/none/tests/x86/gen_insn_test.pl 2011-03-28 13:08:52 UTC (rev 11671)
@@ -605,10 +605,7 @@
foreach my $result (@results)
{
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
- {
- $result->{argnum} = $argnum++;
- }
+ $result->{argnum} = $argnum++;
}
foreach my $arg (@presets, @args)
@@ -618,14 +615,6 @@
$arg->{argnum} = $argnum++;
}
}
-
- foreach my $result (@results)
- {
- if ($result->{type} =~ /^(r(8|16|32)|mm|xmm)$/)
- {
- $result->{argnum} = $argnum++;
- }
- }
my $stateargnum = $argnum++;
@@ -817,11 +806,8 @@
foreach my $result (@results)
{
- if ($result->{type} =~ /^(m(8|16|32|64|128)|st|eflags|fpu[cs]w)$/)
- {
- print qq|$prefix\"=m\" \($result->{name}\)|;
- $prefix = ", ";
- }
+ print qq|$prefix\"=m\" \($result->{name}\)|;
+ $prefix = ", ";
}
print qq|\n|;
@@ -836,15 +822,6 @@
$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|;
|
|
From: <sv...@va...> - 2011-03-28 12:14:56
|
Author: sewardj
Date: 2011-03-28 13:14:48 +0100 (Mon, 28 Mar 2011)
New Revision: 2119
Log:
Remove dead assignments that gcc-4.6.0 complains about
("[-Wunused-but-set-variable]")
Modified:
trunk/priv/guest_arm_helpers.c
trunk/priv/guest_arm_toIR.c
trunk/priv/host_arm_isel.c
trunk/priv/host_s390_defs.c
Modified: trunk/priv/guest_arm_helpers.c
===================================================================
--- trunk/priv/guest_arm_helpers.c 2011-03-27 22:16:08 UTC (rev 2118)
+++ trunk/priv/guest_arm_helpers.c 2011-03-28 12:14:48 UTC (rev 2119)
@@ -333,12 +333,11 @@
if (vex_streq(function_name, "armg_calculate_condition")) {
/* specialise calls to above "armg_calculate condition" function */
- IRExpr *cond_n_op, *cc_dep1, *cc_dep2, *cc_dep3;
+ IRExpr *cond_n_op, *cc_dep1, *cc_dep2;
vassert(arity == 4);
cond_n_op = args[0]; /* ARMCondcode << 4 | ARMG_CC_OP_* */
cc_dep1 = args[1];
cc_dep2 = args[2];
- cc_dep3 = args[3];
/*---------------- SUB ----------------*/
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2011-03-27 22:16:08 UTC (rev 2118)
+++ trunk/priv/guest_arm_toIR.c 2011-03-28 12:14:48 UTC (rev 2119)
@@ -3794,7 +3794,7 @@
case 5:
if (B == 0) {
/* VRSHL */
- IROp op, op_shrn, op_shln, cmp_gt, op_sub, op_add;
+ IROp op, op_shrn, op_shln, cmp_gt, op_add;
IRTemp shval, old_shval, imm_val, round;
UInt i;
ULong imm;
@@ -3814,28 +3814,24 @@
switch (size) {
case 0:
op = Q ? Iop_Shl8x16 : Iop_Shl8x8;
- op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
op_shln = Q ? Iop_ShlN8x16 : Iop_ShlN8x8;
break;
case 1:
op = Q ? Iop_Shl16x8 : Iop_Shl16x4;
- op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
op_shln = Q ? Iop_ShlN16x8 : Iop_ShlN16x4;
break;
case 2:
op = Q ? Iop_Shl32x4 : Iop_Shl32x2;
- op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
op_shln = Q ? Iop_ShlN32x4 : Iop_ShlN32x2;
break;
case 3:
op = Q ? Iop_Shl64x2 : Iop_Shl64;
- op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
op_add = Q ? Iop_Add64x2 : Iop_Add64;
op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
op_shln = Q ? Iop_ShlN64x2 : Iop_Shl64;
@@ -3847,28 +3843,24 @@
switch (size) {
case 0:
op = Q ? Iop_Sal8x16 : Iop_Sal8x8;
- op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
op_shln = Q ? Iop_ShlN8x16 : Iop_ShlN8x8;
break;
case 1:
op = Q ? Iop_Sal16x8 : Iop_Sal16x4;
- op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
op_shln = Q ? Iop_ShlN16x8 : Iop_ShlN16x4;
break;
case 2:
op = Q ? Iop_Sal32x4 : Iop_Sal32x2;
- op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
op_shln = Q ? Iop_ShlN32x4 : Iop_ShlN32x2;
break;
case 3:
op = Q ? Iop_Sal64x2 : Iop_Sal64x1;
- op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
op_add = Q ? Iop_Add64x2 : Iop_Add64;
op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
op_shln = Q ? Iop_ShlN64x2 : Iop_Shl64;
@@ -3939,7 +3931,7 @@
nreg);
} else {
/* VQRSHL */
- IROp op, op_rev, op_shrn, op_shln, cmp_neq, cmp_gt, op_sub, op_add;
+ IROp op, op_rev, op_shrn, op_shln, cmp_neq, cmp_gt, op_add;
IRTemp tmp, shval, mask, old_shval, imm_val, round;
UInt i;
ULong esize, imm;
@@ -3960,7 +3952,6 @@
switch (size) {
case 0:
op = Q ? Iop_QShl8x16 : Iop_QShl8x8;
- op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
op_rev = Q ? Iop_Shr8x16 : Iop_Shr8x8;
op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
@@ -3968,7 +3959,6 @@
break;
case 1:
op = Q ? Iop_QShl16x8 : Iop_QShl16x4;
- op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
op_rev = Q ? Iop_Shr16x8 : Iop_Shr16x4;
op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
@@ -3976,7 +3966,6 @@
break;
case 2:
op = Q ? Iop_QShl32x4 : Iop_QShl32x2;
- op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
op_rev = Q ? Iop_Shr32x4 : Iop_Shr32x2;
op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
@@ -3984,7 +3973,6 @@
break;
case 3:
op = Q ? Iop_QShl64x2 : Iop_QShl64x1;
- op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
op_add = Q ? Iop_Add64x2 : Iop_Add64;
op_rev = Q ? Iop_Shr64x2 : Iop_Shr64;
op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
@@ -3997,7 +3985,6 @@
switch (size) {
case 0:
op = Q ? Iop_QSal8x16 : Iop_QSal8x8;
- op_sub = Q ? Iop_Sub8x16 : Iop_Sub8x8;
op_add = Q ? Iop_Add8x16 : Iop_Add8x8;
op_rev = Q ? Iop_Sar8x16 : Iop_Sar8x8;
op_shrn = Q ? Iop_ShrN8x16 : Iop_ShrN8x8;
@@ -4005,7 +3992,6 @@
break;
case 1:
op = Q ? Iop_QSal16x8 : Iop_QSal16x4;
- op_sub = Q ? Iop_Sub16x8 : Iop_Sub16x4;
op_add = Q ? Iop_Add16x8 : Iop_Add16x4;
op_rev = Q ? Iop_Sar16x8 : Iop_Sar16x4;
op_shrn = Q ? Iop_ShrN16x8 : Iop_ShrN16x4;
@@ -4013,7 +3999,6 @@
break;
case 2:
op = Q ? Iop_QSal32x4 : Iop_QSal32x2;
- op_sub = Q ? Iop_Sub32x4 : Iop_Sub32x2;
op_add = Q ? Iop_Add32x4 : Iop_Add32x2;
op_rev = Q ? Iop_Sar32x4 : Iop_Sar32x2;
op_shrn = Q ? Iop_ShrN32x4 : Iop_ShrN32x2;
@@ -4021,7 +4006,6 @@
break;
case 3:
op = Q ? Iop_QSal64x2 : Iop_QSal64x1;
- op_sub = Q ? Iop_Sub64x2 : Iop_Sub64;
op_add = Q ? Iop_Add64x2 : Iop_Add64;
op_rev = Q ? Iop_Sar64x2 : Iop_Sar64;
op_shrn = Q ? Iop_ShrN64x2 : Iop_Shr64;
@@ -5597,11 +5581,10 @@
if (INSN(11,8) == BITS4(1,0,1,1) && !U) {
IROp op ,op2, dup, get;
ULong imm;
- IRTemp res, arg_m, arg_n;
+ IRTemp arg_m, arg_n;
if (dreg & 1)
return False;
dreg >>= 1;
- res = newTemp(Ity_V128);
arg_m = newTemp(Ity_I64);
arg_n = newTemp(Ity_I64);
assign(arg_n, getDRegI64(nreg));
Modified: trunk/priv/host_arm_isel.c
===================================================================
--- trunk/priv/host_arm_isel.c 2011-03-27 22:16:08 UTC (rev 2118)
+++ trunk/priv/host_arm_isel.c 2011-03-28 12:14:48 UTC (rev 2119)
@@ -5943,7 +5943,6 @@
HReg hreg, hregHI;
ISelEnv* env;
UInt hwcaps_host = archinfo_host->hwcaps;
- Bool neon = False;
static UInt counter = 0;
/* sanity ... */
@@ -5981,7 +5980,6 @@
case Ity_I64:
if (arm_hwcaps & VEX_HWCAPS_ARM_NEON) {
hreg = mkHReg(j++, HRcFlt64, True);
- neon = True;
} else {
hregHI = mkHReg(j++, HRcInt32, True);
hreg = mkHReg(j++, HRcInt32, True);
@@ -5989,8 +5987,7 @@
break;
case Ity_F32: hreg = mkHReg(j++, HRcFlt32, True); break;
case Ity_F64: hreg = mkHReg(j++, HRcFlt64, True); break;
- case Ity_V128: hreg = mkHReg(j++, HRcVec128, True);
- neon = True; break;
+ case Ity_V128: hreg = mkHReg(j++, HRcVec128, True); break;
default: ppIRType(bb->tyenv->types[i]);
vpanic("iselBB: IRTemp type");
}
Modified: trunk/priv/host_s390_defs.c
===================================================================
--- trunk/priv/host_s390_defs.c 2011-03-27 22:16:08 UTC (rev 2118)
+++ trunk/priv/host_s390_defs.c 2011-03-28 12:14:48 UTC (rev 2119)
@@ -5246,12 +5246,8 @@
s390_widen_emit(UChar *buf, const s390_insn *insn, UInt from_size,
Bool sign_extend)
{
- s390_opnd_RMI opnd;
- UInt dst;
+ s390_opnd_RMI opnd = insn->variant.unop.src;
- dst = hregNumber(insn->variant.unop.dst);
- opnd = insn->variant.unop.src;
-
switch (opnd.tag) {
case S390_OPND_REG: {
UChar r1 = hregNumber(insn->variant.unop.dst);
@@ -6093,11 +6089,9 @@
{
s390_opnd_RMI dst;
s390_cc_t cond;
- IRJumpKind kind;
UInt trc;
UChar *p, *ptmp = 0; /* avoid compiler warnings */
- kind = insn->variant.branch.kind;
cond = insn->variant.branch.cond;
dst = insn->variant.branch.dst;
|
|
From: <sv...@va...> - 2011-03-28 09:13:04
|
Author: sewardj Date: 2011-03-28 10:12:55 +0100 (Mon, 28 Mar 2011) New Revision: 11670 Log: Fix broken inline assembly preventing compilation on RHEL6. Fixes #256703. (Jakub Jelinek, ja...@re...) Modified: trunk/none/tests/ppc32/xlc_dbl_u32.c Modified: trunk/none/tests/ppc32/xlc_dbl_u32.c =================================================================== --- trunk/none/tests/ppc32/xlc_dbl_u32.c 2011-03-28 08:37:19 UTC (rev 11669) +++ trunk/none/tests/ppc32/xlc_dbl_u32.c 2011-03-28 09:12:55 UTC (rev 11670) @@ -37,6 +37,7 @@ " .long 0\n" " .long 0x00000000\n" " .long 0x00000000\n" +".previous\n" "\n" " .section \".rodata\",\"a\"\n" " .align 3\n" @@ -48,6 +49,7 @@ " .long 0x3fe66666\n" " .long 0x66666666\n" " .long 0x25640a00\n" +".previous\n" ); int main (int argc, char** argv) |
|
From: <sv...@va...> - 2011-03-28 08:37:26
|
Author: sewardj
Date: 2011-03-28 09:37:19 +0100 (Mon, 28 Mar 2011)
New Revision: 11669
Log:
Fix broken inline asm in these tests. Fixes #256726.
(Jakub Jelinek, ja...@re...)
Modified:
trunk/helgrind/tests/tc07_hbl1.c
trunk/helgrind/tests/tc08_hbl2.c
Modified: trunk/helgrind/tests/tc07_hbl1.c
===================================================================
--- trunk/helgrind/tests/tc07_hbl1.c 2011-03-28 08:22:55 UTC (rev 11668)
+++ trunk/helgrind/tests/tc07_hbl1.c 2011-03-28 08:37:19 UTC (rev 11669)
@@ -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" \
);
Modified: trunk/helgrind/tests/tc08_hbl2.c
===================================================================
--- trunk/helgrind/tests/tc08_hbl2.c 2011-03-28 08:22:55 UTC (rev 11668)
+++ trunk/helgrind/tests/tc08_hbl2.c 2011-03-28 08:37:19 UTC (rev 11669)
@@ -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" \
);
|
|
From: <sv...@va...> - 2011-03-28 08:23:09
|
Author: sewardj
Date: 2011-03-28 09:22:55 +0100 (Mon, 28 Mar 2011)
New Revision: 11668
Log:
Intercept strlen in ld.so on x86. Fixes #266961.
(Jakub Jelinek, ja...@re...)
Modified:
trunk/coregrind/m_redir.c
trunk/coregrind/m_trampoline.S
trunk/coregrind/pub_core_trampoline.h
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2011-03-26 07:30:39 UTC (rev 11667)
+++ trunk/coregrind/m_redir.c 2011-03-28 08:22:55 UTC (rev 11668)
@@ -924,20 +924,23 @@
/* 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)
Modified: trunk/coregrind/m_trampoline.S
===================================================================
--- trunk/coregrind/m_trampoline.S 2011-03-26 07:30:39 UTC (rev 11667)
+++ trunk/coregrind/m_trampoline.S 2011-03-28 08:22:55 UTC (rev 11668)
@@ -112,6 +112,27 @@
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):
Modified: trunk/coregrind/pub_core_trampoline.h
===================================================================
--- trunk/coregrind/pub_core_trampoline.h 2011-03-26 07:30:39 UTC (rev 11667)
+++ trunk/coregrind/pub_core_trampoline.h 2011-03-28 08:22:55 UTC (rev 11668)
@@ -60,6 +60,7 @@
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)
|