mirror of
https://github.com/ioacademy-jikim/debugging
synced 2026-08-30 01:09:34 +00:00
first commit
This commit is contained in:
@@ -0,0 +1 @@
|
||||
# dummy
|
||||
@@ -0,0 +1 @@
|
||||
# dummy
|
||||
@@ -0,0 +1 @@
|
||||
# dummy
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
|
||||
include $(top_srcdir)/Makefile.tool-tests.am
|
||||
|
||||
SUBDIRS = .
|
||||
DIST_SUBDIRS = .
|
||||
|
||||
dist_noinst_SCRIPTS = filter_stderr
|
||||
|
||||
EXTRA_DIST = \
|
||||
clreq.vgtest clreq.stderr.exp \
|
||||
simwork1.vgtest simwork1.stdout.exp simwork1.stderr.exp \
|
||||
simwork2.vgtest simwork2.stdout.exp simwork2.stderr.exp \
|
||||
simwork3.vgtest simwork3.stdout.exp simwork3.stderr.exp \
|
||||
simwork-both.vgtest simwork-both.stdout.exp simwork-both.stderr.exp \
|
||||
simwork-branch.vgtest simwork-branch.stdout.exp simwork-branch.stderr.exp \
|
||||
simwork-cache.vgtest simwork-cache.stdout.exp simwork-cache.stderr.exp \
|
||||
notpower2.vgtest notpower2.stderr.exp \
|
||||
notpower2-wb.vgtest notpower2-wb.stderr.exp \
|
||||
notpower2-hwpref.vgtest notpower2-hwpref.stderr.exp \
|
||||
notpower2-use.vgtest notpower2-use.stderr.exp \
|
||||
threads.vgtest threads.stderr.exp \
|
||||
threads-use.vgtest threads-use.stderr.exp
|
||||
|
||||
check_PROGRAMS = clreq simwork threads
|
||||
|
||||
AM_CFLAGS += $(AM_FLAG_M3264_PRI)
|
||||
AM_CXXFLAGS += $(AM_FLAG_M3264_PRI)
|
||||
|
||||
threads_LDADD = -lpthread
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,67 @@
|
||||
|
||||
// Similar to Cachegrind, check if instrumentation works in the presence
|
||||
// of a client request. Uses a Callgrind request to check this.
|
||||
|
||||
#include "../callgrind.h"
|
||||
|
||||
int some_work(int sum)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0;i<10;i++) sum += i; /* some dummy work */
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
int some_callgrind_clreqs()
|
||||
{
|
||||
int sum = some_work(0);
|
||||
|
||||
CALLGRIND_ZERO_STATS;
|
||||
|
||||
sum += some_work(sum);
|
||||
|
||||
CALLGRIND_DUMP_STATS;
|
||||
|
||||
sum += some_work(sum);
|
||||
|
||||
CALLGRIND_DUMP_STATS_AT("Please dump here");
|
||||
|
||||
return some_work(sum);
|
||||
}
|
||||
|
||||
int more_callgrind_clreqs()
|
||||
{
|
||||
int sum = some_callgrind_clreqs();
|
||||
|
||||
CALLGRIND_TOGGLE_COLLECT;
|
||||
|
||||
sum += some_callgrind_clreqs();
|
||||
|
||||
CALLGRIND_TOGGLE_COLLECT;
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
more_callgrind_clreqs();
|
||||
|
||||
CALLGRIND_STOP_INSTRUMENTATION;
|
||||
|
||||
more_callgrind_clreqs();
|
||||
|
||||
CALLGRIND_START_INSTRUMENTATION;
|
||||
|
||||
more_callgrind_clreqs();
|
||||
|
||||
CALLGRIND_STOP_INSTRUMENTATION;
|
||||
|
||||
more_callgrind_clreqs();
|
||||
|
||||
CALLGRIND_START_INSTRUMENTATION;
|
||||
|
||||
return RUNNING_ON_VALGRIND;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
|
||||
Events : Ir
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: clreq
|
||||
vgopts:
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,33 @@
|
||||
#! /bin/sh
|
||||
|
||||
dir=`dirname $0`
|
||||
|
||||
$dir/../../tests/filter_stderr_basic |
|
||||
|
||||
# Remove "Callgrind, ..." line and the following copyright line.
|
||||
sed "/^Callgrind, a call-graph generating cache profiler/ , /./ d" |
|
||||
|
||||
# Remove pointer to callgrind_control
|
||||
sed "/^For interactive control,.*$/d" |
|
||||
|
||||
# Remove numbers from "Collected" line
|
||||
sed "s/^\(Collected *:\)[ 0-9]*$/\1/" |
|
||||
|
||||
# Remove numbers from I/D/LL "refs:" lines
|
||||
perl -p -e 's/((I|D|LL) *refs:)[ 0-9,()+rdw]*$/\1/' |
|
||||
|
||||
# Remove numbers from I1/D1/LL/LLi/LLd "misses:" and "miss rates:" lines
|
||||
perl -p -e 's/((I1|D1|LL|LLi|LLd) *(misses|miss rate):)[ 0-9,()+rdw%\.]*$/\1/' |
|
||||
|
||||
# Remove numbers from "Branches:", "Mispredicts:, and "Mispred rate:" lines
|
||||
perl -p -e 's/((Branches|Mispredicts|Mispred rate):)[ 0-9,()+condi%\.]*$/\1/' |
|
||||
|
||||
# Remove CPUID warnings lines for P4s and other machines
|
||||
sed "/warning: Pentium 4 with 12 KB micro-op instruction trace cache/d" |
|
||||
sed "/Simulating a 16 KB I-cache with 32 B lines/d" |
|
||||
sed "/warning: L3 cache found, using its data for the LL simulation./d" |
|
||||
sed "/warning: L4 cache found, using its data for the LL simulation./d" |
|
||||
sed "/Warning: Cannot auto-detect cache config, using defaults./d" |
|
||||
sed "/Run with -v to see./d" |
|
||||
sed "/warning: specified LL cache: line_size .*$/d" |
|
||||
sed "/warning: simulated LL cache: line_size .*$/d"
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: ../../tests/true
|
||||
vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64 --simulate-hwpref=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw AcCost1 SpLoss1 AcCost2 SpLoss2
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: ../../tests/true
|
||||
vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64 --cacheuse=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw ILdmr DLdmr DLdmw
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: ../../tests/true
|
||||
vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64 --simulate-wb=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: ../../tests/true
|
||||
vgopts: --I1=32768,8,64 --D1=24576,6,64 --LL=3145728,12,64
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw Bc Bcm Bi Bim
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
|
||||
Branches:
|
||||
Mispredicts:
|
||||
Mispred rate:
|
||||
@@ -0,0 +1 @@
|
||||
Sum: 1000000
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: simwork
|
||||
vgopts: --cache-sim=yes --branch-sim=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
|
||||
Events : Ir Bc Bcm Bi Bim
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
|
||||
Branches:
|
||||
Mispredicts:
|
||||
Mispred rate:
|
||||
@@ -0,0 +1 @@
|
||||
Sum: 1000000
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: simwork
|
||||
vgopts: --branch-sim=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1 @@
|
||||
Sum: 1000000
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: simwork
|
||||
vgopts: --cache-sim=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,66 @@
|
||||
// Some work exercising the cache simulator
|
||||
// with a simple call graph
|
||||
|
||||
#include "../callgrind.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define SIZE 100000
|
||||
|
||||
double *a, *b, *c;
|
||||
|
||||
void init()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i< SIZE; i++) a[i] = b[i] = 1.0;
|
||||
}
|
||||
|
||||
void do_add()
|
||||
{
|
||||
int i;
|
||||
for(i = 0; i< SIZE; i++) {
|
||||
a[i] += 1.0;
|
||||
c[i] = a[i] + b[i];
|
||||
}
|
||||
}
|
||||
|
||||
double do_sum()
|
||||
{
|
||||
int i;
|
||||
double sum=0.0;
|
||||
|
||||
do_add();
|
||||
for(i = 0; i< SIZE; i++) sum += c[i];
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
double do_some_work(int iter)
|
||||
{
|
||||
double sum=0.0;
|
||||
|
||||
if (iter > 0) sum += do_some_work(iter-1);
|
||||
do_add();
|
||||
sum += do_sum();
|
||||
|
||||
return sum;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
double res;
|
||||
|
||||
a = (double*) malloc(SIZE * sizeof(double));
|
||||
b = (double*) malloc(SIZE * sizeof(double));
|
||||
c = (double*) malloc(SIZE * sizeof(double));
|
||||
|
||||
CALLGRIND_ZERO_STATS;
|
||||
init();
|
||||
res = do_some_work(1);
|
||||
CALLGRIND_DUMP_STATS;
|
||||
|
||||
printf("Sum: %.0f\n", res);
|
||||
return RUNNING_ON_VALGRIND;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1 @@
|
||||
Sum: 1000000
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: simwork
|
||||
vgopts: --simulate-hwpref=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw ILdmr DLdmr DLdmw
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1 @@
|
||||
Sum: 1000000
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: simwork
|
||||
vgopts: --simulate-wb=yes --simulate-hwpref=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw AcCost1 SpLoss1 AcCost2 SpLoss2
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1 @@
|
||||
Sum: 1000000
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: simwork
|
||||
vgopts: --cacheuse=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,20 @@
|
||||
|
||||
|
||||
Events : Ir Dr Dw I1mr D1mr D1mw ILmr DLmr DLmw AcCost1 SpLoss1 AcCost2 SpLoss2 Ge sysCount sysTime
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
I1 misses:
|
||||
LLi misses:
|
||||
I1 miss rate:
|
||||
LLi miss rate:
|
||||
|
||||
D refs:
|
||||
D1 misses:
|
||||
LLd misses:
|
||||
D1 miss rate:
|
||||
LLd miss rate:
|
||||
|
||||
LL refs:
|
||||
LL misses:
|
||||
LL miss rate:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: threads
|
||||
vgopts: --separate-threads=yes --cacheuse=yes --collect-bus=yes --collect-systime=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
@@ -0,0 +1,47 @@
|
||||
/* A simple example with 4 threads */
|
||||
|
||||
#include <pthread.h>
|
||||
#include <unistd.h>
|
||||
|
||||
double a[1000];
|
||||
|
||||
static void init()
|
||||
{
|
||||
int i;
|
||||
for(i=0;i<1000;i++) a[i] = (double)i;
|
||||
}
|
||||
|
||||
static void *th(void *v)
|
||||
{
|
||||
double sum = 0.0;
|
||||
int i,j;
|
||||
|
||||
for(j=0;j<1000;j++)
|
||||
for(i=0;i<1000;i++)
|
||||
sum += a[i];
|
||||
|
||||
*( (double*)v ) = sum;
|
||||
|
||||
/* make sure that no threads is so fast that it finishes
|
||||
* before last thread is created, thus reusing the TID */
|
||||
sleep(1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
pthread_t t[4];
|
||||
double sum[4];
|
||||
int i;
|
||||
|
||||
init();
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
pthread_create(&t[i], NULL, th, &sum[i]);
|
||||
|
||||
for(i=0;i<4;i++)
|
||||
pthread_join(t[i], NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
|
||||
Events : Ir Ge
|
||||
Collected :
|
||||
|
||||
I refs:
|
||||
@@ -0,0 +1,3 @@
|
||||
prog: threads
|
||||
vgopts: --separate-threads=yes --collect-bus=yes
|
||||
cleanup: rm callgrind.out.*
|
||||
Reference in New Issue
Block a user