Import sources from 2011-03-30 iso image - sys/lib
This commit is contained in:
parent
b41b903422
commit
e463eb4036
1144 changed files with 388460 additions and 0 deletions
128
sys/lib/acid/coverage
Executable file
128
sys/lib/acid/coverage
Executable file
|
@ -0,0 +1,128 @@
|
|||
// Coverage library
|
||||
|
||||
defn coverage()
|
||||
{
|
||||
local lmap, lp, e, pc, n, l;
|
||||
|
||||
new();
|
||||
|
||||
bblock = {};
|
||||
|
||||
// find the first location in the text
|
||||
e = (map()[0][1])\i;
|
||||
|
||||
while e < etext-4 do {
|
||||
l = follow(e);
|
||||
if tail l != {} then {
|
||||
if match(l[0], bblock) < 0 then
|
||||
bblock = append bblock, l[0];
|
||||
if match(l[1], bblock) < 0 then
|
||||
bblock = append bblock, l[1];
|
||||
}
|
||||
e++;
|
||||
}
|
||||
|
||||
l = bblock;
|
||||
while l != {} do {
|
||||
*fmt(head l, bpfmt) = bpinst;
|
||||
l = tail l;
|
||||
}
|
||||
|
||||
while 1 do {
|
||||
cont();
|
||||
pc = *PC;
|
||||
n = match(pc, bblock);
|
||||
if n >= 0 then {
|
||||
pc = fmt(pc, bpfmt);
|
||||
*pc = @pc;
|
||||
bblock = delete bblock, n;
|
||||
}
|
||||
else {
|
||||
pstop(pid);
|
||||
return {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defn eblock(addr)
|
||||
{
|
||||
addr = addr\i;
|
||||
|
||||
while addr < etext do {
|
||||
if (tail follow(addr)) != {} then
|
||||
return pcline(addr);
|
||||
addr++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
defn basic(stsrc, ensrc, file)
|
||||
{
|
||||
local src, text;
|
||||
|
||||
if stsrc >= ensrc then
|
||||
return {};
|
||||
|
||||
print(file, ":", stsrc, ",", ensrc, "\n");
|
||||
src = match(file, srcfiles);
|
||||
|
||||
if src >= 0 then
|
||||
src = srctext[src];
|
||||
else
|
||||
src = findsrc(file);
|
||||
|
||||
if src == {} then
|
||||
print("no source for ", file, "\n");
|
||||
else {
|
||||
while stsrc <= ensrc do {
|
||||
text = src[stsrc];
|
||||
if text != {} then
|
||||
print("\t", stsrc, ":", text, "\n");
|
||||
stsrc = stsrc+1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defn analyse(fnaddr)
|
||||
{
|
||||
local addr, l, tfn;
|
||||
|
||||
new();
|
||||
|
||||
tfn = fnbound(fnaddr);
|
||||
|
||||
l = bblock;
|
||||
while l do {
|
||||
addr = head l;
|
||||
|
||||
if addr >= tfn[0] && addr < tfn[1] then
|
||||
basic(pcline(addr), eblock(addr), pcfile(addr));
|
||||
|
||||
l = tail l;
|
||||
}
|
||||
kill(pid);
|
||||
}
|
||||
|
||||
defn report()
|
||||
{
|
||||
local addr, l;
|
||||
|
||||
new();
|
||||
|
||||
l = bblock;
|
||||
while l do {
|
||||
addr = head l;
|
||||
|
||||
basic(pcline(addr), eblock(addr), pcfile(addr));
|
||||
|
||||
l = tail l;
|
||||
}
|
||||
kill(pid);
|
||||
}
|
||||
|
||||
defn stopped(pid)
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
print("/sys/lib/acid/coverage");
|
Loading…
Add table
Add a link
Reference in a new issue