1
0
mirror of https://github.com/ioacademy-jikim/debugging synced 2026-08-30 01:09:34 +00:00

first commit

This commit is contained in:
jikim
2015-12-13 22:34:58 +09:00
commit 0b589c7986
9455 changed files with 4350134 additions and 0 deletions
@@ -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.*