}
find_src_loc (void *i_addr_hex, char **o_file_str, int *o_lineno,	      char **o_funct_str){  char buf[128];  assert (i_addr_hex);  if ( abfd == NULL )    return 1;  sprintf (buf, "0x%lx", (unsigned long) i_addr_hex);  pc = bfd_scan_vma (buf, NULL, 16);  /* jsv hack - trim high bit off of address */  /*  pc &= !0x10000000; */  found = FALSE;  bfd_map_over_sections (abfd, find_address_in_section, (PTR) NULL);  if (!found)    {      mpiPi_msg_debug("returning not found in find_src_loc\n");      return 1;    }  else    {      /* determine the function name */      if (functionname == NULL || *functionname == '\0')	{	  *o_funct_str = strdup ("[unknown]");	}      else	{	  char *res = NULL;#if defined(DEMANGLE_IBM) || defined(DEMANGLE_Compaq) || defined(DEMANGLE_GNU)          res = mpiPdemangle(functionname);#endif	  if (res == NULL)	    {	      *o_funct_str = strdup (functionname);	    }	  else	    {	      *o_funct_str = res;	    }#if defined(DEMANGLE_IBM) || defined(DEMANGLE_Compaq) || defined(DEMANGLE_GNU)          mpiPi_msg_debug ("attempted demangle %s->%s\n", functionname, *o_funct_str);#endif	}      /* set the filename and line no */      if (mpiPi.baseNames == 0 && filename != NULL)	{	  char *h;	  h = strrchr (filename, '/');	  if (h != NULL)	    filename = h + 1;	}      *o_lineno = line;      *o_file_str = strdup (filename ? filename : "[unknown]");      mpiPi_msg_debug ("BFD: %s -> %s:%u:%s\n", buf, *o_file_str, *o_lineno,		       *o_funct_str);    }  return 0;}