Skip to content

Commit 2f78196

Browse files
committed
fix: ignore const values for now
Signed-off-by: Zxilly <zxilly@outlook.com>
1 parent 1d23bc5 commit 2f78196

File tree

4 files changed

+53
-15
lines changed

4 files changed

+53
-15
lines changed

internal/dwarf/dwarf.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,19 @@ func EntryShouldIgnore(entry *dwarf.Entry) bool {
9696
return !ok || val
9797
}
9898

99-
abstractOrigin := entry.Val(dwarf.AttrAbstractOrigin)
100-
if abstractOrigin != nil {
101-
return true
99+
var ignores = []dwarf.Attr{
100+
dwarf.AttrAbstractOrigin,
101+
dwarf.AttrSpecification,
102+
dwarf.AttrCallAllCalls,
102103
}
103104

104-
specification := entry.Val(dwarf.AttrSpecification)
105+
for _, ignore := range ignores {
106+
if entry.Val(ignore) != nil {
107+
return true
108+
}
109+
}
105110

106-
return specification != nil
111+
return false
107112
}
108113

109114
func EntryFileReader(cu *dwarf.Entry, d *dwarf.Data) func(entry *dwarf.Entry) string {
@@ -121,12 +126,12 @@ func EntryFileReader(cu *dwarf.Entry, d *dwarf.Data) func(entry *dwarf.Entry) st
121126
if entry.Val(dwarf.AttrTrampoline) == nil {
122127
fileIndexAny := entry.Val(dwarf.AttrDeclFile)
123128
if fileIndexAny == nil {
124-
slog.Warn(fmt.Sprintf("Failed to load DWARF function file: %s", EntryPrettyPrint(entry)))
129+
slog.Debug(fmt.Sprintf("Failed to load DWARF function file as no field: %s", EntryPrettyPrint(entry)))
125130
return defaultName
126131
}
127132
fileIndex, ok := fileIndexAny.(int64)
128133
if !ok || fileIndex < 0 || int(fileIndex) >= len(files) {
129-
slog.Warn(fmt.Sprintf("Failed to load DWARF function file: %s", EntryPrettyPrint(entry)))
134+
slog.Warn(fmt.Sprintf("Failed to load DWARF function file as type unexpected %T: %s", fileIndexAny, EntryPrettyPrint(entry)))
130135
return defaultName
131136
}
132137

internal/knowninfo/dwarf.go

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,35 @@ import (
2020
func (k *KnownInfo) AddDwarfVariable(entry *dwarf.Entry, d *dwarf.Data, pkg *entity.Package, ptrSize int) {
2121
instsAny := entry.Val(dwarf.AttrLocation)
2222
if instsAny == nil {
23-
slog.Warn(fmt.Sprintf("no location attribute for %s", dwarfutil.EntryPrettyPrint(entry)))
23+
printErr := false
24+
defer func() {
25+
if printErr {
26+
slog.Warn(fmt.Sprintf("no location attribute for %s", dwarfutil.EntryPrettyPrint(entry)))
27+
}
28+
}()
29+
30+
typOffset, ok := entry.Val(dwarf.AttrType).(dwarf.Offset)
31+
if !ok {
32+
slog.Warn(fmt.Sprintf("no type attribute for %s", dwarfutil.EntryPrettyPrint(entry)))
33+
printErr = true
34+
return
35+
}
36+
37+
typEntry, err := d.Type(typOffset)
38+
if err != nil {
39+
slog.Warn(fmt.Sprintf("failed to get type for %s: %v", dwarfutil.EntryPrettyPrint(entry), err))
40+
printErr = true
41+
return
42+
}
43+
44+
_, ok = typEntry.(*dwarf.QualType)
45+
if ok {
46+
// fixme: we ignore const values for now, support this if possible
47+
return
48+
}
49+
printErr = true
50+
slog.Warn(fmt.Sprintf("unexpected type %T for %s: ", typEntry, dwarfutil.EntryPrettyPrint(entry)))
51+
2452
return
2553
}
2654
insts, ok := instsAny.([]byte)
@@ -116,7 +144,7 @@ func (k *KnownInfo) AddDwarfSubProgram(
116144
if len(ranges) == 0 {
117145
// fixme: maybe compiler optimize it?
118146
// example: sqlite3 simpleDestroy
119-
slog.Warn(fmt.Sprintf("Failed to load DWARF function size, no range: %s", subEntryName))
147+
slog.Debug(fmt.Sprintf("Failed to load DWARF function size, no range: %s", subEntryName))
120148
return
121149
}
122150

scripts/tests.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from tool.merge import merge_covdata
1313
from tool.remote import load_remote_binaries, load_remote_for_tui_test, TestType, get_flag_str
1414
from tool.utils import log, get_project_root, ensure_dir, format_time, load_skip, get_covdata_integration_dir, \
15-
find_unused_port, assert_html_valid, init_dirs
15+
find_unused_port, assert_html_valid, init_dirs, write_github_summary
1616

1717

1818
def run_unit_tests(full: bool, wasm: bool, no_embed: bool):
@@ -204,11 +204,7 @@ def report_typ(rtyp: TestType):
204204
except Exception as e:
205205
log(f"{head} failed")
206206

207-
if os.getenv("CI") is not None:
208-
with open(os.getenv("GITHUB_STEP_SUMMARY"), "a", encoding="utf-8") as f:
209-
f.write(f"```log\n{str(e)}\n```\n")
210-
else:
211-
print(e)
207+
write_github_summary(f"```log\n{str(e)}\n```")
212208

213209
scope_failed_count += 1
214210

scripts/tool/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@
1616
matplotlib.use('agg')
1717

1818

19+
def write_github_summary(s: str, fallback: bool = True):
20+
if os.getenv("CI") is not None:
21+
with open(os.getenv("GITHUB_STEP_SUMMARY"), "a", encoding="utf-8") as f:
22+
f.write(f"{s}\n")
23+
else:
24+
if fallback:
25+
print(s)
26+
27+
1928
def get_new_temp_binary() -> str:
2029
suffix = ".exe" if os.name == "nt" else ""
2130

0 commit comments

Comments
 (0)