Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/ddb/db_sym.h
39476 views
1
/*-
2
* SPDX-License-Identifier: MIT-CMU
3
*
4
* Mach Operating System
5
* Copyright (c) 1991,1990 Carnegie Mellon University
6
* All Rights Reserved.
7
*
8
* Permission to use, copy, modify and distribute this software and its
9
* documentation is hereby granted, provided that both the copyright
10
* notice and this permission notice appear in all copies of the
11
* software, derivative works or modified versions, and any portions
12
* thereof, and that both notices appear in supporting documentation.
13
*
14
* CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS
15
* CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
16
* ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
17
*
18
* Carnegie Mellon requests users of this software to return to
19
*
20
* Software Distribution Coordinator or [email protected]
21
* School of Computer Science
22
* Carnegie Mellon University
23
* Pittsburgh PA 15213-3890
24
*
25
* any improvements or extensions that they make and grant Carnegie the
26
* rights to redistribute these changes.
27
*/
28
29
#ifndef _DDB_DB_SYM_H_
30
#define _DDB_DB_SYM_H_
31
32
/*
33
* Author: Alessandro Forin, Carnegie Mellon University
34
* Date: 8/90
35
*/
36
37
/*
38
* This module can handle multiple symbol tables
39
*/
40
typedef struct {
41
char *name; /* symtab name */
42
char *start; /* symtab location */
43
char *end;
44
char *private; /* optional machdep pointer */
45
} db_symtab_t;
46
47
/*
48
* Symbol representation is specific to the symtab style:
49
* BSD compilers use dbx' nlist, other compilers might use
50
* a different one
51
*/
52
typedef char * db_sym_t; /* opaque handle on symbols */
53
typedef const char * c_db_sym_t; /* const opaque handle on symbols */
54
#define DB_SYM_NULL ((db_sym_t)0)
55
#define C_DB_SYM_NULL ((c_db_sym_t)0)
56
57
/*
58
* Non-stripped symbol tables will have duplicates, for instance
59
* the same string could match a parameter name, a local var, a
60
* global var, etc.
61
* We are most concern with the following matches.
62
*/
63
typedef int db_strategy_t; /* search strategy */
64
65
#define DB_STGY_ANY 0 /* anything goes */
66
#define DB_STGY_XTRN 1 /* only external symbols */
67
#define DB_STGY_PROC 2 /* only procedures */
68
69
/*
70
* Functions exported by the symtable module
71
*/
72
void db_add_symbol_table(char *, char *, char *, char *);
73
/* extend the list of symbol tables */
74
75
c_db_sym_t db_search_symbol(db_addr_t, db_strategy_t, db_expr_t *);
76
/* find symbol given value */
77
78
void db_symbol_values(c_db_sym_t, const char **, db_expr_t *);
79
/* return name and value of symbol */
80
81
#define db_find_sym_and_offset(val,namep,offp) \
82
db_symbol_values(db_search_symbol(val,DB_STGY_ANY,offp),namep,0)
83
/* find name&value given approx val */
84
85
#define db_find_xtrn_sym_and_offset(val,namep,offp) \
86
db_symbol_values(db_search_symbol(val,DB_STGY_XTRN,offp),namep,0)
87
/* ditto, but no locals */
88
89
bool db_eqname(const char *, const char *, int);
90
/* strcmp, modulo leading char */
91
92
void db_printsym(db_expr_t, db_strategy_t);
93
/* print closest symbol to a value */
94
95
bool db_sym_numargs(c_db_sym_t, int *, char **);
96
97
bool X_db_line_at_pc(db_symtab_t *symtab, c_db_sym_t cursym,
98
char **filename, int *linenum, db_expr_t off);
99
c_db_sym_t X_db_lookup(db_symtab_t *stab, const char *symstr);
100
c_db_sym_t X_db_search_symbol(db_symtab_t *symtab, db_addr_t off,
101
db_strategy_t strategy, db_expr_t *diffp);
102
bool X_db_sym_numargs(db_symtab_t *, c_db_sym_t, int *, char **);
103
void X_db_symbol_values(db_symtab_t *symtab, c_db_sym_t sym,
104
const char **namep, db_expr_t *valuep);
105
106
void db_decode_syscall(struct thread *td, u_int number);
107
108
#endif /* !_DDB_DB_SYM_H_ */
109
110