|
From: <sv...@va...> - 2005-06-16 09:20:47
|
Author: tom
Date: 2005-06-16 10:20:43 +0100 (Thu, 16 Jun 2005)
New Revision: 3917
Log:
Make sure redirects are fully initialised and add them to the resolved
list straight away if they are resolved or we will wind up asserting.
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_redir.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_redir.c 2005-06-16 03:56:58 UTC (rev 3916)
+++ trunk/coregrind/m_redir.c 2005-06-16 09:20:43 UTC (rev 3917)
@@ -322,11 +322,15 @@
redir->type =3D R_REDIRECT;
=20
if (from_lib) redir->from_lib =3D VG_(arena_strdup)(VG_AR_SYMTAB, fr=
om_lib);
+ else redir->from_lib =3D NULL;
if (from_sym) redir->from_sym =3D VG_(arena_strdup)(VG_AR_SYMTAB, fr=
om_sym);
+ else redir->from_sym =3D NULL;
redir->from_addr =3D from_addr;
=20
if (to_lib) redir->to_lib =3D VG_(arena_strdup)(VG_AR_SYMTAB, to=
_lib);
+ else redir->to_lib =3D NULL;
if (to_sym) redir->to_sym =3D VG_(arena_strdup)(VG_AR_SYMTAB, to=
_sym);
+ else redir->to_sym =3D NULL;
redir->to_addr =3D to_addr;
=20
if (VG_(clo_verbosity) >=3D 2 && VG_(clo_trace_redir))
@@ -336,7 +340,10 @@
=20
/* Check against all existing segments to see if this redirection
can be resolved immediately */
- if (!resolve_redir_allsegs(redir)) {
+ if (VG_(is_resolved)(redir)) {
+ add_resolved(redir);
+ }
+ else if (!resolve_redir_allsegs(redir)) {
/* nope, add to list */
redir->next =3D unresolved_redir;
unresolved_redir =3D redir;
|