Need help about Illegal instruction problem
David W. Hankins
dhankins at isc.org
Tue May 11 19:37:03 UTC 2010
On Sat, May 08, 2010 at 09:45:38AM +0800, LiGang wrote:
> 3. My problem is when i type "./dhclient eth0" on ARM board, illegal instruction problem happened.
My suspicion is that your cross-compile environment is setup for the
wrong variety of floating point unit that your arm board uses.
ARM defines at least four distinct (and incompatible) floating point
FPA (accelerated floating point instructions ncluded in cpu)
FPE (emulated floating point instructions using integer operands)
VFP (use a vector math hardware unit separate from the cpu)
iwMXXT (similar to IA-32 MMX extension)
These are all incompatible because they imply either the existence
or absence of FPU-specific registers, which are used by the ABI to
avoid pushing arguments through stack. You cannot link a program
in an environment for one and expect it to run in an environment for
Because 'dhclient' does not use any floating point internally (I have
actually been very careful to avoid any use of floating point because
of problems like these), I think on modern linkers it will link
correctly and run on the native system's libraries, no matter how they
were built (differently), but I admit this is a layer of magic that is
fuzzy without referring to references, so YMMV.
You're erring out on setfpucw(), which is the function linux uses to
set FPU control words. It is from glibc, which you are statically
linking from your build environment:
> [root at localhost dhcp-3.1.3]# make "CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc -static -DEBUG"
David W. Hankins BIND 10 needs more DHCP voices.
Software Engineer There just aren't enough in our heads.
Internet Systems Consortium, Inc. http://bind10.isc.org/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 197 bytes
Desc: not available
More information about the dhcp-users