]> Git Repo - J-u-boot.git/blob - common/kallsyms.c
Merge branch 'next'
[J-u-boot.git] / common / kallsyms.c
1 /*
2  * Helper functions for working with the builtin symbol table
3  *
4  * Copyright (c) 2008-2009 Analog Devices Inc.
5  * Licensed under the GPL-2 or later.
6  */
7
8
9 /* We need the weak marking as this symbol is provided specially */
10 extern const char system_map[] __attribute__((weak));
11
12 /* Given an address, return a pointer to the symbol name and store
13  * the base address in caddr.  So if the symbol map had an entry:
14  *              03fb9b7c_spi_cs_deactivate
15  * Then the following call:
16  *              unsigned long base;
17  *              const char *sym = symbol_lookup(0x03fb9b80, &base);
18  * Would end up setting the variables like so:
19  *              base = 0x03fb9b7c;
20  *              sym = "_spi_cs_deactivate";
21  */
22 const char *symbol_lookup(unsigned long addr, unsigned long *caddr)
23 {
24         const char *sym, *csym;
25         char *esym;
26         unsigned long sym_addr;
27
28         sym = system_map;
29         csym = NULL;
30         *caddr = 0;
31
32         while (*sym) {
33                 sym_addr = hextoul(sym, &esym);
34                 sym = esym;
35                 if (sym_addr > addr)
36                         break;
37                 *caddr = sym_addr;
38                 csym = sym;
39                 sym += strlen(sym) + 1;
40         }
41
42         return csym;
43 }
This page took 0.028399 seconds and 4 git commands to generate.