Subject: bug#75451: scratch/igc: Enable CHECK_STRUCTS

From: Pip Cet <[email-masked]>
Date: Sat, 01 Feb 2025 18:05:45 +0000

"Pip Cet via \"Bug reports for GNU Emacs, the Swiss army knife of text editors\"" <[email-masked]> writes:

>>> Also, we should include them in the nativecomp ABI hash
>>
>> +1
>
> Here's a patch series:

Gentle ping!

> 1. fix a minor bug in dmpstruct.awk: it would continue to write lines to
> dmpstruct.tmp in some cases after generating the hash.  This was
> harmless because the hash was already generated, but it broke my first
> attempt's code.

No new problems discovered there.

> 2. generate a hash covering all structs.  It's not a hash-of-hashes, but
> it does the same thing.

Seems to work, but we won't know until we use it :-)

> 3. include it in the nativecomp ABI hash.  This will cause all .eln files to
> be rebuilt when it is applied!  (Unless we win the lottery and hit a
> hash collision, that is.  This is entirely possible because the
> nativecomp hash is only 32 bits.)

I'm willing to delay this optional feature if there are concerns.

> 4. always build dmpstruct.h.  This will avoid the problematic situation
> in which Emacs builds on a system, we try to rebuild with
> --enable-checking=all to catch the bug, and it won't build.

If (3) is delayed, there's no point doing (4) either for the time being.
We can do it when feature/igc is merged or when the nativecomp hash is
changed, whichever comes earlier.

> 5. Generate an sed script to adjust all hashes.  I think Emacs
> developers are adults (or very precocious children) and can be trusted
> with this powerful tool.

Let's please do this!  I just bumped hashes by hand in two trees, and

make -C src fix-hashes

would have been more convenient.

> 6. Mark autogenerated files as autogenerated.  I see no reason not to do
> that.

Shouldn't break anything.

> 7. Adjust hashes (they changed because of (6)).

Obviously I want to test our new toy.

> (Might break the DOS build.  I'll check.)

While I had some intermediate successful DOS builds, the DOS build is
broken right now because of the no-purespace merge (we're working on
fixing it!), so we might take this opportunity to do this at the same
time.

What's the best way to move forward here?  I'd like to do the awk
changes (1), (2), (5), (6) first, and do (7) manually one last time
while we decide whether a make target is appropriate here.

I just saw this bug was closed, I can open a new one if it helps!

Pip