forked from OSchip/llvm-project
[tsan] Allow symbolizers that don't obtain global symbol sizes
The default symbolizer, `llvm-symbolizer` provides sizes for global symbols. On OS X, we want to also allow using `atos` (because it's available everywhere and users don't need to copy/install it) and `dladdr` (it's the only available option when running in a sandbox). However, these symbolizers do not supply the symbol sizes, only names and starting addresses. This patch changes the reporting functions to hide the size of the symbol when this value is unavailable, and modifies tests to make this part of the report "optional". Differential Revision: http://reviews.llvm.org/D14608 llvm-svn: 252896
This commit is contained in:
parent
48e0256ed6
commit
3ecce92a52
|
|
@ -171,9 +171,14 @@ static void PrintLocation(const ReportLocation *loc) {
|
|||
Printf("%s", d.Location());
|
||||
if (loc->type == ReportLocationGlobal) {
|
||||
const DataInfo &global = loc->global;
|
||||
Printf(" Location is global '%s' of size %zu at %p (%s+%p)\n\n",
|
||||
global.name, global.size, global.start,
|
||||
StripModuleName(global.module), global.module_offset);
|
||||
if (global.size != 0)
|
||||
Printf(" Location is global '%s' of size %zu at %p (%s+%p)\n\n",
|
||||
global.name, global.size, global.start,
|
||||
StripModuleName(global.module), global.module_offset);
|
||||
else
|
||||
Printf(" Location is global '%s' at %p (%s+%p)\n\n", global.name,
|
||||
global.start, StripModuleName(global.module),
|
||||
global.module_offset);
|
||||
} else if (loc->type == ReportLocationHeap) {
|
||||
char thrbuf[kThreadBufSize];
|
||||
Printf(" Location is heap block of size %zu at %p allocated by %s:\n",
|
||||
|
|
|
|||
|
|
@ -23,5 +23,5 @@ int main() {
|
|||
|
||||
// CHECK: addr=[[ADDR:0x[0-9,a-f]+]]
|
||||
// CHECK: WARNING: ThreadSanitizer: data race
|
||||
// CHECK: Location is global 'GlobalData' of size 40 at [[ADDR]] (global_race.cc.exe+0x{{[0-9,a-f]+}})
|
||||
// CHECK: Location is global 'GlobalData' {{(of size 40 )?}}at [[ADDR]] (global_race.cc.exe+0x{{[0-9,a-f]+}})
|
||||
|
||||
|
|
|
|||
|
|
@ -23,5 +23,5 @@ int main() {
|
|||
|
||||
// CHECK: addr2=[[ADDR2:0x[0-9,a-f]+]]
|
||||
// CHECK: WARNING: ThreadSanitizer: data race
|
||||
// CHECK: Location is global 'x' of size 4 at [[ADDR2]] ({{.*}}+0x{{[0-9,a-f]+}})
|
||||
// CHECK: Location is global 'x' {{(of size 4 )?}}at [[ADDR2]] ({{.*}}+0x{{[0-9,a-f]+}})
|
||||
|
||||
|
|
|
|||
|
|
@ -28,4 +28,4 @@ int main() {
|
|||
|
||||
// CHECK: addr3=[[ADDR3:0x[0-9,a-f]+]]
|
||||
// CHECK: WARNING: ThreadSanitizer: data race
|
||||
// CHECK: Location is global 'XXX::YYY::ZZZ' of size 40 at [[ADDR3]] ({{.*}}+0x{{[0-9,a-f]+}})
|
||||
// CHECK: Location is global 'XXX::YYY::ZZZ' {{(of size 40 )?}}at [[ADDR3]] ({{.*}}+0x{{[0-9,a-f]+}})
|
||||
|
|
|
|||
Loading…
Reference in New Issue