extern Addr VG_(reverse_search_one_symtab) ( const SegInfo* si, const Char* name );
-extern Bool VG_(resolve_redir_allsegs)(CodeRedirect *redir);
-
extern Bool VG_(use_CFI_info) ( /*MOD*/Addr* ipP,
/*MOD*/Addr* spP,
/*MOD*/Addr* fpP,
return resolved;
}
+static Bool resolve_redir_allsegs(CodeRedirect *redir)
+{
+ const SegInfo *si;
+
+ for(si = VG_(next_seginfo)(NULL);
+ si != NULL;
+ si = VG_(next_seginfo)(si))
+ {
+ if (VG_(resolve_redir)(redir, si))
+ return True;
+ }
+ return False;
+}
+
/* Go through the complete redir list, resolving as much as possible with this SegInfo.
This should be called when a new SegInfo symtab is loaded.
/* Check against all existing segments to see if this redirection
can be resolved immediately */
- if (!VG_(resolve_redir_allsegs)(redir)) {
+ if (!resolve_redir_allsegs(redir)) {
/* nope, add to list */
redir->next = unresolved_redir;
unresolved_redir = redir;
/* Check against all existing segments to see if this redirection
can be resolved immediately */
- if (!VG_(resolve_redir_allsegs)(redir)) {
+ if (!resolve_redir_allsegs(redir)) {
/* nope, add to list */
redir->next = unresolved_redir;
unresolved_redir = redir;
/* Check against all existing segments to see if this redirection
can be resolved immediately */
- if (!VG_(resolve_redir_allsegs)(redir)) {
+ if (!resolve_redir_allsegs(redir)) {
/* nope, add to list */
redir->next = unresolved_redir;
unresolved_redir = redir;
VG_(arena_free)(VG_AR_SYMTAB, lib);
}
-Bool VG_(resolve_redir_allsegs)(CodeRedirect *redir)
-{
- SegInfo *si;
-
- for(si = segInfo; si != NULL; si = si->next)
- if (VG_(resolve_redir)(redir, si))
- return True;
-
- return False;
-}
-
//static
//void handle_wrapper( SegInfo* si, Char* symbol, ElfXX_Sym* sym)
//{