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
(8) |
2
(8) |
3
(15) |
4
(14) |
5
(12) |
6
(40) |
7
(9) |
|
8
(5) |
9
(12) |
10
(9) |
11
(13) |
12
(7) |
13
(7) |
14
(19) |
|
15
(18) |
16
(13) |
17
(16) |
18
(8) |
19
(16) |
20
(16) |
21
(12) |
|
22
(21) |
23
(39) |
24
(27) |
25
(33) |
26
(41) |
27
(17) |
28
(15) |
Author: njn Date: 2009-02-10 07:42:39 +0000 (Tue, 10 Feb 2009) New Revision: 9133 Log: Merged r9131 from the trunk. Removed: branches/DARWIN/memcheck/tests/badjump.stderr.exp2 Modified: branches/DARWIN/coregrind/m_debuginfo/debuginfo.c branches/DARWIN/coregrind/m_debuginfo/readmacho.c branches/DARWIN/coregrind/m_demangle/demangle.c branches/DARWIN/coregrind/m_stacktrace.c branches/DARWIN/coregrind/pub_core_demangle.h branches/DARWIN/coregrind/pub_core_options.h branches/DARWIN/docs/xml/manual-core.xml branches/DARWIN/include/pub_tool_debuginfo.h branches/DARWIN/include/pub_tool_options.h branches/DARWIN/massif/ms_main.c branches/DARWIN/memcheck/tests/x86-linux/scalar.c branches/DARWIN/memcheck/tests/x86-linux/scalar.stderr.exp branches/DARWIN/memcheck/tests/x86-linux/scalar.stderr.exp2 branches/DARWIN/memcheck/tests/x86-linux/scalar_supp.stderr.exp branches/DARWIN/memcheck/tests/xml1.stderr.exp2 branches/DARWIN/memcheck/tests/xml1.stderr.exp3 branches/DARWIN/memcheck/tests/xml1.stderr.exp64_2 branches/DARWIN/none/tests/fdleak_dup.stderr.exp2 branches/DARWIN/none/tests/fdleak_dup2.stderr.exp2 branches/DARWIN/none/tests/fdleak_fcntl.stderr.exp2 branches/DARWIN/none/tests/fdleak_fcntl.stderr.exp3 [... diff too large to include ...] |
|
From: <sv...@va...> - 2009-02-10 07:14:42
|
Author: njn
Date: 2009-02-10 07:14:37 +0000 (Tue, 10 Feb 2009)
New Revision: 9132
Log:
Merge r9106 (fix a minor stack entry display bug) from the DARWIN branch.
Modified:
trunk/massif/ms_main.c
Modified: trunk/massif/ms_main.c
===================================================================
--- trunk/massif/ms_main.c 2009-02-10 06:48:00 UTC (rev 9131)
+++ trunk/massif/ms_main.c 2009-02-10 07:14:37 UTC (rev 9132)
@@ -543,7 +543,7 @@
if (hp + n_bytes > hp_lim) {
hp = (Addr)VG_(am_shadow_alloc)(SUPERBLOCK_SIZE);
- if (hp == 0)
+ if (0 == hp)
VG_(out_of_memory_NORETURN)( "massif:perm_malloc",
SUPERBLOCK_SIZE);
hp_lim = hp + SUPERBLOCK_SIZE - 1;
@@ -582,7 +582,7 @@
// Expand 'children' if necessary.
tl_assert(parent->n_children <= parent->max_children);
if (parent->n_children == parent->max_children) {
- if (parent->max_children == 0) {
+ if (0 == parent->max_children) {
parent->max_children = 4;
parent->children = VG_(malloc)( "ms.main.acx.1",
parent->max_children * sizeof(XPt*) );
@@ -636,7 +636,7 @@
//
// Nb: We do this once now, rather than once per child, because if we do
// that the cost of all the divisions adds up to something significant.
- if (total_szB == 0 && clo_threshold != 0) {
+ if (0 == total_szB && 0 != clo_threshold) {
sig_child_threshold_szB = 1;
} else {
sig_child_threshold_szB = (SizeT)((total_szB * clo_threshold) / 100);
@@ -1382,7 +1382,7 @@
if (n_skipped_snapshots_since_last_snapshot > 0) {
VERB(2, " (skipped %d snapshot%s)",
n_skipped_snapshots_since_last_snapshot,
- ( n_skipped_snapshots_since_last_snapshot == 1 ? "" : "s") );
+ ( 1 == n_skipped_snapshots_since_last_snapshot ? "" : "s") );
}
VERB_snapshot(2, what, next_snapshot_i);
n_skipped_snapshots_since_last_snapshot = 0;
@@ -1925,7 +1925,7 @@
switch (sxpt->tag) {
case SigSXPt:
// Print the SXPt itself.
- if (sxpt->Sig.ip == 0) {
+ if (0 == depth) {
ip_desc =
"(heap allocation functions) malloc/new/new[], --alloc-fns, etc.";
} else {
@@ -1987,7 +1987,7 @@
break;
case InsigSXPt: {
- Char* s = ( sxpt->Insig.n_xpts == 1 ? "," : "s, all" );
+ Char* s = ( 1 == sxpt->Insig.n_xpts ? "," : "s, all" );
perc = make_perc(sxpt->szB, snapshot_total_szB);
FP("%sn0: %lu in %d place%s below massif's threshold (%s)\n",
depth_str, sxpt->szB, sxpt->Insig.n_xpts, s,
|
Author: njn Date: 2009-02-10 06:48:00 +0000 (Tue, 10 Feb 2009) New Revision: 9131 Log: Cleaned up the mess that was the treatment of "below main" functions such as '__libc_start_main', in Massif, m_debuginfo and m_stacktrace. As part of this, --show-below-main is now visible to tools, and Massif pays attention to it. Improved the description of --show-below-main=yes in the manual. Replaced some instances of "__libc_start_main" in the test *.exp files with "(below main)", which is what will actually be seen. Also updated scalar.stderr.exp*, which should make it get closer to actually passing. Removed: trunk/memcheck/tests/badjump.stderr.exp2 Modified: trunk/coregrind/m_debuginfo/debuginfo.c trunk/coregrind/m_demangle/demangle.c trunk/coregrind/m_stacktrace.c trunk/coregrind/pub_core_demangle.h trunk/coregrind/pub_core_options.h trunk/docs/xml/manual-core.xml trunk/include/pub_tool_debuginfo.h trunk/include/pub_tool_options.h trunk/massif/ms_main.c trunk/memcheck/tests/x86-linux/scalar.c trunk/memcheck/tests/x86-linux/scalar.stderr.exp trunk/memcheck/tests/x86-linux/scalar.stderr.exp2 trunk/memcheck/tests/x86-linux/scalar_supp.stderr.exp trunk/memcheck/tests/xml1.stderr.exp2 trunk/memcheck/tests/xml1.stderr.exp3 trunk/memcheck/tests/xml1.stderr.exp64_2 trunk/none/tests/fdleak_dup.stderr.exp2 trunk/none/tests/fdleak_dup2.stderr.exp2 trunk/none/tests/fdleak_fcntl.stderr.exp2 trunk/none/tests/fdleak_fcntl.stderr.exp3 [... diff too large to include ...] |
|
From: Konstantin S. <kon...@gm...> - 2009-02-10 06:42:32
|
On Mon, Feb 9, 2009 at 9:48 PM, Bart Van Assche <bar...@gm...> wrote: > On Mon, Feb 9, 2009 at 3:01 PM, Konstantin Serebryany > <kon...@gm...> wrote: >> But test401 *is* a false positive. >> (http://code.google.com/p/data-race-test/source/browse/trunk/unittest/racecheck_unittest.cc#6468) > > Sure, I agree that the race reported on test401 is a false positive. > And the easiest way to inform a data-race detector about the > inter-thread ordering introduced by reference counting is via client > requests. > > IMHO it would be a significant advantage for Valgrind users if there > would be a single set of source code annotations that is understood by > all data race detectors built on top of Valgrind (Helgrind, DRD and > ThreadSanitizer). Yes. Another question: should these client requests be binary compatible with each other, or only source compatible? (source compatible == macro definitions with different implementations for different tools) If we push for binary compatibility, we may loose the ability to be compatible with non-valgrind-based tools. --kcc > > Bart. > |
|
From: <sv...@va...> - 2009-02-10 04:23:53
|
Author: njn
Date: 2009-02-10 04:23:41 +0000 (Tue, 10 Feb 2009)
New Revision: 9130
Log:
Merge part of r9129 (factor out duplicated Z-encodings of names) from the
DARWIN branch.
Modified:
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
trunk/drd/drd_strmem_intercepts.c
trunk/exp-ptrcheck/h_intercepts.c
trunk/exp-ptrcheck/tests/bad_percentify.stderr.exp-glibc28-amd64
trunk/exp-ptrcheck/tests/filter_stderr
trunk/helgrind/hg_intercepts.c
trunk/include/pub_tool_redir.h
trunk/memcheck/mc_replace_strmem.c
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2009-02-10 04:23:41 UTC (rev 9130)
@@ -53,37 +53,7 @@
#include "pub_core_redir.h" // for VG_REPLACE_FUNCTION_*
#include "pub_core_replacemalloc.h"
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Soname of the GNU C++ library. --- */
-
-#define m_libstdcxx_soname libstdcZpZpZa // libstdc++*
-
-/* --- Soname of XLC's C++ library. --- */
-
-/* AIX: xlC's C++ runtime library is called libC.a, and the
- interesting symbols appear to be in ansicore_32.o or ansicore_64.o
- respectively. */
-#if defined(VGP_ppc32_aix5)
-# define m_libC_dot_a libCZdaZLansicoreZu32ZdoZR // libC.a(ansicore_32.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libC_dot_a libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
-#endif
-
-
/* 2 Apr 05: the Portland Group compiler, which uses cfront/ARM style
mangling, could be supported properly by the redirects in this
module. Except we can't because it doesn't put its allocation
@@ -203,37 +173,37 @@
// (from_so, from_fn, v's replacement)
// malloc
-ALLOC_or_NULL(m_libstdcxx_soname, malloc, malloc);
-ALLOC_or_NULL(m_libc_soname, malloc, malloc);
+ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, malloc, malloc);
+ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc, malloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-ALLOC_or_NULL(m_libc_soname, malloc_common, malloc);
+ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc_common, malloc);
#endif
/*---------------------- new ----------------------*/
// operator new(unsigned int), not mangled (for gcc 2.96)
-ALLOC_or_BOMB(m_libstdcxx_soname, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_soname, builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libstdcxx_soname, __builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_soname, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, __builtin_new, __builtin_new);
// operator new(unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znwj, __builtin_new);
- ALLOC_or_BOMB(m_libc_soname, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwj, __builtin_new);
#endif
// operator new(unsigned long), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5)
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znwm, __builtin_new);
- ALLOC_or_BOMB(m_libc_soname, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwm, __builtin_new);
#endif
// operator new(unsigned long), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __nw__FUl, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __nw__FUl, __builtin_new);
#endif
@@ -241,43 +211,43 @@
// operator new(unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnwjRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(m_libc_soname, _ZnwjRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnwmRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(m_libc_soname, _ZnwmRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_NULL(m_libC_dot_a, __nw__FUlRCQ2_3std9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_DOT_A, __nw__FUlRCQ2_3std9nothrow_t, __builtin_new);
#endif
/*---------------------- new [] ----------------------*/
// operator new[](unsigned int), not mangled (for gcc 2.96)
-ALLOC_or_BOMB(m_libstdcxx_soname, __builtin_vec_new, __builtin_vec_new );
-ALLOC_or_BOMB(m_libc_soname, __builtin_vec_new, __builtin_vec_new );
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_new, __builtin_vec_new );
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, __builtin_vec_new, __builtin_vec_new );
// operator new[](unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znaj, __builtin_vec_new );
- ALLOC_or_BOMB(m_libc_soname, _Znaj, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znaj, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znaj, __builtin_vec_new );
#endif
// operator new[](unsigned long), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znam, __builtin_vec_new );
- ALLOC_or_BOMB(m_libc_soname, _Znam, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znam, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znam, __builtin_vec_new );
#endif
// operator new[](unsigned long), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __vn__FUl, __builtin_vec_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __vn__FUl, __builtin_vec_new);
#endif
@@ -285,19 +255,19 @@
// operator new[](unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnajRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(m_libc_soname, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new[](unsigned long, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnamRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(m_libc_soname, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new [](unsigned long, std::nothrow_t const&), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __vn__FUlRCQ2_3std9nothrow_t, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __vn__FUlRCQ2_3std9nothrow_t, __builtin_vec_new );
#endif
@@ -319,62 +289,62 @@
}
// free
-FREE(m_libstdcxx_soname, free, free );
-FREE(m_libc_soname, free, free );
+FREE(VG_Z_LIBSTDCXX_SONAME, free, free );
+FREE(VG_Z_LIBC_SONAME, free, free );
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libc_soname, free_common, free );
+FREE(VG_Z_LIBC_SONAME, free_common, free );
#endif
/*---------------------- cfree ----------------------*/
// cfree
-FREE(m_libstdcxx_soname, cfree, free );
-FREE(m_libc_soname, cfree, free );
+FREE(VG_Z_LIBSTDCXX_SONAME, cfree, free );
+FREE(VG_Z_LIBC_SONAME, cfree, free );
/*---------------------- delete ----------------------*/
// operator delete(void*), not mangled (for gcc 2.96)
-FREE(m_libstdcxx_soname, __builtin_delete, __builtin_delete );
-FREE(m_libc_soname, __builtin_delete, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_delete, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, __builtin_delete, __builtin_delete );
// operator delete(void*), GNU mangling
-FREE(m_libstdcxx_soname, _ZdlPv, __builtin_delete );
-FREE(m_libc_soname, _ZdlPv, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPv, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdlPv, __builtin_delete );
// operator delete(void*), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libC_dot_a, __dl__FPv, __builtin_delete );
+FREE(VG_Z_LIBC_DOT_A, __dl__FPv, __builtin_delete );
#endif
/*---------------------- delete nothrow ----------------------*/
// operator delete(void*, std::nothrow_t const&), GNU mangling
-FREE(m_libstdcxx_soname, _ZdlPvRKSt9nothrow_t, __builtin_delete );
-FREE(m_libc_soname, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
/*---------------------- delete [] ----------------------*/
// operator delete[](void*), not mangled (for gcc 2.96)
-FREE(m_libstdcxx_soname, __builtin_vec_delete, __builtin_vec_delete );
-FREE(m_libc_soname, __builtin_vec_delete, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_delete, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, __builtin_vec_delete, __builtin_vec_delete );
// operator delete[](void*), GNU mangling
-FREE(m_libstdcxx_soname, _ZdaPv, __builtin_vec_delete );
-FREE(m_libc_soname, _ZdaPv, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPv, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdaPv, __builtin_vec_delete );
// operator delete[](void*), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libC_dot_a, __vd__FPv, __builtin_vec_delete );
+FREE(VG_Z_LIBC_DOT_A, __vd__FPv, __builtin_vec_delete );
#endif
/*---------------------- delete [] nothrow ----------------------*/
// operator delete[](void*, std::nothrow_t const&), GNU mangling
-FREE(m_libstdcxx_soname, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
-FREE(m_libc_soname, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
/*---------------------- calloc ----------------------*/
@@ -394,9 +364,9 @@
return v; \
}
-CALLOC(m_libc_soname, calloc);
+CALLOC(VG_Z_LIBC_SONAME, calloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-CALLOC(m_libc_soname, calloc_common);
+CALLOC(VG_Z_LIBC_SONAME, calloc_common);
#endif
@@ -415,9 +385,9 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. */ \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(m_libc_soname,free)(ptrV); \
+ VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0"); \
return NULL; \
} \
@@ -426,9 +396,9 @@
return v; \
}
-REALLOC(m_libc_soname, realloc);
+REALLOC(VG_Z_LIBC_SONAME, realloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-REALLOC(m_libc_soname, realloc_common);
+REALLOC(VG_Z_LIBC_SONAME, realloc_common);
#endif
@@ -457,7 +427,7 @@
return v; \
}
-MEMALIGN(m_libc_soname, memalign);
+MEMALIGN(VG_Z_LIBC_SONAME, memalign);
/*---------------------- valloc ----------------------*/
@@ -479,11 +449,11 @@
static int pszB = 0; \
if (pszB == 0) \
pszB = local__getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign) \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
-VALLOC(m_libc_soname, valloc);
+VALLOC(VG_Z_LIBC_SONAME, valloc);
/*---------------------- mallopt ----------------------*/
@@ -500,7 +470,7 @@
return 1; \
}
-MALLOPT(m_libc_soname, mallopt);
+MALLOPT(VG_Z_LIBC_SONAME, mallopt);
/*---------------------- malloc_trim ----------------------*/
@@ -536,7 +506,7 @@
return 0; \
}
-MALLOC_TRIM(m_libc_soname, malloc_trim);
+MALLOC_TRIM(VG_Z_LIBC_SONAME, malloc_trim);
/*---------------------- posix_memalign ----------------------*/
@@ -556,7 +526,7 @@
|| (alignment & (alignment - 1)) != 0) \
return VKI_EINVAL; \
\
- mem = VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign)(alignment, size); \
+ mem = VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign)(alignment, size); \
\
if (mem != NULL) { \
*memptr = mem; \
@@ -566,12 +536,12 @@
return VKI_ENOMEM; \
}
-POSIX_MEMALIGN(m_libc_soname, posix_memalign);
+POSIX_MEMALIGN(VG_Z_LIBC_SONAME, posix_memalign);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
/* 27 Nov 07: it appears that xlc links into executables, a
posix_memalign, which calls onwards to memalign_common, with the
same args. */
-POSIX_MEMALIGN(m_libc_soname, memalign_common);
+POSIX_MEMALIGN(VG_Z_LIBC_SONAME, memalign_common);
#endif
@@ -596,7 +566,7 @@
return pszB; \
}
-MALLOC_USABLE_SIZE(m_libc_soname, malloc_usable_size);
+MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
/*---------------------- (unimplemented) ----------------------*/
@@ -618,9 +588,9 @@
panic(#fnname); \
}
-PANIC(m_libc_soname, pvalloc);
-PANIC(m_libc_soname, malloc_get_state);
-PANIC(m_libc_soname, malloc_set_state);
+PANIC(VG_Z_LIBC_SONAME, pvalloc);
+PANIC(VG_Z_LIBC_SONAME, malloc_get_state);
+PANIC(VG_Z_LIBC_SONAME, malloc_set_state);
#define MALLOC_STATS(soname, fnname) \
\
@@ -630,7 +600,7 @@
/* Valgrind's malloc_stats implementation does nothing. */ \
}
-MALLOC_STATS(m_libc_soname, malloc_stats);
+MALLOC_STATS(VG_Z_LIBC_SONAME, malloc_stats);
/*---------------------- mallinfo ----------------------*/
@@ -650,7 +620,7 @@
return mi; \
}
-MALLINFO(m_libc_soname, mallinfo);
+MALLINFO(VG_Z_LIBC_SONAME, mallinfo);
/* All the code in here is unused until this function is called */
Modified: trunk/drd/drd_strmem_intercepts.c
===================================================================
--- trunk/drd/drd_strmem_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/drd/drd_strmem_intercepts.c 2009-02-10 04:23:41 UTC (rev 9130)
@@ -38,29 +38,6 @@
#include "valgrind.h"
-/* --------- Some handy Z-encoded names. --------- */
-
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRNLEN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \
@@ -70,7 +47,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -86,9 +63,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
/*--------------------------------------------------------------------*/
/*--- end ---*/
Modified: trunk/exp-ptrcheck/h_intercepts.c
===================================================================
--- trunk/exp-ptrcheck/h_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/exp-ptrcheck/h_intercepts.c 2009-02-10 04:23:41 UTC (rev 9130)
@@ -44,31 +44,7 @@
memcheck/mc_replace_strmem.c. If you copy more in, please keep
them in the same order as in mc_replace_strmem.c. */
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
-
-
#define STRNLEN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \
@@ -78,7 +54,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -94,10 +70,10 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
-STRLEN(m_ld_so_1, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
+STRLEN(VG_Z_LD_SO_1, strlen)
#define STRCMP(soname, fnname) \
@@ -120,9 +96,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCPY(soname, fnname) \
@@ -167,9 +143,9 @@
return dest; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -184,9 +160,9 @@
return dst; \
}
-STPCPY(m_libc_soname, stpcpy)
-STPCPY(m_ld_linux_so_2, stpcpy)
-STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
+STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
+STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
/*--------------------------------------------------------------------*/
Modified: trunk/exp-ptrcheck/tests/bad_percentify.stderr.exp-glibc28-amd64
===================================================================
--- trunk/exp-ptrcheck/tests/bad_percentify.stderr.exp-glibc28-amd64 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/exp-ptrcheck/tests/bad_percentify.stderr.exp-glibc28-amd64 2009-02-10 04:23:41 UTC (rev 9130)
@@ -1,6 +1,6 @@
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:97)
+ at 0x........: strlen (h_intercepts.c:...)
by 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:88)
@@ -10,7 +10,7 @@
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:97)
+ at 0x........: strlen (h_intercepts.c:...)
by 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:93)
@@ -20,7 +20,7 @@
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:97)
+ at 0x........: strlen (h_intercepts.c:...)
by 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:98)
Modified: trunk/exp-ptrcheck/tests/filter_stderr
===================================================================
--- trunk/exp-ptrcheck/tests/filter_stderr 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/exp-ptrcheck/tests/filter_stderr 2009-02-10 04:23:41 UTC (rev 9130)
@@ -31,4 +31,8 @@
-e "s/printf (printf.c:[0-9]*)/.../" \
-e "s/strdup (strdup.c:[0-9]*)/.../" \
-e "s/pthread_key_create.c:[0-9]*/in \/...libpthread.../" \
--e "s/genops.c:[0-9]*/in \/...libc.../"
+-e "s/genops.c:[0-9]*/in \/...libc.../" |
+
+# Anonymise line numbers in h_intercepts.c.
+sed "s/h_intercepts.c:[0-9]*/h_intercepts.c:.../"
+
Modified: trunk/helgrind/hg_intercepts.c
===================================================================
--- trunk/helgrind/hg_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/helgrind/hg_intercepts.c 2009-02-10 04:23:41 UTC (rev 9130)
@@ -1592,29 +1592,7 @@
new functions, please keep them in the same order as they appear in
mc_replace_strmem.c. */
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRCHR(soname, fnname) \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
@@ -1629,12 +1607,12 @@
}
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_soname, strchr)
-STRCHR(m_ld_linux_so_2, strchr)
-STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_libc_soname, index)
-STRCHR(m_ld_linux_so_2, index)
-STRCHR(m_ld_linux_x86_64_so_2, index)
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
// Note that this replacement often doesn't get used because gcc inlines
@@ -1650,9 +1628,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#define STRCPY(soname, fnname) \
@@ -1667,7 +1645,7 @@
return (char*)dst_orig; \
}
-STRCPY(m_libc_soname, strcpy)
+STRCPY(VG_Z_LIBC_SONAME, strcpy)
#define STRCMP(soname, fnname) \
@@ -1690,9 +1668,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCPY(soname, fnname) \
@@ -1737,9 +1715,9 @@
return dst; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* icc9 blats these around all over the place. Not only in the main
executable but various .so's. They are highly tuned and read
memory beyond the source boundary (although work correctly and
Modified: trunk/include/pub_tool_redir.h
===================================================================
--- trunk/include/pub_tool_redir.h 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/include/pub_tool_redir.h 2009-02-10 04:23:41 UTC (rev 9130)
@@ -158,7 +158,46 @@
#define VG_WRAP_FUNCTION_ZU(soname,fnname) VG_CONCAT4(_vgwZU_,soname,_,fnname)
#define VG_WRAP_FUNCTION_ZZ(soname,fnname) VG_CONCAT4(_vgwZZ_,soname,_,fnname)
+/* --------- Some handy Z-encoded names. --------- */
+/* --- Soname of the standard C library. --- */
+
+#if defined(VGO_linux)
+# define VG_Z_LIBC_SONAME libcZdsoZa // libc.so*
+#elif defined(VGP_ppc32_aix5)
+ /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
+# define VG_Z_LIBC_SONAME libcZaZdaZLshrZdoZR // libc*.a(shr.o)
+#elif defined(VGP_ppc64_aix5)
+# define VG_Z_LIBC_SONAME libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
+#else
+# error "Unknown platform"
+#endif
+
+/* --- Soname of the GNU C++ library. --- */
+
+// DDD: this one and those below should probably be conditionally compiled,
+// as should all the redirects in the tools that use them.
+#define VG_Z_LIBSTDCXX_SONAME libstdcZpZpZa // libstdc++*
+
+/* --- Soname of XLC's C++ library. --- */
+
+/* AIX: xlC's C++ runtime library is called libC.a, and the
+ interesting symbols appear to be in ansicore_32.o or ansicore_64.o
+ respectively. */
+#if defined(VGP_ppc32_aix5)
+# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu32ZdoZR // libC.a(ansicore_32.o)
+#elif defined(VGP_ppc64_aix5)
+# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
+#endif
+
+/* --- Sonames for Linux ELF linkers. --- */
+
+#define VG_Z_LD_LINUX_SO_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
+#define VG_Z_LD_LINUX_X86_64_SO_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
+#define VG_Z_LD64_SO_1 ld64ZdsoZd1 // ld64.so.1
+#define VG_Z_LD_SO_1 ldZdsoZd1 // ld.so.1
+
+
#endif // __PUB_TOOL_REDIR_H
/*--------------------------------------------------------------------*/
Modified: trunk/memcheck/mc_replace_strmem.c
===================================================================
--- trunk/memcheck/mc_replace_strmem.c 2009-02-10 03:37:39 UTC (rev 9129)
+++ trunk/memcheck/mc_replace_strmem.c 2009-02-10 04:23:41 UTC (rev 9130)
@@ -97,29 +97,7 @@
s, src, dst, len, 0); \
}
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRRCHR(soname, fnname) \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
@@ -135,9 +113,9 @@
}
// Apparently rindex() is the same thing as strrchr()
-STRRCHR(m_libc_soname, strrchr)
-STRRCHR(m_libc_soname, rindex)
-STRRCHR(m_ld_linux_so_2, rindex)
+STRRCHR(VG_Z_LIBC_SONAME, strrchr)
+STRRCHR(VG_Z_LIBC_SONAME, rindex)
+STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
#define STRCHR(soname, fnname) \
@@ -154,12 +132,12 @@
}
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_soname, strchr)
-STRCHR(m_ld_linux_so_2, strchr)
-STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_libc_soname, index)
-STRCHR(m_ld_linux_so_2, index)
-STRCHR(m_ld_linux_x86_64_so_2, index)
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
#define STRCAT(soname, fnname) \
@@ -183,7 +161,7 @@
return dst_orig; \
}
-STRCAT(m_libc_soname, strcat)
+STRCAT(VG_Z_LIBC_SONAME, strcat)
#define STRNCAT(soname, fnname) \
@@ -211,7 +189,7 @@
return dst_orig; \
}
-STRNCAT(m_libc_soname, strncat)
+STRNCAT(VG_Z_LIBC_SONAME, strncat)
#define STRNLEN(soname, fnname) \
@@ -223,7 +201,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -239,9 +217,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#define STRCPY(soname, fnname) \
@@ -265,7 +243,7 @@
return dst_orig; \
}
-STRCPY(m_libc_soname, strcpy)
+STRCPY(VG_Z_LIBC_SONAME, strcpy)
#define STRNCPY(soname, fnname) \
@@ -288,7 +266,7 @@
return dst_orig; \
}
-STRNCPY(m_libc_soname, strncpy)
+STRNCPY(VG_Z_LIBC_SONAME, strncpy)
#define STRNCMP(soname, fnname) \
@@ -311,7 +289,7 @@
} \
}
-STRNCMP(m_libc_soname, strncmp)
+STRNCMP(VG_Z_LIBC_SONAME, strncmp)
#define STRCMP(soname, fnname) \
@@ -334,9 +312,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCHR(soname, fnname) \
@@ -351,7 +329,7 @@
return NULL; \
}
-MEMCHR(m_libc_soname, memchr)
+MEMCHR(VG_Z_LIBC_SONAME, memchr)
#define MEMCPY(soname, fnname) \
@@ -399,9 +377,9 @@
return dst; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* icc9 blats these around all over the place. Not only in the main
executable but various .so's. They are highly tuned and read
memory beyond the source boundary (although work correctly and
@@ -438,9 +416,9 @@
return 0; \
}
-MEMCMP(m_libc_soname, memcmp)
-MEMCMP(m_libc_soname, bcmp)
-MEMCMP(m_ld_so_1, bcmp)
+MEMCMP(VG_Z_LIBC_SONAME, memcmp)
+MEMCMP(VG_Z_LIBC_SONAME, bcmp)
+MEMCMP(VG_Z_LD_SO_1, bcmp)
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -466,9 +444,9 @@
return dst; \
}
-STPCPY(m_libc_soname, stpcpy)
-STPCPY(m_ld_linux_so_2, stpcpy)
-STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
+STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
+STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
#define MEMSET(soname, fnname) \
@@ -490,7 +468,7 @@
return s; \
}
-MEMSET(m_libc_soname, memset)
+MEMSET(VG_Z_LIBC_SONAME, memset)
#define MEMMOVE(soname, fnname) \
@@ -514,7 +492,7 @@
return dst; \
}
-MEMMOVE(m_libc_soname, memmove)
+MEMMOVE(VG_Z_LIBC_SONAME, memmove)
/* glibc 2.5 variant of memmove which checks the dest is big enough.
@@ -550,7 +528,7 @@
return NULL; \
}
-GLIBC25___MEMMOVE_CHK(m_libc_soname, __memmove_chk)
+GLIBC25___MEMMOVE_CHK(VG_Z_LIBC_SONAME, __memmove_chk)
/* Find the first occurrence of C in S or the final NUL byte. */
@@ -567,7 +545,7 @@
} \
}
-GLIBC232_STRCHRNUL(m_libc_soname, strchrnul)
+GLIBC232_STRCHRNUL(VG_Z_LIBC_SONAME, strchrnul)
/* Find the first occurrence of C in S. */
@@ -583,7 +561,7 @@
} \
}
-GLIBC232_RAWMEMCHR(m_libc_soname, rawmemchr)
+GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr)
/* glibc variant of strcpy that checks the dest is big enough.
@@ -611,7 +589,7 @@
return NULL; \
}
-GLIBC25___STRCPY_CHK(m_libc_soname, __strcpy_chk)
+GLIBC25___STRCPY_CHK(VG_Z_LIBC_SONAME, __strcpy_chk)
/* glibc variant of stpcpy that checks the dest is big enough.
@@ -638,7 +616,7 @@
return NULL; \
}
-GLIBC25___STPCPY_CHK(m_libc_soname, __stpcpy_chk)
+GLIBC25___STPCPY_CHK(VG_Z_LIBC_SONAME, __stpcpy_chk)
/* mempcpy */
@@ -674,8 +652,8 @@
return (void*)( ((char*)dst) + len_saved ); \
}
-GLIBC25_MEMPCPY(m_libc_soname, mempcpy)
-GLIBC25_MEMPCPY(m_ld_so_1, mempcpy) /* ld.so.1 */
+GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy)
+GLIBC25_MEMPCPY(VG_Z_LD_SO_1, mempcpy) /* ld.so.1 */
#define GLIBC26___MEMCPY_CHK(soname, fnname) \
@@ -719,7 +697,7 @@
return NULL; \
}
-GLIBC26___MEMCPY_CHK(m_libc_soname, __memcpy_chk)
+GLIBC26___MEMCPY_CHK(VG_Z_LIBC_SONAME, __memcpy_chk)
/*------------------------------------------------------------*/
@@ -729,8 +707,8 @@
#if defined(VGO_linux)
/* putenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, putenv) (char* string);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, putenv) (char* string)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string);
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string)
{
OrigFn fn;
Word result;
@@ -746,8 +724,8 @@
}
/* unsetenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, unsetenv) (const char* name);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, unsetenv) (const char* name)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, unsetenv) (const char* name);
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, unsetenv) (const char* name)
{
OrigFn fn;
Word result;
@@ -763,9 +741,9 @@
}
/* setenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, setenv)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, setenv)
(const char* name, const char* value, int overwrite);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, setenv)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, setenv)
(const char* name, const char* value, int overwrite)
{
OrigFn fn;
|
|
From: Tom H. <th...@cy...> - 2009-02-10 03:48:30
|
Nightly build on vauxhall ( x86_64, Fedora 10 ) started at 2009-02-10 03:20:05 GMT 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 == 486 tests, 1 stderr failure, 0 stdout failures, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) |
|
From: Tom H. <th...@cy...> - 2009-02-10 03:44:02
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2009-02-10 03:05:04 GMT 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 == 477 tests, 6 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/tc20_verifywrap (stderr) memcheck/tests/x86-linux/scalar (stderr) |
Author: njn
Date: 2009-02-10 03:37:39 +0000 (Tue, 10 Feb 2009)
New Revision: 9129
Log:
Factored out duplicated Z-encoded names from numerous places into
pub_tool_redir.h.
Got DRD and Ptrcheck compiling, but they both die very quickly at run-time.
Modified:
branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c
branches/DARWIN/coregrind/m_syswrap/syswrap-main.c
branches/DARWIN/coregrind/pub_core_vkiscnums.h
branches/DARWIN/drd/Makefile.am
branches/DARWIN/drd/drd_main.c
branches/DARWIN/drd/drd_pthread_intercepts.c
branches/DARWIN/drd/drd_semaphore.c
branches/DARWIN/drd/drd_semaphore.h
branches/DARWIN/drd/drd_strmem_intercepts.c
branches/DARWIN/drd/tests/recursive_mutex.c
branches/DARWIN/exp-ptrcheck/Makefile.am
branches/DARWIN/exp-ptrcheck/h_intercepts.c
branches/DARWIN/exp-ptrcheck/h_main.c
branches/DARWIN/helgrind/hg_intercepts.c
branches/DARWIN/include/pub_tool_redir.h
branches/DARWIN/include/pub_tool_vkiscnums.h
branches/DARWIN/include/vki/vki-scnums-darwin.h
branches/DARWIN/memcheck/mc_replace_strmem.c
Modified: branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/coregrind/m_replacemalloc/vg_replace_malloc.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -53,39 +53,7 @@
#include "pub_core_redir.h" // for VG_REPLACE_FUNCTION_*
#include "pub_core_replacemalloc.h"
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#elif defined(VGO_darwin)
-# define m_libc_soname libSystemZdZaZddylib // Darwin libSystem.*.dylib
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Soname of the GNU C++ library. --- */
-
-#define m_libstdcxx_soname libstdcZpZpZa // libstdc++*
-
-/* --- Soname of XLC's C++ library. --- */
-
-/* AIX: xlC's C++ runtime library is called libC.a, and the
- interesting symbols appear to be in ansicore_32.o or ansicore_64.o
- respectively. */
-#if defined(VGP_ppc32_aix5)
-# define m_libC_dot_a libCZdaZLansicoreZu32ZdoZR // libC.a(ansicore_32.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libC_dot_a libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
-#endif
-
-
/* 2 Apr 05: the Portland Group compiler, which uses cfront/ARM style
mangling, could be supported properly by the redirects in this
module. Except we can't because it doesn't put its allocation
@@ -220,38 +188,38 @@
// (from_so, from_fn, v's replacement)
// malloc
-ALLOC_or_NULL(m_libstdcxx_soname, malloc, malloc);
-ALLOC_or_NULL(m_libc_soname, malloc, malloc);
+ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, malloc, malloc);
+ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc, malloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-ALLOC_or_NULL(m_libc_soname, malloc_common, malloc);
+ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc_common, malloc);
#endif
-ZONEALLOC_or_NULL(m_libc_soname, malloc_zone_malloc, malloc);
+ZONEALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc_zone_malloc, malloc);
/*---------------------- new ----------------------*/
// operator new(unsigned int), not mangled (for gcc 2.96)
-ALLOC_or_BOMB(m_libstdcxx_soname, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_soname, builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libstdcxx_soname, __builtin_new, __builtin_new);
-ALLOC_or_BOMB(m_libc_soname, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, __builtin_new, __builtin_new);
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, __builtin_new, __builtin_new);
// operator new(unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znwj, __builtin_new);
- ALLOC_or_BOMB(m_libc_soname, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwj, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwj, __builtin_new);
#endif
// operator new(unsigned long), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGO_darwin)
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znwm, __builtin_new);
- ALLOC_or_BOMB(m_libc_soname, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwm, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwm, __builtin_new);
#endif
// operator new(unsigned long), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __nw__FUl, __builtin_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __nw__FUl, __builtin_new);
#endif
@@ -259,43 +227,43 @@
// operator new(unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnwjRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(m_libc_soname, _ZnwjRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) || defined(VGO_darwin)
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnwmRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(m_libc_soname, _ZnwmRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_NULL(m_libC_dot_a, __nw__FUlRCQ2_3std9nothrow_t, __builtin_new);
+ ALLOC_or_NULL(VG_Z_LIBC_DOT_A, __nw__FUlRCQ2_3std9nothrow_t, __builtin_new);
#endif
/*---------------------- new [] ----------------------*/
// operator new[](unsigned int), not mangled (for gcc 2.96)
-ALLOC_or_BOMB(m_libstdcxx_soname, __builtin_vec_new, __builtin_vec_new );
-ALLOC_or_BOMB(m_libc_soname, __builtin_vec_new, __builtin_vec_new );
+ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_new, __builtin_vec_new );
+ALLOC_or_BOMB(VG_Z_LIBC_SONAME, __builtin_vec_new, __builtin_vec_new );
// operator new[](unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znaj, __builtin_vec_new );
- ALLOC_or_BOMB(m_libc_soname, _Znaj, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znaj, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znaj, __builtin_vec_new );
#endif
// operator new[](unsigned long), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) || defined(VGO_darwin)
- ALLOC_or_BOMB(m_libstdcxx_soname, _Znam, __builtin_vec_new );
- ALLOC_or_BOMB(m_libc_soname, _Znam, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znam, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znam, __builtin_vec_new );
#endif
// operator new[](unsigned long), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __vn__FUl, __builtin_vec_new);
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __vn__FUl, __builtin_vec_new);
#endif
@@ -303,19 +271,19 @@
// operator new[](unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnajRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(m_libc_soname, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new[](unsigned long, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 8 || defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5) || defined(VGO_darwin)
- ALLOC_or_NULL(m_libstdcxx_soname, _ZnamRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(m_libc_soname, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new [](unsigned long, std::nothrow_t const&), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
- ALLOC_or_BOMB(m_libC_dot_a, __vn__FUlRCQ2_3std9nothrow_t, __builtin_vec_new );
+ ALLOC_or_BOMB(VG_Z_LIBC_DOT_A, __vn__FUlRCQ2_3std9nothrow_t, __builtin_vec_new );
#endif
@@ -349,63 +317,63 @@
}
// free
-FREE(m_libstdcxx_soname, free, free );
-FREE(m_libc_soname, free, free );
+FREE(VG_Z_LIBSTDCXX_SONAME, free, free );
+FREE(VG_Z_LIBC_SONAME, free, free );
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libc_soname, free_common, free );
+FREE(VG_Z_LIBC_SONAME, free_common, free );
#endif
-ZONEFREE(m_libc_soname, malloc_zone_free, free );
+ZONEFREE(VG_Z_LIBC_SONAME, malloc_zone_free, free );
/*---------------------- cfree ----------------------*/
// cfree
-FREE(m_libstdcxx_soname, cfree, free );
-FREE(m_libc_soname, cfree, free );
+FREE(VG_Z_LIBSTDCXX_SONAME, cfree, free );
+FREE(VG_Z_LIBC_SONAME, cfree, free );
/*---------------------- delete ----------------------*/
// operator delete(void*), not mangled (for gcc 2.96)
-FREE(m_libstdcxx_soname, __builtin_delete, __builtin_delete );
-FREE(m_libc_soname, __builtin_delete, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_delete, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, __builtin_delete, __builtin_delete );
// operator delete(void*), GNU mangling
-FREE(m_libstdcxx_soname, _ZdlPv, __builtin_delete );
-FREE(m_libc_soname, _ZdlPv, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPv, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdlPv, __builtin_delete );
// operator delete(void*), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libC_dot_a, __dl__FPv, __builtin_delete );
+FREE(VG_Z_LIBC_DOT_A, __dl__FPv, __builtin_delete );
#endif
/*---------------------- delete nothrow ----------------------*/
// operator delete(void*, std::nothrow_t const&), GNU mangling
-FREE(m_libstdcxx_soname, _ZdlPvRKSt9nothrow_t, __builtin_delete );
-FREE(m_libc_soname, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
/*---------------------- delete [] ----------------------*/
// operator delete[](void*), not mangled (for gcc 2.96)
-FREE(m_libstdcxx_soname, __builtin_vec_delete, __builtin_vec_delete );
-FREE(m_libc_soname, __builtin_vec_delete, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_delete, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, __builtin_vec_delete, __builtin_vec_delete );
// operator delete[](void*), GNU mangling
-FREE(m_libstdcxx_soname, _ZdaPv, __builtin_vec_delete );
-FREE(m_libc_soname, _ZdaPv, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPv, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdaPv, __builtin_vec_delete );
// operator delete[](void*), ARM/cfront mangling
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-FREE(m_libC_dot_a, __vd__FPv, __builtin_vec_delete );
+FREE(VG_Z_LIBC_DOT_A, __vd__FPv, __builtin_vec_delete );
#endif
/*---------------------- delete [] nothrow ----------------------*/
// operator delete[](void*, std::nothrow_t const&), GNU mangling
-FREE(m_libstdcxx_soname, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
-FREE(m_libc_soname, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+FREE(VG_Z_LIBC_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
/*---------------------- calloc ----------------------*/
@@ -440,11 +408,11 @@
return v; \
}
-CALLOC(m_libc_soname, calloc);
+CALLOC(VG_Z_LIBC_SONAME, calloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-CALLOC(m_libc_soname, calloc_common);
+CALLOC(VG_Z_LIBC_SONAME, calloc_common);
#endif
-ZONECALLOC(m_libc_soname, malloc_zone_calloc);
+ZONECALLOC(VG_Z_LIBC_SONAME, malloc_zone_calloc);
/*---------------------- realloc ----------------------*/
@@ -462,9 +430,9 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. GrP fixme use zonemalloc instead? */ \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(m_libc_soname,free)(ptrV); \
+ VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0"); \
return NULL; \
} \
@@ -486,9 +454,9 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. */ \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(m_libc_soname,free)(ptrV); \
+ VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0"); \
return NULL; \
} \
@@ -497,11 +465,11 @@
return v; \
}
-REALLOC(m_libc_soname, realloc);
+REALLOC(VG_Z_LIBC_SONAME, realloc);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
-REALLOC(m_libc_soname, realloc_common);
+REALLOC(VG_Z_LIBC_SONAME, realloc_common);
#endif
-ZONEREALLOC(m_libc_soname, malloc_zone_realloc);
+ZONEREALLOC(VG_Z_LIBC_SONAME, malloc_zone_realloc);
/*---------------------- memalign ----------------------*/
@@ -552,8 +520,8 @@
return v; \
}
-MEMALIGN(m_libc_soname, memalign);
-ZONEMEMALIGN(m_libc_soname, malloc_zone_memalign);
+MEMALIGN(VG_Z_LIBC_SONAME, memalign);
+ZONEMEMALIGN(VG_Z_LIBC_SONAME, malloc_zone_memalign);
/*---------------------- valloc ----------------------*/
@@ -575,7 +543,7 @@
static int pszB = 0; \
if (pszB == 0) \
pszB = local__getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign) \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
@@ -588,12 +556,12 @@
extern int getpagesize (void); \
if (pszB == 0) \
pszB = getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign) \
+ return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
-VALLOC(m_libc_soname, valloc);
-ZONEVALLOC(m_libc_soname, malloc_zone_valloc);
+VALLOC(VG_Z_LIBC_SONAME, valloc);
+ZONEVALLOC(VG_Z_LIBC_SONAME, malloc_zone_valloc);
/*---------------------- mallopt ----------------------*/
@@ -610,7 +578,7 @@
return 1; \
}
-MALLOPT(m_libc_soname, mallopt);
+MALLOPT(VG_Z_LIBC_SONAME, mallopt);
/*---------------------- malloc_trim ----------------------*/
@@ -646,7 +614,7 @@
return 0; \
}
-MALLOC_TRIM(m_libc_soname, malloc_trim);
+MALLOC_TRIM(VG_Z_LIBC_SONAME, malloc_trim);
/*---------------------- posix_memalign ----------------------*/
@@ -666,7 +634,7 @@
|| (alignment & (alignment - 1)) != 0) \
return VKI_EINVAL; \
\
- mem = VG_REPLACE_FUNCTION_ZU(m_libc_soname,memalign)(alignment, size); \
+ mem = VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign)(alignment, size); \
\
if (mem != NULL) { \
*memptr = mem; \
@@ -676,12 +644,12 @@
return VKI_ENOMEM; \
}
-POSIX_MEMALIGN(m_libc_soname, posix_memalign);
+POSIX_MEMALIGN(VG_Z_LIBC_SONAME, posix_memalign);
#if defined(VGP_ppc32_aix5) || defined(VGP_ppc64_aix5)
/* 27 Nov 07: it appears that xlc links into executables, a
posix_memalign, which calls onwards to memalign_common, with the
same args. */
-POSIX_MEMALIGN(m_libc_soname, memalign_common);
+POSIX_MEMALIGN(VG_Z_LIBC_SONAME, memalign_common);
#endif
@@ -705,8 +673,8 @@
return pszB; \
}
-MALLOC_USABLE_SIZE(m_libc_soname, malloc_usable_size);
-MALLOC_USABLE_SIZE(m_libc_soname, malloc_size);
+MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
+MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_size);
/*---------------------- (unimplemented) ----------------------*/
@@ -728,9 +696,9 @@
panic(#fnname); \
}
-PANIC(m_libc_soname, pvalloc);
-PANIC(m_libc_soname, malloc_get_state);
-PANIC(m_libc_soname, malloc_set_state);
+PANIC(VG_Z_LIBC_SONAME, pvalloc);
+PANIC(VG_Z_LIBC_SONAME, malloc_get_state);
+PANIC(VG_Z_LIBC_SONAME, malloc_set_state);
#define MALLOC_STATS(soname, fnname) \
\
@@ -740,7 +708,7 @@
/* Valgrind's malloc_stats implementation does nothing. */ \
}
-MALLOC_STATS(m_libc_soname, malloc_stats);
+MALLOC_STATS(VG_Z_LIBC_SONAME, malloc_stats);
/*---------------------- mallinfo ----------------------*/
@@ -760,7 +728,7 @@
return mi; \
}
-MALLINFO(m_libc_soname, mallinfo);
+MALLINFO(VG_Z_LIBC_SONAME, mallinfo);
#if defined(VGO_darwin)
@@ -769,11 +737,11 @@
NULL, // reserved
NULL, // reserved
NULL, // fixme malloc_size
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_malloc),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_calloc),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_valloc),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_free),
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_realloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_malloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_calloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_valloc),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_free),
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_realloc),
NULL, // fixme destroy
"ValgrindMallocZone",
NULL, // batch_malloc
@@ -781,7 +749,7 @@
NULL, // fixme introspect
2, // version (fixme 3?)
// DDD: on my machine this last field doesn't exist in malloc_zone_t.
- (void*)VG_REPLACE_FUNCTION_ZU(m_libc_soname, malloc_zone_memalign)
+ (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_memalign)
};
#define DEFAULT_ZONE(soname, fnname) \
@@ -792,8 +760,8 @@
return &vg_default_zone; \
}
-DEFAULT_ZONE(m_libc_soname, malloc_zone_from_ptr);
-DEFAULT_ZONE(m_libc_soname, malloc_default_zone);
+DEFAULT_ZONE(VG_Z_LIBC_SONAME, malloc_zone_from_ptr);
+DEFAULT_ZONE(VG_Z_LIBC_SONAME, malloc_default_zone);
// GrP fixme bypass libc's use of zone->introspect->check
#define ZONE_CHECK(soname, fnname) \
@@ -804,7 +772,7 @@
return 1; \
}
-ZONE_CHECK(m_libc_soname, malloc_zone_check);
+ZONE_CHECK(VG_Z_LIBC_SONAME, malloc_zone_check);
#endif
Modified: branches/DARWIN/coregrind/m_syswrap/syswrap-main.c
===================================================================
--- branches/DARWIN/coregrind/m_syswrap/syswrap-main.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/coregrind/m_syswrap/syswrap-main.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -941,6 +941,7 @@
VG_TRACK( post_reg_write, Vg_CoreSysCall, tid,
OFFSET_x86_EAX, sizeof(UWord) );
// fixme sets defined for entire eflags, not just bit c
+ // DDD: this breaks exp-ptrcheck.
VG_TRACK( post_reg_write, Vg_CoreSysCall, tid,
offsetof(VexGuestX86State, guest_CC_DEP1), sizeof(UInt) );
break;
Modified: branches/DARWIN/coregrind/pub_core_vkiscnums.h
===================================================================
--- branches/DARWIN/coregrind/pub_core_vkiscnums.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/coregrind/pub_core_vkiscnums.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -56,10 +56,6 @@
#elif defined(VGO_darwin)
-/* Macros for working out which syscall a syscall number refers to. */
-#define VG_DARWIN_SYSNO_INDEX(sysno) ((sysno) & VG_DARWIN_SYSCALL_NUMBER_MASK)
-#define VG_DARWIN_SYSNO_CLASS(sysno) ((sysno) >> VG_DARWIN_SYSCALL_CLASS_SHIFT)
-
/* Convert a syscall number into a nicer form(?) */
#if defined(VGA_x86)
# define VG_DARWIN_SYSNO_NUM(sysno) VG_DARWIN_SYSNO_PRINT(sysno)
Modified: branches/DARWIN/drd/Makefile.am
===================================================================
--- branches/DARWIN/drd/Makefile.am 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/Makefile.am 2009-02-10 03:37:39 UTC (rev 9129)
@@ -19,6 +19,12 @@
if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5
noinst_PROGRAMS += drd-ppc64-aix5 vgpreload_drd-ppc64-aix5.so
endif
+if VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
+ noinst_PROGRAMS += drd-x86-darwin vgpreload_drd-x86-darwin.so
+endif
+if VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN
+ noinst_PROGRAMS += drd-amd64-darwin vgpreload_drd-amd64-darwin.so
+endif
VGPRELOAD_DRD_SOURCES = \
@@ -91,7 +97,22 @@
vgpreload_drd_ppc64_aix5_so_LDFLAGS = $(PRELOAD_LDFLAGS_PPC64_AIX5)\
$(LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5)
+vgpreload_drd_x86_darwin_so_SOURCES = $(VGPRELOAD_DRD_SOURCES)
+vgpreload_drd_x86_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+vgpreload_drd_x86_darwin_so_CFLAGS = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PIC)
+vgpreload_drd_x86_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_X86_DARWIN)
+vgpreload_drd_x86_darwin_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_DARWIN)
+vgpreload_drd_x86_darwin_so_LDFLAGS = $(PRELOAD_LDFLAGS_X86_DARWIN)\
+ $(LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN)
+vgpreload_drd_amd64_darwin_so_SOURCES = $(VGPRELOAD_DRD_SOURCES)
+vgpreload_drd_amd64_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+vgpreload_drd_amd64_darwin_so_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PIC)
+vgpreload_drd_amd64_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_AMD64_DARWIN)
+vgpreload_drd_amd64_darwin_so_DEPENDENCIES =
+vgpreload_drd_amd64_darwin_so_LDFLAGS = $(PRELOAD_LDFLAGS_AMD64_DARWIN)\
+ $(LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN)
+
DRD_SOURCES = \
drd_barrier.c \
drd_clientobj.c \
@@ -173,3 +194,19 @@
drd_ppc64_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_AIX5)
drd_ppc64_aix5_LDADD = $(TOOL_LDADD_PPC64_AIX5)
drd_ppc64_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC64_AIX5)
+
+drd_x86_darwin_SOURCES = $(DRD_SOURCES)
+drd_x86_darwin_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+drd_x86_darwin_CFLAGS = $(AM_CFLAGS_X86_DARWIN)
+drd_x86_darwin_DEPENDENCIES = $(COREGRIND_LIBS_X86_DARWIN)
+drd_x86_darwin_LDADD = $(TOOL_LDADD_X86_DARWIN)
+drd_x86_darwin_LDFLAGS = $(TOOL_LDFLAGS_X86_DARWIN)
+
+drd_amd64_darwin_SOURCES = $(DRD_SOURCES)
+drd_amd64_darwin_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+drd_amd64_darwin_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN)
+drd_amd64_darwin_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_DARWIN)
+drd_amd64_darwin_LDADD = $(TOOL_LDADD_AMD64_DARWIN)
+drd_amd64_darwin_LDFLAGS = $(TOOL_LDFLAGS_AMD64_DARWIN)
+
+
Modified: branches/DARWIN/drd/drd_main.c
===================================================================
--- branches/DARWIN/drd/drd_main.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_main.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -780,7 +780,7 @@
void drd_semaphore_destroy(const Addr semaphore)
{
- semaphore_destroy(semaphore);
+ my_semaphore_destroy(semaphore);
}
void drd_semaphore_pre_wait(const DrdThreadId tid, const Addr semaphore)
Modified: branches/DARWIN/drd/drd_pthread_intercepts.c
===================================================================
--- branches/DARWIN/drd/drd_pthread_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_pthread_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -571,6 +571,7 @@
}
+#if defined(HAVE_PTHREAD_SPIN_LOCK)
// pthread_spin_init
PTH_FUNC(int, pthreadZuspinZuinit, // pthread_spin_init
pthread_spinlock_t *spinlock,
@@ -651,7 +652,10 @@
spinlock, 0, 0, 0, 0);
return ret;
}
+#endif // HAVE_PTHREAD_SPIN_LOCK
+
+#if defined(HAVE_PTHREAD_BARRIER_INIT)
// pthread_barrier_init
PTH_FUNC(int, pthreadZubarrierZuinit, // pthread_barrier_init
pthread_barrier_t* barrier,
@@ -703,6 +707,7 @@
0, 0);
return ret;
}
+#endif // HAVE_PTHREAD_BARRIER_INIT
// sem_init
Modified: branches/DARWIN/drd/drd_semaphore.c
===================================================================
--- branches/DARWIN/drd/drd_semaphore.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_semaphore.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -189,8 +189,12 @@
return p;
}
-/** Called after sem_destroy(). */
-void semaphore_destroy(const Addr semaphore)
+/** Called after sem_destroy().
+ * The "my_" prefix avoids a clash with
+ * coregrind/m_mach/taskUser.c:semaphore_destroy on Darwin.
+ * XXX: this function should have a DRD_() wrapper! */
+
+void my_semaphore_destroy(const Addr semaphore)
{
struct semaphore_info* p;
Modified: branches/DARWIN/drd/drd_semaphore.h
===================================================================
--- branches/DARWIN/drd/drd_semaphore.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_semaphore.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -41,7 +41,7 @@
void semaphore_set_trace(const Bool trace_semaphore);
struct semaphore_info* semaphore_init(const Addr semaphore,
const Word pshared, const UInt value);
-void semaphore_destroy(const Addr semaphore);
+void my_semaphore_destroy(const Addr semaphore);
void semaphore_pre_wait(const Addr semaphore);
void semaphore_post_wait(const DrdThreadId tid, const Addr semaphore,
const Bool waited);
Modified: branches/DARWIN/drd/drd_strmem_intercepts.c
===================================================================
--- branches/DARWIN/drd/drd_strmem_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/drd_strmem_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -38,29 +38,6 @@
#include "valgrind.h"
-/* --------- Some handy Z-encoded names. --------- */
-
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRNLEN(soname, fnname) \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \
SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \
@@ -70,7 +47,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -86,9 +63,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
/*--------------------------------------------------------------------*/
/*--- end ---*/
Modified: branches/DARWIN/drd/tests/recursive_mutex.c
===================================================================
--- branches/DARWIN/drd/tests/recursive_mutex.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/drd/tests/recursive_mutex.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -10,6 +10,7 @@
#include "../../config.h"
+#if !defined(VGO_darwin)
static void lock_twice(pthread_mutex_t* const p)
{
pthread_mutex_lock(p);
@@ -17,6 +18,7 @@
pthread_mutex_unlock(p);
pthread_mutex_unlock(p);
}
+#endif
int main(int argc, char** argv)
{
@@ -60,6 +62,10 @@
pthread_mutex_destroy(&m);
}
#endif
+
+// DDD: Darwin doesn't support signals yet, so the alarm() call doesn't kick
+// in, which causes it to hang.
+#if !defined(VGO_darwin)
{
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
@@ -68,5 +74,6 @@
lock_twice(&m);
}
printf("Done.\n");
+#endif
return 0;
}
Modified: branches/DARWIN/exp-ptrcheck/Makefile.am
===================================================================
--- branches/DARWIN/exp-ptrcheck/Makefile.am 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/exp-ptrcheck/Makefile.am 2009-02-10 03:37:39 UTC (rev 9129)
@@ -19,6 +19,12 @@
if VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5
noinst_PROGRAMS += exp-ptrcheck-ppc64-aix5 vgpreload_exp-ptrcheck-ppc64-aix5.so
endif
+if VGCONF_PLATFORMS_INCLUDE_X86_DARWIN
+noinst_PROGRAMS += exp-ptrcheck-x86-darwin vgpreload_exp-ptrcheck-x86-darwin.so
+endif
+if VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN
+noinst_PROGRAMS += exp-ptrcheck-amd64-darwin vgpreload_exp-ptrcheck-amd64-darwin.so
+endif
VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON = h_intercepts.c
@@ -77,8 +83,26 @@
$(PRELOAD_LDFLAGS_PPC64_AIX5) \
$(LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5)
+vgpreload_exp_ptrcheck_x86_darwin_so_SOURCES = $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON)
+vgpreload_exp_ptrcheck_x86_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+vgpreload_exp_ptrcheck_x86_darwin_so_CFLAGS = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PIC) -O2
+vgpreload_exp_ptrcheck_x86_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_X86_DARWIN)
+vgpreload_exp_ptrcheck_x86_darwin_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_DARWIN)
+vgpreload_exp_ptrcheck_x86_darwin_so_LDFLAGS = \
+ $(PRELOAD_LDFLAGS_X86_DARWIN) \
+ $(LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_SOURCES = $(VGPRELOAD_EXP_PTRCHECK_SOURCES_COMMON)
+vgpreload_exp_ptrcheck_amd64_darwin_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PIC) -O2
+vgpreload_exp_ptrcheck_amd64_darwin_so_CCASFLAGS = $(AM_CCASFLAGS_AMD64_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_DEPENDENCIES = $(LIBREPLACEMALLOC_AMD64_DARWIN)
+vgpreload_exp_ptrcheck_amd64_darwin_so_LDFLAGS = \
+ $(PRELOAD_LDFLAGS_AMD64_DARWIN) \
+ $(LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN)
+
+
EXP_PTRCHECK_SOURCES_COMMON = \
pc_common.c h_main.c sg_main.c pc_main.c
@@ -124,6 +148,20 @@
exp_ptrcheck_ppc64_aix5_LDADD = $(TOOL_LDADD_PPC64_AIX5)
exp_ptrcheck_ppc64_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC64_AIX5)
+exp_ptrcheck_x86_darwin_SOURCES = $(EXP_PTRCHECK_SOURCES_COMMON)
+exp_ptrcheck_x86_darwin_CPPFLAGS = $(AM_CPPFLAGS_X86_DARWIN)
+exp_ptrcheck_x86_darwin_CFLAGS = $(AM_CFLAGS_X86_DARWIN)
+exp_ptrcheck_x86_darwin_DEPENDENCIES = $(COREGRIND_LIBS_X86_DARWIN)
+exp_ptrcheck_x86_darwin_LDADD = $(TOOL_LDADD_X86_DARWIN)
+exp_ptrcheck_x86_darwin_LDFLAGS = $(TOOL_LDFLAGS_X86_DARWIN)
+
+exp_ptrcheck_amd64_darwin_SOURCES = $(EXP_PTRCHECK_SOURCES_COMMON)
+exp_ptrcheck_amd64_darwin_CPPFLAGS = $(AM_CPPFLAGS_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_CFLAGS = $(AM_CFLAGS_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_LDADD = $(TOOL_LDADD_AMD64_DARWIN)
+exp_ptrcheck_amd64_darwin_LDFLAGS = $(TOOL_LDFLAGS_AMD64_DARWIN)
+
noinst_HEADERS = h_main.h sg_main.h pc_common.h
EXTRA_DIST =
Modified: branches/DARWIN/exp-ptrcheck/h_intercepts.c
===================================================================
--- branches/DARWIN/exp-ptrcheck/h_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/exp-ptrcheck/h_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -44,31 +44,6 @@
memcheck/mc_replace_strmem.c. If you copy more in, please keep
them in the same order as in mc_replace_strmem.c. */
-/* --------- Some handy Z-encoded names. --------- */
-
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
-
-
// Note that this replacement often doesn't get used because gcc inlines
// calls to strlen() with its own built-in version. This can be very
// confusing if you aren't expecting it. Other small functions in this file
@@ -82,10 +57,10 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
-STRLEN(m_ld_so_1, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
+STRLEN(VG_Z_LD_SO_1, strlen)
#define STRCMP(soname, fnname) \
@@ -108,9 +83,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCPY(soname, fnname) \
@@ -155,9 +130,9 @@
return dest; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -172,9 +147,9 @@
return dst; \
}
-STPCPY(m_libc_soname, stpcpy)
-STPCPY(m_ld_linux_so_2, stpcpy)
-STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
+STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
+STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
/*--------------------------------------------------------------------*/
Modified: branches/DARWIN/exp-ptrcheck/h_main.c
===================================================================
--- branches/DARWIN/exp-ptrcheck/h_main.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/exp-ptrcheck/h_main.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -1962,6 +1962,8 @@
if (is_integer_guest_reg( (Int)offset, (Int)size )) {
put_guest_intreg( tid, 1, offset, size, (UWord)NONPTR );
} else {
+ // DDD: on Darwin, this assertion fails because we currently do a
+ // 'post_reg_write' on the 'guest_CC_DEP1' pseudo-register.
tl_assert(0);
}
// VG_(set_thread_shadow_archreg)( tid, reg, (UInt)NONPTR );
@@ -2132,16 +2134,16 @@
syscall-specific handling is is required. No further details of it
are stored in the table.
- On Linux, 'number' is a __NR_xxx constant.
+ On Linux and Darwin, 'number' is a __NR_xxx constant.
On AIX5, 'number' is an Int*, which points to the Int variable
holding the currently assigned number for this syscall.
When querying the table, we compare the supplied syscall number
- with the 'number' field (directly on Linux, after dereferencing on
- AIX5), to find the relevant entry. This requires a linear search
- of the table. To stop the costs getting too high, the table is
- incrementally rearranged after each search, to move commonly
+ with the 'number' field (directly on Linux and Darwin, after
+ dereferencing on AIX5), to find the relevant entry. This requires a
+ linear search of the table. To stop the costs getting too high, the
+ table is incrementally rearranged after each search, to move commonly
requested items a bit closer to the front.
The table is built once, the first time it is used. After that we
@@ -2416,6 +2418,30 @@
ADD(1, __NR_AIX5_kload); /* not sure what to do here */
ADD(0, __NR_AIX5_kwrite);
+ /* --------------- DARWIN ------------- */
+
+# elif defined(VGO_darwin)
+
+# define ADD(_flag, _syscallname) \
+ do { UWordPair p; p.uw1 = (_syscallname); p.uw2 = (_flag); \
+ VG_(addToXA)( post_syscall_table, &p ); \
+ } while (0)
+
+ // DDD: a desultory attempt thus far...
+
+ // Unix/BSD syscalls.
+
+ // Mach traps.
+ ADD(0, __NR_host_self_trap);
+ ADD(0, __NR_mach_msg_trap);
+ ADD(0, __NR_mach_reply_port);
+ ADD(0, __NR_task_self_trap);
+
+ // Machine-dependent syscalls.
+ ADD(0, __NR_pthread_set_self);
+
+ /* ------------------------------------ */
+
# else
# error "Unsupported OS"
# endif
@@ -2436,7 +2462,7 @@
n = VG_(sizeXA)( post_syscall_table );
for (i = 0; i < n; i++) {
pair = VG_(indexXA)( post_syscall_table, i );
-# if defined(VGO_linux)
+# if defined(VGO_linux) || defined(VGO_darwin)
if (pair->uw1 == (UWord)sysno)
break;
# elif defined(VGO_aix5)
@@ -2458,7 +2484,7 @@
VG_(printf)("syscallnm == %s\n",
VG_(aix5_sysno_to_sysname)(sysno));
# elif defined(VGO_darwin)
- VG_(printf)("sysno == %u\n", VG_DARWIN_SYSNO_PRINT(sysno));
+ VG_(printf)("sysno == %d\n", VG_DARWIN_SYSNO_PRINT(sysno));
# else
# error "Unsupported OS"
# endif
Modified: branches/DARWIN/helgrind/hg_intercepts.c
===================================================================
--- branches/DARWIN/helgrind/hg_intercepts.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/helgrind/hg_intercepts.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -1596,31 +1596,7 @@
new functions, please keep them in the same order as they appear in
mc_replace_strmem.c. */
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#elif defined(VGO_darwin)
-# define m_libc_soname libSystemZdZaZddylib // libSystem.*.dylib
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-
#define STRCHR(soname, fnname) \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
@@ -1635,12 +1611,12 @@
}
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_soname, strchr)
-STRCHR(m_ld_linux_so_2, strchr)
-STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_libc_soname, index)
-STRCHR(m_ld_linux_so_2, index)
-STRCHR(m_ld_linux_x86_64_so_2, index)
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
// Note that this replacement often doesn't get used because gcc inlines
@@ -1656,9 +1632,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#define STRCPY(soname, fnname) \
@@ -1673,7 +1649,7 @@
return (char*)dst_orig; \
}
-STRCPY(m_libc_soname, strcpy)
+STRCPY(VG_Z_LIBC_SONAME, strcpy)
#define STRCMP(soname, fnname) \
@@ -1696,9 +1672,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCPY(soname, fnname) \
@@ -1743,9 +1719,9 @@
return dst; \
}
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* icc9 blats these around all over the place. Not only in the main
executable but various .so's. They are highly tuned and read
memory beyond the source boundary (although work correctly and
Modified: branches/DARWIN/include/pub_tool_redir.h
===================================================================
--- branches/DARWIN/include/pub_tool_redir.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/include/pub_tool_redir.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -158,7 +158,52 @@
#define VG_WRAP_FUNCTION_ZU(soname,fnname) VG_CONCAT4(_vgwZU_,soname,_,fnname)
#define VG_WRAP_FUNCTION_ZZ(soname,fnname) VG_CONCAT4(_vgwZZ_,soname,_,fnname)
+/* --------- Some handy Z-encoded names. --------- */
+/* --- Soname of the standard C library. --- */
+
+#if defined(VGO_linux)
+# define VG_Z_LIBC_SONAME libcZdsoZa // libc.so*
+#elif defined(VGP_ppc32_aix5)
+ /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
+# define VG_Z_LIBC_SONAME libcZaZdaZLshrZdoZR // libc*.a(shr.o)
+#elif defined(VGP_ppc64_aix5)
+# define VG_Z_LIBC_SONAME libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
+#elif defined(VGO_darwin)
+# define VG_Z_LIBC_SONAME libSystemZdZaZddylib // libSystem.*.dylib
+#else
+# error "Unknown platform"
+#endif
+
+/* --- Soname of the GNU C++ library. --- */
+
+// DDD: this one and those below should probably be conditionally compiled,
+// as should all the redirects in the tools that use them.
+#define VG_Z_LIBSTDCXX_SONAME libstdcZpZpZa // libstdc++*
+
+/* --- Soname of XLC's C++ library. --- */
+
+/* AIX: xlC's C++ runtime library is called libC.a, and the
+ interesting symbols appear to be in ansicore_32.o or ansicore_64.o
+ respectively. */
+#if defined(VGP_ppc32_aix5)
+# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu32ZdoZR // libC.a(ansicore_32.o)
+#elif defined(VGP_ppc64_aix5)
+# define VG_Z_LIBC_DOT_A libCZdaZLansicoreZu64ZdoZR // libC.a(ansicore_64.o)
+#endif
+
+/* --- Sonames for Linux ELF linkers. --- */
+
+#define VG_Z_LD_LINUX_SO_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
+#define VG_Z_LD_LINUX_X86_64_SO_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
+#define VG_Z_LD64_SO_1 ld64ZdsoZd1 // ld64.so.1
+#define VG_Z_LD_SO_1 ldZdsoZd1 // ld.so.1
+
+/* --- Executable name for Darwin Mach-O linker. --- */
+
+#define VG_Z_DYLD dyld // dyld
+
+
#endif // __PUB_TOOL_REDIR_H
/*--------------------------------------------------------------------*/
Modified: branches/DARWIN/include/pub_tool_vkiscnums.h
===================================================================
--- branches/DARWIN/include/pub_tool_vkiscnums.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/include/pub_tool_vkiscnums.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -80,13 +80,22 @@
#elif defined(VGP_x86_darwin) || defined(VGP_amd64_darwin)
# include "vki/vki-scnums-darwin.h"
-/* Convert a syscall number into a nice form for printing. */
+// Convert a syscall number into a nice form for printing. Unix syscalls
+// get positive numbers (0..400-odd), Mach traps get negative numbers
+// (-10..-127).
+// DDD: Machine-dependent ones get positive numbers which will overlap with
+// Unix ones! So eg. both 'pthread_set_self' and 'read' are reported as
+// "3".
#define VG_DARWIN_SYSNO_PRINT(sysno) \
((VG_DARWIN_SYSNO_CLASS(sysno) == VG_DARWIN_SYSCALL_CLASS_MACH) \
? -VG_DARWIN_SYSNO_INDEX(sysno) \
: VG_DARWIN_SYSNO_INDEX(sysno) \
)
+/* Macros for working out which syscall a syscall number refers to. */
+#define VG_DARWIN_SYSNO_INDEX(sysno) ((sysno) & VG_DARWIN_SYSCALL_NUMBER_MASK)
+#define VG_DARWIN_SYSNO_CLASS(sysno) ((sysno) >> VG_DARWIN_SYSCALL_CLASS_SHIFT)
+
#else
# error Unknown platform
#endif
Modified: branches/DARWIN/include/vki/vki-scnums-darwin.h
===================================================================
--- branches/DARWIN/include/vki/vki-scnums-darwin.h 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/include/vki/vki-scnums-darwin.h 2009-02-10 03:37:39 UTC (rev 9129)
@@ -38,6 +38,9 @@
// Don't pass __NR_something directly to any syscall instruction.
// Hack: x86 `int $0x80` (unix, 64-bit result) are special.
+// Encoding: the top 8-bits are the syscall class. The low 24 are the
+// syscall number (index) within that class.
+
#define VG_DARWIN_SYSCALL_CLASS_SHIFT 24
#define VG_DARWIN_SYSCALL_CLASS_MASK (0xFF << VG_DARWIN_SYSCALL_CLASS_SHIFT)
#define VG_DARWIN_SYSCALL_NUMBER_MASK (~VG_DARWIN_SYSCALL_CLASS_MASK)
Modified: branches/DARWIN/memcheck/mc_replace_strmem.c
===================================================================
--- branches/DARWIN/memcheck/mc_replace_strmem.c 2009-02-09 03:53:45 UTC (rev 9128)
+++ branches/DARWIN/memcheck/mc_replace_strmem.c 2009-02-10 03:37:39 UTC (rev 9129)
@@ -97,34 +97,7 @@
s, src, dst, len, 0); \
}
-/* --------- Some handy Z-encoded names. --------- */
-/* --- Soname of the standard C library. --- */
-
-#if defined(VGO_linux)
-# define m_libc_soname libcZdsoZa // libc.so*
-#elif defined(VGP_ppc32_aix5)
- /* AIX has both /usr/lib/libc.a and /usr/lib/libc_r.a. */
-# define m_libc_soname libcZaZdaZLshrZdoZR // libc*.a(shr.o)
-#elif defined(VGP_ppc64_aix5)
-# define m_libc_soname libcZaZdaZLshrZu64ZdoZR // libc*.a(shr_64.o)
-#elif defined(VGO_darwin)
-# define m_libc_soname libSystemZdZaZddylib // libSystem.*.dylib
-#else
-# error "Unknown platform"
-#endif
-
-/* --- Sonames for Linux ELF linkers. --- */
-
-#define m_ld_linux_so_2 ldZhlinuxZdsoZd2 // ld-linux.so.2
-#define m_ld_linux_x86_64_so_2 ldZhlinuxZhx86Zh64ZdsoZd2 // ld-linux-x86-64.so.2
-#define m_ld64_so_1 ld64ZdsoZd1 // ld64.so.1
-#define m_ld_so_1 ldZdsoZd1 // ld.so.1
-
-/* --- Executable name for Darwin Mach-O linker. --- */
-#define m_dyld dyld // dyld
-
-
#define STRRCHR(soname, fnname) \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
@@ -140,11 +113,11 @@
}
// Apparently rindex() is the same thing as strrchr()
-STRRCHR(m_libc_soname, strrchr)
-STRRCHR(m_dyld, strrchr)
-STRRCHR(m_libc_soname, rindex)
-STRRCHR(m_dyld, rindex)
-STRRCHR(m_ld_linux_so_2, rindex)
+STRRCHR(VG_Z_LIBC_SONAME, strrchr)
+STRRCHR(VG_Z_DYLD, strrchr)
+STRRCHR(VG_Z_LIBC_SONAME, rindex)
+STRRCHR(VG_Z_DYLD, rindex)
+STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
#define STRCHR(soname, fnname) \
@@ -161,14 +134,14 @@
}
// Apparently index() is the same thing as strchr()
-STRCHR(m_libc_soname, strchr)
-STRCHR(m_ld_linux_so_2, strchr)
-STRCHR(m_ld_linux_x86_64_so_2, strchr)
-STRCHR(m_dyld, strchr)
-STRCHR(m_libc_soname, index)
-STRCHR(m_ld_linux_so_2, index)
-STRCHR(m_ld_linux_x86_64_so_2, index)
-STRCHR(m_dyld, index)
+STRCHR(VG_Z_LIBC_SONAME, strchr)
+STRCHR(VG_Z_LD_LINUX_SO_2, strchr)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, strchr)
+STRCHR(VG_Z_DYLD, strchr)
+STRCHR(VG_Z_LIBC_SONAME, index)
+STRCHR(VG_Z_LD_LINUX_SO_2, index)
+STRCHR(VG_Z_LD_LINUX_X86_64_SO_2, index)
+STRCHR(VG_Z_DYLD, index)
#define STRCAT(soname, fnname) \
@@ -192,7 +165,7 @@
return dst_orig; \
}
-STRCAT(m_libc_soname, strcat)
+STRCAT(VG_Z_LIBC_SONAME, strcat)
#define STRNCAT(soname, fnname) \
@@ -220,8 +193,8 @@
return dst_orig; \
}
-STRNCAT(m_libc_soname, strncat)
-STRNCAT(m_dyld, strncat)
+STRNCAT(VG_Z_LIBC_SONAME, strncat)
+STRNCAT(VG_Z_DYLD, strncat)
/* Append src to dst. n is the size of dst's buffer. dst is guaranteed
@@ -260,8 +233,8 @@
return m; \
}
-STRLCAT(m_libc_soname, strlcat)
-STRLCAT(m_dyld, strlcat)
+STRLCAT(VG_Z_LIBC_SONAME, strlcat)
+STRLCAT(VG_Z_DYLD, strlcat)
#define STRNLEN(soname, fnname) \
@@ -273,7 +246,7 @@
return i; \
}
-STRNLEN(m_libc_soname, strnlen)
+STRNLEN(VG_Z_LIBC_SONAME, strnlen)
// Note that this replacement often doesn't get used because gcc inlines
@@ -289,9 +262,9 @@
return i; \
}
-STRLEN(m_libc_soname, strlen)
-STRLEN(m_ld_linux_so_2, strlen)
-STRLEN(m_ld_linux_x86_64_so_2, strlen)
+STRLEN(VG_Z_LIBC_SONAME, strlen)
+STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
+STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#define STRCPY(soname, fnname) \
@@ -315,8 +288,8 @@
return dst_orig; \
}
-STRCPY(m_libc_soname, strcpy)
-STRCPY(m_dyld, strcpy)
+STRCPY(VG_Z_LIBC_SONAME, strcpy)
+STRCPY(VG_Z_DYLD, strcpy)
#define STRNCPY(soname, fnname) \
@@ -339,8 +312,8 @@
return dst_orig; \
}
-STRNCPY(m_libc_soname, strncpy)
-STRNCPY(m_dyld, strncpy)
+STRNCPY(VG_Z_LIBC_SONAME, strncpy)
+STRNCPY(VG_Z_DYLD, strncpy)
/* Copy up to n-1 bytes from src to dst. Then nul-terminate dst if n > 0.
@@ -368,8 +341,8 @@
return src - src_orig; \
}
-STRLCPY(m_libc_soname, strlcpy)
-STRLCPY(m_dyld, strlcpy)
+STRLCPY(VG_Z_LIBC_SONAME, strlcpy)
+STRLCPY(VG_Z_DYLD, strlcpy)
#define STRNCMP(soname, fnname) \
@@ -392,8 +365,8 @@
} \
}
-STRNCMP(m_libc_soname, strncmp)
-STRNCMP(m_dyld, strncmp)
+STRNCMP(VG_Z_LIBC_SONAME, strncmp)
+STRNCMP(VG_Z_DYLD, strncmp)
#define STRCMP(soname, fnname) \
@@ -416,9 +389,9 @@
return 0; \
}
-STRCMP(m_libc_soname, strcmp)
-STRCMP(m_ld_linux_x86_64_so_2, strcmp)
-STRCMP(m_ld64_so_1, strcmp)
+STRCMP(VG_Z_LIBC_SONAME, strcmp)
+STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp)
+STRCMP(VG_Z_LD64_SO_1, strcmp)
#define MEMCHR(soname, fnname) \
@@ -433,8 +406,8 @@
return NULL; \
}
-MEMCHR(m_libc_soname, memchr)
-MEMCHR(m_dyld, memchr)
+MEMCHR(VG_Z_LIBC_SONAME, memchr)
+MEMCHR(VG_Z_DYLD, memchr)
#define MEMCPY(soname, fnname) \
@@ -485,9 +458,9 @@
#if defined(VGO_darwin)
/* Darwin's memcpy() is overlap-safe, so replace it with MEMMOVE instead. */
#else
-MEMCPY(m_libc_soname, memcpy)
-MEMCPY(m_ld_so_1, memcpy) /* ld.so.1 */
-MEMCPY(m_ld64_so_1, memcpy) /* ld64.so.1 */
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
/* icc9 blats these around all over the place. Not only in the main
executable but various .so's. They are highly tuned and read
memory beyond the source boundary (although work correctly and
@@ -525,11 +498,11 @@
return 0; \
}
-MEMCMP(m_libc_soname, memcmp)
-MEMCMP(m_dyld, memcmp)
-MEMCMP(m_libc_soname, bcmp)
-MEMCMP(m_dyld, bcmp)
-MEMCMP(m_ld_so_1, bcmp)
+MEMCMP(VG_Z_LIBC_SONAME, memcmp)
+MEMCMP(VG_Z_DYLD, memcmp)
+MEMCMP(VG_Z_LIBC_SONAME, bcmp)
+MEMCMP(VG_Z_DYLD, bcmp)
+MEMCMP(VG_Z_LD_SO_1, bcmp)
/* Copy SRC to DEST, returning the address of the terminating '\0' in
@@ -555,10 +528,10 @@
return dst; \
}
-STPCPY(m_libc_soname, stpcpy)
-STPCPY(m_ld_linux_so_2, stpcpy)
-STPCPY(m_ld_linux_x86_64_so_2, stpcpy)
-STPCPY(m_dyld, stpcpy)
+STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy)
+STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
+STPCPY(VG_Z_DYLD, stpcpy)
#define MEMSET(soname, fnname) \
@@ -580,8 +553,8 @@
return s; \
}
-MEMSET(m_libc_soname, memset)
-MEMSET(m_dyld, memset)
+MEMSET(VG_Z_LIBC_SONAME, memset)
+MEMSET(VG_Z_DYLD, memset)
#define MEMMOVE(soname, fnname) \
@@ -605,12 +578,12 @@
return dst; \
}
-MEMMOVE(m_libc_soname, memmove)
-MEMMOVE(m_dyld, memmove)
+MEMMOVE(VG_Z_LIBC_SONAME, memmove)
+MEMMOVE(VG_Z_DYLD, memmove)
#if defined(VGO_darwin)
/* Darwin's memcpy() is overlap-safe, so use MEMMOVE for memcpy() too. */
-MEMMOVE(m_libc_soname, memcpy)
-MEMMOVE(m_dyld, memcpy)
+MEMMOVE(VG_Z_LIBC_SONAME, memcpy)
+MEMMOVE(VG_Z_DYLD, memcpy)
#endif
@@ -634,8 +607,8 @@
} \
}
-BCOPY(m_libc_soname, bcopy)
-BCOPY(m_dyld, bcopy)
+BCOPY(VG_Z_LIBC_SONAME, bcopy)
+BCOPY(VG_Z_DYLD, bcopy)
/* glibc 2.5 variant of memmove which checks the dest is big enough.
@@ -671,7 +644,7 @@
return NULL; \
}
-GLIBC25___MEMMOVE_CHK(m_libc_soname, __memmove_chk)
+GLIBC25___MEMMOVE_CHK(VG_Z_LIBC_SONAME, __memmove_chk)
/* Find the first occurrence of C in S or the final NUL byte. */
@@ -688,7 +661,7 @@
} \
}
-GLIBC232_STRCHRNUL(m_libc_soname, strchrnul)
+GLIBC232_STRCHRNUL(VG_Z_LIBC_SONAME, strchrnul)
/* Find the first occurrence of C in S. */
@@ -704,7 +677,7 @@
} \
}
-GLIBC232_RAWMEMCHR(m_libc_soname, rawmemchr)
+GLIBC232_RAWMEMCHR(VG_Z_LIBC_SONAME, rawmemchr)
/* glibc variant of strcpy that checks the dest is big enough.
@@ -732,7 +705,7 @@
return NULL; \
}
-GLIBC25___STRCPY_CHK(m_libc_soname, __strcpy_chk)
+GLIBC25___STRCPY_CHK(VG_Z_LIBC_SONAME, __strcpy_chk)
/* glibc variant of stpcpy that checks the dest is big enough.
@@ -759,7 +732,7 @@
return NULL; \
}
-GLIBC25___STPCPY_CHK(m_libc_soname, __stpcpy_chk)
+GLIBC25___STPCPY_CHK(VG_Z_LIBC_SONAME, __stpcpy_chk)
/* mempcpy */
@@ -795,8 +768,8 @@
return (void*)( ((char*)dst) + len_saved ); \
}
-GLIBC25_MEMPCPY(m_libc_soname, mempcpy)
-GLIBC25_MEMPCPY(m_ld_so_1, mempcpy) /* ld.so.1 */
+GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy)
+GLIBC25_MEMPCPY(VG_Z_LD_SO_1, mempcpy) /* ld.so.1 */
#define GLIBC26___MEMCPY_CHK(soname, fnname) \
@@ -840,7 +813,7 @@
return NULL; \
}
-GLIBC26___MEMCPY_CHK(m_libc_soname, __memcpy_chk)
+GLIBC26___MEMCPY_CHK(VG_Z_LIBC_SONAME, __memcpy_chk)
/*------------------------------------------------------------*/
@@ -850,8 +823,8 @@
#if defined(VGO_linux)
/* putenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, putenv) (char* string);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, putenv) (char* string)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string);
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string)
{
OrigFn fn;
Word result;
@@ -867,8 +840,8 @@
}
/* unsetenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, unsetenv) (const char* name);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, unsetenv) (const char* name)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, unsetenv) (const char* name);
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, unsetenv) (const char* name)
{
OrigFn fn;
Word result;
@@ -884,9 +857,9 @@
}
/* setenv */
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, setenv)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, setenv)
(const char* name, const char* value, int overwrite);
-int VG_WRAP_FUNCTION_ZU(m_libc_soname, setenv)
+int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, setenv)
(const char* name, const char* value, int overwrite)
{
OrigFn fn;
|
|
From: Tom H. <th...@cy...> - 2009-02-10 03:32:02
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2009-02-10 03:10:04 GMT 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 == 483 tests, 5 stderr failures, 2 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) memcheck/tests/linux/timerfd-syscall (stdout) memcheck/tests/x86-linux/scalar (stderr) none/tests/mremap2 (stdout) |