Hi,
On linux, with gdb, I'm trying to trace into openssl while it's going into FIPS mode. I've built the canister and then the openssl tree (which includes the openssl cmd line utility).

Here's the output I'm getting:

   *$ export OPENSSL_FIPS=1*
   *$ gdb openssl*
   GNU gdb 6.6-5.1bgr ()
   Copyright (C) 2006 Free Software Foundation, Inc.
   GDB is free software, covered by the GNU General Public License, and
   you are
   welcome to change it and/or distribute copies of it under certain
   conditions.
   Type "show copying" to see the conditions.
   There is absolutely no warranty for GDB.  Type "show warranty" for
   details.
   This GDB was configured as ""...
   Using host libthread_db library "/lib/tls/libthread_db.so.1".
   *(gdb) break FIPS_mode_set*
   Function "FIPS_mode_set" not defined.
   Make breakpoint pending on future shared library load? (y or [n]) y
   Breakpoint 1 (FIPS_mode_set) pending.
   (gdb) r
   Starting program: /usr/bin/openssl
   Breakpoint 2 at 0x777efee0
   Pending breakpoint "FIPS_mode_set" resolved

   *Breakpoint 2, 0x777efee0 in FIPS_mode_set () from
   /usr/lib/libcrypto.so.0.9.8*
   *(gdb) step**
   **Single stepping until exit from function FIPS_mode_set, *
   which has no line number information.
   0x77753567 in __i686.get_pc_thunk.bx () from /usr/lib/libcrypto.so.0.9.8
   (gdb) step
   Single stepping until exit from function __i686.get_pc_thunk.bx,
   which has no line number information.
   0x777efeec in FIPS_mode_set () from /usr/lib/libcrypto.so.0.9.8
   (gdb) step
   Single stepping until exit from function FIPS_mode_set,
   which has no line number information.
   main (Argc=1, Argv=0x7fe146c4) at openssl.c:245

As you can see, after I hit the break point, and try to step into it, It seems to skip over actually going into the routine.

The file command says that /usr/lib/libcrypto.so.0.9.8 is not stripped:

   $ file /usr/lib/libcrypto.so.0.9.8
   /usr/lib/libcrypto.so.0.9.8: ELF 32-bit LSB shared object, Intel
   80386, version 1 (SYSV), not stripped

And the FIPS canister that was build doesn't appear to be stripped:

   $ file fipscanister.o
   fipscanister.o: ELF 32-bit LSB relocatable, Intel 80386, version 1
   (SYSV), not stripped

And, I don't see anything in the Makefile that pulls in the canister that is stripping it.

So, I'm a little confused as to why I'm unable to trace into the source..

It there some documentation that explains how to build things for debugging? Are there some config flags I need to pass?

Thanks.  Any help would be appreciated.


Reply via email to