mpiPi_msg_warn("Executable filename is NULL!\n  If this is a Fortran application, you may be using the incorrect mpiP library.\n");
mpiPi_msg_warn("Executable filename is NULL!\n"); mpiPi_msg_warn("If this is a Fortran application, you may be using the incorrect mpiP library.\n");
void open_bfd_executable (char *filename){  char *target = NULL;  char **matching = NULL;  long storage;  long symcount;  if (filename == NULL)  {    mpiPi_msg_warn("Executable filename is NULL!\n  If this is a Fortran application, you may be using the incorrect mpiP library.\n");    return;  }  bfd_init ();  /* set_default_bfd_target (); */  mpiPi_msg_debug ("opening filename %s\n", filename);  abfd = bfd_openr (filename, target);  if (abfd == NULL)    mpiPi_abort ("could not open filename %s", filename);  if (bfd_check_format (abfd, bfd_archive))    mpiPi_abort ("can not get addresses from archive");  if (!bfd_check_format_matches (abfd, bfd_object, &matching))  {    char *curr_match;    if (matching != NULL)    {      for ( curr_match = matching[0]; curr_match != NULL; curr_match++ )        mpiPi_msg_debug ("found matching type %s\n", curr_match);      free(matching);     }    mpiPi_abort ("matching failed");  }    if ((bfd_get_file_flags (abfd) & HAS_SYMS) == 0)    mpiPi_abort ("No symbols in the executable\n");  /* TODO: move this to the begining of the process so that the user     knows before the application begins */  storage = bfd_get_symtab_upper_bound (abfd);  if (storage < 0)    mpiPi_abort ("storage < 0");  syms = (asymbol **) malloc (storage);  symcount = bfd_canonicalize_symtab (abfd, syms);  if (symcount < 0)    mpiPi_abort ("symcount < 0");  else    {      mpiPi_msg ("\n");      mpiPi_msg ("found %d symbols in file [%s]\n", symcount, filename);    }}