Output from objdump (had to use the external debug info off switch when compiling the binary in Lazarus).
also, the funny thing is that the binary runs fine so am shocked why it says
objdump: CryptoLib: Invalid bfd target
the bfd is the in memory debug symbol table objdump creates. The fact that it cannot create it is most likely the result of an incorrect (or downright missing) reference to the symbol tables contained in the exe.
The reason the binary runs fine is because the debugging info is not needed to run the executable. The debug info could be a complete mess and the OS would not be bothered to care but, a debugger that wants to use that information would definitely care a great deal.
The next thing you should do is, compile/build directly with the compiler from a command line, IOW, no Lazarus involved and re-run objdump on the exe produced directly by the compiler.
if objdump is "happy" with the exe then gdb will likely be happy too and, it would indicate that some setting in Lazarus is causing the debug info to be emitted incorrectly (or not emitted at all.)
if compiling directly yields the same result as what you posted then, the most likely reason is, the compiler is outputting invalid references to the debug symbol tables contained in the exe.