[pypy-commit] stmgc marker: Pass the segment base to stmcb_expand_marker
arigo
noreply at buildbot.pypy.org
Sat Apr 19 21:55:49 CEST 2014
Author: Armin Rigo <arigo at tunes.org>
Branch: marker
Changeset: r1169:8bd21f95eb8a
Date: 2014-04-19 18:41 +0200
http://bitbucket.org/pypy/stmgc/changeset/8bd21f95eb8a/
Log: Pass the segment base to stmcb_expand_marker
diff --git a/c7/stm/marker.c b/c7/stm/marker.c
--- a/c7/stm/marker.c
+++ b/c7/stm/marker.c
@@ -3,7 +3,7 @@
#endif
-void (*stmcb_expand_marker)(uintptr_t odd_number,
+void (*stmcb_expand_marker)(char *segment_base, uintptr_t odd_number,
object_t *following_object,
char *outputbuf, size_t outputbufsize);
@@ -21,7 +21,7 @@
uintptr_t x = (uintptr_t)current->ss;
if (x & 1) {
/* the stack entry is an odd number */
- stmcb_expand_marker(x, current[1].ss,
+ stmcb_expand_marker(pseg->pub.segment_base, x, current[1].ss,
pseg->marker_self, _STM_MARKER_LEN);
if (pseg->marker_self[0] == 0) {
diff --git a/c7/stmgc.h b/c7/stmgc.h
--- a/c7/stmgc.h
+++ b/c7/stmgc.h
@@ -378,7 +378,7 @@
/* The markers pushed in the shadowstack are an odd number followed by a
regular pointer. When needed, this library invokes this callback to
turn this pair into a human-readable explanation. */
-extern void (*stmcb_expand_marker)(uintptr_t odd_number,
+extern void (*stmcb_expand_marker)(char *segment_base, uintptr_t odd_number,
object_t *following_object,
char *outputbuf, size_t outputbufsize);
diff --git a/c7/test/support.py b/c7/test/support.py
--- a/c7/test/support.py
+++ b/c7/test/support.py
@@ -123,7 +123,8 @@
void stm_flush_timing(stm_thread_local_t *, int);
-void (*stmcb_expand_marker)(uintptr_t odd_number, object_t *following_object,
+void (*stmcb_expand_marker)(char *segment_base, uintptr_t odd_number,
+ object_t *following_object,
char *outputbuf, size_t outputbufsize);
void stm_push_marker(stm_thread_local_t *, uintptr_t, object_t *);
diff --git a/c7/test/test_marker.py b/c7/test/test_marker.py
--- a/c7/test/test_marker.py
+++ b/c7/test/test_marker.py
@@ -46,8 +46,8 @@
assert tl.longest_marker_other[0] == '\x00'
def test_abort_marker_no_shadowstack_cb(self):
- @ffi.callback("void(uintptr_t, object_t *, char *, size_t)")
- def expand_marker(number, ptr, outbuf, outbufsize):
+ @ffi.callback("void(char *, uintptr_t, object_t *, char *, size_t)")
+ def expand_marker(base, number, ptr, outbuf, outbufsize):
seen.append(1)
lib.stmcb_expand_marker = expand_marker
seen = []
@@ -60,8 +60,8 @@
assert not seen
def test_abort_marker_shadowstack_cb(self):
- @ffi.callback("void(uintptr_t, object_t *, char *, size_t)")
- def expand_marker(number, ptr, outbuf, outbufsize):
+ @ffi.callback("void(char *, uintptr_t, object_t *, char *, size_t)")
+ def expand_marker(base, number, ptr, outbuf, outbufsize):
s = '%d %r\x00' % (number, ptr)
assert len(s) <= outbufsize
outbuf[0:len(s)] = s
@@ -116,8 +116,8 @@
py.test.raises(EmptyStack, self.pop_root)
def test_stm_expand_marker(self):
- @ffi.callback("void(uintptr_t, object_t *, char *, size_t)")
- def expand_marker(number, ptr, outbuf, outbufsize):
+ @ffi.callback("void(char *, uintptr_t, object_t *, char *, size_t)")
+ def expand_marker(base, number, ptr, outbuf, outbufsize):
s = '%d %r\x00' % (number, ptr)
assert len(s) <= outbufsize
outbuf[0:len(s)] = s
More information about the pypy-commit
mailing list