Lines Matching +full:non +full:- +full:pc
1 // SPDX-License-Identifier: GPL-2.0
16 #include "llvm-c-helpers.h"
17 #include <llvm-c/Disassembler.h>
18 #include <llvm-c/Target.h>
69 return -1; in llvm__addr2line()
90 * that there is a branch or PC-relative address in the expression that we
108 storage->branch_addr = value; in symbol_lookup_callback()
110 storage->pcrel_load_addr = value; in symbol_lookup_callback()
121 struct map *map = args->ms.map; in symbol__disassemble_llvm()
123 u64 start = map__rip_2objdump(map, sym->start); in symbol__disassemble_llvm()
124 /* Malloc-ed buffer containing instructions read from disk. */ in symbol__disassemble_llvm()
129 u64 pc; in symbol__disassemble_llvm() local
138 int ret = -1; in symbol__disassemble_llvm()
140 if (args->options->objdump_path) in symbol__disassemble_llvm()
141 return -1; in symbol__disassemble_llvm()
149 if (arch__is(args->arch, "x86")) { in symbol__disassemble_llvm()
150 const char *triplet = is_64bit ? "x86_64-pc-linux" : "i686-pc-linux"; in symbol__disassemble_llvm()
157 scnprintf(triplet, sizeof(triplet), "%s-linux-gnu", in symbol__disassemble_llvm()
158 args->arch->name); in symbol__disassemble_llvm()
166 if (args->options->disassembler_style && in symbol__disassemble_llvm()
167 !strcmp(args->options->disassembler_style, "intel")) in symbol__disassemble_llvm()
181 start, sym->name); in symbol__disassemble_llvm()
183 args->offset = -1; in symbol__disassemble_llvm()
184 args->line = disasm_buf; in symbol__disassemble_llvm()
185 args->line_nr = 0; in symbol__disassemble_llvm()
186 args->fileloc = NULL; in symbol__disassemble_llvm()
187 args->ms.sym = sym; in symbol__disassemble_llvm()
193 annotation_line__add(&dl->al, ¬es->src->source); in symbol__disassemble_llvm()
195 pc = start; in symbol__disassemble_llvm()
203 * LLVM's API has the code be disassembled as non-const, cast in symbol__disassemble_llvm()
204 * here as we may be disassembling from mapped read-only memory. in symbol__disassemble_llvm()
207 buf_len - offset, pc, in symbol__disassemble_llvm()
218 sizeof(disasm_buf) - in symbol__disassemble_llvm()
228 sizeof(disasm_buf) - disasm_len, in symbol__disassemble_llvm()
233 sizeof(disasm_buf) - in symbol__disassemble_llvm()
240 args->offset = offset; in symbol__disassemble_llvm()
241 args->line = expand_tabs(disasm_buf, &line_storage, in symbol__disassemble_llvm()
243 args->line_nr = 0; in symbol__disassemble_llvm()
244 args->fileloc = NULL; in symbol__disassemble_llvm()
245 args->ms.sym = sym; in symbol__disassemble_llvm()
247 llvm_addr2line(filename, pc, &args->fileloc, in symbol__disassemble_llvm()
248 (unsigned int *)&args->line_nr, false, NULL); in symbol__disassemble_llvm()
254 annotation_line__add(&dl->al, ¬es->src->source); in symbol__disassemble_llvm()
256 free(args->fileloc); in symbol__disassemble_llvm()
257 pc += ins_len; in symbol__disassemble_llvm()
270 sym->name, filename); in symbol__disassemble_llvm()
271 return -1; in symbol__disassemble_llvm()