-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Solaris Sparc build broken due to deprecated & operator in asmcomp/emit.ml (generated from asmcomp/sparc/emit.mlp) #6227
Comments
Comment author: @johnwhitington Once this is fixed, and the build started again from scratch, the next error, again in make.opt is: cd stdlib; make allopt So it looks like something else is wrong too. |
Comment author: @johnwhitington I've attached a diff for the first problem (& vs &&). |
Comment author: @alainfrisch Patch committed to the trunk (rev 14271), thanks. |
Comment author: @johnwhitington Thanks Alain. For the next problem, I'm new to hacking the compiler, and have a question: Here's the error I'm trying to track down: ../boot/ocamlrun ../ocamlopt -warn-error A -nostdlib -g Presumably this error is from ../ocamlopt rather than ../boot/ocamlrun? How can I get the ../ocamlopt built in the "make world" phase linked with -g? |
Comment author: @alainfrisch Thanks to you for tracking this down (I don't think any OCaml developer as access to a Sparc Solaris machine these days -- it would be great if the ocamlot project could have such an access). Adding "-g" to the COMPFLAGS variable in the main Makefile should give you an ocamlopt which supports backtraces (assuming you define OCAMLRUNPARAM=b=1). |
Comment author: @johnwhitington So with COMPFLAGS and LINKFLAGS with -g, I get this ../boot/ocamlrun ../ocamlopt -warn-error A -nostdlib -g Which doesn't seem immediately helpful, since line 109 in optcompile is a reraise of a problem which is probably in Asmgen.compile_implementaion at line 98. If one removes the try…with block to allow the real error to be apparent: ../boot/ocamlrun ../ocamlopt -warn-error A -nostdlib -g I'm using a customer's machine, so unfortunately I can't give you access to it, but I can try out patches. bash-2.03$ uname -a The problem must be new since OCaml 3.10.2, since that's the version the customer is already using, and I compiled it for them. On the question of machines for testing, my customer is using www.siteox.com which will rent Solaris, AIX and HP/UX machines by the day, so I think I'll do that for the next version of our command line PDF tools, and try to ship binaries for all those platforms. |
Comment author: @mshinwell Could you add a line between lines 104 and 105 of asmcomp/coloring.ml (immediately after the "let n =", but before the "if") to print the values of the following: n I have a feeling that [n] may be negative... |
Comment author: @xavierleroy I was able to reproduce and narrow the problem. It seems to stem from Sparc's peculiar C calling conventions whereas float arguments are passed in pairs of integer registers. This causes an ill-typed preference to be recorded between a float variable and an integer register. I'm preparing a fix. |
Comment author: @xavierleroy Tentative fix committed to 4.01 branch (r14272) and to trunk (r14273). Patch against 4.01 attached to this PR, name r14272.diff. Feedback welcome. |
Comment author: @glondu ocamlopt now compiles on sparc and the only tests that fail are related to backtraces... but those failures are not specific to sparc so they deserve their own report (if any). |
Comment author: @johnwhitington Both "make opt" and "make opt.opt" now complete here. Thanks! |
Original bug ID: 6227
Reporter: @johnwhitington
Assigned to: @mshinwell
Status: closed (set by @xavierleroy on 2015-12-11T18:24:21Z)
Resolution: fixed
Priority: normal
Severity: major
Version: 4.01.0
Category: back end (clambda to assembly)
Has duplicate: #6229
Bug description
In "make opt":
byterun/ocamlrun tools/cvt_emit < asmcomp/sparc/emit.mlp > asmcomp/emit.ml
|| { rm -f asmcomp/emit.ml; exit 2; }
boot/ocamlrun boot/ocamlc -nostdlib -I boot -strict-sequence -w +33..39 -warn-error A -I utils -I parsing -I typing -I bytecomp -I asmcomp -I driver -I toplevel -c asmcomp/emit.mli
boot/ocamlrun boot/ocamlc -nostdlib -I boot -strict-sequence -w +33..39 -warn-error A -I utils -I parsing -I typing -I bytecomp -I asmcomp -I driver -I toplevel -c asmcomp/emit.ml
File "asmcomp/emit.ml", line 663, characters 28-29:
Warning 3: deprecated feature: operator (&); you should use (&&) instead
File "asmcomp/emit.ml", line 667, characters 24-25:
Warning 3: deprecated feature: operator (&); you should use (&&) instead
File "asmcomp/emit.ml", line 671, characters 24-25:
Warning 3: deprecated feature: operator (&); you should use (&&) instead
File "asmcomp/emit.ml", line 632, characters 55-56:
Warning 3: deprecated feature: operator (&); you should use (&&) instead
File "asmcomp/emit.ml", line 633, characters 56-57:
Warning 3: deprecated feature: operator (&); you should use (&&) instead
File "asmcomp/emit.ml", line 67, characters 26-27:
Warning 3: deprecated feature: operator (&); you should use (&&) instead
File "asmcomp/emit.ml", line 1:
Error: Some fatal warnings were triggered (6 occurrences)
make[1]: *** [asmcomp/emit.cmo] Error 2
make[1]: Leaving directory `/export/home/admin/cpdf.solaris8.2013.10.28/ocaml-4.01.0'
make: *** [opt] Error 2
File attachments
The text was updated successfully, but these errors were encountered: