Don't fail the shared_ptr test if libc++ has insufficient debug info.

Don't fail the shared_ptr test if libc++ has insufficient debug info.

This addresses https://bugs.llvm.org/show_bug.cgi?id=48937

Differential Revision: https://reviews.llvm.org/D100610
This commit is contained in:
Sterling Augustine 2021-04-15 18:03:01 -07:00
parent d3a2038955
commit 0e83780325
1 changed files with 17 additions and 0 deletions

View File

@ -37,6 +37,23 @@ class CheckResult(gdb.Command):
compare_frame = gdb.newest_frame().older()
testcase_frame = compare_frame.older()
test_loc = testcase_frame.find_sal()
expectation_val = compare_frame.read_var("expectation")
check_literal = expectation_val.string(encoding="utf-8")
# Heuristic to determine if libc++ itself has debug
# info. If it doesn't, then anything normally homed there
# won't be found, and the printer will error. We don't
# want to fail the test in this case--the printer itself
# is probably fine, or at least we can't tell.
if check_literal.startswith("std::shared_ptr"):
shared_ptr = compare_frame.read_var("value")
if not "__shared_owners_" in shared_ptr.type.fields():
print("IGNORED (no debug info in libc++): " +
test_loc.symtab.filename + ":" +
str(test_loc.line))
return
# Use interactive commands in the correct context to get the pretty
# printed version