mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
perf llvm: Reduce LLVM initialization
Move the 3 LLVM initialization routines to be called in a single init_llvm function that has its own bool to avoid repeated initialization. Reduce the scope of triplet and avoid copying strings for x86. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexandre Ghiti <alexghiti@rivosinc.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Athira Rajeev <atrajeev@linux.ibm.com> Cc: Bill Wendling <morbo@google.com> Cc: Charlie Jenkins <charlie@rivosinc.com> Cc: Collin Funk <collin.funk1@gmail.com> Cc: Dmitriy Vyukov <dvyukov@google.com> Cc: Dr. David Alan Gilbert <linux@treblig.org> Cc: Eric Biggers <ebiggers@kernel.org> Cc: Haibo Xu <haibo1.xu@intel.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@linaro.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Justin Stitt <justinstitt@google.com> Cc: Li Huafei <lihuafei1@huawei.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Nick Desaulniers <nick.desaulniers+lkml@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song Liu <song@kernel.org> Cc: Stephen Brennan <stephen.s.brennan@oracle.com> [ Move init_llvm() under HAVE_LIBLLVM_SUPPORT to fix the build ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
e444c2d4a2
commit
0e52f3f9f1
|
|
@ -74,8 +74,19 @@ void dso__free_a2l_llvm(struct dso *dso __maybe_unused)
|
|||
/* Nothing to free. */
|
||||
}
|
||||
|
||||
#ifdef HAVE_LIBLLVM_SUPPORT
|
||||
static void init_llvm(void)
|
||||
{
|
||||
static bool init;
|
||||
|
||||
if (!init) {
|
||||
LLVMInitializeAllTargetInfos();
|
||||
LLVMInitializeAllTargetMCs();
|
||||
LLVMInitializeAllDisassemblers();
|
||||
init = true;
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(HAVE_LIBLLVM_SUPPORT)
|
||||
struct find_file_offset_data {
|
||||
u64 ip;
|
||||
u64 offset;
|
||||
|
|
@ -184,7 +195,6 @@ int symbol__disassemble_llvm(const char *filename, struct symbol *sym,
|
|||
u64 len;
|
||||
u64 pc;
|
||||
bool is_64bit;
|
||||
char triplet[64];
|
||||
char disasm_buf[2048];
|
||||
size_t disasm_len;
|
||||
struct disasm_line *dl;
|
||||
|
|
@ -197,26 +207,25 @@ int symbol__disassemble_llvm(const char *filename, struct symbol *sym,
|
|||
if (args->options->objdump_path)
|
||||
return -1;
|
||||
|
||||
LLVMInitializeAllTargetInfos();
|
||||
LLVMInitializeAllTargetMCs();
|
||||
LLVMInitializeAllDisassemblers();
|
||||
|
||||
buf = read_symbol(filename, map, sym, &len, &is_64bit);
|
||||
if (buf == NULL)
|
||||
return -1;
|
||||
|
||||
init_llvm();
|
||||
if (arch__is(args->arch, "x86")) {
|
||||
if (is_64bit)
|
||||
scnprintf(triplet, sizeof(triplet), "x86_64-pc-linux");
|
||||
else
|
||||
scnprintf(triplet, sizeof(triplet), "i686-pc-linux");
|
||||
const char *triplet = is_64bit ? "x86_64-pc-linux" : "i686-pc-linux";
|
||||
|
||||
disasm = LLVMCreateDisasm(triplet, &storage, /*tag_type=*/0,
|
||||
/*get_op_info=*/NULL, symbol_lookup_callback);
|
||||
} else {
|
||||
char triplet[64];
|
||||
|
||||
scnprintf(triplet, sizeof(triplet), "%s-linux-gnu",
|
||||
args->arch->name);
|
||||
disasm = LLVMCreateDisasm(triplet, &storage, /*tag_type=*/0,
|
||||
/*get_op_info=*/NULL, symbol_lookup_callback);
|
||||
}
|
||||
|
||||
disasm = LLVMCreateDisasm(triplet, &storage, 0, NULL,
|
||||
symbol_lookup_callback);
|
||||
if (disasm == NULL)
|
||||
goto err;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user