# This test validates that statistics generation does not force loading # symbol tables. In order to avoid other sources of symbol loading we # create the target without loading dependents and do not actually # run it. Running the target is a problem because there are various # instrumentation plugins (e.g. ASAN) that are always enabled and force # symbol loading. If you see this test start to fail we may have added # a new source of symbol loading unexpectedly. # Build a simple test executable. # RUN: %clang_host -g %S/Inputs/main.c -o %t-main.exe # When we enable symbol preload and dump stats there should be a non-zero # time for parsing symbol tables for the main module. # RUN: %lldb -O "settings set plugin.jit-loader.gdb.enable off" \ # RUN: -O "settings set target.preload-symbols true" \ # RUN: -o 'target create --no-dependents "%t-main.exe"' \ # RUN: -o "statistics dump" \ # RUN: -o "q" \ # RUN: | FileCheck %s -check-prefixes=CHECK,PRELOAD_TRUE # Find the module stats for the main executable and make sure # we are looking at the symbol parse time for that module. # CHECK: "modules": [ # CHECK: { # CHECK: "path": {{.*}}-main.exe # PRELOAD_TRUE: "symbolTableParseTime": # PRELOAD_TRUE-SAME: {{[1-9]+}} # When we disable symbol preload and dump stats the symbol table # for main should not be parsed and have a time of 0. # RUN: %lldb -O "settings set plugin.jit-loader.gdb.enable off" \ # RUN: -O "settings set target.preload-symbols false" \ # RUN: -o 'target create --no-dependents "%t-main.exe"' \ # RUN: -o "statistics dump" \ # RUN: -o "q" \ # RUN: | FileCheck %s -check-prefixes=CHECK,PRELOAD_FALSE # PRELOAD_FALSE: "symbolTableParseTime": 0,