Debug typo fixes.

Change symbol_values return type to int, on the chance that we've
been given the wrong symbol table.  Symbols have a string index that
must be relative to the correct string table.
Add prototypes for better kld support for ddb.
This commit is contained in:
Peter Wemm 1998-10-09 23:07:27 +00:00
parent 1f68fea8bd
commit 814500450b

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: linker.h,v 1.6 1998/10/09 01:44:09 msmith Exp $
* $Id: linker.h,v 1.7 1998/10/09 07:06:43 msmith Exp $
*/
#ifndef _SYS_LINKER_H_
@ -31,6 +31,8 @@
#ifdef KERNEL
#include <machine/elf.h>
#ifdef MALLOC_DECLARE
MALLOC_DECLARE(M_LINKER);
#endif
@ -63,7 +65,7 @@ struct linker_file_ops {
int (*lookup_symbol)(linker_file_t, const char* name,
linker_sym_t* sym);
void (*symbol_values)(linker_file_t, linker_sym_t,
int (*symbol_values)(linker_file_t, linker_sym_t,
linker_symval_t*);
int (*search_symbol)(linker_file_t, caddr_t value,
@ -83,7 +85,7 @@ struct common_symbol {
struct linker_file {
int refs; /* reference count */
int userrefs; /* modload(2) count */
int userrefs; /* kldload(2) count */
TAILQ_ENTRY(linker_file) link; /* list of all loaded files */
char* filename; /* file which was loaded */
int id; /* unique id */
@ -174,32 +176,54 @@ int linker_file_add_dependancy(linker_file_t file, linker_file_t dep);
caddr_t linker_file_lookup_symbol(linker_file_t file, const char* name,
int deps);
/*
* Search the linker path for the module. Return the full pathname in
* a malloc'ed buffer.
*/
char *linker_search_path(const char *filename);
/*
* DDB Helpers, tuned specifically for ddb/db_kld.c
*/
int linker_ddb_lookup(char *symstr, linker_sym_t *sym);
int linker_ddb_search_symbol(caddr_t value, linker_sym_t *sym, long *diffp);
int linker_ddb_symbol_values(linker_sym_t sym, linker_symval_t *symval);
#endif /* KERNEL */
/*
* Module information subtypes
*/
#define MODINFO_END 0x0000
#define MODINFO_NAME 0x0001
#define MODINFO_TYPE 0x0002
#define MODINFO_ADDR 0x0003
#define MODINFO_SIZE 0x0004
#define MODINFO_METADATA 0x8000
#define MODINFO_END 0x0000 /* End of list */
#define MODINFO_NAME 0x0001 /* Name of module (string) */
#define MODINFO_TYPE 0x0002 /* Type of module (string) */
#define MODINFO_ADDR 0x0003 /* Loaded address */
#define MODINFO_SIZE 0x0004 /* Size of module */
#define MODINFO_EMPTY 0x0005 /* Has been deleted */
#define MODINFO_METADATA 0x8000 /* Module-specfic */
#define MODINFOMD_AOUTEXEC 0x0001 /* a.out exec header */
#define MODINFOMD_ELFHDR 0x0002 /* ELF header */
#define MODINFOMD_SSYM 0x0003 /* start of symbols */
#define MODINFOMD_ESYM 0x0004 /* end of symbols */
#define MODINFOMD_DYNAMIC 0x0005 /* _DYNAMIC pointer */
#define MODINFOMD_NOCOPY 0x8000 /* don't copy this metadata to the kernel */
#define KLD_IDENT_SYMNAME "kld_identifier_"
#define MODINFOMD_KLDIDENT (MODINFOMD_NOCOPY | 0x4000)
#define MODINFOMD_KLDDEP (MODINFOMD_NOCOPY | 0x4001)
#define MODINFOMD_DEPLIST (0x4001 | MODINFOMD_NOCOPY) /* depends on */
#ifdef KERNEL
/*
* Module lookup
*/
extern caddr_t module_metadata;
extern caddr_t module_search_by_name(const char *name);
extern caddr_t module_search_by_type(const char *type);
extern caddr_t module_search_info(caddr_t mod, int inf);
extern caddr_t preload_metadata;
extern caddr_t preload_search_by_name(const char *name);
extern caddr_t preload_search_by_type(const char *type);
extern caddr_t preload_search_next_name(caddr_t base);
extern caddr_t preload_search_info(caddr_t mod, int inf);
extern void preload_delete_name(const char *name);
extern void preload_bootstrap_relocate(vm_offset_t offset);
#ifdef KLD_DEBUG
@ -209,7 +233,7 @@ extern int kld_debug;
#define KLD_DPF(cat, args) \
do { \
if (KLD_debug & KLD_DEBUG_##cat) printf args; \
if (kld_debug & KLD_DEBUG_##cat) printf args; \
} while (0)
#else
@ -218,6 +242,10 @@ extern int kld_debug;
#endif
/* Support functions */
int elf_reloc(linker_file_t lf, const Elf_Rela *rela, const char *sym);
#endif /* KERNEL */
struct kld_file_stat {