bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gprof cannot find symbols in a MIPS IRIX a.out


From: Anmol Paralkar
Subject: gprof cannot find symbols in a MIPS IRIX a.out
Date: Sun, 21 Dec 2003 12:01:12 +0530 (IST)

Hi,

 I am trying to use gprof on a MIPS IRIX 6.5 box, but gprof seems to be unable
 to read in the symbols of the executable.

 On a:

 $ gprof a.out gmon.out

 I get the following error message:

 gprof: file `a.out' has no symbols

 Doing an:

 elfdump -Dt a.out

 does indicate the presence of symbols:

[58]     0x10001000         232      FUNC    GLOBAL   DEFAULT  UNDEF    atexit
[59]     0x10001014         0        FUNC    GLOBAL   DEFAULT  UNDEF    profil
[60]     0x1000114c         112      FUNC    GLOBAL   DEFAULT  MIPSTEXT main
[61]     0x100011c0         724      FUNC    GLOBAL   DEFAULT  MIPSTEXT 
monstartup
[62]     0x10001498         604      FUNC    GLOBAL   DEFAULT  MIPSTEXT 
_mcleanup
[63]     0x100016f8         808      FUNC    GLOBAL   DEFAULT  MIPSTEXT mcount

 (Or doing a 'objdump -T a.out' also indicates the same).

 I tried compiling with -non_shared specified but the link fails owing to
 /usr/lib32/nonshared/crt1.o not being present on my box. (Using native cc).

 Do I need to specify some option to gprof so that it can read the dynamic 
symbol
 table of executables that use shared libraries or is there no way gprof will 
work
 when using shared libraries.

 I also tried making this change in core_init() in gprof/corefile.c:

--------------------------------------------------------------------------------
  /* This will probably give us more than we need, but that's ok.  */
  core_num_syms = bfd_get_dynamic_symtab_upper_bound (core_bfd); 
<<<<<<<<<<<<<<<<
  if (core_num_syms < 0)
    {
      fprintf (stderr, "%s: %s: %s\n", whoami, aout_name,
               bfd_errmsg (bfd_get_error ()));
      done (1);
    }

  core_syms = (asymbol **) xmalloc (core_num_syms);
  core_num_syms = bfd_canonicalize_dynamic_symtab (core_bfd, core_syms); 
<<<<<<<<<<<<<<<<

  if (core_num_syms < 0)
    {
      fprintf (stderr, "%s: %s: %s\n", whoami, aout_name,
               bfd_errmsg (bfd_get_error ()));
      done (1);
    }
--------------------------------------------------------------------------------

 But that does not work either. Do I need to do something else too (or is this 
not right)?
 (But slurp_dynamic_symtab() in binutils/objdump.c looks the same too).

 Any help would be greatly appreciated.

Thanks & Regards,
Anmol.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]