(argh, hit "post" by accident)

This probably won't generate a fault, because only integer accesses are
done to the target pointer in the generated code:

main () {
    printf("%f\n", *(double *)((char *)main + 2));
}

This probably will (but it depends on compiler options, and on what code
the compiler actually generates):

main () {
    printf("%f\n", *(double *)((char *)main + 2) + *(double *)((char *)main + 
6));
}

If the compiler loads the operands straight to VFP registers (needed
because an actual floating-point computation is done), the above code
will generate a SIGBUS.  If the compiler loads the operands to integer
registers first and then transfers them to the FPU, the code won't
generate a SIGBUS.  Optimisation can affect the result too.  In my
experiments, -O0 generally means that SIGBUS doesn't happen, since in
this case floating-point operands are usually loaded to integer
registers before being transferred to FPU registers.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/635199

Title:
  [armel] the ./H5detect test segfaults when built for armv7

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to