Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

fix(cl): temporary cglm macro redefinitions emit duplicate Go constants

Aperta
#1,000 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
c, go
Ambito
compilers

Direzione di ricerca

Start in cl/preprocessor.go, in loadMacro, where repeated macro values are tolerated but a new constant is otherwise emitted. Reproduce by running llcppg over the cglm include tree, focusing on include/cglm/io.h where m and n are defined, undefined and redefined. Done when the cglm generation no longer panics with M redeclared and the macro handling is consistent for undefined and redefined macros.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug to be confirm

Observed failure

The cglm recursive installed-header generation panics because the temporary C macro m is emitted twice as Go constant M with different values.

panic: .../include/cglm/io.h:168:9: M redeclared in this block
    previous declaration at .../include/cglm/io.h:125:9
.../cl/preprocessor.go:88

Confirmed Linux amd64 job, from migration PR #43. The Linux arm64 job in the same run also has the same generation failure. Formula testing, input preparation, and the LLGo/llcppg builds passed; macOS jobs were still pending when this report was prepared.

Input and versions

  • llcppg: 8fc0f987e41ffe4b4f608e9541422b460ea89fea; LLGo: afe9a5407260348b18c7104e98d76cb5cdf48b29; LLVM 21.
  • Actual source: recp/cglm v0.9.6, commit 144d1e7c29b3b0c6dede7917a0476cc95248559c, not the Formula's older floor tag.
  • Failed index head: 8a37735.
{
  "Name": "cglm",
  "Language": "c",
  "Dir": "./include/...",
  "FuncPrefix": ["glm_"],
  "LLGoPackage": "link: $(pkg-config --libs cglm)"
}

The CI stages the entire installed include tree, initializes the source Go module, and runs llcppg -v ./generated ./source without a Files allowlist.

Macro sequence

In include/cglm/io.h, the matrix-print helpers use this legal define/undef/redefine sequence inside their function bodies:

#define m 4
#define n 4
/* first helper body */
#undef m
#undef n
/* later helper */
#define m 3
#define n 3

The source uses lowercase m; the diagnostic names its generated uppercase Go constant M. This sequence is not two simultaneously active C definitions. Source inspection shows cl/preprocessor.go is unchanged between the CI pin and main aab6dbf0baedc47b42f9576a65dd79ce6715e31a: loadMacro tolerates a repeated value but otherwise emits a new constant. Latest main has not been executed for this report.

The same generation log has earlier diagnostics for undeclared glms_aabb2d_size and missing ../common.h in the handed quaternion headers. Their origin has not been established, and this issue does not claim the macro failure explains those diagnostics.

Expected behavior

Handle temporary/undefined/redefined macros consistently instead of creating colliding top-level Go declarations and panicking. No MacroIgnore, header exclusions, or native-header changes have been applied to hide the failure.

Lingua principale
Go
Stelle
39
Fork
13
Merge medio
1h 28m
PR unite (30g)
256

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di goplus/llcppg

Tutte le issue di goplus/llcppg

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.