Skip to content

Bootstrap problem when moving Cont_tag to be after No_scan_tag #11182

@ctk21

Description

@ctk21

As things stand, we tag pointers to stacks in continuation objects to avoid them getting entangled with the GC; however if Cont_tag were after No_scan_tag then it looks like we could avoid this (making various bits of assembler and C code simpler).

However in my attempt to move the tags around, I could not bootstrap the compiler using the instructions in BOOTSTRAP.adoc. The commit I was attempting to bootstrap is here; this commit shuffles the tags such that Cont_tag is after No_scan_tag. I tried stepping through the make bootstrap commands and the problem arises at the $(MAKE) library-cross point with:

../runtime/ocamlrun ../ocamlc -strict-sequence -absname -w +a-4-9-41-42-44-45-48-70 -g -warn-error +A -bin-annot -nostdlib -principal -safe-string -strict-formats  -nopervasives -c camlinternalFormatBasics.mli

This command causes a segmentation fault in intern_alloc_obj. I believe the problem is that the new runtime (with new tag conventions) is attempting to read a binary file produced with the old runtime (with old tag conventions).

I'm not exactly sure how to proceed to make the bootstrap work and so any advice on how best to achieve this would be welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions