Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
symbol.h File Reference
#include <linux/types.h>
#include <stdbool.h>
#include <stdint.h>
#include "map.h"
#include "../perf.h"
#include <linux/list.h>
#include <linux/rbtree.h>
#include <stdio.h>
#include <byteswap.h>
#include <libgen.h>
#include <bfd.h>

Go to the source code of this file.

Data Structures

struct  symbol
 
struct  symbol_conf
 
struct  ref_reloc_sym
 
struct  map_symbol
 
struct  addr_map_symbol
 
struct  branch_info
 
struct  addr_location
 
struct  dso_cache
 
struct  dso
 
struct  symsrc
 

Macros

#define PACKAGE   'perf'
 
#define PERF_ELF_C_READ_MMAP   ELF_C_READ
 
#define DMGL_PARAMS   (1 << 0) /* Include function args */
 
#define DMGL_ANSI   (1 << 1) /* Include const, volatile, etc */
 
#define BUILD_ID_SIZE   20
 
#define DSO__DATA_CACHE_SIZE   4096
 
#define DSO__DATA_CACHE_MASK   ~(DSO__DATA_CACHE_SIZE - 1)
 
#define DSO__SWAP(dso, type, val)
 

Enumerations

enum  dso_binary_type {
  DSO_BINARY_TYPE__KALLSYMS = 0, DSO_BINARY_TYPE__GUEST_KALLSYMS, DSO_BINARY_TYPE__VMLINUX, DSO_BINARY_TYPE__GUEST_VMLINUX,
  DSO_BINARY_TYPE__JAVA_JIT, DSO_BINARY_TYPE__DEBUGLINK, DSO_BINARY_TYPE__BUILD_ID_CACHE, DSO_BINARY_TYPE__FEDORA_DEBUGINFO,
  DSO_BINARY_TYPE__UBUNTU_DEBUGINFO, DSO_BINARY_TYPE__BUILDID_DEBUGINFO, DSO_BINARY_TYPE__SYSTEM_PATH_DSO, DSO_BINARY_TYPE__GUEST_KMODULE,
  DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE, DSO_BINARY_TYPE__NOT_FOUND
}
 
enum  dso_kernel_type { DSO_TYPE_USER = 0, DSO_TYPE_KERNEL, DSO_TYPE_GUEST_KERNEL }
 
enum  dso_swap_type { DSO_SWAP__UNSET, DSO_SWAP__NO, DSO_SWAP__YES }
 

Functions

int hex2u64 (const char *ptr, u64 *val)
 
charstrxfrchar (char *s, char from, char to)
 
void symbol__delete (struct symbol *sym)
 
void symsrc__destroy (struct symsrc *ss)
 
int symsrc__init (struct symsrc *ss, struct dso *dso, const char *name, enum dso_binary_type type)
 
bool symsrc__has_symtab (struct symsrc *ss)
 
bool symsrc__possibly_runtime (struct symsrc *ss)
 
struct dsodso__new (const char *name)
 
void dso__delete (struct dso *dso)
 
int dso__name_len (const struct dso *dso)
 
bool dso__loaded (const struct dso *dso, enum map_type type)
 
bool dso__sorted_by_name (const struct dso *dso, enum map_type type)
 
void dso__sort_by_name (struct dso *dso, enum map_type type)
 
void dsos__add (struct list_head *head, struct dso *dso)
 
struct dsodsos__find (struct list_head *head, const char *name)
 
struct dso__dsos__findnew (struct list_head *head, const char *name)
 
int dso__load (struct dso *dso, struct map *map, symbol_filter_t filter)
 
int dso__load_vmlinux (struct dso *dso, struct map *map, const char *vmlinux, symbol_filter_t filter)
 
int dso__load_vmlinux_path (struct dso *dso, struct map *map, symbol_filter_t filter)
 
int dso__load_kallsyms (struct dso *dso, const char *filename, struct map *map, symbol_filter_t filter)
 
int machine__load_kallsyms (struct machine *machine, const char *filename, enum map_type type, symbol_filter_t filter)
 
int machine__load_vmlinux_path (struct machine *machine, enum map_type type, symbol_filter_t filter)
 
size_t __dsos__fprintf (struct list_head *head, FILE *fp)
 
size_t machine__fprintf_dsos_buildid (struct machine *machine, FILE *fp, bool with_hits)
 
size_t machines__fprintf_dsos (struct rb_root *machines, FILE *fp)
 
size_t machines__fprintf_dsos_buildid (struct rb_root *machines, FILE *fp, bool with_hits)
 
size_t dso__fprintf_buildid (struct dso *dso, FILE *fp)
 
size_t dso__fprintf_symbols_by_name (struct dso *dso, enum map_type type, FILE *fp)
 
size_t dso__fprintf (struct dso *dso, enum map_type type, FILE *fp)
 
char dso__symtab_origin (const struct dso *dso)
 
void dso__set_long_name (struct dso *dso, char *name)
 
void dso__set_build_id (struct dso *dso, void *build_id)
 
bool dso__build_id_equal (const struct dso *dso, u8 *build_id)
 
void dso__read_running_kernel_build_id (struct dso *dso, struct machine *machine)
 
struct mapdso__new_map (const char *name)
 
struct symboldso__find_symbol (struct dso *dso, enum map_type type, u64 addr)
 
struct symboldso__find_symbol_by_name (struct dso *dso, enum map_type type, const char *name)
 
int filename__read_build_id (const char *filename, void *bf, size_t size)
 
int sysfs__read_build_id (const char *filename, void *bf, size_t size)
 
bool __dsos__read_build_ids (struct list_head *head, bool with_hits)
 
int build_id__sprintf (const u8 *build_id, int len, char *bf)
 
int kallsyms__parse (const char *filename, void *arg, int(*process_symbol)(void *arg, const char *name, char type, u64 start))
 
int filename__read_debuglink (const char *filename, char *debuglink, size_t size)
 
void machine__destroy_kernel_maps (struct machine *machine)
 
int __machine__create_kernel_maps (struct machine *machine, struct dso *kernel)
 
int machine__create_kernel_maps (struct machine *machine)
 
int machines__create_kernel_maps (struct rb_root *machines, pid_t pid)
 
int machines__create_guest_kernel_maps (struct rb_root *machines)
 
void machines__destroy_guest_kernel_maps (struct rb_root *machines)
 
int symbol__init (void)
 
void symbol__exit (void)
 
void symbol__elf_init (void)
 
struct symbolsymbol__new (u64 start, u64 len, u8 binding, const char *name)
 
size_t symbol__fprintf_symname_offs (const struct symbol *sym, const struct addr_location *al, FILE *fp)
 
size_t symbol__fprintf_symname (const struct symbol *sym, FILE *fp)
 
bool symbol_type__is_a (char symbol_type, enum map_type map_type)
 
size_t machine__fprintf_vmlinux_path (struct machine *machine, FILE *fp)
 
int dso__binary_type_file (struct dso *dso, enum dso_binary_type type, char *root_dir, char *file, size_t size)
 
int dso__data_fd (struct dso *dso, struct machine *machine)
 
ssize_t dso__data_read_offset (struct dso *dso, struct machine *machine, u64 offset, u8 *data, ssize_t size)
 
ssize_t dso__data_read_addr (struct dso *dso, struct map *map, struct machine *machine, u64 addr, u8 *data, ssize_t size)
 
int dso__test_data (void)
 
int dso__load_sym (struct dso *dso, struct map *map, struct symsrc *syms_ss, struct symsrc *runtime_ss, symbol_filter_t filter, int kmodule)
 
int dso__synthesize_plt_symbols (struct dso *dso, struct symsrc *ss, struct map *map, symbol_filter_t filter)
 
void symbols__insert (struct rb_root *symbols, struct symbol *sym)
 
void symbols__fixup_duplicate (struct rb_root *symbols)
 
void symbols__fixup_end (struct rb_root *symbols)
 
void __map_groups__fixup_end (struct map_groups *mg, enum map_type type)
 

Variables

struct symbol_conf symbol_conf
 

Macro Definition Documentation

#define BUILD_ID_SIZE   20

Definition at line 60 of file symbol.h.

#define DMGL_ANSI   (1 << 1) /* Include const, volatile, etc */

Definition at line 57 of file symbol.h.

#define DMGL_PARAMS   (1 << 0) /* Include function args */

Definition at line 56 of file symbol.h.

#define DSO__DATA_CACHE_MASK   ~(DSO__DATA_CACHE_SIZE - 1)

Definition at line 197 of file symbol.h.

#define DSO__DATA_CACHE_SIZE   4096

Definition at line 196 of file symbol.h.

#define DSO__SWAP (   dso,
  type,
  val 
)
Value:
({ \
type ____r = val; \
switch (sizeof(____r)) { \
case 2: \
____r = bswap_16(val); \
break; \
case 4: \
____r = bswap_32(val); \
break; \
case 8: \
____r = bswap_64(val); \
break; \
default: \
BUG_ON(1); \
} \
} \
____r; \
})

Definition at line 261 of file symbol.h.

#define PACKAGE   'perf'

Definition at line 37 of file symbol.h.

#define PERF_ELF_C_READ_MMAP   ELF_C_READ

Definition at line 52 of file symbol.h.

Enumeration Type Documentation

Enumerator:
DSO_BINARY_TYPE__KALLSYMS 
DSO_BINARY_TYPE__GUEST_KALLSYMS 
DSO_BINARY_TYPE__VMLINUX 
DSO_BINARY_TYPE__GUEST_VMLINUX 
DSO_BINARY_TYPE__JAVA_JIT 
DSO_BINARY_TYPE__DEBUGLINK 
DSO_BINARY_TYPE__BUILD_ID_CACHE 
DSO_BINARY_TYPE__FEDORA_DEBUGINFO 
DSO_BINARY_TYPE__UBUNTU_DEBUGINFO 
DSO_BINARY_TYPE__BUILDID_DEBUGINFO 
DSO_BINARY_TYPE__SYSTEM_PATH_DSO 
DSO_BINARY_TYPE__GUEST_KMODULE 
DSO_BINARY_TYPE__SYSTEM_PATH_KMODULE 
DSO_BINARY_TYPE__NOT_FOUND 

Definition at line 167 of file symbol.h.

Enumerator:
DSO_TYPE_USER 
DSO_TYPE_KERNEL 
DSO_TYPE_GUEST_KERNEL 

Definition at line 184 of file symbol.h.

Enumerator:
DSO_SWAP__UNSET 
DSO_SWAP__NO 
DSO_SWAP__YES 

Definition at line 190 of file symbol.h.

Function Documentation

struct dso* __dsos__findnew ( struct list_head head,
const char name 
)
read

Definition at line 1609 of file symbol.c.

size_t __dsos__fprintf ( struct list_head head,
FILE *  fp 
)

Definition at line 1624 of file symbol.c.

bool __dsos__read_build_ids ( struct list_head head,
bool  with_hits 
)

Definition at line 900 of file symbol.c.

int __machine__create_kernel_maps ( struct machine machine,
struct dso kernel 
)

Definition at line 1796 of file symbol.c.

void __map_groups__fixup_end ( struct map_groups mg,
enum map_type  type 
)

Definition at line 215 of file symbol.c.

int build_id__sprintf ( const u8 build_id,
int  len,
char bf 
)

Definition at line 507 of file symbol.c.

int dso__binary_type_file ( struct dso dso,
enum dso_binary_type  type,
char root_dir,
char file,
size_t  size 
)

Definition at line 945 of file symbol.c.

bool dso__build_id_equal ( const struct dso dso,
u8 build_id 
)

Definition at line 895 of file symbol.c.

int dso__data_fd ( struct dso dso,
struct machine machine 
)

Definition at line 2241 of file symbol.c.

ssize_t dso__data_read_addr ( struct dso dso,
struct map map,
struct machine machine,
u64  addr,
u8 data,
ssize_t  size 
)

Definition at line 2424 of file symbol.c.

ssize_t dso__data_read_offset ( struct dso dso,
struct machine machine,
u64  offset,
u8 data,
ssize_t  size 
)

Definition at line 2395 of file symbol.c.

void dso__delete ( struct dso dso)

Definition at line 363 of file symbol.c.

struct symbol* dso__find_symbol ( struct dso dso,
enum map_type  type,
u64  addr 
)
read

Definition at line 488 of file symbol.c.

struct symbol* dso__find_symbol_by_name ( struct dso dso,
enum map_type  type,
const char name 
)
read

Definition at line 494 of file symbol.c.

size_t dso__fprintf ( struct dso dso,
enum map_type  type,
FILE *  fp 
)

Definition at line 545 of file symbol.c.

size_t dso__fprintf_buildid ( struct dso dso,
FILE *  fp 
)

Definition at line 522 of file symbol.c.

size_t dso__fprintf_symbols_by_name ( struct dso dso,
enum map_type  type,
FILE *  fp 
)

Definition at line 530 of file symbol.c.

int dso__load ( struct dso dso,
struct map map,
symbol_filter_t  filter 
)

Definition at line 1025 of file symbol.c.

int dso__load_kallsyms ( struct dso dso,
const char filename,
struct map map,
symbol_filter_t  filter 
)

Definition at line 813 of file symbol.c.

int dso__load_sym ( struct dso dso,
struct map map,
struct symsrc syms_ss,
struct symsrc runtime_ss,
symbol_filter_t  filter,
int  kmodule 
)

Definition at line 630 of file symbol-elf.c.

int dso__load_vmlinux ( struct dso dso,
struct map map,
const char vmlinux,
symbol_filter_t  filter 
)

Definition at line 1375 of file symbol.c.

int dso__load_vmlinux_path ( struct dso dso,
struct map map,
symbol_filter_t  filter 
)

Definition at line 1406 of file symbol.c.

bool dso__loaded ( const struct dso dso,
enum map_type  type 
)

Definition at line 77 of file symbol.c.

int dso__name_len ( const struct dso dso)

Definition at line 67 of file symbol.c.

struct dso* dso__new ( const char name)
read

Definition at line 325 of file symbol.c.

struct map* dso__new_map ( const char name)
read

Definition at line 2206 of file symbol.c.

void dso__read_running_kernel_build_id ( struct dso dso,
struct machine machine 
)

Definition at line 1708 of file symbol.c.

void dso__set_build_id ( struct dso dso,
void build_id 
)

Definition at line 376 of file symbol.c.

void dso__set_long_name ( struct dso dso,
char name 
)

Definition at line 304 of file symbol.c.

void dso__sort_by_name ( struct dso dso,
enum map_type  type 
)

Definition at line 500 of file symbol.c.

bool dso__sorted_by_name ( const struct dso dso,
enum map_type  type 
)

Definition at line 82 of file symbol.c.

char dso__symtab_origin ( const struct dso dso)

Definition at line 922 of file symbol.c.

int dso__synthesize_plt_symbols ( struct dso dso,
struct symsrc ss,
struct map map,
symbol_filter_t  filter 
)

Definition at line 169 of file symbol-elf.c.

int dso__test_data ( void  )

Definition at line 97 of file dso-test-data.c.

void dsos__add ( struct list_head head,
struct dso dso 
)

Definition at line 1594 of file symbol.c.

struct dso* dsos__find ( struct list_head head,
const char name 
)
read

Definition at line 1599 of file symbol.c.

int filename__read_build_id ( const char filename,
void bf,
size_t  size 
)

Definition at line 382 of file symbol-elf.c.

int filename__read_debuglink ( const char filename,
char debuglink,
size_t  size 
)

Definition at line 454 of file symbol-elf.c.

int hex2u64 ( const char ptr,
u64 val 
)

Definition at line 2083 of file symbol.c.

int kallsyms__parse ( const char filename,
void arg,
int(*)(void *arg, const char *name, char type, u64 start process_symbol 
)

Definition at line 564 of file symbol.c.

int machine__create_kernel_maps ( struct machine machine)

Definition at line 1851 of file symbol.c.

void machine__destroy_kernel_maps ( struct machine machine)

Definition at line 1820 of file symbol.c.

size_t machine__fprintf_dsos_buildid ( struct machine machine,
FILE *  fp,
bool  with_hits 
)

Definition at line 1667 of file symbol.c.

size_t machine__fprintf_vmlinux_path ( struct machine machine,
FILE *  fp 
)

Definition at line 1935 of file symbol.c.

int machine__load_kallsyms ( struct machine machine,
const char filename,
enum map_type  type,
symbol_filter_t  filter 
)

Definition at line 2173 of file symbol.c.

int machine__load_vmlinux_path ( struct machine machine,
enum map_type  type,
symbol_filter_t  filter 
)

Definition at line 2192 of file symbol.c.

int machines__create_guest_kernel_maps ( struct rb_root machines)

Definition at line 2111 of file symbol.c.

int machines__create_kernel_maps ( struct rb_root machines,
pid_t  pid 
)

Definition at line 2058 of file symbol.c.

void machines__destroy_guest_kernel_maps ( struct rb_root machines)

Definition at line 2160 of file symbol.c.

size_t machines__fprintf_dsos ( struct rb_root machines,
FILE *  fp 
)

Definition at line 1638 of file symbol.c.

size_t machines__fprintf_dsos_buildid ( struct rb_root machines,
FILE *  fp,
bool  with_hits 
)

Definition at line 1674 of file symbol.c.

char* strxfrchar ( char s,
char  from,
char  to 
)

Definition at line 2101 of file symbol.c.

void symbol__delete ( struct symbol sym)

Definition at line 268 of file symbol.c.

void symbol__elf_init ( void  )

Definition at line 838 of file symbol-elf.c.

void symbol__exit ( void  )

Definition at line 2046 of file symbol.c.

size_t symbol__fprintf_symname ( const struct symbol sym,
FILE *  fp 
)

Definition at line 299 of file symbol.c.

size_t symbol__fprintf_symname_offs ( const struct symbol sym,
const struct addr_location al,
FILE *  fp 
)

Definition at line 282 of file symbol.c.

int symbol__init ( void  )

Definition at line 1987 of file symbol.c.

struct symbol* symbol__new ( u64  start,
u64  len,
u8  binding,
const char name 
)
read

Definition at line 245 of file symbol.c.

bool symbol_type__is_a ( char  symbol_type,
enum map_type  map_type 
)

Definition at line 92 of file symbol.c.

void symbols__fixup_duplicate ( struct rb_root symbols)

Definition at line 163 of file symbol.c.

void symbols__fixup_end ( struct rb_root symbols)

Definition at line 192 of file symbol.c.

void symbols__insert ( struct rb_root symbols,
struct symbol sym 
)

Definition at line 382 of file symbol.c.

void symsrc__destroy ( struct symsrc ss)

Definition at line 541 of file symbol-elf.c.

bool symsrc__has_symtab ( struct symsrc ss)

Definition at line 536 of file symbol-elf.c.

int symsrc__init ( struct symsrc ss,
struct dso dso,
const char name,
enum dso_binary_type  type 
)

Definition at line 548 of file symbol-elf.c.

bool symsrc__possibly_runtime ( struct symsrc ss)

Definition at line 531 of file symbol-elf.c.

int sysfs__read_build_id ( const char filename,
void bf,
size_t  size 
)

Definition at line 409 of file symbol-elf.c.

Variable Documentation

Definition at line 34 of file symbol.c.