source: svn/trunk/newcon3bcm2_21bu/BSEAV/lib/bprofile/bsymtable.c @ 9

Last change on this file since 9 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 1.7 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2006, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: bsymtable.c $
11 * $brcm_Revision: 3 $
12 * $brcm_Date: 12/8/06 7:22p $
13 *
14 * Module Description:
15 *
16 * Embeddeble profiler library
17 *              Symbol lookup module
18 *
19 * Revision History:
20 *
21 * $brcm_Log: /BSEAV/lib/bprofile/bsymtable.c $
22 *
23 * 3   12/8/06 7:22p vsilyaev
24 * PR 25997: Fixed offset handling
25 *
26 * 2   11/20/06 4:54p vsilyaev
27 * PR 25997: Decoupled profiling and symbol table
28 *
29 * 1   11/16/06 5:24p vsilyaev
30 * PR 25997: Embeddable profiler
31 *
32 *******************************************************************************/
33#include "bstd.h"
34#include "bsymtable.h"
35BDBG_MODULE(bsymtable);
36
37static B_BIN_SEARCH(b_symbol_lookup, bsymbol_entry, addr)
38
39const char *
40bsymbol_lookup(const bsymbol_table *map, uint32_t addr_, unsigned *offset)
41{
42        uint32_t addr = addr_ - map->offset;
43        int pos = b_symbol_lookup(map->table, map->nentries, addr);
44        BDBG_MSG(("pos=%d, addr=%#x(%#x) entries=%u", pos, addr, addr_, map->nentries));
45        if (pos>=0) {
46                *offset = 0;
47                return map->table[pos].name;
48        } 
49        pos = -(pos+1);
50        pos --;
51        if (pos < 0 || pos>=(int)map->nentries) {
52                *offset = (unsigned)-1;
53                return "";
54        }
55        /* BKNI_Printf("%d: %#lx %#lx %#lx\n", pos, addr, map->table[pos].addr, map->table[pos+1].addr); */
56        *offset = addr - map->table[pos].addr;
57        return map->table[pos].name;
58}
59
Note: See TracBrowser for help on using the repository browser.