There are three ABIs: hard, soft, and softfp.
In hard, the CPU is assumed to have an FPU. A floating point number is stored in a floating point register to call a floating point function. When I say function, I don't mean "10.0*2.0", I mean "foo(10.0)".
In soft, the CPU is assumed to not have an FPU. It is as you say, the floating point number is emulated, the floating point number is broken up and put into integer registers, and software math is done on it in integer space, which is very slow.
In softfp, the CPU may or may not have an FPU. A floating point number is broken up and stored in integer registers and the function that is called is then responsible for putting them back together to do standard FPU operations or call the floating point emulation if there's no FPU.
The Pandora is softfp. Before a program can call a function that uses floats it converts it to integer representation and stores it in integer registers. The function then has to reassemble it and store that into a float register.
If a PND calls a float function in a library and that library has been compiled hard float, it will look for its arguments in floating point registers. It will find junk.
The operating system is aware of what the library and application are compiled with. In order to prevent the junk that it knows will happen when you run a hard app against a soft library (or vice versa) I can see it refusing. I haven't actually tested this yet, I've got some other work I need to finish before I can get time on the boards, but hopefully this afternoon.