| Anonymous | Login | Signup for a new account | 2013-06-19 21:41 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | |||
| 0005088 | OCaml | OCaml general | public | 2010-06-25 00:56 | 2012-03-24 15:01 | |||
| Reporter | jp30 | |||||||
| Assigned To | xleroy | |||||||
| Priority | normal | Severity | major | Reproducibility | always | |||
| Status | closed | Resolution | fixed | |||||
| Platform | OS | OS Version | ||||||
| Product Version | 3.12.0+beta1 or 3.12.0+rc1 | |||||||
| Target Version | Fixed in Version | 3.12.0+beta1 or 3.12.0+rc1 | ||||||
| Summary | 0005088: ARCH_INT64_ALIGN incorrectly detected on linux / arm / gcc 4.4.3 | |||||||
| Description | The default behaviour of linux on ARM processors is to ignore alignment faults occurring in user processes (rather than sending a SIGBUS, as is normal on other alignment-sensitive architectures). The instruction causing the fault, however, has undefined results. Ocaml's configuration script attempts to detect alignment-sensitivity by trying to provoke a SIGBUS in config/auto-aux/int64align.c. On ARM systems running linux, the alignment fault is ignored, leading the configuration script to incorrectly unset ARCH_ALIGN_INT64 in config/m.h. Steps to reproduce: $ echo 0 > /proc/cpu/alignment # this is the default - ignore alignment faults $ ./configure && make world # will SIGSEGV $ grep ALIGN_INT64 config/m.h #undef ARCH_ALIGN_INT64 $ echo 4 > /proc/cpu/alignment # alignment faults now cause SIGBUS $ make clean && make world # will SIGBUS $ echo 4 > /proc/cpu/alignment # alignment faults cause SIGBUS $ ./configure && make world # build completes correctly $ grep ALIGN_INT64 config/m.h #define ARCH_ALIGN_INT64 Suggested remedy: Since ignoring alignment faults is default behaviour for linux on ARM, I suggest that the configure script set ARCH_ALIGN_INT64 for all arm*-linux hosts (as is already done for sparc). The problem doesn't seem to occur with gcc 4.3. Possibly earlier gccs don't provide native 64 bit ints on ARM??? | |||||||
| Tags | No tags attached. | |||||||
| Attached Files | ||||||||
Notes |
|
|
(0005580) xleroy (administrator) 2010-07-06 13:33 |
I'm at a loss to guess which ARM instructions generated by gcc could cause problem with 4-aligned 64-bit accesses. Nonetheless, I updated the configure script as suggested (force alignment for arm*-*-*). |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2010-06-25 00:56 | jp30 | New Issue | |
| 2010-07-06 13:33 | xleroy | Note Added: 0005580 | |
| 2010-07-06 13:33 | xleroy | Assigned To | => xleroy |
| 2010-07-06 13:33 | xleroy | Status | new => resolved |
| 2010-07-06 13:33 | xleroy | Resolution | open => fixed |
| 2010-07-06 13:33 | xleroy | Fixed in Version | => 3.12.0+beta1 |
| 2012-03-24 15:01 | xleroy | Status | resolved => closed |
| Copyright © 2000 - 2011 MantisBT Group |