~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/util/symbol_fprintf.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 // SPDX-License-Identifier: GPL-2.0
  2 #include <elf.h>
  3 #include <inttypes.h>
  4 #include <stdio.h>
  5 
  6 #include "dso.h"
  7 #include "map.h"
  8 #include "symbol.h"
  9 
 10 size_t symbol__fprintf(struct symbol *sym, FILE *fp)
 11 {
 12         return fprintf(fp, " %" PRIx64 "-%" PRIx64 " %c %s\n",
 13                        sym->start, sym->end,
 14                        sym->binding == STB_GLOBAL ? 'g' :
 15                        sym->binding == STB_LOCAL  ? 'l' : 'w',
 16                        sym->name);
 17 }
 18 
 19 size_t __symbol__fprintf_symname_offs(const struct symbol *sym,
 20                                       const struct addr_location *al,
 21                                       bool unknown_as_addr,
 22                                       bool print_offsets, FILE *fp)
 23 {
 24         unsigned long offset;
 25         size_t length;
 26 
 27         if (sym) {
 28                 length = fprintf(fp, "%s", sym->name);
 29                 if (al && print_offsets) {
 30                         if (al->addr < sym->end)
 31                                 offset = al->addr - sym->start;
 32                         else
 33                                 offset = al->addr - map__start(al->map) - sym->start;
 34                         length += fprintf(fp, "+0x%lx", offset);
 35                 }
 36                 return length;
 37         } else if (al && unknown_as_addr)
 38                 return fprintf(fp, "[%#" PRIx64 "]", al->addr);
 39         else
 40                 return fprintf(fp, "[unknown]");
 41 }
 42 
 43 size_t symbol__fprintf_symname_offs(const struct symbol *sym,
 44                                     const struct addr_location *al,
 45                                     FILE *fp)
 46 {
 47         return __symbol__fprintf_symname_offs(sym, al, false, true, fp);
 48 }
 49 
 50 size_t __symbol__fprintf_symname(const struct symbol *sym,
 51                                  const struct addr_location *al,
 52                                  bool unknown_as_addr, FILE *fp)
 53 {
 54         return __symbol__fprintf_symname_offs(sym, al, unknown_as_addr, false, fp);
 55 }
 56 
 57 size_t symbol__fprintf_symname(const struct symbol *sym, FILE *fp)
 58 {
 59         return __symbol__fprintf_symname_offs(sym, NULL, false, false, fp);
 60 }
 61 
 62 size_t dso__fprintf_symbols_by_name(struct dso *dso,
 63                                     FILE *fp)
 64 {
 65         size_t ret = 0;
 66 
 67         for (size_t i = 0; i < dso__symbol_names_len(dso); i++) {
 68                 struct symbol *pos = dso__symbol_names(dso)[i];
 69 
 70                 ret += fprintf(fp, "%s\n", pos->name);
 71         }
 72         return ret;
 73 }
 74 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php