Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: native_client_sdk/src/libraries/xray/symtable.c

Issue 19409003: Update Xray for PNaCl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add/remove files, change instrumentation ot __pnacl Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 * Use of this source code is governed by a BSD-style license that can be 2 * Use of this source code is governed by a BSD-style license that can be
3 * found in the LICENSE file. 3 * found in the LICENSE file.
4 */ 4 */
5 5
6 /* XRay symbol table */ 6 /* XRay symbol table */
7 7
8 #define _GNU_SOURCE 8 #define _GNU_SOURCE
9 #include <stdint.h> 9 #include <stdint.h>
10 #include <stdio.h> 10 #include <stdio.h>
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 printf("adding symbol %s\n", recorded_name); 138 printf("adding symbol %s\n", recorded_name);
139 /* construct a symbol and put it in the symbol table */ 139 /* construct a symbol and put it in the symbol table */
140 symbol = XRaySymbolCreate(symtab->symbol_pool, recorded_name); 140 symbol = XRaySymbolCreate(symtab->symbol_pool, recorded_name);
141 return XRaySymbolTableAdd(symtab, symbol, addr); 141 return XRaySymbolTableAdd(symtab, symbol, addr);
142 } 142 }
143 143
144 struct XRaySymbol* XRaySymbolTableLookup(struct XRaySymbolTable* symtab, 144 struct XRaySymbol* XRaySymbolTableLookup(struct XRaySymbolTable* symtab,
145 uint32_t addr) { 145 uint32_t addr) {
146 void *x = XRayHashTableLookup(symtab->hash_table, addr); 146 void *x = XRayHashTableLookup(symtab->hash_table, addr);
147 struct XRaySymbol* r = (struct XRaySymbol*)x; 147 struct XRaySymbol* r = (struct XRaySymbol*)x;
148
149 #if defined(__pnacl__)
150 if (r == NULL){
151 addr |= 0x10000000;
nfullagar1 2013/07/17 00:53:19 macro helper for addr fixup, with a descriptive na
152 const char* name = (const char*)addr;
153 struct XRaySymbol* symbol = XRaySymbolCreate(symtab->symbol_pool, name);
154 r = XRaySymbolTableAdd(symtab, symbol, addr);
155 }
156 #endif
157
148 #if defined(__GLIBC__) 158 #if defined(__GLIBC__)
149 if (r == NULL) { 159 if (r == NULL) {
150 Dl_info info; 160 Dl_info info;
151 if (dladdr((const void*)addr, &info) != 0) 161 if (dladdr((const void*)addr, &info) != 0)
152 if (info.dli_sname) 162 if (info.dli_sname)
153 r = XRaySymbolTableAddByName(symtab, info.dli_sname, addr); 163 r = XRaySymbolTableAddByName(symtab, info.dli_sname, addr);
154 } 164 }
155 #endif 165 #endif
156 return r; 166 return r;
157 } 167 }
(...skipping 20 matching lines...) Expand all
178 /* Frees a symbol table. */ 188 /* Frees a symbol table. */
179 void XRaySymbolTableFree(struct XRaySymbolTable* symtab) { 189 void XRaySymbolTableFree(struct XRaySymbolTable* symtab) {
180 XRayStringPoolFree(symtab->string_pool); 190 XRayStringPoolFree(symtab->string_pool);
181 XRaySymbolPoolFree(symtab->symbol_pool); 191 XRaySymbolPoolFree(symtab->symbol_pool);
182 XRayHashTableFree(symtab->hash_table); 192 XRayHashTableFree(symtab->hash_table);
183 symtab->num_symbols = 0; 193 symtab->num_symbols = 0;
184 XRayFree(symtab); 194 XRayFree(symtab);
185 } 195 }
186 196
187 #endif /* XRAY */ 197 #endif /* XRAY */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698