mirror of
https://github.com/intel/llvm.git
synced 2026-02-01 00:46:45 +08:00
[cfi] Fix handling of uninstrumented libraries.
CFI shadow for non-CFI libraries should be "unchecked", not "invalid". llvm-svn: 256285
This commit is contained in:
@@ -176,7 +176,7 @@ static int dl_iterate_phdr_cb(dl_phdr_info *info, size_t size, void *data) {
|
||||
VReport(1, " %zx .. %zx\n", cur_beg, cur_end);
|
||||
fill_shadow(cur_beg, cur_end, cfi_check ? cfi_check : (uptr)(-1));
|
||||
} else {
|
||||
fill_shadow_constant(cur_beg, cur_end, kInvalidShadow);
|
||||
fill_shadow_constant(cur_beg, cur_end, kUncheckedShadow);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,11 @@
|
||||
// RUN: %t5 2>&1 | FileCheck --check-prefix=NCFI %s
|
||||
// RUN: %t5 x 2>&1 | FileCheck --check-prefix=NCFI %s
|
||||
|
||||
// RUN: %clangxx -DBM -DSHARED_LIB %s -fPIC -shared -o %t6-so.so
|
||||
// RUN: %clangxx_cfi_dso -DBM %s -o %t6 %t6-so.so
|
||||
// RUN: %t6 2>&1 | FileCheck --check-prefix=NCFI %s
|
||||
// RUN: %t6 x 2>&1 | FileCheck --check-prefix=NCFI %s
|
||||
|
||||
// Tests that the CFI mechanism crashes the program when making a virtual call
|
||||
// to an object of the wrong class but with a compatible vtable, by casting a
|
||||
// pointer to such an object and attempting to make a call through it.
|
||||
|
||||
Reference in New Issue
Block a user