The following program:

#include <stdio.h>
#include <math.h>

int main() {
  printf("asin(1.0) = %f\n", asin(1.0));
  return 0;
}

prints correctly 1.570796, but "p asin(1.0)" from within gdb prints 0. However,
this work fine:

(gdb) p ((double (*)(double))asin) (1.0)
$4 = 1.5707963267948966

Or, with libc debug symbols installed:

(gdb) p __asin (1.0)
$5 = 1.5707963267948966


The explanation from Daniel Jacobowitz is:
The C library does not contain debug info for a function named 'asin',
because the implementation is __asin, so GDB does not know it returns
a double.  Also, GCC does not emit debug info for the called function
- I don't know why it doesn't, but probably to save space.


-- 
           Summary: GCC does not emit debug info for a called function
           Product: gcc
           Version: 4.3.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: arthur dot loiret at gmail dot com
 GCC build triplet: i486-linux-gnu
  GCC host triplet: i486-linux-gnu
GCC target triplet: i486-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39814

Reply via email to