Rev 4348 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4348 | Rev 4691 | ||
|---|---|---|---|
| Line 53... | Line 53... | ||
| 53 | * |
53 | * |
| 54 | */ |
54 | */ |
| 55 | int symtab_name_lookup(unative_t addr, char **name) |
55 | int symtab_name_lookup(unative_t addr, char **name) |
| 56 | { |
56 | { |
| 57 | #ifdef CONFIG_SYMTAB |
57 | #ifdef CONFIG_SYMTAB |
| 58 | count_t i; |
58 | size_t i; |
| 59 | 59 | ||
| 60 | for (i = 1; symbol_table[i].address_le; i++) { |
60 | for (i = 1; symbol_table[i].address_le; i++) { |
| 61 | if (addr < uint64_t_le2host(symbol_table[i].address_le)) |
61 | if (addr < uint64_t_le2host(symbol_table[i].address_le)) |
| 62 | break; |
62 | break; |
| 63 | } |
63 | } |
| Line 110... | Line 110... | ||
| 110 | * @param startpos Starting position, changes to found position |
110 | * @param startpos Starting position, changes to found position |
| 111 | * |
111 | * |
| 112 | * @return Pointer to the part of string that should be completed or NULL. |
112 | * @return Pointer to the part of string that should be completed or NULL. |
| 113 | * |
113 | * |
| 114 | */ |
114 | */ |
| 115 | static const char *symtab_search_one(const char *name, count_t *startpos) |
115 | static const char *symtab_search_one(const char *name, size_t *startpos) |
| 116 | { |
116 | { |
| 117 | count_t namelen = str_length(name); |
117 | size_t namelen = str_length(name); |
| 118 | 118 | ||
| 119 | count_t pos; |
119 | size_t pos; |
| 120 | for (pos = *startpos; symbol_table[pos].address_le; pos++) { |
120 | for (pos = *startpos; symbol_table[pos].address_le; pos++) { |
| 121 | const char *curname = symbol_table[pos].symbol_name; |
121 | const char *curname = symbol_table[pos].symbol_name; |
| 122 | 122 | ||
| 123 | /* Find a ':' in curname */ |
123 | /* Find a ':' in curname */ |
| 124 | const char *colon = str_chr(curname, ':'); |
124 | const char *colon = str_chr(curname, ':'); |
| Line 151... | Line 151... | ||
| 151 | * |
151 | * |
| 152 | */ |
152 | */ |
| 153 | int symtab_addr_lookup(const char *name, uintptr_t *addr) |
153 | int symtab_addr_lookup(const char *name, uintptr_t *addr) |
| 154 | { |
154 | { |
| 155 | #ifdef CONFIG_SYMTAB |
155 | #ifdef CONFIG_SYMTAB |
| 156 | count_t found = 0; |
156 | size_t found = 0; |
| 157 | count_t pos = 0; |
157 | size_t pos = 0; |
| 158 | const char *hint; |
158 | const char *hint; |
| 159 | 159 | ||
| 160 | while ((hint = symtab_search_one(name, &pos))) { |
160 | while ((hint = symtab_search_one(name, &pos))) { |
| 161 | if (str_length(hint) == 0) { |
161 | if (str_length(hint) == 0) { |
| 162 | *addr = uint64_t_le2host(symbol_table[pos].address_le); |
162 | *addr = uint64_t_le2host(symbol_table[pos].address_le); |
| Line 180... | Line 180... | ||
| 180 | 180 | ||
| 181 | /** Find symbols that match parameter and print them */ |
181 | /** Find symbols that match parameter and print them */ |
| 182 | void symtab_print_search(const char *name) |
182 | void symtab_print_search(const char *name) |
| 183 | { |
183 | { |
| 184 | #ifdef CONFIG_SYMTAB |
184 | #ifdef CONFIG_SYMTAB |
| 185 | count_t pos = 0; |
185 | size_t pos = 0; |
| 186 | while (symtab_search_one(name, &pos)) { |
186 | while (symtab_search_one(name, &pos)) { |
| 187 | uintptr_t addr = uint64_t_le2host(symbol_table[pos].address_le); |
187 | uintptr_t addr = uint64_t_le2host(symbol_table[pos].address_le); |
| 188 | char *realname = symbol_table[pos].symbol_name; |
188 | char *realname = symbol_table[pos].symbol_name; |
| 189 | printf("%p: %s\n", addr, realname); |
189 | printf("%p: %s\n", addr, realname); |
| 190 | pos++; |
190 | pos++; |
| Line 201... | Line 201... | ||
| 201 | * @param size Input buffer size |
201 | * @param size Input buffer size |
| 202 | * |
202 | * |
| 203 | * @return 0 - nothing found, 1 - success, >1 print duplicates |
203 | * @return 0 - nothing found, 1 - success, >1 print duplicates |
| 204 | * |
204 | * |
| 205 | */ |
205 | */ |
| 206 | int symtab_compl(char *input, count_t size) |
206 | int symtab_compl(char *input, size_t size) |
| 207 | { |
207 | { |
| 208 | #ifdef CONFIG_SYMTAB |
208 | #ifdef CONFIG_SYMTAB |
| 209 | const char *name = input; |
209 | const char *name = input; |
| 210 | 210 | ||
| 211 | /* Allow completion of pointers */ |
211 | /* Allow completion of pointers */ |
| Line 214... | Line 214... | ||
| 214 | 214 | ||
| 215 | /* Do not print all symbols */ |
215 | /* Do not print all symbols */ |
| 216 | if (str_length(name) == 0) |
216 | if (str_length(name) == 0) |
| 217 | return 0; |
217 | return 0; |
| 218 | 218 | ||
| 219 | count_t found = 0; |
219 | size_t found = 0; |
| 220 | count_t pos = 0; |
220 | size_t pos = 0; |
| 221 | const char *hint; |
221 | const char *hint; |
| 222 | char output[MAX_SYMBOL_NAME]; |
222 | char output[MAX_SYMBOL_NAME]; |
| 223 | 223 | ||
| 224 | output[0] = 0; |
224 | output[0] = 0; |
| 225 | 225 | ||