diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-17 15:13:04 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-17 15:13:04 +0000 |
| commit | 09498bb7aab9182ba172aae1045ca895d4f422d4 (patch) | |
| tree | e15844c5c27883f80b9a7482e78e164048b8ea92 /AGENTS/PITFALLS.md | |
| parent | d4f28b089b2818d23df8543db3130ac760f37ad8 (diff) | |
docs: document EXTERN and INCLUDE_OBJ
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'AGENTS/PITFALLS.md')
| -rw-r--r-- | AGENTS/PITFALLS.md | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/AGENTS/PITFALLS.md b/AGENTS/PITFALLS.md index 8f35c3d..551a64c 100644 --- a/AGENTS/PITFALLS.md +++ b/AGENTS/PITFALLS.md @@ -145,7 +145,13 @@ test programs. require casts even for literals. C scalar arithmetic uses native promotions, but / always returns REAL. Cast aliases must precede their use. long double may have padding; sizeof does not identify its floating-point format. Native - C support is verified on Linux LLVM 23; cross-target and EXTERN are unsupported. + C support is verified on Linux LLVM 23; cross-target is unsupported. +- **EXTERN "C" extension.** Top-level, body-less; parameters/results are C types only, + no BYREF/OVERLOAD/structs. Variadic arguments must be C values (default promotions). + The driver checks every EXTERN symbol against INCLUDE_OBJ inputs before CodeGen; + `"__libc"` must be included explicitly even though the runtime always links libc. + Only `.o` user objects; INCLUDE_OBJ is global across inputs. `-S` does not link them. + Two EXTERNs differing only in case conflict (pseudocode names are case insensitive). ## Not implemented (9618 features) |
