[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#890609: ocaml-native-compilers: Generates invalid assembly for arm64 when building hhvm



Package: ocaml-native-compilers
Version: 4.05.0-10
Severity: important
Tags: upstream

When building hhvm 3.21.0+dfsg-2 on arm64, the build fails with an
error compiling ocaml:

[ 47%] Built target ocaml
Finished, 28 targets (28 cached) in 00:00:00.
+ /usr/bin/ocamlopt.opt -c -g -w A -w -3-4-6-29-35-44-48-50-52 -I parser
-I heap -I monitor -I recorder -I utils -I fsnotify_linux -I globals -I socket -I naming -I hackfmt -I options -I client -I deps 
-I decl -I typing -I server -I procs -I hhi -I search -I debug -I diff -I format -I watchman_event_watcher -I libancillary -I stubs -I ast 
-I hhbc -I dfind -I watchman -I ide_rpc -I find -I utils/errors -I utils/lint -I utils/hg -I utils/disk -I utils/process -I utils/hh_json 
-I utils/collections -I hackfmt/error -I hackfmt/debug -I hackfmt/line_splitter -I injection/default_injector -I parser/coroutine 
-I parser/schema -I third-party/inotify -I third-party/core -I third-party/avl -o parser/full_fidelity_validated_syntax.cmx parser/full_fidelity_validated_syntax.ml
/tmp/camlasmbc9cd2.s: Assembler messages:
/tmp/camlasmbc9cd2.s:153: Error: immediate out of range
File "parser/full_fidelity_validated_syntax.ml", line 1:
Error: Assembler error, input left in file /tmp/camlasmbc9cd2.s
Command exited with code 2.
Compilation unsuccessful after building 754 targets (753 cached) in 00:00:10.
Makefile:176: recipe for target '_build/hh_server.native' failed
make[2]: *** [_build/hh_server.native] Error 10
hphp/hack/CMakeFiles/hack.dir/build.make:57: recipe for target 'hphp/hack/CMakeFiles/hack' failed  
make[1]: *** [hphp/hack/CMakeFiles/hack] Error 2
CMakeFiles/Makefile2:1388: recipe for target 'hphp/hack/CMakeFiles/hack.dir/all' failed
make: *** [hphp/hack/CMakeFiles/hack.dir/all] Error 2

Looking at the generated file /tmp/camlasmbc9cd2.s we find:
        adrp    x3, :got:camlFull_fidelity_validated_syntax__invalidate_list_with_6337
        ldr     x3, [x3, #:got_lo12:camlFull_fidelity_validated_syntax__invalidate_list_with_6337]
        str     x3, [x7, #16]
        str     x13, [x7, #24]
        str     x11, [x7, #32]
.L435:  sub     x27, x27, #8728
        cmp     x27, x28
        add     x0, x27, #8
        b.lo    .L436                          
        str     x0, [sp, #96]
        movz    x4, #17, lsl #16 

and 
sub     x27, x27, #8728
is the offending instruction (line 153). I assume that that immediate really is
out of range, which suggests that the ocaml compiler is generating
assembler that isn't actually valid?

Other ocaml projects are building OK on arm64 so it does normally work.

hhvm had arm64 added some time ago and it was released in v2.1 so this
should all work, and we are testing the upstream build. So it's odd
that this is FTBFS on Debian.

We will investigate this further at Arm to see if we can work out
what's going on, but if you have any suggestions for confirming that 
this is/is not an ocaml issue rather than an hhvm issue, please respond.

-- System Information:
Debian Release: sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: arm64 (aarch64)

Kernel: Linux 4.14.0-3-arm64
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages ocaml-native-compilers depends on:
ii  binutils     2.29.90.20180122-1
ii  gcc          4:7.2.0-1d1
ii  libc6        2.26-5
ii  libncurses5  6.0+20171125-1
ii  libtinfo5    6.0+20171125-1
pn  ocaml-nox    4.05.0-10

ocaml-native-compilers recommends no packages.

ocaml-native-compilers suggests no packages.


Reply to: