summaryrefslogtreecommitdiff
path: root/perf
diff options
context:
space:
mode:
authorsewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9>2005-12-15 16:11:25 +0000
committersewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9>2005-12-15 16:11:25 +0000
commit0d3a1a8d87cfcd14d2daaf1ae752984c4119086f (patch)
tree145d5715ee28573ce0f643eb8bba0fe956b0d427 /perf
parent0d9efddaf4a913f518a1af3317f3a88cb537e48e (diff)
Make this work on platforms where r != x.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5347 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'perf')
-rw-r--r--perf/bigcode.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/perf/bigcode.c b/perf/bigcode.c
index 0f444e0d..2ffc253d 100644
--- a/perf/bigcode.c
+++ b/perf/bigcode.c
@@ -9,6 +9,8 @@
#include <stdio.h>
#include <string.h>
+#include <assert.h>
+#include <sys/mman.h>
#define FN_SIZE 996 // Must be big enough to hold the compiled f()
#define N_LOOPS 20000 // Should be divisible by four
@@ -28,13 +30,16 @@ int f(int x, int y)
return y;
}
-static char a[FN_SIZE * N_LOOPS];
-
int main(int argc, char* argv[])
{
int h, i, sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
int n_fns, n_reps;
+ char* a = mmap(0, FN_SIZE * N_LOOPS,
+ PROT_EXEC|PROT_WRITE,
+ MAP_PRIVATE|MAP_ANONYMOUS, 0,0);
+ assert(a != (char*)MAP_FAILED);
+
if (argc <= 1) {
// Mode 1: not so much code
n_fns = N_LOOPS / RATIO;