introduce minimal_symbol_upper_bound
This introduces minimal_symbol_upper_bound and changes various bits of code to use it. Since this function is intimately tied to the implementation of minimal symbol tables, I believe it belongs in minsyms.c. The new function is extracted from find_pc_partial_function_gnu_ifunc. This isn't a "clean" move because the old function interleaved the caching and the computation; but this doesn't make sense for the new code. 2014-02-26 Tom Tromey <tromey@redhat.com> * blockframe.c (find_pc_partial_function_gnu_ifunc): Use bound minimal symbols. Move code that knows about minsym table layout... * minsyms.c (minimal_symbol_upper_bound): ... here. New function. * minsyms.h (minimal_symbol_upper_bound): Declare. * objc-lang.c (find_objc_msgsend): Use bound minimal symbols, minimal_symbol_upper_bound.
This commit is contained in:
parent
1b58801583
commit
50e65b1713
5 changed files with 83 additions and 51 deletions
|
@ -1260,25 +1260,23 @@ find_objc_msgsend (void)
|
|||
|
||||
for (i = 0; i < nmethcalls; i++)
|
||||
{
|
||||
struct minimal_symbol *func;
|
||||
struct bound_minimal_symbol func;
|
||||
|
||||
/* Try both with and without underscore. */
|
||||
func = lookup_minimal_symbol (methcalls[i].name, NULL, NULL);
|
||||
if ((func == NULL) && (methcalls[i].name[0] == '_'))
|
||||
func = lookup_bound_minimal_symbol (methcalls[i].name);
|
||||
if ((func.minsym == NULL) && (methcalls[i].name[0] == '_'))
|
||||
{
|
||||
func = lookup_minimal_symbol (methcalls[i].name + 1, NULL, NULL);
|
||||
func = lookup_bound_minimal_symbol (methcalls[i].name + 1);
|
||||
}
|
||||
if (func == NULL)
|
||||
if (func.minsym == NULL)
|
||||
{
|
||||
methcalls[i].begin = 0;
|
||||
methcalls[i].end = 0;
|
||||
continue;
|
||||
}
|
||||
|
||||
methcalls[i].begin = SYMBOL_VALUE_ADDRESS (func);
|
||||
do {
|
||||
methcalls[i].end = SYMBOL_VALUE_ADDRESS (++func);
|
||||
} while (methcalls[i].begin == methcalls[i].end);
|
||||
methcalls[i].begin = SYMBOL_VALUE_ADDRESS (func.minsym);
|
||||
methcalls[i].end = minimal_symbol_upper_bound (func);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue