Changeset 6e716a59 in mainline for generic/src/debug/symtab.c
- Timestamp:
- 2005-12-10T15:05:46Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 72f5866d
- Parents:
- a3ac9a7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/debug/symtab.c
ra3ac9a7 r6e716a59 31 31 #include <typedefs.h> 32 32 #include <arch/byteorder.h> 33 #include <func.h> 34 #include <print.h> 33 35 34 36 /** Return entry that seems most likely to correspond to address … … 53 55 return NULL; 54 56 } 57 58 /** Return address that corresponds to the entry 59 * 60 * Search symbol table, and if the address ENDS with 61 * the parameter, return value 62 * 63 * @param name Name of the symbol 64 * @return 0 - Not found, -1 - Duplicate symbol, other - address of symbol 65 */ 66 __address get_symbol_addr(const char *name) 67 { 68 count_t i; 69 count_t found = 0; 70 count_t found_pos; 71 72 count_t nmlen = strlen(name); 73 count_t slen; 74 75 for (i=0;symbol_table[i].address_le;++i) { 76 slen = strlen(symbol_table[i].symbol_name); 77 if (slen < nmlen) 78 continue; 79 if (strncmp(name, symbol_table[i].symbol_name + (slen-nmlen), 80 nmlen) == 0) { 81 found++; 82 found_pos = i; 83 } 84 } 85 if (found == 0) 86 return NULL; 87 if (found == 1) 88 return __u64_le2host(symbol_table[found_pos].address_le); 89 return ((__address) -1); 90 } 91 92 void symtab_print_search(const char *name) 93 { 94 int i; 95 count_t nmlen = strlen(name); 96 count_t slen; 97 __address addr; 98 char *realname; 99 100 for (i=0;symbol_table[i].address_le;++i) { 101 slen = strlen(symbol_table[i].symbol_name); 102 if (slen < nmlen) 103 continue; 104 if (strncmp(name, symbol_table[i].symbol_name + (slen-nmlen), 105 nmlen) == 0) { 106 addr = __u64_le2host(symbol_table[i].address_le); 107 realname = symbol_table[i].symbol_name; 108 printf("0x%p: %s\n", addr, realname); 109 } 110 } 111 }
Note:
See TracChangeset
for help on using the changeset viewer.