Changeset View
Changeset View
Standalone View
Standalone View
cddl/contrib/opensolaris/cmd/lockstat/sym.c
Show First 20 Lines • Show All 48 Lines • ▼ Show 20 Lines | |||||
#else | #else | ||||
#include <sys/elf.h> | #include <sys/elf.h> | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/module.h> | #include <sys/module.h> | ||||
#include <sys/linker.h> | #include <sys/linker.h> | ||||
#endif | #endif | ||||
#include <sys/cpuvar.h> | #include <sys/cpuvar.h> | ||||
typedef struct syment { | typedef struct syment { | ||||
uintptr_t addr; | uintptr_t addr; | ||||
char *name; | char *name; | ||||
size_t size; | size_t size; | ||||
} syment_t; | } syment_t; | ||||
static syment_t *symbol_table; | static syment_t *symbol_table; | ||||
static int nsyms, maxsyms; | static int nsyms, maxsyms; | ||||
static char maxsymname[64]; | static char maxsymname[64]; | ||||
#ifdef illumos | #ifdef illumos | ||||
#ifdef _ELF64 | #ifdef _ELF64 | ||||
#define elf_getshdr elf64_getshdr | #define elf_getshdr elf64_getshdr | ||||
#else | #else | ||||
#define elf_getshdr elf32_getshdr | #define elf_getshdr elf32_getshdr | ||||
#endif | #endif | ||||
#endif | #endif | ||||
#define __sElfN(x) typedef __CONCAT(__CONCAT(__CONCAT(Elf,__ELF_WORD_SIZE),_),x) x | |||||
__sElfN(Sym); | |||||
__sElfN(Shdr); | |||||
#define elf_getshdr __elfN(getshdr) | |||||
static void | static void | ||||
add_symbol(char *name, uintptr_t addr, size_t size) | add_symbol(char *name, uintptr_t addr, size_t size) | ||||
{ | { | ||||
syment_t *sep; | syment_t *sep; | ||||
if (nsyms >= maxsyms) { | if (nsyms >= maxsyms) { | ||||
maxsyms += 10000; | maxsyms += 10000; | ||||
▲ Show 20 Lines • Show All 212 Lines • Show Last 20 Lines |