[Top][All Lists]

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

Re: build fails on MacOS/MachO: not ELF or COFF

From: Luca Saiu
Subject: Re: build fails on MacOS/MachO: not ELF or COFF
Date: Mon, 11 May 2020 17:34:35 +0200
User-agent: Gnus (Gnus v5.13), GNU Emacs 27.0.50, x86_64-pc-linux-gnu

Hello Niobos.  Welcome, and thanks for your very clear bug report.

I am going to repeat here some information you know already, for the
benefit of other subscribers and in order to keep a public archive of
the discussion.

On 2020-05-11 at 13:10 +0000, Niobos wrote:

>> In file included from jitter/jitter-mutable-routine.c:29:
>> In file included from ./jitter/jitter-vm.h:29:
>> In file included from ./jitter/jitter-patch-in.h:34:
>> ./jitter/jitter-sections.h:268:3: error: "Not using ELF or COFF.  This will 
>> not work."
>> # error "Not using ELF or COFF.  This will not work."
>>   ^
>> 1 error generated.
> The error is correct, since I'm building on MacOS, which uses the MachO
> file format.

This error is unintended, and in fact a bug.  A default build (for
example configure with no options then make) is supposed to work even on
an unsupported system, using the switch or direct-threading dispatch.

Explicit binary format support is useful for better performance and
required by more advanced distpatches, but such dispatches are currently
disabled by default anyway.

> According to the discussion I had with lucasaiu on IRC, Jitter should
> fall back to a generic system, but apparently it doesn't.


Now, I would like to fix the bug and also to seize the occasion to be
able to possibly prepare Mach-O-specific code later.

> Attached you can find the config.log. I've re-run ./configure with (I
> think) the same arguments, and attached the output as well.

So, the configuration phase succeeds, which I could have deduced from
your initial report, but did not.

From configure.log :

> checking if the host OS uses the ELF binary format... no
> checking if the host OS uses the COFF binary format... no
> checking for VirtualAlloc... no
> checking for VirtualProtect... no

All correct.  Let me add a configure test to check for Mach-O as well,
at least in the common case.

> configure: enabled dispatching models are:
>   switch direct-threading
> configure: the best enabled dispatching model is:
>   direct-threading

Good.  The sectioning mechanism will not be needed.

The configure script appears to do its job correctly.  The bug is
probably in CPP conditionals using feature macros...

...And now I should have fixed it now in the "niobos" Jitter branch.  It
is more complicated than I would like but hopefully correct.

Can you please test again, by compiling only Jitter?

Please do the following:

* Enter a fresh, empty directory.
* Clone the repository:
  git clone http://git.ageinghacker.net/jitter
* Enter the jitter source subdirectory:
  cd jitter
* Enter the bugfix branch:
  git checkout niobos
* bootstrap, configure and build in the current directory:
  ./bootstrap && ./configure && make && make check
  You may add options to configure if you think it is useful, for
  example in order to reproduce your earlier Poke build; I ignore the
  details about how you were building Poke on your system.
  The testsuite is a little heavyweight, but let us run it once.

If you confirm that the new version works I can try and add
Mach-O-specific sectioning code, with your help.  And, even before that,
we will have Poke use the new version.


Luca Saiu
* My personal web site:  http://ageinghacker.net
* GNU epsilon:           http://www.gnu.org/software/epsilon
* Jitter:                http://ageinghacker.net/projects/jitter

I support everyone's freedom of mocking any opinion or belief, no
matter how deeply held, with open disrespect and the same unrelented
enthusiasm of a toddler who has just learned the word "poo".

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]