mirror of
https://github.com/JakeHillion/drgn.git
synced 2024-12-23 17:53:07 +00:00
71e6744210
Now that we're not overloading the name "symbol", we can define struct drgn_symbol as a symbol table entry. For now, this is very minimal: it's just a name, address, and size. We can then add a way to find the symbol for a given address, drgn_program_find_symbol(). For now, this is only supported through the actual ELF symbol tables. However, in the future, we can probably support adding "symbol finders".
34 lines
675 B
C
34 lines
675 B
C
// Copyright 2019 - Omar Sandoval
|
|
// SPDX-License-Identifier: GPL-3.0+
|
|
|
|
#include <string.h>
|
|
|
|
#include "internal.h"
|
|
#include "symbol.h"
|
|
|
|
LIBDRGN_PUBLIC void drgn_symbol_destroy(struct drgn_symbol *sym)
|
|
{
|
|
free(sym);
|
|
}
|
|
|
|
LIBDRGN_PUBLIC const char *drgn_symbol_name(struct drgn_symbol *sym)
|
|
{
|
|
return sym->name;
|
|
}
|
|
|
|
LIBDRGN_PUBLIC uint64_t drgn_symbol_address(struct drgn_symbol *sym)
|
|
{
|
|
return sym->address;
|
|
}
|
|
|
|
LIBDRGN_PUBLIC uint64_t drgn_symbol_size(struct drgn_symbol *sym)
|
|
{
|
|
return sym->size;
|
|
}
|
|
|
|
LIBDRGN_PUBLIC bool drgn_symbol_eq(struct drgn_symbol *a, struct drgn_symbol *b)
|
|
{
|
|
return (strcmp(a->name, b->name) == 0 && a->address == b->address &&
|
|
a->size == b->size);
|
|
}
|