Skip to content

kencc: pcc was passing -J itself, and names -a now - #597

Merged
staalmannen merged 1 commit into
mainfrom
claude/upgrade-ape-c-library-mmZGd
Oct 7, 2026
Merged

staalmannen merged 1 commit into
mainfrom
claude/upgrade-ape-c-library-mmZGd

Conversation

@staalmannen

Copy link
Copy Markdown
Owner

pcc.c's if(!Aflag) block appended -J to the compiler on every invocation, commented "old/new decl mixture hack". In stock cc -J is not a named flag: it reached ARGBEGIN's default, set debug['J'], and nothing in the tree reads debug['J'] -- a no-op for its entire life. Giving the letter a meaning therefore turned conforming struct layout on by default for every APE compile that passed neither -A nor -B, which is the silent ABI split the flag exists to avoid.

It accounts for both loose ends of the previous round. structalign-test was run without -A or -B, so the command recorded as the control was the same compile as the one with -J, and its twelve predicted failures could not fire. cfrontsz-probe carries cfront's own -B, so no -J was appended and it measured the old rule in the same minute.

Also forward -a and -Z to the compiler. pcc named neither, so "pcc -a apeabi-probe.c" answered "cc: flag -a ignored" and compiled normally, and the acid dump the probe exists for could not be taken. -c is required alongside them: with -a the compiler writes acid to stdout and produces no object.

Twelve mkfiles spelled CC as an absolute path into $APEXPROOT where 48 others say plain pcc; normalised.

Claude-Session: https://claude.ai/code/session_01WGAwvvTwDg2yknFkmZ3qzs

pcc.c's if(!Aflag) block appended -J to the compiler on every
invocation, commented "old/new decl mixture hack".  In stock cc -J is
not a named flag: it reached ARGBEGIN's default, set debug['J'], and
nothing in the tree reads debug['J'] -- a no-op for its entire life.
Giving the letter a meaning therefore turned conforming struct layout
on by default for every APE compile that passed neither -A nor -B,
which is the silent ABI split the flag exists to avoid.

It accounts for both loose ends of the previous round.  structalign-test
was run without -A or -B, so the command recorded as the control was the
same compile as the one with -J, and its twelve predicted failures could
not fire.  cfrontsz-probe carries cfront's own -B, so no -J was appended
and it measured the old rule in the same minute.

Also forward -a and -Z to the compiler.  pcc named neither, so
"pcc -a apeabi-probe.c" answered "cc: flag -a ignored" and compiled
normally, and the acid dump the probe exists for could not be taken.
-c is required alongside them: with -a the compiler writes acid to
stdout and produces no object.

Twelve mkfiles spelled CC as an absolute path into $APEXPROOT where 48
others say plain pcc; normalised.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WGAwvvTwDg2yknFkmZ3qzs
@staalmannen
staalmannen merged commit 359dc61 into main Oct 7, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants