Changes in kernel/generic/src/debug/symtab.c [98000fb:7e752b2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/debug/symtab.c
r98000fb r7e752b2 38 38 #include <symtab.h> 39 39 #include <byteorder.h> 40 #include <str ing.h>40 #include <str.h> 41 41 #include <print.h> 42 #include < arch/types.h>42 #include <typedefs.h> 43 43 #include <typedefs.h> 44 44 #include <errno.h> … … 46 46 /** Get name of a symbol that seems most likely to correspond to address. 47 47 * 48 * @param addr Address. 49 * @param name Place to store pointer to the symbol name. 48 * @param addr Address. 49 * @param name Place to store pointer to the symbol name. 50 * @param offset Place to store offset from the symbol address. 50 51 * 51 52 * @return Zero on success or negative error code, ENOENT if not found, … … 53 54 * 54 55 */ 55 int symtab_name_lookup(u native_t addr, char **name)56 int symtab_name_lookup(uintptr_t addr, const char **name, uintptr_t *offset) 56 57 { 57 58 #ifdef CONFIG_SYMTAB … … 65 66 if (addr >= uint64_t_le2host(symbol_table[i - 1].address_le)) { 66 67 *name = symbol_table[i - 1].symbol_name; 68 if (offset) 69 *offset = addr - 70 uint64_t_le2host(symbol_table[i - 1].address_le); 67 71 return EOK; 68 72 } … … 79 83 /** Lookup symbol by address and format for display. 80 84 * 81 * Returns name of closest corresponding symbol, "Not found" if none exists 82 * or "N/A" if no symbol information is available. 85 * Returns name of closest corresponding symbol, 86 * "unknown" if none exists and "N/A" if no symbol 87 * information is available. 83 88 * 84 89 * @param addr Address. … … 88 93 * 89 94 */ 90 c har *symtab_fmt_name_lookup(unative_t addr)91 { 92 c har *name;93 int rc = symtab_name_lookup(addr, &name );95 const char *symtab_fmt_name_lookup(uintptr_t addr) 96 { 97 const char *name; 98 int rc = symtab_name_lookup(addr, &name, NULL); 94 99 95 100 switch (rc) { … … 97 102 return name; 98 103 case ENOENT: 99 return " Not found";104 return "unknown"; 100 105 default: 101 106 return "N/A"; … … 187 192 uintptr_t addr = uint64_t_le2host(symbol_table[pos].address_le); 188 193 char *realname = symbol_table[pos].symbol_name; 189 printf("%p: %s\n", addr, realname);194 printf("%p: %s\n", (void *) addr, realname); 190 195 pos++; 191 196 } … … 235 240 printf("\n"); 236 241 pos = 0; 237 while ( (hint = symtab_search_one(name, &pos))) {242 while (symtab_search_one(name, &pos)) { 238 243 printf("%s\n", symbol_table[pos].symbol_name); 239 244 pos++;
Note:
See TracChangeset
for help on using the changeset viewer.