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
(2) |
3
(1) |
4
(2) |
|
5
(1) |
6
(4) |
7
(6) |
8
(5) |
9
(3) |
10
(5) |
11
(1) |
|
12
(6) |
13
(4) |
14
(1) |
15
(4) |
16
(1) |
17
|
18
|
|
19
|
20
|
21
(2) |
22
(28) |
23
(17) |
24
(6) |
25
(4) |
|
26
(2) |
27
(2) |
28
|
29
(5) |
30
(8) |
31
(14) |
|
|
From: <sv...@va...> - 2015-07-24 20:48:58
|
Author: florian
Date: Fri Jul 24 21:48:51 2015
New Revision: 15449
Log:
Add more sanity checks.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c Fri Jul 24 21:48:51 2015
@@ -348,6 +348,8 @@
if (s->left == NULL) return False;
/* Both subtrees != NULL */
if (s->left == s->right) return False;
+ if (s->left == s->up) return False;
+ if (s->right == s->up) return False;
/* Check address range containment */
if (s->start != s->left->start) return False;
if (s->end != s->right->end) return False;
@@ -356,7 +358,6 @@
}
switch (s->kind) {
-
case SkFree:
return
s->smode == SmFixed
@@ -422,7 +423,6 @@
return False;
switch (s1->kind) {
-
case SkFree:
s1->end = s2->end;
return True;
|
|
From: <sv...@va...> - 2015-07-24 17:12:52
|
Author: florian
Date: Fri Jul 24 17:47:44 2015
New Revision: 15448
Log:
When deleting a node also invalidate the 'up' link.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c Fri Jul 24 17:47:44 2015
@@ -685,7 +685,7 @@
ML_(am_dec_refcount)(node->fnIdx);
/* Chain into freelist */
- node->left = node->right = NULL;
+ node->left = node->right = node->up = NULL;
node->fnIdx = ON_FREELIST;
node->left = segment_freelist;
segment_freelist = node;
|
|
From: <sv...@va...> - 2015-07-24 13:02:35
|
Author: florian
Date: Fri Jul 24 14:02:26 2015
New Revision: 15447
Log:
clone_segment returns a segment that is disconnected from the
segment tree.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segments.c Fri Jul 24 14:02:26 2015
@@ -661,7 +661,6 @@
}
/* Clone a segment. This creates a new leaf node. */
-
static NSegment *clone_segment( const NSegment *seg )
{
aspacem_assert(is_leaf(seg));
@@ -671,6 +670,7 @@
NSegment *new = new_node();
*new = *seg;
+ new->left = new->right = new->up = NULL;
ML_(am_inc_refcount)(seg->fnIdx);
|
|
From: <sv...@va...> - 2015-07-24 12:48:11
|
Author: rhyskidd
Date: Fri Jul 24 13:47:59 2015
New Revision: 15446
Log:
Properly conditionalise these tests, now that they are guarded on certain combinations of operating system and compiler.
Modified:
trunk/none/tests/x86/insn_sse.vgtest
trunk/none/tests/x86/insn_sse2.vgtest
trunk/none/tests/x86/insn_sse3.vgtest
Modified: trunk/none/tests/x86/insn_sse.vgtest
==============================================================================
--- trunk/none/tests/x86/insn_sse.vgtest (original)
+++ trunk/none/tests/x86/insn_sse.vgtest Fri Jul 24 13:47:59 2015
@@ -1,3 +1,3 @@
prog: ../../../none/tests/x86/insn_sse
-prereq: ../../../tests/x86_amd64_features x86-sse
+prereq: ../../../tests/x86_amd64_features x86-sse && test -e ../../../none/tests/x86/insn_sse
vgopts: -q
Modified: trunk/none/tests/x86/insn_sse2.vgtest
==============================================================================
--- trunk/none/tests/x86/insn_sse2.vgtest (original)
+++ trunk/none/tests/x86/insn_sse2.vgtest Fri Jul 24 13:47:59 2015
@@ -1,3 +1,3 @@
prog: ../../../none/tests/x86/insn_sse2
-prereq: ../../../tests/x86_amd64_features x86-sse2
+prereq: ../../../tests/x86_amd64_features x86-sse2 && test -e ../../../none/tests/x86/insn_sse2
vgopts: -q
Modified: trunk/none/tests/x86/insn_sse3.vgtest
==============================================================================
--- trunk/none/tests/x86/insn_sse3.vgtest (original)
+++ trunk/none/tests/x86/insn_sse3.vgtest Fri Jul 24 13:47:59 2015
@@ -1,3 +1,3 @@
prog: ../../../none/tests/x86/insn_sse3
-prereq: ../../../tests/x86_amd64_features x86-sse3
+prereq: ../../../tests/x86_amd64_features x86-sse3 && test -e ../../../none/tests/x86/insn_sse3
vgopts: -q
|
|
From: <sv...@va...> - 2015-07-24 11:50:23
|
Author: florian
Date: Fri Jul 24 12:50:12 2015
New Revision: 15445
Log:
Remove command line options --db-attach and --db-command which were
deprecated in 3.10.0
Removed:
trunk/coregrind/m_debugger.c
trunk/coregrind/pub_core_debugger.h
Modified:
trunk/NEWS
trunk/coregrind/Makefile.am
trunk/coregrind/m_errormgr.c
trunk/coregrind/m_main.c
trunk/coregrind/m_options.c
trunk/coregrind/m_signals.c
trunk/coregrind/pub_core_gdbserver.h
trunk/coregrind/pub_core_options.h
trunk/docs/xml/manual-core.xml
trunk/include/vki/vki-solaris.h
trunk/none/tests/cmdline1.stdout.exp
trunk/none/tests/cmdline2.stdout.exp
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Jul 24 12:50:12 2015
@@ -43,6 +43,9 @@
* ==================== OTHER CHANGES ====================
+* The command line options --db-attach and --db-command have been removed.
+ They were deprecated in 3.10.0
+
* When a process dies due to a signal, Valgrind now shows the signal
and the stacktrace at default verbosity (i.e. verbosity 1).
Modified: trunk/coregrind/Makefile.am
==============================================================================
--- trunk/coregrind/Makefile.am (original)
+++ trunk/coregrind/Makefile.am Fri Jul 24 12:50:12 2015
@@ -174,7 +174,6 @@
pub_core_cpuid.h \
pub_core_deduppoolalloc.h \
pub_core_debuginfo.h \
- pub_core_debugger.h \
pub_core_debuglog.h \
pub_core_demangle.h \
pub_core_dispatch.h \
@@ -287,7 +286,6 @@
m_clientstate.c \
m_cpuid.S \
m_deduppoolalloc.c \
- m_debugger.c \
m_debuglog.c \
m_errormgr.c \
m_execontext.c \
Removed: trunk/coregrind/m_debugger.c
==============================================================================
--- trunk/coregrind/m_debugger.c (original)
+++ trunk/coregrind/m_debugger.c (removed)
@@ -1,565 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- Attaching a debugger. m_debugger.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Valgrind, a dynamic binary instrumentation
- framework.
-
- Copyright (C) 2000-2013 Julian Seward
- js...@ac...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#include "pub_core_basics.h"
-#include "pub_core_vki.h"
-#include "pub_core_threadstate.h"
-#include "pub_core_xarray.h"
-#include "pub_core_clientstate.h"
-#include "pub_core_debugger.h"
-#include "pub_core_gdbserver.h"
-#include "pub_core_libcbase.h"
-#include "pub_core_libcprint.h"
-#include "pub_core_libcproc.h"
-#include "pub_core_libcsignal.h"
-#include "pub_core_libcassert.h"
-#include "pub_core_options.h"
-
-
-#define WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
-#define WSTOPSIG(status) (((status) & 0xff00) >> 8)
-
-static Int ptrace_setregs(Int pid, const VexGuestArchState* vex)
-{
-#if defined(VGP_x86_linux)
- struct vki_user_regs_struct regs;
- VG_(memset)(®s, 0, sizeof(regs));
- regs.cs = vex->guest_CS;
- regs.ss = vex->guest_SS;
- regs.ds = vex->guest_DS;
- regs.es = vex->guest_ES;
- regs.fs = vex->guest_FS;
- regs.gs = vex->guest_GS;
- regs.eax = vex->guest_EAX;
- regs.ebx = vex->guest_EBX;
- regs.ecx = vex->guest_ECX;
- regs.edx = vex->guest_EDX;
- regs.esi = vex->guest_ESI;
- regs.edi = vex->guest_EDI;
- regs.ebp = vex->guest_EBP;
- regs.esp = vex->guest_ESP;
- regs.eflags = LibVEX_GuestX86_get_eflags(vex);
- regs.eip = vex->guest_EIP;
- return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, ®s);
-
-#elif defined(VGP_amd64_linux)
- struct vki_user_regs_struct regs;
- VG_(memset)(®s, 0, sizeof(regs));
- regs.rax = vex->guest_RAX;
- regs.rbx = vex->guest_RBX;
- regs.rcx = vex->guest_RCX;
- regs.rdx = vex->guest_RDX;
- regs.rsi = vex->guest_RSI;
- regs.rdi = vex->guest_RDI;
- regs.rbp = vex->guest_RBP;
- regs.rsp = vex->guest_RSP;
- regs.r8 = vex->guest_R8;
- regs.r9 = vex->guest_R9;
- regs.r10 = vex->guest_R10;
- regs.r11 = vex->guest_R11;
- regs.r12 = vex->guest_R12;
- regs.r13 = vex->guest_R13;
- regs.r14 = vex->guest_R14;
- regs.r15 = vex->guest_R15;
- regs.eflags = LibVEX_GuestAMD64_get_rflags(vex);
- regs.rip = vex->guest_RIP;
- /* Set %{c,d,e,f,s,g}s and %{fs,gs}_base (whatever those are) to
- values which don't fail the kernel's sanity checks. I have no
- idea what these should really be set to. Anyway, mostly it
- seems that zero is an allowable value, except for %cs and %ss
- which have to have their lowest 2 bits be 11. See putreg() in
- linux-2.6.23/arch/x86_64/kernel/ptrace.c for the apparently
- relevant sanity checks. This fixes #145622. */
- regs.cs = 3;
- regs.ds = 0;
- regs.es = 0;
- regs.fs = 0;
- regs.ss = 3;
- regs.gs = 0;
- regs.fs_base = 0;
- regs.gs_base = 0;
- return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, ®s);
-
-#elif defined(VGP_ppc32_linux)
- Int rc = 0;
- /* apparently the casting to void* is the Right Thing To Do */
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R0 * 4), (void*)vex->guest_GPR0);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R1 * 4), (void*)vex->guest_GPR1);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R2 * 4), (void*)vex->guest_GPR2);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R3 * 4), (void*)vex->guest_GPR3);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R4 * 4), (void*)vex->guest_GPR4);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R5 * 4), (void*)vex->guest_GPR5);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R6 * 4), (void*)vex->guest_GPR6);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R7 * 4), (void*)vex->guest_GPR7);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R8 * 4), (void*)vex->guest_GPR8);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R9 * 4), (void*)vex->guest_GPR9);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R10 * 4), (void*)vex->guest_GPR10);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R11 * 4), (void*)vex->guest_GPR11);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R12 * 4), (void*)vex->guest_GPR12);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R13 * 4), (void*)vex->guest_GPR13);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R14 * 4), (void*)vex->guest_GPR14);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R15 * 4), (void*)vex->guest_GPR15);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R16 * 4), (void*)vex->guest_GPR16);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R17 * 4), (void*)vex->guest_GPR17);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R18 * 4), (void*)vex->guest_GPR18);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R19 * 4), (void*)vex->guest_GPR19);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R20 * 4), (void*)vex->guest_GPR20);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R21 * 4), (void*)vex->guest_GPR21);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R22 * 4), (void*)vex->guest_GPR22);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R23 * 4), (void*)vex->guest_GPR23);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R24 * 4), (void*)vex->guest_GPR24);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R25 * 4), (void*)vex->guest_GPR25);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R26 * 4), (void*)vex->guest_GPR26);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R27 * 4), (void*)vex->guest_GPR27);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R28 * 4), (void*)vex->guest_GPR28);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R29 * 4), (void*)vex->guest_GPR29);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R30 * 4), (void*)vex->guest_GPR30);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R31 * 4), (void*)vex->guest_GPR31);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_NIP * 4), (void*)vex->guest_CIA);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_CCR * 4),
- (void*)LibVEX_GuestPPC32_get_CR(vex));
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_LNK * 4), (void*)vex->guest_LR);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_CTR * 4), (void*)vex->guest_CTR);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_XER * 4),
- (void*)LibVEX_GuestPPC32_get_XER(vex));
- return rc;
-
-#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
- Int rc = 0;
- /* FRJ: copied nearly verbatim from the ppc32 case. I compared the
- vki-ppc64-linux.h with its ppc32 counterpart and saw no
- appreciable differences, other than the registers being 8 bytes
- instead of 4. No idea why we don't set all of the entries
- declared in vki_pt_regs, but ppc32 doesn't so there must be a
- reason.
-
- Finally, note that CR and XER are 32 bits even for ppc64 (see
- libvex_guest_ppc64.h), but the vki_pt_regs struct still gives
- them 64 bits.
- */
- /* apparently the casting to void* is the Right Thing To Do */
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R0 * 8), (void*)vex->guest_GPR0);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R1 * 8), (void*)vex->guest_GPR1);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R2 * 8), (void*)vex->guest_GPR2);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R3 * 8), (void*)vex->guest_GPR3);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R4 * 8), (void*)vex->guest_GPR4);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R5 * 8), (void*)vex->guest_GPR5);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R6 * 8), (void*)vex->guest_GPR6);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R7 * 8), (void*)vex->guest_GPR7);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R8 * 8), (void*)vex->guest_GPR8);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R9 * 8), (void*)vex->guest_GPR9);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R10 * 8), (void*)vex->guest_GPR10);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R11 * 8), (void*)vex->guest_GPR11);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R12 * 8), (void*)vex->guest_GPR12);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R13 * 8), (void*)vex->guest_GPR13);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R14 * 8), (void*)vex->guest_GPR14);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R15 * 8), (void*)vex->guest_GPR15);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R16 * 8), (void*)vex->guest_GPR16);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R17 * 8), (void*)vex->guest_GPR17);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R18 * 8), (void*)vex->guest_GPR18);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R19 * 8), (void*)vex->guest_GPR19);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R20 * 8), (void*)vex->guest_GPR20);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R21 * 8), (void*)vex->guest_GPR21);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R22 * 8), (void*)vex->guest_GPR22);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R23 * 8), (void*)vex->guest_GPR23);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R24 * 8), (void*)vex->guest_GPR24);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R25 * 8), (void*)vex->guest_GPR25);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R26 * 8), (void*)vex->guest_GPR26);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R27 * 8), (void*)vex->guest_GPR27);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R28 * 8), (void*)vex->guest_GPR28);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R29 * 8), (void*)vex->guest_GPR29);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R30 * 8), (void*)vex->guest_GPR30);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_R31 * 8), (void*)vex->guest_GPR31);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_NIP * 8), (void*)vex->guest_CIA);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_CCR * 8),
- (void*)(long)LibVEX_GuestPPC64_get_CR(vex));
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_LNK * 8), (void*)vex->guest_LR);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_CTR * 8), (void*)vex->guest_CTR);
- rc |= VG_(ptrace)(VKI_PTRACE_POKEUSR, pid, (void*)(VKI_PT_XER * 8),
- (void*)(long)LibVEX_GuestPPC64_get_XER(vex));
- return rc;
-
-#elif defined(VGP_arm_linux)
- struct vki_user_regs_struct uregs;
- VG_(memset)(&uregs, 0, sizeof(uregs));
- uregs.ARM_r0 = vex->guest_R0;
- uregs.ARM_r1 = vex->guest_R1;
- uregs.ARM_r2 = vex->guest_R2;
- uregs.ARM_r3 = vex->guest_R3;
- uregs.ARM_r4 = vex->guest_R4;
- uregs.ARM_r5 = vex->guest_R5;
- uregs.ARM_r6 = vex->guest_R6;
- uregs.ARM_r7 = vex->guest_R7;
- uregs.ARM_r8 = vex->guest_R8;
- uregs.ARM_r9 = vex->guest_R9;
- uregs.ARM_r10 = vex->guest_R10;
- uregs.ARM_fp = vex->guest_R11;
- uregs.ARM_ip = vex->guest_R12;
- uregs.ARM_sp = vex->guest_R13;
- uregs.ARM_lr = vex->guest_R14;
- // Remove the T bit from the bottom of R15T. It will get shipped
- // over in CPSR.T instead, since LibVEX_GuestARM_get_cpsr copies
- // it from R15T[0].
- uregs.ARM_pc = vex->guest_R15T & 0xFFFFFFFE;
- uregs.ARM_cpsr = LibVEX_GuestARM_get_cpsr(vex);
- return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, &uregs);
-
-#elif defined(VGP_arm64_linux)
- I_die_here;
- //ATC
- struct vki_user_pt_regs uregs;
- VG_(memset)(&uregs, 0, sizeof(uregs));
- uregs.regs[0] = vex->guest_X0;
- uregs.regs[1] = vex->guest_X1;
- uregs.regs[2] = vex->guest_X2;
- uregs.regs[3] = vex->guest_X3;
- uregs.regs[4] = vex->guest_X4;
- uregs.regs[5] = vex->guest_X5;
- uregs.regs[6] = vex->guest_X6;
- uregs.regs[7] = vex->guest_X7;
- uregs.regs[8] = vex->guest_X8;
- uregs.regs[9] = vex->guest_X9;
- uregs.regs[10] = vex->guest_X10;
- uregs.regs[11] = vex->guest_X11;
- uregs.regs[12] = vex->guest_X12;
- uregs.regs[13] = vex->guest_X13;
- uregs.regs[14] = vex->guest_X14;
- uregs.regs[15] = vex->guest_X15;
- uregs.regs[16] = vex->guest_X16;
- uregs.regs[17] = vex->guest_X17;
- uregs.regs[18] = vex->guest_X18;
- uregs.regs[19] = vex->guest_X19;
- uregs.regs[20] = vex->guest_X20;
- uregs.regs[21] = vex->guest_X21;
- uregs.regs[22] = vex->guest_X22;
- uregs.regs[23] = vex->guest_X23;
- uregs.regs[24] = vex->guest_X24;
- uregs.regs[25] = vex->guest_X25;
- uregs.regs[26] = vex->guest_X26;
- uregs.regs[27] = vex->guest_X27;
- uregs.regs[28] = vex->guest_X28;
- uregs.regs[29] = vex->guest_X29;
- uregs.regs[30] = vex->guest_X30;
- uregs.sp = vex->guest_XSP;
- uregs.pc = vex->guest_PC;
- uregs.pstate = LibVEX_GuestARM64_get_nzcv(vex); /* is this correct? */
- return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, &uregs);
-
-#elif defined(VGP_x86_darwin)
- I_die_here;
-
-#elif defined(VGP_amd64_darwin)
- I_die_here;
-
-#elif defined(VGP_s390x_linux)
- struct vki_user_regs_struct regs;
- vki_ptrace_area pa;
-
- /* We don't set the psw mask and start at offset 8 */
- pa.vki_len = (unsigned long) ®s.per_info - (unsigned long) ®s.psw.addr;
- pa.vki_process_addr = (unsigned long) ®s.psw.addr;
- pa.vki_kernel_addr = 8;
-
- VG_(memset)(®s, 0, sizeof(regs));
- regs.psw.addr = vex->guest_IA;
-
- /* We don't set the mask */
- regs.gprs[0] = vex->guest_r0;
- regs.gprs[1] = vex->guest_r1;
- regs.gprs[2] = vex->guest_r2;
- regs.gprs[3] = vex->guest_r3;
- regs.gprs[4] = vex->guest_r4;
- regs.gprs[5] = vex->guest_r5;
- regs.gprs[6] = vex->guest_r6;
- regs.gprs[7] = vex->guest_r7;
- regs.gprs[8] = vex->guest_r8;
- regs.gprs[9] = vex->guest_r9;
- regs.gprs[10] = vex->guest_r10;
- regs.gprs[11] = vex->guest_r11;
- regs.gprs[12] = vex->guest_r12;
- regs.gprs[13] = vex->guest_r13;
- regs.gprs[14] = vex->guest_r14;
- regs.gprs[15] = vex->guest_r15;
-
- regs.acrs[0] = vex->guest_a0;
- regs.acrs[1] = vex->guest_a1;
- regs.acrs[2] = vex->guest_a2;
- regs.acrs[3] = vex->guest_a3;
- regs.acrs[4] = vex->guest_a4;
- regs.acrs[5] = vex->guest_a5;
- regs.acrs[6] = vex->guest_a6;
- regs.acrs[7] = vex->guest_a7;
- regs.acrs[8] = vex->guest_a8;
- regs.acrs[9] = vex->guest_a9;
- regs.acrs[10] = vex->guest_a10;
- regs.acrs[11] = vex->guest_a11;
- regs.acrs[12] = vex->guest_a12;
- regs.acrs[13] = vex->guest_a13;
- regs.acrs[14] = vex->guest_a14;
- regs.acrs[15] = vex->guest_a15;
-
- /* only used for system call restart and friends, just use r2 */
- regs.orig_gpr2 = vex->guest_r2;
-
- regs.fp_regs.fprs[0].ui = vex->guest_f0;
- regs.fp_regs.fprs[1].ui = vex->guest_f1;
- regs.fp_regs.fprs[2].ui = vex->guest_f2;
- regs.fp_regs.fprs[3].ui = vex->guest_f3;
- regs.fp_regs.fprs[4].ui = vex->guest_f4;
- regs.fp_regs.fprs[5].ui = vex->guest_f5;
- regs.fp_regs.fprs[6].ui = vex->guest_f6;
- regs.fp_regs.fprs[7].ui = vex->guest_f7;
- regs.fp_regs.fprs[8].ui = vex->guest_f8;
- regs.fp_regs.fprs[9].ui = vex->guest_f9;
- regs.fp_regs.fprs[10].ui = vex->guest_f10;
- regs.fp_regs.fprs[11].ui = vex->guest_f11;
- regs.fp_regs.fprs[12].ui = vex->guest_f12;
- regs.fp_regs.fprs[13].ui = vex->guest_f13;
- regs.fp_regs.fprs[14].ui = vex->guest_f14;
- regs.fp_regs.fprs[15].ui = vex->guest_f15;
- regs.fp_regs.fpc = vex->guest_fpc;
-
- return VG_(ptrace)(VKI_PTRACE_POKEUSR_AREA, pid, &pa, NULL);
-
-#elif defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
- struct vki_user_regs_struct regs;
- VG_(memset)(®s, 0, sizeof(regs));
- regs.MIPS_r0 = vex->guest_r0;
- regs.MIPS_r1 = vex->guest_r1;
- regs.MIPS_r2 = vex->guest_r2;
- regs.MIPS_r3 = vex->guest_r3;
- regs.MIPS_r4 = vex->guest_r4;
- regs.MIPS_r5 = vex->guest_r5;
- regs.MIPS_r6 = vex->guest_r6;
- regs.MIPS_r7 = vex->guest_r7;
- regs.MIPS_r8 = vex->guest_r8;
- regs.MIPS_r9 = vex->guest_r9;
- regs.MIPS_r10 = vex->guest_r10;
- regs.MIPS_r11 = vex->guest_r11;
- regs.MIPS_r12 = vex->guest_r12;
- regs.MIPS_r13 = vex->guest_r13;
- regs.MIPS_r14 = vex->guest_r14;
- regs.MIPS_r15 = vex->guest_r15;
- regs.MIPS_r16 = vex->guest_r16;
- regs.MIPS_r17 = vex->guest_r17;
- regs.MIPS_r18 = vex->guest_r18;
- regs.MIPS_r19 = vex->guest_r19;
- regs.MIPS_r20 = vex->guest_r20;
- regs.MIPS_r21 = vex->guest_r21;
- regs.MIPS_r22 = vex->guest_r22;
- regs.MIPS_r23 = vex->guest_r23;
- regs.MIPS_r24 = vex->guest_r24;
- regs.MIPS_r25 = vex->guest_r25;
- regs.MIPS_r26 = vex->guest_r26;
- regs.MIPS_r27 = vex->guest_r27;
- regs.MIPS_r28 = vex->guest_r28;
- regs.MIPS_r29 = vex->guest_r29;
- regs.MIPS_r30 = vex->guest_r30;
- regs.MIPS_r31 = vex->guest_r31;
- return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, ®s);
-
-#elif defined(VGP_tilegx_linux)
- struct vki_user_regs_struct regs;
- VG_(memset)(®s, 0, sizeof(regs));
- regs.TILEGX_r0 = vex->guest_r0;
- regs.TILEGX_r1 = vex->guest_r1;
- regs.TILEGX_r2 = vex->guest_r2;
- regs.TILEGX_r3 = vex->guest_r3;
- regs.TILEGX_r4 = vex->guest_r4;
- regs.TILEGX_r5 = vex->guest_r5;
- regs.TILEGX_r6 = vex->guest_r6;
- regs.TILEGX_r7 = vex->guest_r7;
- regs.TILEGX_r8 = vex->guest_r8;
- regs.TILEGX_r9 = vex->guest_r9;
- regs.TILEGX_r10 = vex->guest_r10;
- regs.TILEGX_r11 = vex->guest_r11;
- regs.TILEGX_r12 = vex->guest_r12;
- regs.TILEGX_r13 = vex->guest_r13;
- regs.TILEGX_r14 = vex->guest_r14;
- regs.TILEGX_r15 = vex->guest_r15;
- regs.TILEGX_r16 = vex->guest_r16;
- regs.TILEGX_r17 = vex->guest_r17;
- regs.TILEGX_r18 = vex->guest_r18;
- regs.TILEGX_r19 = vex->guest_r19;
- regs.TILEGX_r20 = vex->guest_r20;
- regs.TILEGX_r21 = vex->guest_r21;
- regs.TILEGX_r22 = vex->guest_r22;
- regs.TILEGX_r23 = vex->guest_r23;
- regs.TILEGX_r24 = vex->guest_r24;
- regs.TILEGX_r25 = vex->guest_r25;
- regs.TILEGX_r26 = vex->guest_r26;
- regs.TILEGX_r27 = vex->guest_r27;
- regs.TILEGX_r28 = vex->guest_r28;
- regs.TILEGX_r29 = vex->guest_r29;
- regs.TILEGX_r30 = vex->guest_r30;
- regs.TILEGX_r31 = vex->guest_r31;
- regs.TILEGX_r32 = vex->guest_r32;
- regs.TILEGX_r33 = vex->guest_r33;
- regs.TILEGX_r34 = vex->guest_r34;
- regs.TILEGX_r35 = vex->guest_r35;
- regs.TILEGX_r36 = vex->guest_r36;
- regs.TILEGX_r37 = vex->guest_r37;
- regs.TILEGX_r38 = vex->guest_r38;
- regs.TILEGX_r39 = vex->guest_r39;
- regs.TILEGX_r40 = vex->guest_r40;
- regs.TILEGX_r41 = vex->guest_r41;
- regs.TILEGX_r42 = vex->guest_r42;
- regs.TILEGX_r43 = vex->guest_r43;
- regs.TILEGX_r44 = vex->guest_r44;
- regs.TILEGX_r45 = vex->guest_r45;
- regs.TILEGX_r46 = vex->guest_r46;
- regs.TILEGX_r47 = vex->guest_r47;
- regs.TILEGX_r48 = vex->guest_r48;
- regs.TILEGX_r49 = vex->guest_r49;
- regs.TILEGX_r50 = vex->guest_r50;
- regs.TILEGX_r51 = vex->guest_r51;
- regs.TILEGX_r52 = vex->guest_r52;
- regs.TILEGX_r53 = vex->guest_r53;
- regs.TILEGX_r54 = vex->guest_r54;
- regs.TILEGX_r55 = vex->guest_r55;
- regs.TILEGX_pc = vex->guest_pc;
-
- return VG_(ptrace)(VKI_PTRACE_SETREGS, pid, NULL, ®s);
-
-#elif defined(VGP_x86_solaris)
- I_die_here;
-
-#elif defined(VGP_amd64_solaris)
- I_die_here;
-
-#else
-# error Unknown arch
-#endif
-}
-
-/* Start debugger and get it to attach to this process. Called if the
- user requests this service after an error has been shown, so she can
- poke around and look at parameters, memory, etc. You can't
- meaningfully get the debugger to continue the program, though; to
- continue, quit the debugger. */
-void VG_(start_debugger) ( ThreadId tid )
-{
-# define N_BUF 4096
- Int pid, rc;
-
- pid = VG_(fork)();
-
- if (pid == 0) {
- /* child */
- VG_(set_ptracer)();
- rc = VG_(ptrace)(VKI_PTRACE_TRACEME, 0, NULL, NULL);
- vg_assert(rc == 0);
- rc = VG_(kill)(VG_(getpid)(), VKI_SIGSTOP);
- vg_assert(rc == 0);
-
- } else if (pid > 0) {
- /* parent */
- Int status;
- Int res;
-
- if ((res = VG_(waitpid)(pid, &status, 0)) == pid &&
- WIFSTOPPED(status) && WSTOPSIG(status) == VKI_SIGSTOP &&
- ptrace_setregs(pid, &(VG_(threads)[tid].arch.vex)) == 0 &&
- VG_(kill)(pid, VKI_SIGSTOP) == 0 &&
- VG_(ptrace)(VKI_PTRACE_DETACH, pid, NULL, 0) == 0)
- {
- HChar pidbuf[15];
- HChar file[50];
- HChar buf[N_BUF];
- HChar *bufptr;
- const HChar *cmdptr;
-
- VG_(sprintf)(pidbuf, "%d", pid);
- VG_(sprintf)(file, "/proc/%d/fd/%d", pid, VG_(cl_exec_fd));
-
- bufptr = buf;
- cmdptr = VG_(clo_db_command);
-
- while (*cmdptr) {
- /* each iteration can advance bufptr by at most the length
- of file[], so the following assertion is generously
- over-paranoid. */
- vg_assert(bufptr - buf < N_BUF-15-50-10/*paranoia*/);
- switch (*cmdptr) {
- case '%':
- switch (*++cmdptr) {
- case 'f':
- VG_(memcpy)(bufptr, file, VG_(strlen)(file));
- bufptr += VG_(strlen)(file);
- cmdptr++;
- break;
- case 'p':
- VG_(memcpy)(bufptr, pidbuf, VG_(strlen)(pidbuf));
- bufptr += VG_(strlen)(pidbuf);
- cmdptr++;
- break;
- default:
- *bufptr++ = *cmdptr++;
- break;
- }
- break;
- default:
- *bufptr++ = *cmdptr++;
- break;
- }
- vg_assert(bufptr - buf < N_BUF-15-50-10/*paranoia*/);
- }
-
- *bufptr++ = '\0';
-
- VG_(message)(Vg_UserMsg, "starting debugger with cmd: %s\n", buf);
- res = VG_(system)(buf);
- if (res == 0) {
- VG_(message)(Vg_UserMsg, "\n");
- VG_(message)(Vg_UserMsg,
- "Debugger has detached. Valgrind regains control."
- " We continue.\n");
- } else {
- VG_(message)(Vg_UserMsg,
- "Warning: Debugger attach failed! (sys_system)\n");
- VG_(message)(Vg_UserMsg, "\n");
- }
- } else {
- VG_(message)(Vg_UserMsg,
- "Warning: Debugger attach failed! (ptrace problem?)\n");
- VG_(message)(Vg_UserMsg, "\n");
- }
-
- VG_(kill)(pid, VKI_SIGKILL);
- VG_(waitpid)(pid, &status, 0);
- }
-# undef N_BUF
-}
-
-
-
-/*--------------------------------------------------------------------*/
-/*--- end ---*/
-/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/m_errormgr.c
==============================================================================
--- trunk/coregrind/m_errormgr.c (original)
+++ trunk/coregrind/m_errormgr.c Fri Jul 24 12:50:12 2015
@@ -31,7 +31,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_threadstate.h" // For VG_N_THREADS
-#include "pub_core_debugger.h"
#include "pub_core_debuginfo.h"
#include "pub_core_debuglog.h"
#include "pub_core_errormgr.h"
@@ -515,7 +514,7 @@
/* Do text-mode actions on error, that is, immediately after an error
is printed. These are:
- * possibly, attach to a debugger
+ * possibly, call the GDB server
* possibly, generate a suppression.
Note this should not be called in XML mode!
*/
@@ -533,15 +532,6 @@
VG_(umsg)("Continuing ...\n");
}
- /* Perhaps we want a debugger attach at this point? */
- /* GDBTD ??? maybe we should/could remove the below assuming the
- gdbserver interface is better ??? */
- if (allow_db_attach &&
- VG_(is_action_requested)( "Attach to debugger", & VG_(clo_db_attach) ))
- {
- if (0) VG_(printf)("starting debugger\n");
- VG_(start_debugger)( err->tid );
- }
/* Or maybe we want to generate the error's suppression? */
if (VG_(clo_gen_suppressions) == 2
|| (VG_(clo_gen_suppressions) == 1
Modified: trunk/coregrind/m_main.c
==============================================================================
--- trunk/coregrind/m_main.c (original)
+++ trunk/coregrind/m_main.c Fri Jul 24 12:50:12 2015
@@ -133,9 +133,6 @@
" load default suppressions [yes]\n"
" --suppressions=<filename> suppress errors described in <filename>\n"
" --gen-suppressions=no|yes|all print suppressions for errors? [no]\n"
-" --db-attach=no|yes start debugger when errors detected? [no]\n"
-" Note: deprecated feature\n"
-" --db-command=<command> command to start debugger [%s -nw %%f %%p]\n"
" --input-fd=<number> file descriptor for input [0=stdin]\n"
" --dsymutil=no|yes run dsymutil on Mac OS X when helpful? [no]\n"
" --max-stackframe=<number> assume stack switch for SP changes larger\n"
@@ -301,7 +298,6 @@
" Bug reports, feedback, admiration, abuse, etc, to: %s.\n"
"\n";
- const HChar* gdb_path = GDB_PATH;
HChar default_alignment[30]; // large enough
HChar default_redzone_size[30]; // large enough
@@ -319,7 +315,6 @@
/* 'usage1' a type as described after each arg. */
VG_(printf)(usage1,
VG_(clo_vgdb_error) /* int */,
- gdb_path /* char* */,
default_alignment /* char* */,
default_redzone_size /* char* */,
VG_(clo_vgdb_poll) /* int */,
@@ -617,7 +612,6 @@
}
else if VG_BOOL_CLO(arg, "--vgdb-shadow-registers",
VG_(clo_vgdb_shadow_registers)) {}
- else if VG_BOOL_CLO(arg, "--db-attach", VG_(clo_db_attach)) {}
else if VG_BOOL_CLO(arg, "--demangle", VG_(clo_demangle)) {}
else if VG_STR_CLO (arg, "--soname-synonyms",VG_(clo_soname_synonyms)) {}
else if VG_BOOL_CLO(arg, "--error-limit", VG_(clo_error_limit)) {}
@@ -682,7 +676,6 @@
else if VG_BOOL_CLO(arg, "--trace-syscalls", VG_(clo_trace_syscalls)) {}
else if VG_BOOL_CLO(arg, "--wait-for-gdb", VG_(clo_wait_for_gdb)) {}
- else if VG_STR_CLO (arg, "--db-command", VG_(clo_db_command)) {}
else if VG_BOOL_CLO(arg, "--sym-offsets", VG_(clo_sym_offsets)) {}
else if VG_BOOL_CLO(arg, "--read-inline-info", VG_(clo_read_inline_info)) {}
else if VG_BOOL_CLO(arg, "--read-var-info", VG_(clo_read_var_info)) {}
@@ -902,11 +895,7 @@
/* END command-line processing loop */
- /* Notify about deprecated features */
- if (VG_(clo_db_attach))
- VG_(umsg)
- ("\nWarning: --db-attach is a deprecated feature which will be\n"
- " removed in the next release. Use --vgdb-error=1 instead\n\n");
+ /* Notify about deprecated features here. */
/* Determine the path prefix for vgdb */
if (VG_(clo_vgdb_prefix) == NULL)
@@ -998,16 +987,6 @@
"--gen-suppressions=yes.\n");
}
- /* We can't allow DB attaching (or we maybe could, but results
- could be chaotic ..) since it requires user input. Hence
- disallow. */
- if (VG_(clo_db_attach)) {
- VG_(fmsg_bad_option)(
- "--xml=yes together with --db-attach=yes",
- "--db-attach=yes is not allowed with --xml=yes\n"
- "because it would require user input.\n");
- }
-
/* Disallow dump_error in XML mode; sounds like a recipe for
chaos. No big deal; dump_error is a flag for debugging V
itself. */
Modified: trunk/coregrind/m_options.c
==============================================================================
--- trunk/coregrind/m_options.c (original)
+++ trunk/coregrind/m_options.c Fri Jul 24 12:50:12 2015
@@ -67,8 +67,6 @@
const HChar *VG_(arg_vgdb_prefix) = NULL;
Bool VG_(clo_vgdb_shadow_registers) = False;
-Bool VG_(clo_db_attach) = False;
-const HChar* VG_(clo_db_command) = GDB_PATH " -nw %f %p";
Int VG_(clo_gen_suppressions) = 0;
Int VG_(clo_sanity_level) = 1;
Int VG_(clo_verbosity) = 1;
Modified: trunk/coregrind/m_signals.c
==============================================================================
--- trunk/coregrind/m_signals.c (original)
+++ trunk/coregrind/m_signals.c Fri Jul 24 12:50:12 2015
@@ -207,7 +207,6 @@
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
#include "pub_core_aspacemgr.h"
-#include "pub_core_debugger.h" // For VG_(start_debugger)
#include "pub_core_errormgr.h"
#include "pub_core_gdbserver.h"
#include "pub_core_libcbase.h"
@@ -1899,10 +1898,6 @@
VG_(gdbserver_report_fatal_signal) (info, tid);
}
- if (VG_(is_action_requested)( "Attach to debugger", & VG_(clo_db_attach) )) {
- VG_(start_debugger)( tid );
- }
-
if (core) {
static const struct vki_rlimit zero = { 0, 0 };
Removed: trunk/coregrind/pub_core_debugger.h
==============================================================================
--- trunk/coregrind/pub_core_debugger.h (original)
+++ trunk/coregrind/pub_core_debugger.h (removed)
@@ -1,47 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- Attaching a debugger. pub_core_debugger.h ---*/
-/*--------------------------------------------------------------------*/
-
-/*
- This file is part of Valgrind, a dynamic binary instrumentation
- framework.
-
- Copyright (C) 2000-2013 Julian Seward
- js...@ac...
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
- 02111-1307, USA.
-
- The GNU General Public License is contained in the file COPYING.
-*/
-
-#ifndef __PUB_CORE_DEBUGGER_H
-#define __PUB_CORE_DEBUGGER_H
-
-//--------------------------------------------------------------------
-// PURPOSE: This simple module just deals with attaching a debugger to the
-// running program.
-//--------------------------------------------------------------------
-
-#include "pub_core_basics.h" // ThreadId
-
-extern void VG_(start_debugger) ( ThreadId tid );
-
-#endif // __PUB_CORE_DEBUGGER_H
-
-/*--------------------------------------------------------------------*/
-/*--- end ---*/
-/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/pub_core_gdbserver.h
==============================================================================
--- trunk/coregrind/pub_core_gdbserver.h (original)
+++ trunk/coregrind/pub_core_gdbserver.h Fri Jul 24 12:50:12 2015
@@ -63,7 +63,7 @@
void VG_(gdbserver_exit) (ThreadId tid, VgSchedReturnCode tids_schedretcode);
/* On systems that defines PR_SET_PTRACER, verify if ptrace_scope is
- is permissive enough for vgdb or --db-attach=yes.
+ is permissive enough for vgdb.
Otherwise, call set_ptracer.
This is especially aimed at Ubuntu >= 10.10 which has added
the ptrace_scope context. */
Modified: trunk/coregrind/pub_core_options.h
==============================================================================
--- trunk/coregrind/pub_core_options.h (original)
+++ trunk/coregrind/pub_core_options.h Fri Jul 24 12:50:12 2015
@@ -88,10 +88,6 @@
shadow registers */
extern Bool VG_(clo_vgdb_shadow_registers);
-/* Enquire about whether to attach to a debugger at errors? default: NO */
-extern Bool VG_(clo_db_attach);
-/* The debugger command? default: whatever gdb ./configure found */
-extern const HChar* VG_(clo_db_command);
/* Generating a suppression for each error? default: 0 (NO)
Other values: 1 (yes, but ask user), 2 (yes, don't ask user) */
extern Int VG_(clo_gen_suppressions);
Modified: trunk/docs/xml/manual-core.xml
==============================================================================
--- trunk/docs/xml/manual-core.xml (original)
+++ trunk/docs/xml/manual-core.xml Fri Jul 24 12:50:12 2015
@@ -1412,11 +1412,13 @@
after every error shown and print the line:
<literallayout><computeroutput> ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ----</computeroutput></literallayout>
- The prompt's behaviour is the same as for the
- <option>--db-attach</option> option (see below).</para>
+ Pressing <varname>Ret</varname>, or <varname>N Ret</varname> or
+ <varname>n Ret</varname>, causes Valgrind continue execution without
+ printing a suppression for this error.</para>
- <para>If you choose to, Valgrind will print out a suppression for
- this error. You can then cut and paste it into a suppression file
+ <para>Pressing <varname>Y Ret</varname> or
+ <varname>y Ret</varname> causes Valgrind to write a suppression
+ for this error. You can then cut and paste it into a suppression file
if you don't want to hear about the error in the future.</para>
<para>When set to <varname>all</varname>, Valgrind will print a
@@ -1451,76 +1453,12 @@
</listitem>
</varlistentry>
- <varlistentry id="opt.db-attach" xreflabel="--db-attach">
- <term>
- <option><![CDATA[--db-attach=<yes|no> [default: no] ]]></option>
- </term>
- <listitem>
- <para>When enabled, Valgrind will pause after every error shown
- and print the line:
- <literallayout><computeroutput> ---- Attach to debugger ? --- [Return/N/n/Y/y/C/c] ----</computeroutput></literallayout>
-
- Pressing <varname>Ret</varname>, or <varname>N Ret</varname> or
- <varname>n Ret</varname>, causes Valgrind not to start a debugger
- for this error.</para>
-
- <para>Pressing <varname>Y Ret</varname> or
- <varname>y Ret</varname> causes Valgrind to start a debugger for
- the program at this point. When you have finished with the
- debugger, quit from it, and the program will continue. Trying to
- continue from inside the debugger doesn't work.</para>
-
- <para>
- Note: if you use GDB, more powerful debugging support is
- provided by the <option>--vgdb=</option> <varname>yes</varname>
- or <varname>full</varname> value. This activates Valgrind's
- internal gdbserver, which provides more-or-less full GDB-style
- control of the application: insertion of breakpoints, continuing
- from inside GDB, inferior function calls, and much more.
- </para>
-
- <para><varname>C Ret</varname> or <varname>c Ret</varname> causes
- Valgrind not to start a debugger, and not to ask again.</para>
- </listitem>
- </varlistentry>
-
- <varlistentry id="opt.db-command" xreflabel="--db-command">
- <term>
- <option><![CDATA[--db-command=<command> [default: gdb -nw %f %p] ]]></option>
- </term>
- <listitem>
- <para>Specify the debugger to use with the
- <option>--db-attach</option> command. The default debugger is
- GDB. This option is a template that is expanded by Valgrind at
- runtime. <literal>%f</literal> is replaced with the executable's
- file name and <literal>%p</literal> is replaced by the process ID
- of the executable.</para>
-
- <para>This specifies how Valgrind will invoke the debugger. By
- default it will use whatever GDB is detected at build time, which
- is usually <computeroutput>/usr/bin/gdb</computeroutput>. Using
- this command, you can specify some alternative command to invoke
- the debugger you want to use.</para>
-
- <para>The command string given can include one or instances of the
- <literal>%p</literal> and <literal>%f</literal> expansions. Each
- instance of <literal>%p</literal> expands to the PID of the
- process to be debugged and each instance of <literal>%f</literal>
- expands to the path to the executable for the process to be
- debugged.</para>
-
- <para>Since <computeroutput><command></computeroutput> is likely
- to contain spaces, you will need to put this entire option in
- quotes to ensure it is correctly handled by the shell.</para>
- </listitem>
- </varlistentry>
-
<varlistentry id="opt.input-fd" xreflabel="--input-fd">
<term>
<option><![CDATA[--input-fd=<number> [default: 0, stdin] ]]></option>
</term>
<listitem>
- <para>When using <option>--db-attach=yes</option> or
+ <para>When using
<option>--gen-suppressions=yes</option>, Valgrind will stop so as
to read keyboard input from you when each error occurs. By
default it reads from the standard input (stdin), which is
@@ -2452,8 +2390,7 @@
<para>If you wish to debug your program rather than debugging
Valgrind itself, then you should use the options
-<option>--vgdb=yes</option> or <option>--vgdb=full</option>
-or <option>--db-attach=yes</option>.
+<option>--vgdb=yes</option> or <option>--vgdb=full</option>.
</para>
<!-- end of xi:include in the manpage -->
Modified: trunk/include/vki/vki-solaris.h
==============================================================================
--- trunk/include/vki/vki-solaris.h (original)
+++ trunk/include/vki/vki-solaris.h Fri Jul 24 12:50:12 2015
@@ -60,12 +60,6 @@
#define __EXTENSIONS__ 1
/* assert _FILE_OFFSET_BITS == 32 */
-/* XXX These two PTRACE defines are currently used only in m_debugger.c for
- legacy 'attach debugger' functionality. This is going to be removed
- in future Valgrind version and so can these two as well. */
-#define VKI_PTRACE_TRACEME 0
-#define VKI_PTRACE_DETACH -1
-
#define VKI_PAGE_SHIFT 12
#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
#define VKI_PAGEMASK (~VKI_PAGEOFFSET)
Modified: trunk/none/tests/cmdline1.stdout.exp
==============================================================================
--- trunk/none/tests/cmdline1.stdout.exp (original)
+++ trunk/none/tests/cmdline1.stdout.exp Fri Jul 24 12:50:12 2015
@@ -47,9 +47,6 @@
load default suppressions [yes]
--suppressions=<filename> suppress errors described in <filename>
--gen-suppressions=no|yes|all print suppressions for errors? [no]
- --db-attach=no|yes start debugger when errors detected? [no]
- Note: deprecated feature
- --db-command=<command> command to start debugger [... -nw %f %p]
--input-fd=<number> file descriptor for input [0=stdin]
--dsymutil=no|yes run dsymutil on Mac OS X when helpful? [no]
--max-stackframe=<number> assume stack switch for SP changes larger
Modified: trunk/none/tests/cmdline2.stdout.exp
==============================================================================
--- trunk/none/tests/cmdline2.stdout.exp (original)
+++ trunk/none/tests/cmdline2.stdout.exp Fri Jul 24 12:50:12 2015
@@ -47,9 +47,6 @@
load default suppressions [yes]
--suppressions=<filename> suppress errors described in <filename>
--gen-suppressions=no|yes|all print suppressions for errors? [no]
- --db-attach=no|yes start debugger when errors detected? [no]
- Note: deprecated feature
- --db-command=<command> command to start debugger [... -nw %f %p]
--input-fd=<number> file descriptor for input [0=stdin]
--dsymutil=no|yes run dsymutil on Mac OS X when helpful? [no]
--max-stackframe=<number> assume stack switch for SP changes larger
|
|
From: <sv...@va...> - 2015-07-24 10:23:42
|
Author: rhyskidd
Date: Fri Jul 24 11:23:34 2015
New Revision: 15444
Log:
Fix valgrind 3.9.0 build fails on Mac OS X 10.6.8
bz#327745
Patch by Mark H <mh...@ya...>
Modified:
trunk/NEWS
trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
trunk/coregrind/m_syswrap/syswrap-darwin.c
trunk/include/vki/vki-scnums-darwin.h
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Fri Jul 24 11:23:34 2015
@@ -120,6 +120,7 @@
== 326797
319274 Fix unhandled syscall: unix:410 (sigsuspend_nocancel) on OS X
324181 mmap does not handle MAP_32BIT (handle it now, rather than fail it)
+327745 Fix valgrind 3.9.0 build fails on Mac OS X 10.6.8
333051 mmap of huge pages fails due to incorrect alignment
== 339163
334802 valgrind does not always explain why a given option is bad
Modified: trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
==============================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-darwin.h (original)
+++ trunk/coregrind/m_syswrap/priv_syswrap-darwin.h Fri Jul 24 11:23:34 2015
@@ -350,7 +350,7 @@
DECL_TEMPLATE(darwin, fchmod_extended); // 283
DECL_TEMPLATE(darwin, access_extended); // 284
DECL_TEMPLATE(darwin, settid); // 285
-#if DARWIN_VERS >= DARWIN_10_7
+#if DARWIN_VERS >= DARWIN_10_6
DECL_TEMPLATE(darwin, gettid); // 286
#endif
// NYI setsgroups 287
@@ -362,23 +362,44 @@
// NYI identitysvc 293
// NYI shared_region_check_np 294
// NYI shared_region_map_np 295
+#if DARWIN_VERS >= DARWIN_10_6
+// NYI vm_pressure_monitor 296
+// NYI psynch_rw_longrdlock 297
+// NYI psynch_rw_yieldwrlock 298
+// NYI psynch_rw_downgrade 299
+// NYI psynch_rw_upgrade 300
+DECL_TEMPLATE(darwin, psynch_mutexwait); // 301
+DECL_TEMPLATE(darwin, psynch_mutexdrop); // 302
+DECL_TEMPLATE(darwin, psynch_cvbroad); // 303
+DECL_TEMPLATE(darwin, psynch_cvsignal); // 304
+DECL_TEMPLATE(darwin, psynch_cvwait); // 305
+DECL_TEMPLATE(darwin, psynch_rw_rdlock); // 306
+DECL_TEMPLATE(darwin, psynch_rw_wrlock); // 307
+DECL_TEMPLATE(darwin, psynch_rw_unlock); // 308
+// NYI psynch_rw_unlock2 309
+#else
// old load_shared_file
// old reset_shared_file
// old new_system_shared_regions
// old shared_region_map_file_np
// old shared_region_make_private_np
-DECL_TEMPLATE(darwin, psynch_mutexwait); // 301 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_mutexdrop); // 302 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_cvbroad); // 303 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_cvsignal); // 304 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_cvwait); // 305 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_rw_rdlock); // 306 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_rw_wrlock); // 307 // new in 10.7 ?
-DECL_TEMPLATE(darwin, psynch_rw_unlock); // 308 // new in 10.7 ?
+// NYI __pthread_mutex_destroy 301
+// NYI __pthread_mutex_init 302
+// NYI __pthread_mutex_lock 303
+// NYI __pthread_mutex_trylock 304
+// NYI __pthread_mutex_unlock 305
+// NYI __pthread_cond_init 306
+// NYI __pthread_cond_destroy 307
+// NYI __pthread_cond_broadcast 308
// NYI __pthread_cond_signal 309
+#endif
// NYI getsid 310
// NYI settid_with_pid 311
-DECL_TEMPLATE(darwin, psynch_cvclrprepost); // 312 // new in 10.7 ?
+#if DARWIN_VERS >= DARWIN_10_7
+DECL_TEMPLATE(darwin, psynch_cvclrprepost); // 312
+#else
+// NYI __pthread_cond_timedwait 312
+#endif
// NYI aio_fsync 313
DECL_TEMPLATE(darwin, aio_return); // 314
DECL_TEMPLATE(darwin, aio_suspend); // 315
@@ -402,9 +423,7 @@
DECL_TEMPLATE(darwin, __pthread_canceled); // 333
DECL_TEMPLATE(darwin, __semwait_signal); // 334
// old utrace
-#if DARWIN_VERS >= DARWIN_10_6
DECL_TEMPLATE(darwin, proc_info); // 336
-#endif
DECL_TEMPLATE(darwin, sendfile); // 337
DECL_TEMPLATE(darwin, stat64); // 338
DECL_TEMPLATE(darwin, fstat64); // 339
@@ -425,9 +444,7 @@
// NYI setauid 354
// NYI getaudit 355
// NYI setaudit 356
-#if DARWIN_VERS >= DARWIN_10_7
DECL_TEMPLATE(darwin, getaudit_addr) // 357
-#endif
// NYI setaudit_addr 358
// NYI auditctl 359
DECL_TEMPLATE(darwin, bsdthread_create); // 360
@@ -442,7 +459,9 @@
DECL_TEMPLATE(darwin, kevent64); // 369
// 370
// 371
+#if DARWIN_VERS >= DARWIN_10_6
DECL_TEMPLATE(darwin, __thread_selfid); // 372
+#endif
// 373
// 374
// 375
Modified: trunk/coregrind/m_syswrap/syswrap-darwin.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-darwin.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-darwin.c Fri Jul 24 11:23:34 2015
@@ -3171,47 +3171,6 @@
count, (Addr)p-(Addr)ARG3, ARG4);
}
-
-PRE(fsgetpath)
-{
-#if VG_WORDSIZE == 4
- PRINT("fsgetpath(%#lx, %ld, %#lx {%u,%u}, %llu)",
- ARG1, ARG2, ARG3,
- ((unsigned int *)ARG3)[0], ((unsigned int *)ARG3)[1],
- LOHI64(ARG4, ARG5));
- PRE_REG_READ5(ssize_t, "fsgetpath",
- void*,"buf", size_t,"bufsize",
- fsid_t *,"fsid",
- vki_uint32_t, "objid_low32", vki_uint32_t, "objid_high32");
-#else
- PRINT("fsgetpath(%#lx, %ld, %#lx {%u,%u}, %lu)",
- ARG1, ARG2, ARG3,
- ((unsigned int *)ARG3)[0],
- ((unsigned int *)ARG3)[1], ARG4);
- PRE_REG_READ4(ssize_t, "fsgetpath",
- void*,"buf", size_t,"bufsize",
- fsid_t *,"fsid", uint64_t,"objid");
-#endif
- PRE_MEM_READ("fsgetpath(fsid)", ARG3, sizeof(fsid_t));
- PRE_MEM_WRITE("fsgetpath(buf)", ARG1, ARG2);
-}
-
-POST(fsgetpath)
-{
- POST_MEM_WRITE(ARG1, RES);
-}
-
-PRE(audit_session_self)
-{
- PRINT("audit_session_self()");
-}
-
-POST(audit_session_self)
-{
- record_named_port(tid, RES, MACH_PORT_RIGHT_SEND, "audit-session-%p");
- PRINT("audit-session %#lx", RES);
-}
-
PRE(exchangedata)
{
PRINT("exchangedata(%#lx(%s), %#lx(%s), %lu)",
@@ -4141,6 +4100,17 @@
}
}
+PRE(getaudit_addr)
+{
+ PRINT("getaudit_addr(%#lx, %lu)", ARG1, ARG2);
+ PRE_REG_READ1(void*, "auditinfo_addr", int, "length");
+ PRE_MEM_WRITE("getaudit_addr(auditinfo_addr)", ARG1, ARG2);
+}
+POST(getaudit_addr)
+{
+ POST_MEM_WRITE(ARG1, ARG2);
+}
+
PRE(mmap)
{
@@ -4386,7 +4356,6 @@
uint32_t flavor, uint64_t arg,
user_addr_t buffer, int32_t buffersize)
*/
-#if DARWIN_VERS >= DARWIN_10_6
PRE(proc_info)
{
#if VG_WORDSIZE == 4
@@ -4452,7 +4421,6 @@
#endif
}
-#endif /* DARWIN_VERS >= DARWIN_10_6 */
/* ---------------------------------------------------------------------
aio_*
@@ -8718,12 +8686,6 @@
//}
-PRE(__thread_selfid)
-{
- PRINT("__thread_selfid ()");
- PRE_REG_READ0(vki_uint64_t, "__thread_selfid");
-}
-
PRE(task_for_pid)
{
PRINT("task_for_pid(%s, %ld, %#lx)", name_for_port(ARG1), ARG2, ARG3);
@@ -9072,21 +9034,10 @@
/* ---------------------------------------------------------------------
- Added for OSX 10.7 (Lion)
+ Added for OSX 10.6 (Snow Leopard)
------------------------------------------------------------------ */
-#if DARWIN_VERS >= DARWIN_10_7
-
-PRE(getaudit_addr)
-{
- PRINT("getaudit_addr(%#lx, %lu)", ARG1, ARG2);
- PRE_REG_READ1(void*, "auditinfo_addr", int, "length");
- PRE_MEM_WRITE("getaudit_addr(auditinfo_addr)", ARG1, ARG2);
-}
-POST(getaudit_addr)
-{
- POST_MEM_WRITE(ARG1, ARG2);
-}
+#if DARWIN_VERS >= DARWIN_10_6
PRE(psynch_mutexwait)
{
@@ -9157,6 +9108,60 @@
{
}
+PRE(__thread_selfid)
+{
+ PRINT("__thread_selfid ()");
+ PRE_REG_READ0(vki_uint64_t, "__thread_selfid");
+}
+
+PRE(fsgetpath)
+{
+#if VG_WORDSIZE == 4
+ PRINT("fsgetpath(%#lx, %ld, %#lx {%u,%u}, %llu)",
+ ARG1, ARG2, ARG3,
+ ((unsigned int *)ARG3)[0], ((unsigned int *)ARG3)[1],
+ LOHI64(ARG4, ARG5));
+ PRE_REG_READ5(ssize_t, "fsgetpath",
+ void*,"buf", size_t,"bufsize",
+ fsid_t *,"fsid",
+ vki_uint32_t, "objid_low32", vki_uint32_t, "objid_high32");
+#else
+ PRINT("fsgetpath(%#lx, %ld, %#lx {%u,%u}, %lu)",
+ ARG1, ARG2, ARG3,
+ ((unsigned int *)ARG3)[0],
+ ((unsigned int *)ARG3)[1], ARG4);
+ PRE_REG_READ4(ssize_t, "fsgetpath",
+ void*,"buf", size_t,"bufsize",
+ fsid_t *,"fsid", uint64_t,"objid");
+#endif
+ PRE_MEM_READ("fsgetpath(fsid)", ARG3, sizeof(fsid_t));
+ PRE_MEM_WRITE("fsgetpath(buf)", ARG1, ARG2);
+}
+
+POST(fsgetpath)
+{
+ POST_MEM_WRITE(ARG1, RES);
+}
+
+PRE(audit_session_self)
+{
+ PRINT("audit_session_self()");
+}
+POST(audit_session_self)
+{
+ record_named_port(tid, RES, MACH_PORT_RIGHT_SEND, "audit-session-%p");
+ PRINT("audit-session %#lx", RES);
+}
+
+#endif /* DARWIN_VERS >= DARWIN_10_6 */
+
+
+/* ---------------------------------------------------------------------
+ Added for OSX 10.7 (Lion)
+ ------------------------------------------------------------------ */
+
+#if DARWIN_VERS >= DARWIN_10_7
+
PRE(psynch_cvclrprepost)
{
PRINT("psynch_cvclrprepost(BOGUS)");
@@ -9996,13 +10001,10 @@
// _____(__NR_shared_region_map_np),
#if DARWIN_VERS >= DARWIN_10_6
// _____(__NR_vm_pressure_monitor),
-#else
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(296)), // old load_shared_file
-#endif
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(297)), // old reset_shared_file
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(298)), // old new_system_shared_regions
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(299)), // old shared_region_map_file_np
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(300)), // old shared_region_make_private_np
+// _____(__NR_psynch_rw_longrdlock),
+// _____(__NR_psynch_rw_yieldwrlock),
+// _____(__NR_psynch_rw_downgrade),
+// _____(__NR_psynch_rw_upgrade),
MACXY(__NR_psynch_mutexwait, psynch_mutexwait), // 301
MACXY(__NR_psynch_mutexdrop, psynch_mutexdrop), // 302
MACXY(__NR_psynch_cvbroad, psynch_cvbroad), // 303
@@ -10011,10 +10013,30 @@
MACXY(__NR_psynch_rw_rdlock, psynch_rw_rdlock), // 306
MACXY(__NR_psynch_rw_wrlock, psynch_rw_wrlock), // 307
MACXY(__NR_psynch_rw_unlock, psynch_rw_unlock), // 308
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(309)), // ???
+// _____(__NR_psynch_rw_unlock2),
+#else
+ _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(296)), // old load_shared_file
+ _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(297)), // old reset_shared_file
+ _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(298)), // old new_system_shared_regions
+ _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(299)), // old shared_region_map_file_np
+ _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(300)), // old shared_region_make_private_np
+// _____(__NR___pthread_mutex_destroy),
+// _____(__NR___pthread_mutex_init),
+// _____(__NR___pthread_mutex_lock),
+// _____(__NR___pthread_mutex_trylock),
+// _____(__NR___pthread_mutex_unlock),
+// _____(__NR___pthread_cond_init),
+// _____(__NR___pthread_cond_destroy),
+// _____(__NR___pthread_cond_broadcast),
+// _____(__NR___pthread_cond_signal),
+#endif
// _____(__NR_getsid),
// _____(__NR_settid_with_pid),
+#if DARWIN_VERS >= DARWIN_10_7
MACXY(__NR_psynch_cvclrprepost, psynch_cvclrprepost), // 312
+#else
+ _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(308)), // old __pthread_cond_timedwait
+#endif
// _____(__NR_aio_fsync),
MACXY(__NR_aio_return, aio_return),
MACX_(__NR_aio_suspend, aio_suspend),
@@ -10044,9 +10066,7 @@
MACX_(__NR___pthread_canceled, __pthread_canceled),
MACX_(__NR___semwait_signal, __semwait_signal),
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(335)), // old utrace
-#if DARWIN_VERS >= DARWIN_10_6
MACXY(__NR_proc_info, proc_info), // 336
-#endif
MACXY(__NR_sendfile, sendfile),
MACXY(__NR_stat64, stat64),
MACXY(__NR_fstat64, fstat64),
@@ -10067,9 +10087,7 @@
// _____(__NR_setauid),
// _____(__NR_getaudit),
// _____(__NR_setaudit),
-#if DARWIN_VERS >= DARWIN_10_7
MACXY(__NR_getaudit_addr, getaudit_addr),
-#endif
// _____(__NR_setaudit_addr),
// _____(__NR_auditctl),
MACXY(__NR_bsdthread_create, bsdthread_create), // 360
Modified: trunk/include/vki/vki-scnums-darwin.h
==============================================================================
--- trunk/include/vki/vki-scnums-darwin.h (original)
+++ trunk/include/vki/vki-scnums-darwin.h Fri Jul 24 11:23:34 2015
@@ -536,25 +536,42 @@
#define __NR_shared_region_map_np VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(295)
#if DARWIN_VERS >= DARWIN_10_6
#define __NR_vm_pressure_monitor VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(296)
+#define __NR_psynch_rw_longrdlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(297)
+#define __NR_psynch_rw_yieldwrlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(298)
+#define __NR_psynch_rw_downgrade VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(299)
+#define __NR_psynch_rw_upgrade VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(300)
+#define __NR_psynch_mutexwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(301)
+#define __NR_psynch_mutexdrop VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(302)
+#define __NR_psynch_cvbroad VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(303)
+#define __NR_psynch_cvsignal VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(304)
+#define __NR_psynch_cvwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(305)
+#define __NR_psynch_rw_rdlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(306)
+#define __NR_psynch_rw_wrlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(307)
+#define __NR_psynch_rw_unlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(308)
+#define __NR_psynch_rw_unlock2 VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(309)
#else
/* 296 old load_shared_file */
-#endif
/* 297 old reset_shared_file */
/* 298 old new_system_shared_regions */
/* 299 old shared_region_map_file_np */
/* 300 old shared_region_make_private_np */
-#define __NR_psynch_mutexwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(301)
-#define __NR_psynch_mutexdrop VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(302)
-#define __NR_psynch_cvbroad VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(303)
-#define __NR_psynch_cvsignal VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(304)
-#define __NR_psynch_cvwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(305)
-#define __NR_psynch_rw_rdlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(306)
-#define __NR_psynch_rw_wrlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(307)
-#define __NR_psynch_rw_unlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(308)
- /* 309 */
+#define __NR___pthread_mutex_destroy VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(301)
+#define __NR___pthread_mutex_init VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(302)
+#define __NR___pthread_mutex_lock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(303)
+#define __NR___pthread_mutex_trylock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(304)
+#define __NR___pthread_mutex_unlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(305)
+#define __NR___pthread_cond_init VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(306)
+#define __NR___pthread_cond_destroy VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(307)
+#define __NR___pthread_cond_broadcast VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(308)
+#define __NR___pthread_cond_signal VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(309)
+#endif
#define __NR_getsid VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(310)
#define __NR_settid_with_pid VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(311)
+#if DARWIN_VERS >= DARWIN_10_7
#define __NR_psynch_cvclrprepost VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(312)
+#else
+#define __NR___pthread_cond_timedwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(312)
+#endif
#define __NR_aio_fsync VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(313)
#define __NR_aio_return VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(314)
#define __NR_aio_suspend VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(315)
|