Created attachment 6696 [details] Example program showing different types of functions When I print expressions involving functions for which no debug information is available, the result is wrong. Consider the attached example program, and the following gdb session: (gdb) print sqrt $1 = {<text variable, no debug info>} 0x7ffff7879010 <sqrt> (gdb) print std::sqrt No symbol "sqrt" in namespace "std". (gdb) print mysqrt $2 = {double (double)} 0x40083c <mysqrt(double)> (gdb) print sqrt(0.5) $3 = 0 (gdb) print std::sqrt(0.5) No symbol "sqrt" in namespace "std". (gdb) print mysqrt(0.5) $4 = 0.25 I would expect the call "print sqrt(0.5)" to give an error message indicating that the expression cannot be printed due to missing debug information. Giving a wrong result without any indication that something is wrong is... wrong. Also, I'm puzzled as to why "print std::sqrt(0.5)" fails, given that the program compiles (so std::sqrt apparently exists). There is a related StackOverflow question at http://stackoverflow.com/questions/5122570/why-does-gdb-evaluate-sqrt3-to-0
Starting in 8.2, gdb won't assume the type of a function without debug info.