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
(30) |
2
(8) |
3
(5) |
4
(5) |
|
5
(3) |
6
(9) |
7
(5) |
8
(14) |
9
(17) |
10
(27) |
11
(10) |
|
12
(6) |
13
(10) |
14
(7) |
15
(16) |
16
(9) |
17
(14) |
18
(8) |
|
19
(5) |
20
(13) |
21
(21) |
22
(13) |
23
(4) |
24
(1) |
25
(4) |
|
26
(2) |
27
(7) |
28
(4) |
29
(5) |
30
(12) |
|
|
|
From: <sv...@va...> - 2015-04-30 23:39:17
|
Author: rhyskidd
Date: Fri May 1 00:39:10 2015
New Revision: 15170
Log:
Fix regression test compile issue on OS X platform, introduced in r15113. n-i-bz
Modified:
trunk/none/tests/libvex_test.c
Modified: trunk/none/tests/libvex_test.c
==============================================================================
--- trunk/none/tests/libvex_test.c (original)
+++ trunk/none/tests/libvex_test.c Fri May 1 00:39:10 2015
@@ -1,6 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
+# if !defined(VGO_darwin)
#include <endian.h>
+# else
+#include <machine/endian.h>
+# endif
#include "../../VEX/pub/libvex.h"
Bool return_false(void*cb, Addr ad)
|
|
From: <sv...@va...> - 2015-04-30 20:44:25
|
Author: florian
Date: Thu Apr 30 21:44:17 2015
New Revision: 15169
Log:
Remove a few embarassing comments.
Modified:
trunk/coregrind/m_coredump/coredump-elf.c
trunk/coregrind/m_coredump/coredump-macho.c
trunk/coregrind/m_debugger.c
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_errormgr.c
trunk/coregrind/m_execontext.c
trunk/coregrind/m_gdbserver/m_gdbserver.c
trunk/coregrind/m_gdbserver/server.h
trunk/coregrind/m_initimg/initimg-darwin.c
trunk/coregrind/m_initimg/initimg-linux.c
trunk/coregrind/m_libcassert.c
trunk/coregrind/m_machine.c
trunk/coregrind/m_main.c
trunk/coregrind/m_mallocfree.c
trunk/coregrind/m_scheduler/scheduler.c
trunk/coregrind/m_sigframe/sigframe-amd64-darwin.c
trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
trunk/coregrind/m_sigframe/sigframe-arm-linux.c
trunk/coregrind/m_sigframe/sigframe-arm64-linux.c
trunk/coregrind/m_sigframe/sigframe-mips32-linux.c
trunk/coregrind/m_sigframe/sigframe-mips64-linux.c
trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c
trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c
trunk/coregrind/m_sigframe/sigframe-s390x-linux.c
trunk/coregrind/m_sigframe/sigframe-tilegx-linux.c
trunk/coregrind/m_sigframe/sigframe-x86-darwin.c
trunk/coregrind/m_sigframe/sigframe-x86-linux.c
trunk/coregrind/m_signals.c
trunk/coregrind/m_stacktrace.c
trunk/coregrind/m_threadstate.c
trunk/coregrind/m_translate.c
Modified: trunk/coregrind/m_coredump/coredump-elf.c
==============================================================================
--- trunk/coregrind/m_coredump/coredump-elf.c (original)
+++ trunk/coregrind/m_coredump/coredump-elf.c Thu Apr 30 21:44:17 2015
@@ -42,7 +42,6 @@
#include "pub_core_libcproc.h" // VG_(geteuid), VG_(getegid)
#include "pub_core_libcassert.h" // VG_(exit), vg_assert
#include "pub_core_mallocfree.h" // VG_(malloc), VG_(free)
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: trunk/coregrind/m_coredump/coredump-macho.c
==============================================================================
--- trunk/coregrind/m_coredump/coredump-macho.c (original)
+++ trunk/coregrind/m_coredump/coredump-macho.c Thu Apr 30 21:44:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_coredump.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
void VG_(make_coredump)(ThreadId tid, const vki_siginfo_t *si, ULong max_size)
Modified: trunk/coregrind/m_debugger.c
==============================================================================
--- trunk/coregrind/m_debugger.c (original)
+++ trunk/coregrind/m_debugger.c Thu Apr 30 21:44:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
==============================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c (original)
+++ trunk/coregrind/m_debuginfo/debuginfo.c Thu Apr 30 21:44:17 2015
@@ -32,7 +32,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_debuginfo.h" /* self */
#include "pub_core_demangle.h"
Modified: trunk/coregrind/m_errormgr.c
==============================================================================
--- trunk/coregrind/m_errormgr.c (original)
+++ trunk/coregrind/m_errormgr.c Thu Apr 30 21:44:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h" // For VG_N_THREADS
#include "pub_core_debugger.h"
#include "pub_core_debuginfo.h"
Modified: trunk/coregrind/m_execontext.c
==============================================================================
--- trunk/coregrind/m_execontext.c (original)
+++ trunk/coregrind/m_execontext.c Thu Apr 30 21:44:17 2015
@@ -36,8 +36,6 @@
#include "pub_core_options.h"
#include "pub_core_stacktrace.h"
#include "pub_core_machine.h" // VG_(get_IP)
-#include "pub_core_vki.h" // To keep pub_core_threadstate.h happy
-#include "pub_core_libcsetjmp.h" // Ditto
#include "pub_core_threadstate.h" // VG_(is_valid_tid)
#include "pub_core_execontext.h" // self
Modified: trunk/coregrind/m_gdbserver/m_gdbserver.c
==============================================================================
--- trunk/coregrind/m_gdbserver/m_gdbserver.c (original)
+++ trunk/coregrind/m_gdbserver/m_gdbserver.c Thu Apr 30 21:44:17 2015
@@ -33,12 +33,9 @@
#include "pub_core_libcproc.h"
#include "pub_core_libcprint.h"
#include "pub_core_mallocfree.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_options.h"
-#include "pub_core_libcsetjmp.h"
-#include "pub_core_threadstate.h"
#include "pub_core_transtab.h"
#include "pub_core_hashtable.h"
#include "pub_core_xarray.h"
Modified: trunk/coregrind/m_gdbserver/server.h
==============================================================================
--- trunk/coregrind/m_gdbserver/server.h (original)
+++ trunk/coregrind/m_gdbserver/server.h Thu Apr 30 21:44:17 2015
@@ -40,7 +40,6 @@
#include "pub_core_libcassert.h"
#include "pub_core_libcbase.h"
#include "pub_core_options.h"
-#include "pub_core_libcsetjmp.h"
#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_vki.h"
Modified: trunk/coregrind/m_initimg/initimg-darwin.c
==============================================================================
--- trunk/coregrind/m_initimg/initimg-darwin.c (original)
+++ trunk/coregrind/m_initimg/initimg-darwin.c Thu Apr 30 21:44:17 2015
@@ -47,7 +47,6 @@
#include "pub_core_ume.h"
#include "pub_core_options.h"
#include "pub_core_tooliface.h" /* VG_TRACK */
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" /* ThreadArchState */
#include "priv_initimg_pathscan.h"
#include "pub_core_initimg.h" /* self */
Modified: trunk/coregrind/m_initimg/initimg-linux.c
==============================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c (original)
+++ trunk/coregrind/m_initimg/initimg-linux.c Thu Apr 30 21:44:17 2015
@@ -48,7 +48,6 @@
#include "pub_core_options.h"
#include "pub_core_syscall.h"
#include "pub_core_tooliface.h" /* VG_TRACK */
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" /* ThreadArchState */
#include "priv_initimg_pathscan.h"
#include "pub_core_initimg.h" /* self */
Modified: trunk/coregrind/m_libcassert.c
==============================================================================
--- trunk/coregrind/m_libcassert.c (original)
+++ trunk/coregrind/m_libcassert.c Thu Apr 30 21:44:17 2015
@@ -31,7 +31,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_gdbserver.h"
#include "pub_core_aspacemgr.h"
Modified: trunk/coregrind/m_machine.c
==============================================================================
--- trunk/coregrind/m_machine.c (original)
+++ trunk/coregrind/m_machine.c Thu Apr 30 21:44:17 2015
@@ -29,7 +29,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // setjmp facilities
#include "pub_core_threadstate.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_main.c
==============================================================================
--- trunk/coregrind/m_main.c (original)
+++ trunk/coregrind/m_main.c Thu Apr 30 21:44:17 2015
@@ -31,7 +31,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: trunk/coregrind/m_mallocfree.c
==============================================================================
--- trunk/coregrind/m_mallocfree.c (original)
+++ trunk/coregrind/m_mallocfree.c Thu Apr 30 21:44:17 2015
@@ -38,7 +38,6 @@
#include "pub_core_libcprint.h"
#include "pub_core_mallocfree.h"
#include "pub_core_options.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" // For VG_INVALID_THREADID
#include "pub_core_gdbserver.h"
#include "pub_core_transtab.h"
Modified: trunk/coregrind/m_scheduler/scheduler.c
==============================================================================
--- trunk/coregrind/m_scheduler/scheduler.c (original)
+++ trunk/coregrind/m_scheduler/scheduler.c Thu Apr 30 21:44:17 2015
@@ -62,7 +62,6 @@
#include "pub_core_debuglog.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h" // __NR_sched_yield
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_clientstate.h"
#include "pub_core_aspacemgr.h"
Modified: trunk/coregrind/m_sigframe/sigframe-amd64-darwin.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-amd64-darwin.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-amd64-darwin.c Thu Apr 30 21:44:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-amd64-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-amd64-linux.c Thu Apr 30 21:44:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-arm-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-arm-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-arm-linux.c Thu Apr 30 21:44:17 2015
@@ -38,7 +38,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-arm64-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-arm64-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-arm64-linux.c Thu Apr 30 21:44:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-mips32-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-mips32-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-mips32-linux.c Thu Apr 30 21:44:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-mips64-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-mips64-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-mips64-linux.c Thu Apr 30 21:44:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" /* to keep _threadstate.h happy */
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c Thu Apr 30 21:44:17 2015
@@ -36,7 +36,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c Thu Apr 30 21:44:17 2015
@@ -36,7 +36,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-s390x-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-s390x-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-s390x-linux.c Thu Apr 30 21:44:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-tilegx-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-tilegx-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-tilegx-linux.c Thu Apr 30 21:44:17 2015
@@ -35,7 +35,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-x86-darwin.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-x86-darwin.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-x86-darwin.c Thu Apr 30 21:44:17 2015
@@ -34,7 +34,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h"
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_sigframe/sigframe-x86-linux.c
==============================================================================
--- trunk/coregrind/m_sigframe/sigframe-x86-linux.c (original)
+++ trunk/coregrind/m_sigframe/sigframe-x86-linux.c Thu Apr 30 21:44:17 2015
@@ -33,7 +33,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_aspacemgr.h" /* find_segment */
#include "pub_core_libcbase.h"
Modified: trunk/coregrind/m_signals.c
==============================================================================
--- trunk/coregrind/m_signals.c (original)
+++ trunk/coregrind/m_signals.c Thu Apr 30 21:44:17 2015
@@ -203,7 +203,6 @@
#include "pub_core_vki.h"
#include "pub_core_vkiscnums.h"
#include "pub_core_debuglog.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_xarray.h"
#include "pub_core_clientstate.h"
Modified: trunk/coregrind/m_stacktrace.c
==============================================================================
--- trunk/coregrind/m_stacktrace.c (original)
+++ trunk/coregrind/m_stacktrace.c Thu Apr 30 21:44:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_debuginfo.h" // XXX: circular dependency
#include "pub_core_aspacemgr.h" // For VG_(is_addressable)()
Modified: trunk/coregrind/m_threadstate.c
==============================================================================
--- trunk/coregrind/m_threadstate.c (original)
+++ trunk/coregrind/m_threadstate.c Thu Apr 30 21:44:17 2015
@@ -30,7 +30,6 @@
#include "pub_core_basics.h"
#include "pub_core_vki.h"
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h"
#include "pub_core_mallocfree.h" // VG_(malloc)
#include "pub_core_libcassert.h"
Modified: trunk/coregrind/m_translate.c
==============================================================================
--- trunk/coregrind/m_translate.c (original)
+++ trunk/coregrind/m_translate.c Thu Apr 30 21:44:17 2015
@@ -53,7 +53,6 @@
#include "pub_core_dispatch.h" // VG_(run_innerloop__dispatch_{un}profiled)
// VG_(run_a_noredir_translation__return_point)
-#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" // VexGuestArchState
#include "pub_core_trampoline.h" // VG_(ppctoc_magic_redirect_return_stub)
|
|
From: <sv...@va...> - 2015-04-30 20:32:16
|
Author: florian
Date: Thu Apr 30 21:32:08 2015
New Revision: 15168
Log:
New function VG_(am_extend_client_stack) to hide the implementation
details of an extensible stack.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_signals.c
branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Thu Apr 30 21:32:08 2015
@@ -2999,6 +2999,47 @@
}
+/* Extend the client stack such that ADDR is mapped. Unless ADDR is already
+ mapped in which case nothing happens. If the function fails, it returns
+ an error and provides the address to which the stack should have been
+ extended. OVERFLOW indicates whether this failure was due to an overflow
+ or some other cause. */
+SysRes VG_(am_extend_client_stack) ( Addr addr, Bool *overflow )
+{
+ SizeT udelta;
+ SysRes sres = VG_(mk_SysRes_Success)(0);
+
+ *overflow = False;
+
+ /* Get the segment containing addr. */
+ const NSegment *seg = VG_(am_find_nsegment)(addr);
+ aspacem_assert(seg != NULL);
+
+ /* TODO: the test "seg->kind == SkAnonC" is really inadequate,
+ because although it tests whether the segment is mapped
+ _somehow_, it doesn't check that it has the right permissions
+ (r,w, maybe x) ? */
+ if (seg->kind == SkAnonC)
+ /* ADDR is already mapped. Nothing to do. */
+ return sres;
+
+ const NSegment *anon_seg = VG_(am_next_nsegment)(seg, True/*fwds*/);
+ vg_assert(anon_seg != NULL);
+
+ udelta = VG_PGROUNDUP(anon_seg->start - addr);
+
+ VG_(debugLog)(1, "signals",
+ "extending a stack base 0x%lx down by %lu\n",
+ anon_seg->start, udelta);
+ if (! VG_(am_extend_into_adjacent_reservation_client)
+ ( anon_seg->start, -(SSizeT)udelta, overflow )) {
+ Addr new_stack_base = anon_seg->start - udelta;
+ sres = VG_(mk_SysRes_Error)(new_stack_base);
+ }
+ return sres;
+}
+
+
/* --- --- --- resizing/move a mapping --- --- --- */
#if HAVE_MREMAP
Modified: branches/ASPACEM_TWEAKS/coregrind/m_signals.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_signals.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_signals.c Thu Apr 30 21:32:08 2015
@@ -2276,32 +2276,11 @@
*/
Bool VG_(extend_stack)(ThreadId tid, Addr addr)
{
- SizeT udelta;
-
- /* Get the segment containing addr. */
- const NSegment* seg = VG_(am_find_nsegment)(addr);
- vg_assert(seg != NULL);
-
- /* TODO: the test "seg->kind == SkAnonC" is really inadequate,
- because although it tests whether the segment is mapped
- _somehow_, it doesn't check that it has the right permissions
- (r,w, maybe x) ? */
- if (seg->kind == SkAnonC)
- /* addr is already mapped. Nothing to do. */
- return True;
-
- const NSegment* seg_next = VG_(am_next_nsegment)( seg, True/*fwds*/ );
- vg_assert(seg_next != NULL);
-
- udelta = VG_PGROUNDUP(seg_next->start - addr);
-
- VG_(debugLog)(1, "signals",
- "extending a stack base 0x%llx down by %lld\n",
- (ULong)seg_next->start, (ULong)udelta);
Bool overflow;
- if (! VG_(am_extend_into_adjacent_reservation_client)
- ( seg_next->start, -(SSizeT)udelta, &overflow )) {
- Addr new_stack_base = seg_next->start - udelta;
+ SysRes sres = VG_(am_extend_client_stack)(addr, &overflow);
+
+ if (sr_isError(sres)) {
+ Addr new_stack_base = sr_Err(sres);
if (overflow)
VG_(umsg)("Stack overflow in thread #%d: can't grow stack to %#lx\n",
tid, new_stack_base);
Modified: branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h (original)
+++ branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h Thu Apr 30 21:32:08 2015
@@ -315,6 +315,7 @@
extern SysRes VG_(am_alloc_extensible_client_stack) ( Addr stack_end,
SizeT max_size,
UInt prot );
+extern SysRes VG_(am_extend_client_stack) ( Addr addr, Bool *overflow );
//--------------------------------------------------------------
// Valgrind (non-client) thread stacks. V itself runs on such
|
|
From: <sv...@va...> - 2015-04-30 20:30:23
|
Author: philippe
Date: Thu Apr 30 21:30:12 2015
New Revision: 15167
Log:
Rename write variable to avoid a warning:
memrw.c:37: warning: declaration of ‘write’ shadows a global declaration
/usr/include/unistd.h:333: warning: shadowed declaration is here
Modified:
trunk/perf/memrw.c
Modified: trunk/perf/memrw.c
==============================================================================
--- trunk/perf/memrw.c (original)
+++ trunk/perf/memrw.c Thu Apr 30 21:30:12 2015
@@ -34,20 +34,20 @@
static void *memrw_fn(void *v)
{
int loops, m, b;
- int write;
+ int dowrite;
int differs = 0;
unsigned char prev = 0;
for (loops = 0; loops < nr_loops; loops++) {
- // printf("loop %d write %d\n", loops, write);
+ // printf("loop %d dowrite %d\n", loops, dowrite);
// Note: in case of multiple threads, we will have
// to add lock/unlock somewhere in the below, maybe to lock
// the MB we are reading or writing.
for (m = 0; m < nr_mb_ws; m++) {
for (b = 0; b < 1024 * 1024; b++) {
- write = b % 5 == 0;
+ dowrite = b % 5 == 0;
// Do some write or read operations.
- if (write) {
+ if (dowrite) {
if (mb[m][b] < 255)
mb[m][b] += differs;
else
|
|
From: <sv...@va...> - 2015-04-30 17:35:30
|
Author: florian
Date: Thu Apr 30 18:35:23 2015
New Revision: 15166
Log:
Merge from trunk.
Added:
branches/ASPACEM_TWEAKS/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
- copied unchanged from r15165, trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
Modified:
branches/ASPACEM_TWEAKS/ (props changed)
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segnames.c
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/priv_aspacemgr.h
branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/readdwarf.c
branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syscall-arm64-linux.S
branches/ASPACEM_TWEAKS/docs/Makefile.am
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Thu Apr 30 18:35:23 2015
@@ -421,7 +421,7 @@
static void show_nsegment_full ( Int logLevel, Int segNo, const NSegment* seg )
{
HChar len_buf[20];
- const HChar* name = VG_(am_get_segname)( seg->fnIdx );
+ const HChar* name = ML_(am_get_segname)( seg->fnIdx );
if (name == NULL)
name = "(none)";
@@ -439,7 +439,7 @@
seg->isCH ? 'H' : '-',
show_ShrinkMode(seg->smode),
seg->dev, seg->ino, seg->offset,
- VG_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx,
+ ML_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx,
name
);
}
@@ -486,7 +486,7 @@
seg->hasX ? 'x' : '-', seg->hasT ? 'T' : '-',
seg->isCH ? 'H' : '-',
seg->dev, seg->ino, seg->offset,
- VG_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx
+ ML_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx
);
break;
@@ -520,7 +520,7 @@
VG_(debugLog)(logLevel, "aspacem",
"<<< SHOW_SEGMENTS: %s (%d segments)\n",
who, nsegments_used);
- VG_(am_show_segnames)( logLevel, who);
+ ML_(am_show_segnames)( logLevel, who);
for (i = 0; i < nsegments_used; i++)
show_nsegment( logLevel, i, &nsegments[i] );
VG_(debugLog)(logLevel, "aspacem",
@@ -533,7 +533,7 @@
const HChar* VG_(am_get_filename)( NSegment const * seg )
{
aspacem_assert(seg);
- return VG_(am_get_segname)( seg->fnIdx );
+ return ML_(am_get_segname)( seg->fnIdx );
}
/* Collect up the start addresses of segments whose kind matches one of
@@ -621,7 +621,7 @@
case SkFileC: case SkFileV:
return
s->smode == SmFixed
- && VG_(am_sane_segname)(s->fnIdx)
+ && ML_(am_sane_segname)(s->fnIdx)
&& !s->isCH;
case SkResvn:
@@ -675,7 +675,7 @@
+ ((ULong)s2->start) - ((ULong)s1->start) ) {
s1->end = s2->end;
s1->hasT |= s2->hasT;
- VG_(am_dec_refcount)(s1->fnIdx);
+ ML_(am_dec_refcount)(s1->fnIdx);
return True;
}
break;
@@ -1366,7 +1366,7 @@
nsegments[i+1].offset
+= ((ULong)nsegments[i+1].start) - ((ULong)nsegments[i].start);
- VG_(am_inc_refcount)(nsegments[i].fnIdx);
+ ML_(am_inc_refcount)(nsegments[i].fnIdx);
aspacem_assert(sane_NSegment(&nsegments[i]));
aspacem_assert(sane_NSegment(&nsegments[i+1]));
@@ -1431,7 +1431,7 @@
that decrement the reference counters for the segments names of
the replaced segments. */
for (i = iLo; i <= iHi; ++i)
- VG_(am_dec_refcount)(nsegments[i].fnIdx);
+ ML_(am_dec_refcount)(nsegments[i].fnIdx);
delta = iHi - iLo;
aspacem_assert(delta >= 0);
if (delta > 0) {
@@ -1528,7 +1528,7 @@
# endif // defined(VGP_arm_linux)
if (filename)
- seg.fnIdx = VG_(am_allocate_segname)( filename );
+ seg.fnIdx = ML_(am_allocate_segname)( filename );
if (0) show_nsegment( 2,0, &seg );
add_segment( &seg );
@@ -1588,7 +1588,7 @@
aspacem_assert(sizeof(SSizeT) == sizeof(void*));
/* Initialise the string table for segment names. */
- VG_(am_segnames_init)();
+ ML_(am_segnames_init)();
/* Check that we can store the largest imaginable dev, ino and
offset numbers in an NSegment. */
@@ -2032,7 +2032,7 @@
seg.mode = mode;
}
if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
- seg.fnIdx = VG_(am_allocate_segname)( buf );
+ seg.fnIdx = ML_(am_allocate_segname)( buf );
}
}
add_segment( &seg );
@@ -2254,9 +2254,9 @@
seg.mode = mode;
}
if (name) {
- seg.fnIdx = VG_(am_allocate_segname)( name );
+ seg.fnIdx = ML_(am_allocate_segname)( name );
} else if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
- seg.fnIdx = VG_(am_allocate_segname)( buf );
+ seg.fnIdx = ML_(am_allocate_segname)( buf );
}
add_segment( &seg );
@@ -2561,7 +2561,7 @@
seg.mode = mode;
}
if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
- seg.fnIdx = VG_(am_allocate_segname)( buf );
+ seg.fnIdx = ML_(am_allocate_segname)( buf );
}
add_segment( &seg );
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segnames.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segnames.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-segnames.c Thu Apr 30 18:35:23 2015
@@ -272,7 +272,7 @@
If none is found, an index is allocated and the name stored.
If running ouf of memory, return -1. */
Int
-VG_(am_allocate_segname)(const HChar *name)
+ML_(am_allocate_segname)(const HChar *name)
{
UInt len, ix, size, next_freeslot;
@@ -349,7 +349,7 @@
/* Debugging output */
void
-VG_(am_show_segnames)(Int logLevel, const HChar *prefix)
+ML_(am_show_segnames)(Int logLevel, const HChar *prefix)
{
UInt size, ix, i;
@@ -378,7 +378,7 @@
Used in aspacemgr debug output to associate a segment with
a segment name. */
Int
-VG_(am_segname_get_seqnr)(Int fnIdx)
+ML_(am_segname_get_seqnr)(Int fnIdx)
{
SizeT ix, size;
Int seqnr = -1;
@@ -399,7 +399,7 @@
/* Initialise the string table for segment names. It contains an empty
string which is not referenced. */
void
-VG_(am_segnames_init)(void)
+ML_(am_segnames_init)(void)
{
aspacem_assert(sizeof segnames >= overhead);
@@ -409,7 +409,7 @@
/* Increase reference count of segment name identified by IX. */
void
-VG_(am_inc_refcount)(Int ix)
+ML_(am_inc_refcount)(Int ix)
{
if (ix != -1)
inc_refcount(ix);
@@ -417,20 +417,20 @@
/* Decrease reference count of segment name identified by IX. */
void
-VG_(am_dec_refcount)(Int ix)
+ML_(am_dec_refcount)(Int ix)
{
if (ix != -1)
dec_refcount(ix);
}
Bool
-VG_(am_sane_segname)(Int ix)
+ML_(am_sane_segname)(Int ix)
{
return ix == -1 || (ix >= overhead && ix < segnames_used);
}
const HChar *
-VG_(am_get_segname)(Int ix)
+ML_(am_get_segname)(Int ix)
{
return (ix == -1) ? NULL : segnames + ix;
}
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/priv_aspacemgr.h
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/priv_aspacemgr.h (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/priv_aspacemgr.h Thu Apr 30 18:35:23 2015
@@ -132,27 +132,27 @@
/* ------ Implemented in aspacemgr-segnames.c ------ */
-void VG_(am_segnames_init)(void);
-void VG_(am_show_segnames)(Int logLevel, const HChar *prefix);
+void ML_(am_segnames_init)(void);
+void ML_(am_show_segnames)(Int logLevel, const HChar *prefix);
/* Put NAME into the string table of segment names. Return index for
future reference. A return value of -1 indicates that the segment name
could not be stored. Basically an out-of-memory situation. */
-Int VG_(am_allocate_segname)(const HChar *name);
+Int ML_(am_allocate_segname)(const HChar *name);
/* Increment / decrement the reference counter for this segment name. */
-void VG_(am_inc_refcount)(Int);
-void VG_(am_dec_refcount)(Int);
+void ML_(am_inc_refcount)(Int);
+void ML_(am_dec_refcount)(Int);
/* Check whether the segname index is sane. */
-Bool VG_(am_sane_segname)(Int fnIdx);
+Bool ML_(am_sane_segname)(Int fnIdx);
/* Return the segment name for the given index. Maybe return NULL, if the
segment does not have a name. */
-const HChar *VG_(am_get_segname)(Int fnIdx);
+const HChar *ML_(am_get_segname)(Int fnIdx);
/* Return the sequence number of the segment name */
-Int VG_(am_segname_get_seqnr)(Int fnIdx);
+Int ML_(am_segname_get_seqnr)(Int fnIdx);
#endif // __PRIV_ASPACEMGR_H
Modified: branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/readdwarf.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/readdwarf.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_debuginfo/readdwarf.c Thu Apr 30 18:35:23 2015
@@ -3311,7 +3311,7 @@
VG_(printf)(" DW_CFA_def_cfa_expression (");
/* Convert the expression into a dag rooted at ctx->exprs index j,
or fail. */
- j = dwarfexpr_to_dag ( ctx, expr, len, True/*push CFA at start*/,
+ j = dwarfexpr_to_dag ( ctx, expr, len, False/*!push CFA at start*/,
di->ddump_frames);
if (di->ddump_frames)
VG_(printf)(")\n");
Modified: branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syscall-arm64-linux.S
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syscall-arm64-linux.S (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_syswrap/syscall-arm64-linux.S Thu Apr 30 18:35:23 2015
@@ -157,6 +157,7 @@
VG_(fixup_guest_state_after_syscall_interrupted) can do the
right thing */
+.align 3
.globl ML_(blksys_setup)
.globl ML_(blksys_restart)
.globl ML_(blksys_complete)
Modified: branches/ASPACEM_TWEAKS/docs/Makefile.am
==============================================================================
--- branches/ASPACEM_TWEAKS/docs/Makefile.am (original)
+++ branches/ASPACEM_TWEAKS/docs/Makefile.am Thu Apr 30 18:35:23 2015
@@ -30,6 +30,7 @@
internals/3_9_BUGSTATUS.txt \
internals/3_10_BUGSTATUS.txt \
internals/MERGE_3_10_1.txt \
+ internals/aarch64-linux-on-qemu-HOWTO.txt
internals/arm_thumb_notes_gdbserver.txt \
internals/avx-notes.txt \
internals/BIG_APP_NOTES.txt \
|
|
From: <sv...@va...> - 2015-04-30 17:34:11
|
Author: florian
Date: Thu Apr 30 18:34:04 2015
New Revision: 15165
Log:
Fix the namespace of the functions dealing with segment names.
As those are private to the address space manager they should
be ML_ not VG_ prefixed.
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
trunk/coregrind/m_aspacemgr/aspacemgr-segnames.c
trunk/coregrind/m_aspacemgr/priv_aspacemgr.h
Modified: trunk/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- trunk/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ trunk/coregrind/m_aspacemgr/aspacemgr-linux.c Thu Apr 30 18:34:04 2015
@@ -421,7 +421,7 @@
static void show_nsegment_full ( Int logLevel, Int segNo, const NSegment* seg )
{
HChar len_buf[20];
- const HChar* name = VG_(am_get_segname)( seg->fnIdx );
+ const HChar* name = ML_(am_get_segname)( seg->fnIdx );
if (name == NULL)
name = "(none)";
@@ -439,7 +439,7 @@
seg->isCH ? 'H' : '-',
show_ShrinkMode(seg->smode),
seg->dev, seg->ino, seg->offset,
- VG_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx,
+ ML_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx,
name
);
}
@@ -486,7 +486,7 @@
seg->hasX ? 'x' : '-', seg->hasT ? 'T' : '-',
seg->isCH ? 'H' : '-',
seg->dev, seg->ino, seg->offset,
- VG_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx
+ ML_(am_segname_get_seqnr)(seg->fnIdx), seg->fnIdx
);
break;
@@ -520,7 +520,7 @@
VG_(debugLog)(logLevel, "aspacem",
"<<< SHOW_SEGMENTS: %s (%d segments)\n",
who, nsegments_used);
- VG_(am_show_segnames)( logLevel, who);
+ ML_(am_show_segnames)( logLevel, who);
for (i = 0; i < nsegments_used; i++)
show_nsegment( logLevel, i, &nsegments[i] );
VG_(debugLog)(logLevel, "aspacem",
@@ -533,7 +533,7 @@
const HChar* VG_(am_get_filename)( NSegment const * seg )
{
aspacem_assert(seg);
- return VG_(am_get_segname)( seg->fnIdx );
+ return ML_(am_get_segname)( seg->fnIdx );
}
/* Collect up the start addresses of segments whose kind matches one of
@@ -621,7 +621,7 @@
case SkFileC: case SkFileV:
return
s->smode == SmFixed
- && VG_(am_sane_segname)(s->fnIdx)
+ && ML_(am_sane_segname)(s->fnIdx)
&& !s->isCH;
case SkResvn:
@@ -675,7 +675,7 @@
+ ((ULong)s2->start) - ((ULong)s1->start) ) {
s1->end = s2->end;
s1->hasT |= s2->hasT;
- VG_(am_dec_refcount)(s1->fnIdx);
+ ML_(am_dec_refcount)(s1->fnIdx);
return True;
}
break;
@@ -1366,7 +1366,7 @@
nsegments[i+1].offset
+= ((ULong)nsegments[i+1].start) - ((ULong)nsegments[i].start);
- VG_(am_inc_refcount)(nsegments[i].fnIdx);
+ ML_(am_inc_refcount)(nsegments[i].fnIdx);
aspacem_assert(sane_NSegment(&nsegments[i]));
aspacem_assert(sane_NSegment(&nsegments[i+1]));
@@ -1431,7 +1431,7 @@
that decrement the reference counters for the segments names of
the replaced segments. */
for (i = iLo; i <= iHi; ++i)
- VG_(am_dec_refcount)(nsegments[i].fnIdx);
+ ML_(am_dec_refcount)(nsegments[i].fnIdx);
delta = iHi - iLo;
aspacem_assert(delta >= 0);
if (delta > 0) {
@@ -1528,7 +1528,7 @@
# endif // defined(VGP_arm_linux)
if (filename)
- seg.fnIdx = VG_(am_allocate_segname)( filename );
+ seg.fnIdx = ML_(am_allocate_segname)( filename );
if (0) show_nsegment( 2,0, &seg );
add_segment( &seg );
@@ -1570,7 +1570,7 @@
aspacem_assert(sizeof(SSizeT) == sizeof(void*));
/* Initialise the string table for segment names. */
- VG_(am_segnames_init)();
+ ML_(am_segnames_init)();
/* Check that we can store the largest imaginable dev, ino and
offset numbers in an NSegment. */
@@ -2014,7 +2014,7 @@
seg.mode = mode;
}
if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
- seg.fnIdx = VG_(am_allocate_segname)( buf );
+ seg.fnIdx = ML_(am_allocate_segname)( buf );
}
}
add_segment( &seg );
@@ -2236,9 +2236,9 @@
seg.mode = mode;
}
if (name) {
- seg.fnIdx = VG_(am_allocate_segname)( name );
+ seg.fnIdx = ML_(am_allocate_segname)( name );
} else if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
- seg.fnIdx = VG_(am_allocate_segname)( buf );
+ seg.fnIdx = ML_(am_allocate_segname)( buf );
}
add_segment( &seg );
@@ -2543,7 +2543,7 @@
seg.mode = mode;
}
if (ML_(am_resolve_filename)(fd, buf, VKI_PATH_MAX)) {
- seg.fnIdx = VG_(am_allocate_segname)( buf );
+ seg.fnIdx = ML_(am_allocate_segname)( buf );
}
add_segment( &seg );
Modified: trunk/coregrind/m_aspacemgr/aspacemgr-segnames.c
==============================================================================
--- trunk/coregrind/m_aspacemgr/aspacemgr-segnames.c (original)
+++ trunk/coregrind/m_aspacemgr/aspacemgr-segnames.c Thu Apr 30 18:34:04 2015
@@ -272,7 +272,7 @@
If none is found, an index is allocated and the name stored.
If running ouf of memory, return -1. */
Int
-VG_(am_allocate_segname)(const HChar *name)
+ML_(am_allocate_segname)(const HChar *name)
{
UInt len, ix, size, next_freeslot;
@@ -349,7 +349,7 @@
/* Debugging output */
void
-VG_(am_show_segnames)(Int logLevel, const HChar *prefix)
+ML_(am_show_segnames)(Int logLevel, const HChar *prefix)
{
UInt size, ix, i;
@@ -378,7 +378,7 @@
Used in aspacemgr debug output to associate a segment with
a segment name. */
Int
-VG_(am_segname_get_seqnr)(Int fnIdx)
+ML_(am_segname_get_seqnr)(Int fnIdx)
{
SizeT ix, size;
Int seqnr = -1;
@@ -399,7 +399,7 @@
/* Initialise the string table for segment names. It contains an empty
string which is not referenced. */
void
-VG_(am_segnames_init)(void)
+ML_(am_segnames_init)(void)
{
aspacem_assert(sizeof segnames >= overhead);
@@ -409,7 +409,7 @@
/* Increase reference count of segment name identified by IX. */
void
-VG_(am_inc_refcount)(Int ix)
+ML_(am_inc_refcount)(Int ix)
{
if (ix != -1)
inc_refcount(ix);
@@ -417,20 +417,20 @@
/* Decrease reference count of segment name identified by IX. */
void
-VG_(am_dec_refcount)(Int ix)
+ML_(am_dec_refcount)(Int ix)
{
if (ix != -1)
dec_refcount(ix);
}
Bool
-VG_(am_sane_segname)(Int ix)
+ML_(am_sane_segname)(Int ix)
{
return ix == -1 || (ix >= overhead && ix < segnames_used);
}
const HChar *
-VG_(am_get_segname)(Int ix)
+ML_(am_get_segname)(Int ix)
{
return (ix == -1) ? NULL : segnames + ix;
}
Modified: trunk/coregrind/m_aspacemgr/priv_aspacemgr.h
==============================================================================
--- trunk/coregrind/m_aspacemgr/priv_aspacemgr.h (original)
+++ trunk/coregrind/m_aspacemgr/priv_aspacemgr.h Thu Apr 30 18:34:04 2015
@@ -132,27 +132,27 @@
/* ------ Implemented in aspacemgr-segnames.c ------ */
-void VG_(am_segnames_init)(void);
-void VG_(am_show_segnames)(Int logLevel, const HChar *prefix);
+void ML_(am_segnames_init)(void);
+void ML_(am_show_segnames)(Int logLevel, const HChar *prefix);
/* Put NAME into the string table of segment names. Return index for
future reference. A return value of -1 indicates that the segment name
could not be stored. Basically an out-of-memory situation. */
-Int VG_(am_allocate_segname)(const HChar *name);
+Int ML_(am_allocate_segname)(const HChar *name);
/* Increment / decrement the reference counter for this segment name. */
-void VG_(am_inc_refcount)(Int);
-void VG_(am_dec_refcount)(Int);
+void ML_(am_inc_refcount)(Int);
+void ML_(am_dec_refcount)(Int);
/* Check whether the segname index is sane. */
-Bool VG_(am_sane_segname)(Int fnIdx);
+Bool ML_(am_sane_segname)(Int fnIdx);
/* Return the segment name for the given index. Maybe return NULL, if the
segment does not have a name. */
-const HChar *VG_(am_get_segname)(Int fnIdx);
+const HChar *ML_(am_get_segname)(Int fnIdx);
/* Return the sequence number of the segment name */
-Int VG_(am_segname_get_seqnr)(Int fnIdx);
+Int ML_(am_segname_get_seqnr)(Int fnIdx);
#endif // __PRIV_ASPACEMGR_H
|
|
From: <sv...@va...> - 2015-04-30 17:25:54
|
Author: florian
Date: Thu Apr 30 18:25:48 2015
New Revision: 15164
Log:
Add debug output to setup_client_stack.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
Modified: branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c Thu Apr 30 18:25:48 2015
@@ -550,6 +550,9 @@
VG_(clstk_start_base) = clstack_start;
VG_(clstk_end) = clstack_end;
+ VG_(debugLog)(2, "initimg", "client stack start = %#lx\n",
+ VG_(clstk_start_base));
+ VG_(debugLog)(2, "initimg", "client stack end = %#lx\n", VG_(clstk_end));
/* ==================== create client stack ==================== */
|
|
From: <sv...@va...> - 2015-04-30 17:25:01
|
Author: florian
Date: Thu Apr 30 18:24:54 2015
New Revision: 15163
Log:
Change VG_(am_alloc_client_dataseg) and pass in the wanted protection
bits. This makes the prototype match VG_(am_alloc_extensible_client_stack).
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Thu Apr 30 18:24:54 2015
@@ -2924,7 +2924,7 @@
guaranteed. Therefore, if successful, the function returns the actual
base address of the data segment, possibly different from BASE. If the
data segment could not be allocated the function returns an error. */
-SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT max_size )
+SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT max_size, UInt prot )
{
Bool ok;
Addr anon_start = base;
@@ -2960,13 +2960,6 @@
if (!ok)
return VG_(mk_SysRes_Error)( VKI_ENOMEM );
- /* We make the data segment (heap) executable because LinuxThreads on
- ppc32 creates trampolines in this area. Also, on x86/Linux the data
- segment is RWX natively, at least according to /proc/self/maps.
- Also, having a non-executable data seg would kill any program which
- tried to create code in the data seg and then run it. */
- UInt prot = VKI_PROT_READ | VKI_PROT_WRITE | VKI_PROT_EXEC;
-
return VG_(am_mmap_anon_fixed_client)( anon_start, anon_size, prot );
}
Modified: branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c Thu Apr 30 18:24:54 2015
@@ -811,7 +811,14 @@
/* Because there's been no brk activity yet: */
vg_assert(VG_(brk_base) == VG_(brk_limit));
- SysRes sres = VG_(am_alloc_client_dataseg)( VG_(brk_base), max_size);
+ /* We make the data segment (heap) executable because LinuxThreads on
+ ppc32 creates trampolines in this area. Also, on x86/Linux the data
+ segment is RWX natively, at least according to /proc/self/maps.
+ Also, having a non-executable data seg would kill any program which
+ tried to create code in the data seg and then run it. */
+ UInt prot = VKI_PROT_READ | VKI_PROT_WRITE | VKI_PROT_EXEC;
+
+ SysRes sres = VG_(am_alloc_client_dataseg)( VG_(brk_base), max_size, prot);
if (sr_isError(sres)) {
// FIXME: use VG_(fmsg) and before that revert_to_stderr
Modified: branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h (original)
+++ branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h Thu Apr 30 18:24:54 2015
@@ -310,7 +310,8 @@
// Client memory segments
-extern SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT size );
+extern SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT max_size,
+ UInt prot );
extern SysRes VG_(am_alloc_extensible_client_stack) ( Addr stack_end,
SizeT max_size,
UInt prot );
|
|
From: <sv...@va...> - 2015-04-30 17:13:03
|
Author: florian
Date: Thu Apr 30 18:12:55 2015
New Revision: 15162
Log:
New function VG_(am_alloc_extensible_client_stack). This just creates the
underlying AnonC/Resvn segment pair and maps a single page into the anon
segment.
setup_client_stack is changed to first allocate the stack and then extend
it to the size needed. This keeps details such as VG_STACK_REDZONE_SZB
out of the address space manager.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Thu Apr 30 18:12:55 2015
@@ -2918,7 +2918,7 @@
/* Allocate the client data (brk) segment at address BASE. The brk segment
can be at most MAX_SIZE bytes large. It is represented as an expandable
- anonymous mapping abutted towards lower addresses by a shrinkable
+ anonymous mapping abutted towards higher addresses by a shrinkable
reservation segment. The initial size of the anonymous mapping is 1 page.
BASE is the preferred address for the data segment but cannot be
guaranteed. Therefore, if successful, the function returns the actual
@@ -2971,6 +2971,41 @@
}
+/* Allocate the client stack segment beginning at STACK_END. The stack segment
+ can be at most MAX_SIZE bytes large. It is represented as an expandable
+ anonymous mapping abutted towards lower addresses by a shrinkable
+ reservation segment. The initial size of the anonymous mapping is 1 page.
+ If the stack could not be allocated the function returns an error. */
+SysRes VG_(am_alloc_extensible_client_stack) ( Addr stack_end, SizeT max_size,
+ UInt prot)
+{
+ Bool ok;
+ SizeT anon_size = VKI_PAGE_SIZE;
+ Addr anon_start = stack_end - anon_size;
+ SizeT resvn_size = max_size - anon_size;
+ Addr resvn_start = anon_start - resvn_size;
+
+ aspacem_assert(max_size > anon_size); // avoid wrap-around for resvn_size
+ aspacem_assert(VG_IS_PAGE_ALIGNED(anon_size));
+ aspacem_assert(VG_IS_PAGE_ALIGNED(resvn_size));
+ aspacem_assert(VG_IS_PAGE_ALIGNED(anon_start));
+ aspacem_assert(VG_IS_PAGE_ALIGNED(resvn_start));
+
+ if (0)
+ VG_(debugLog)(0, "aspacem", "%#lx 0x%lx %#lx 0x%lx\n",
+ resvn_start, resvn_size, anon_start, anon_size);
+
+ /* Create a shrinkable reservation followed by an anonymous
+ segment. Together these constitute a growdown stack. */
+ ok = VG_(am_create_reservation)( resvn_start, resvn_size,
+ SmUpper, anon_size );
+ if (ok)
+ return VG_(am_mmap_anon_fixed_client)( anon_start, anon_size, prot );
+
+ return VG_(mk_SysRes_Error)( VKI_ENOMEM );
+}
+
+
/* --- --- --- resizing/move a mapping --- --- --- */
#if HAVE_MREMAP
Modified: branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_initimg/initimg-linux.c Thu Apr 30 18:12:55 2015
@@ -48,6 +48,7 @@
#include "pub_core_ume.h"
#include "pub_core_options.h"
#include "pub_core_syscall.h"
+#include "pub_core_signals.h" /* VG_(extend_stack) */
#include "pub_core_tooliface.h" /* VG_TRACK */
#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
#include "pub_core_threadstate.h" /* ThreadArchState */
@@ -394,7 +395,6 @@
* by the values in vex_archinfo.
*/
- SysRes res;
HChar **cpp;
HChar *strtab; /* string table */
HChar *stringbase;
@@ -504,81 +504,53 @@
/* ==================== allocate space ==================== */
- { SizeT anon_size = clstack_end - clstack_start + 1;
- SizeT resvn_size = clstack_max_size - anon_size;
- Addr anon_start = clstack_start;
- Addr resvn_start = anon_start - resvn_size;
- SizeT inner_HACK = 0;
- Bool ok;
-
- /* So far we've only accounted for space requirements down to the
- stack pointer. If this target's ABI requires a redzone below
- the stack pointer, we need to allocate an extra page, to
- handle the worst case in which the stack pointer is almost at
- the bottom of a page, and so there is insufficient room left
- over to put the redzone in. In this case the simple thing to
- do is allocate an extra page, by shrinking the reservation by
- one page and growing the anonymous area by a corresponding
- page. */
- vg_assert(VG_STACK_REDZONE_SZB >= 0);
- vg_assert(VG_STACK_REDZONE_SZB < VKI_PAGE_SIZE);
- if (VG_STACK_REDZONE_SZB > 0) {
- vg_assert(resvn_size > VKI_PAGE_SIZE);
- resvn_size -= VKI_PAGE_SIZE;
- anon_start -= VKI_PAGE_SIZE;
- anon_size += VKI_PAGE_SIZE;
- }
-
- vg_assert(VG_IS_PAGE_ALIGNED(anon_size));
- vg_assert(VG_IS_PAGE_ALIGNED(resvn_size));
- vg_assert(VG_IS_PAGE_ALIGNED(anon_start));
- vg_assert(VG_IS_PAGE_ALIGNED(resvn_start));
- vg_assert(resvn_start == clstack_end + 1 - clstack_max_size);
-
-# ifdef ENABLE_INNER
- inner_HACK = 1024*1024; // create 1M non-fault-extending stack
-# endif
-
- if (0)
- VG_(printf)("%#lx 0x%lx %#lx 0x%lx\n",
- resvn_start, resvn_size, anon_start, anon_size);
-
- /* Create a shrinkable reservation followed by an anonymous
- segment. Together these constitute a growdown stack. */
- res = VG_(mk_SysRes_Error)(0);
- ok = VG_(am_create_reservation)(
- resvn_start,
- resvn_size -inner_HACK,
- SmUpper,
- anon_size +inner_HACK
- );
- if (ok) {
- /* allocate a stack - mmap enough space for the stack */
- res = VG_(am_mmap_anon_fixed_client)(
- anon_start -inner_HACK,
- anon_size +inner_HACK,
- info->stack_prot
- );
- }
- if ((!ok) || sr_isError(res)) {
- /* Allocation of the stack failed. We have to stop. */
- VG_(printf)("valgrind: "
- "I failed to allocate space for the application's stack.\n");
- VG_(printf)("valgrind: "
- "This may be the result of a very large --main-stacksize=\n");
- VG_(printf)("valgrind: setting. Cannot continue. Sorry.\n\n");
- VG_(exit)(1);
- }
-
- vg_assert(ok);
- vg_assert(!sr_isError(res));
-
- /* Record stack extent -- needed for stack-change code. */
- VG_(clstk_start_base) = anon_start -inner_HACK;
- VG_(clstk_end) = VG_(clstk_start_base) + anon_size +inner_HACK -1;
+ SysRes sres =
+ VG_(am_alloc_extensible_client_stack) ( clstack_end + 1, clstack_max_size,
+ info->stack_prot);
+
+ if (sr_isError(sres)) {
+ /* Allocation of the stack failed. We have to stop. */
+ VG_(printf)("valgrind: "
+ "I failed to allocate space for the application's stack.\n");
+ VG_(printf)("valgrind: "
+ "This may be the result of a very large --main-stacksize=\n");
+ VG_(printf)("valgrind: setting. Cannot continue. Sorry.\n\n");
+ VG_(exit)(1);
+ }
+
+ /* Now grow the stack to what is needed */
+ /* So far we've only accounted for space requirements down to the
+ stack pointer. If this target's ABI requires a redzone below
+ the stack pointer, we need to allocate an extra page, to
+ handle the worst case in which the stack pointer is almost at
+ the bottom of a page, and so there is insufficient room left
+ over to put the redzone in. */
+ vg_assert(VG_STACK_REDZONE_SZB >= 0);
+ vg_assert(VG_STACK_REDZONE_SZB < VKI_PAGE_SIZE);
+ if (VG_STACK_REDZONE_SZB > 0) {
+ clstack_start -= VKI_PAGE_SIZE;
+ }
+
+ SizeT inner_HACK = 0;
+# ifdef ENABLE_INNER
+ inner_HACK = 1024*1024; // create 1M non-fault-extending stack
+# endif
+
+ clstack_start -= inner_HACK;
+
+ if (! VG_(extend_stack) ( /*tid*/1, clstack_start)) {
+ VG_(printf)("valgrind: "
+ "I failed to allocate space for the application's stack.\n");
+ VG_(printf)("valgrind: setting. Cannot continue. Sorry.\n\n");
+ VG_(exit)(1);
}
+ /* Record stack extent -- needed for stack-change code. */
+ VG_(clstk_start_base) = clstack_start;
+ VG_(clstk_end) = clstack_end;
+
+
/* ==================== create client stack ==================== */
ptr = (Addr*)client_SP;
Modified: branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h (original)
+++ branches/ASPACEM_TWEAKS/coregrind/pub_core_aspacemgr.h Thu Apr 30 18:12:55 2015
@@ -311,6 +311,9 @@
// Client memory segments
extern SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT size );
+extern SysRes VG_(am_alloc_extensible_client_stack) ( Addr stack_end,
+ SizeT max_size,
+ UInt prot );
//--------------------------------------------------------------
// Valgrind (non-client) thread stacks. V itself runs on such
|
|
From: <sv...@va...> - 2015-04-30 12:16:56
|
Author: florian
Date: Thu Apr 30 13:16:44 2015
New Revision: 15161
Log:
Update comment for VG_(am_alloc_client_dataseg). Also pick a
better parameter name.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Thu Apr 30 13:16:44 2015
@@ -2916,21 +2916,23 @@
/*--- ---*/
/*-----------------------------------------------------------------*/
-/* Allocate the client data segment at address BASE with size SIZE. It is
- an expandable anonymous mapping abutting a shrinkable reservation segment.
+/* Allocate the client data (brk) segment at address BASE. The brk segment
+ can be at most MAX_SIZE bytes large. It is represented as an expandable
+ anonymous mapping abutted towards lower addresses by a shrinkable
+ reservation segment. The initial size of the anonymous mapping is 1 page.
BASE is the preferred address for the data segment but cannot be
guaranteed. Therefore, if successful, the function returns the actual
base address of the data segment, possibly different from BASE. If the
data segment could not be allocated the function returns an error. */
-SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT size )
+SysRes VG_(am_alloc_client_dataseg) ( Addr base, SizeT max_size )
{
Bool ok;
Addr anon_start = base;
SizeT anon_size = VKI_PAGE_SIZE;
Addr resvn_start = anon_start + anon_size;
- SizeT resvn_size = size - anon_size;
+ SizeT resvn_size = max_size - anon_size;
- aspacem_assert(size > anon_size); // avoid wrap-around for resvn_size
+ aspacem_assert(max_size > anon_size); // avoid wrap-around for resvn_size
aspacem_assert(VG_IS_PAGE_ALIGNED(anon_size));
aspacem_assert(VG_IS_PAGE_ALIGNED(resvn_size));
aspacem_assert(VG_IS_PAGE_ALIGNED(anon_start));
|
|
From: <sv...@va...> - 2015-04-30 11:45:20
|
Author: sewardj
Date: Thu Apr 30 12:45:13 2015
New Revision: 15160
Log:
DW_CFA_def_cfa_expression: don't push the CFA on the stack before
evaluation starts. For DW_CFA_val_expression and DW_CFA_expression
doing so is correct, but not for DW_CFA_def_cfa_expression.
Modified:
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
==============================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c (original)
+++ trunk/coregrind/m_debuginfo/readdwarf.c Thu Apr 30 12:45:13 2015
@@ -3311,7 +3311,7 @@
VG_(printf)(" DW_CFA_def_cfa_expression (");
/* Convert the expression into a dag rooted at ctx->exprs index j,
or fail. */
- j = dwarfexpr_to_dag ( ctx, expr, len, True/*push CFA at start*/,
+ j = dwarfexpr_to_dag ( ctx, expr, len, False/*!push CFA at start*/,
di->ddump_frames);
if (di->ddump_frames)
VG_(printf)(")\n");
|
|
From: <sv...@va...> - 2015-04-30 11:06:08
|
Author: sewardj
Date: Thu Apr 30 12:06:00 2015
New Revision: 15159
Log:
Add a HOWTO on how to build and install aarch64-linux on QEMU,
primarily for testing convenience.
Added:
trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
Modified:
trunk/docs/Makefile.am
Modified: trunk/docs/Makefile.am
==============================================================================
--- trunk/docs/Makefile.am (original)
+++ trunk/docs/Makefile.am Thu Apr 30 12:06:00 2015
@@ -30,6 +30,7 @@
internals/3_9_BUGSTATUS.txt \
internals/3_10_BUGSTATUS.txt \
internals/MERGE_3_10_1.txt \
+ internals/aarch64-linux-on-qemu-HOWTO.txt
internals/arm_thumb_notes_gdbserver.txt \
internals/avx-notes.txt \
internals/BIG_APP_NOTES.txt \
Added: trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt
==============================================================================
--- trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt (added)
+++ trunk/docs/internals/aarch64-linux-on-qemu-HOWTO.txt Thu Apr 30 12:06:00 2015
@@ -0,0 +1,102 @@
+
+How to install and configure a QEMU aarch64-linux installation.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Last updated 30 April 2015
+
+This gives a fairly usable, and not entirely slow, arm64-linux
+install. It has the advantage that the idle loop works right and so
+when the guest becomes idle, qemu uses only very little host cpu, so
+you can leave the guest idling for long periods without bad
+performance effects on the host.
+
+More or less following
+https://gmplib.org/~tege/qemu.html, section 14 (for arm64)
+
+Build qemu-2.2.1 with --target-list including aarch64-softmmu
+
+mkdir Arm64-2
+cd Arm64-2
+
+wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/linux
+
+wget http://d-i.debian.org/daily-images/arm64/daily/netboot/debian-installer/arm64/initrd.gz
+
+# Note. 6G is easily enough to install debian and do a build of Valgrind.
+# If you envisage needing more space, now is the time to choose a larger
+# number.
+
+/path/to/Qemu221/bin/qemu-img create disk6G.img 6G
+
+/path/to/Qemu221/bin/qemu-system-aarch64 \
+ -M virt -cpu cortex-a57 -m 256 \
+ -drive file=disk6G.img,if=none,id=blk -device virtio-blk-device,drive=blk \
+ -net user,hostfwd=tcp::5555-:22 -device virtio-net-device,vlan=0 \
+ -kernel linux \
+ -initrd initrd.gz \
+ -append "console=ttyAMA0 --" \
+ -nographic
+
+Do an install, be as vanilla as possible, allow it to create a user
+"username", and do not ask it to install any extra software. But,
+when you get to here
+
+ ââââââââââââââââââââ⤠[!!] Finish the installation ââââââââââââââââââââââ
+ â â
+ ââ Installation complete â
+ ââ Installation is complete, so it is time to boot into your new system. â
+ ââ Make sure to remove the installation media (CD-ROM, floppies), so â
+ ââ that you boot into the new system rather than restarting the â
+ ââ installation. â
+ ââ â
+ ââ <Go Back> <Continue> â
+ â â
+ âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
+
+do "Go Back"
+then in the next menu "Execute a shell", "Continue"
+
+This gives you a root shell in the new VM. In that shell:
+
+ mount -t proc proc /target/proc
+ mount --rbind /sys /target/sys
+ mount --rbind /dev /target/dev
+ chroot /target bash
+ /etc/init.d/ssh start
+ mv /boot/initrd.img-3.16.0-4-arm64 /boot/initrd.img-3.16.0-4-arm64
+ echo virtio-mmio >>/etc/initramfs-tools/modules
+ /usr/sbin/update-initramfs -c -k 3.16.0-4-arm64
+
+Then on the host, copy out the files that the above created.
+
+cd Arm64-2
+ssh -p 5555 username@localhost \
+ "tar -c -f - --exclude=lost+found /boot" | tar xf -
+
+Now back in the VM, we can finish the installation.
+
+ exit
+ exit
+ Select "Finish the installation"
+ Continue
+
+When it reboots, kill qemu from another shell, else it will try to reinstall.
+
+Now start the installation:
+
+/path/to/Qemu221/bin/qemu-system-aarch64 -M virt \
+ -cpu cortex-a57 -m 1024 -drive file=disk6G.img,if=none,id=blk \
+ -device virtio-blk-device,drive=blk -net user,hostfwd=tcp::5555-:22 \
+ -device virtio-net-device,vlan=0 -kernel boot/vmlinuz-3.16.0-4-arm64 \
+ -initrd boot/initrd.img-3.16.0-4-arm64 \
+ -append "root=/dev/vda2 rw console=ttyAMA0 --" -nographic
+
+Now you can ssh into the VM and install stuff as usual:
+
+ssh -XC -p 5555 username@localhost
+
+ (on the guest)
+ become root
+ apt-get install make gcc g++ automake autoconf emacs subversion gdb
+
+Hack on, etc.
|