qt/qtsvg: apply CVE-2026-6210 patch (heap-overflow in QSvgMarker::drawHelper)

Cherry-picked from Qt upstream (commit e488f852fa18c2afc2842a88eff8f66ad4105a45).
Original patch source:
https://download.qt.io/official_releases/qt/6.11/CVE-2026-6210-qtsvg-6.11.diff

Fix: Test types of nodes before downcasting them. A bad cast in
QSvgMarker::drawHelper led to endless recursion resulting in a heap
overflow. While fixing that, another similar case was also fixed.
This commit is contained in:
2026-07-11 01:36:28 +03:00
parent 48021ef39c
commit 311a96bc94
25 changed files with 1326 additions and 946 deletions
+190
View File
@@ -0,0 +1,190 @@
>>> Red Bear OS version: 0.3.0 (from git branch)
========================================
Red Bear OS Build System
========================================
Config: redbear-full
Jobs: 16
Apply patches: 1
Upstream: 0
Root: RedBear-OS
========================================
>>> Skipping overlay repair (causes recipe symlink corruption)
>>> Enforcing local-over-WIP recipe policy...
>>> Stashing dirty fork sources (restored at exit)...
[clean] relibc
[clean] kernel
[clean] base
[clean] bootloader
[clean] installer
[clean] redoxfs
[clean] libredox
[clean] syscall
[clean] userutils
(all fork sources clean)
>>> Patches are applied by 'repo fetch' via recipe.toml (atomic mechanism)
>>> Skipping direct patch application (was bypassing cookbook atomicity)
>>> Rebuilding cookbook binary (source changed: bf6ea09347e5 != b4eb7969b796)...
Finished `release` profile [optimized] target(s) in 0.18s
>>> Refreshing relibc staged surface for full desktop target...
DEBUG: auto_deps.toml reconstructed from repo depends (may miss ELF dynamic deps)
DEBUG: dependency blake3 hashes unchanged (content-based cache)
DEBUG: using cached build
cook relibc - cached
repo - publishing relibc
repo - generating repo.toml
>>> WARNING: No AMD firmware blobs found.
Run: ./local/scripts/fetch-firmware.sh
GPU driver will NOT function without firmware.
>>> Building Red Bear OS with config: redbear-full
>>> This may take 30-60 minutes on first build...
>>> Build preflight: redbear-full
>>> Preflight note: overlay integrity script reported legacy issues; continuing with build-focused checks.
>>> Preflight: fork versions verified against upstream.
=== Validating source trees for config: redbear-full ===
MISSING: local/recipes/kde/plasma-desktop
MISSING: local/recipes/kde/plasma-framework
MISSING: local/recipes/kde/plasma-workspace
Total (config): 158
Present: 155
Missing: 3
To restore: ./local/scripts/restore-sources.sh --release=<release>
Source tree validation complete.
WARN: missing blake3 for tar recipe: local/recipes/dev/flex/recipe.toml
WARN: missing blake3 for tar recipe: local/recipes/libs/icu/recipe.toml
WARN: missing blake3 for tar recipe: local/recipes/kde/kde-cli-tools/recipe.toml
WARN: missing blake3 for tar recipe: local/recipes/kde/kglobalacceld/recipe.toml
WARN: missing blake3 for tar recipe: local/recipes/dev/m4/recipe.toml
WARN: missing blake3 for tar recipe: local/recipes/dev/meson/recipe.toml
WARN: missing blake3 for tar recipe: local/recipes/kde/plasma-desktop/recipe.toml
>>> Preflight note: relibc staged libc.so missing C++ strtold compatibility export; top-level build should refresh/sync it before compilation.
>>> Build preflight passed
Target version: 0.3.0 (from branch '0.3.0')
Cat 2 suffix: +rb0.3.0
=== Phase 1: Cat 1 — In-house crates ===
DRIFT: firmware-loader 0.1.0 → 0.3.0 (local/recipes/system/firmware-loader/source/Cargo.toml)
=== Phase 2: Cat 2 — Upstream forks ===
Cat 1: checked 75, drift 1
Cat 2: checked 0, drift 0
FAIL: 1 version drift(s) found
WARNING: In-house crate version drift detected. Run './local/scripts/sync-versions.sh' to fix.
Continuing build — versions will be corrected on next source fetch.
>>> Pre-cooking critical packages...
cooking llvm21...
./local/scripts/build-redbear.sh: строка 625: 4107958 Убито REDBEAR_BUILD_PHASE=pre-cook COOKBOOK_OFFLINE="$PRECOOK_OFFLINE" "$PROJECT_ROOT/target/release/repo" cook "$pkg" > "$log" 2>&1
WARNING: pre-cook of llvm21 failed (non-fatal; will build during main phase). Tail of repo log:
[1516/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/SampleContextTracker.cpp.o
[1517/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/OpenMPOpt.cpp.o
[1518/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/SampleProfileMatcher.cpp.o
[1519/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/MemProfContextDisambiguation.cpp.o
[1520/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/StripDeadPrototypes.cpp.o
[1521/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/SampleProfileProbe.cpp.o
[1522/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/SCCP.cpp.o
[1523/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/StripSymbols.cpp.o
[1524/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/SampleProfile.cpp.o
[1525/2555] Linking CXX static library lib/libLLVMLinker.a
[1526/2555] Linking CXX static library lib/libLLVMVectorize.a
[1527/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/MachOObjectFormat.cpp.o
[1528/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/ObjectFormats.cpp.o
[1529/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/AllocationActions.cpp.o
[1530/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/OrcError.cpp.o
[1531/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/OrcRTBridge.cpp.o
[1532/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/SimpleRemoteEPCUtils.cpp.o
[1533/2555] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/SymbolStringPool.cpp.o
[1534/2555] Linking CXX static library lib/libLLVMSelectionDAG.a
[1535/2555] Building CXX object lib/IRPrinter/CMakeFiles/LLVMIRPrinter.dir/IRPrintingPasses.cpp.o
[1536/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/CSEInfo.cpp.o
[1537/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/ThinLTOBitcodeWriter.cpp.o
[1538/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/CSEMIRBuilder.cpp.o
[1539/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/GlobalISel.cpp.o
[1540/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/CallLowering.cpp.o
[1541/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/GISelValueTracking.cpp.o
[1542/2555] Building CXX object lib/Transforms/IPO/CMakeFiles/LLVMipo.dir/WholeProgramDevirt.cpp.o
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp: In function 'void llvm::updateIndexWPDForExports(ModuleSummaryIndex&, function_ref<bool(StringRef, ValueInfo)>, std::map<ValueInfo, std::vector<VTableSlotSummary> >&)':
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:967:11: warning: possibly dangling reference to a temporary [-Wdangling-reference]
967 | auto &S = VI.getSummaryList()[0];
| ^
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:967:36: note: the temporary was destroyed at the end of the full expression '(& VI)->llvm::ValueInfo::getSummaryList().llvm::ArrayRef<std::unique_ptr<llvm::GlobalValueSummary> >::operator[](0)'
967 | auto &S = VI.getSummaryList()[0];
| ^
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp: In function 'bool AddCalls({anonymous}::VTableSlotInfo&, const llvm::ValueInfo&)':
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:1297:9: warning: possibly dangling reference to a temporary [-Wdangling-reference]
1297 | auto &S = Callee.getSummaryList()[0];
| ^
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:1297:38: note: the temporary was destroyed at the end of the full expression '(& Callee)->llvm::ValueInfo::getSummaryList().llvm::ArrayRef<std::unique_ptr<llvm::GlobalValueSummary> >::operator[](0)'
1297 | auto &S = Callee.getSummaryList()[0];
| ^
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp: In member function 'bool {anonymous}::DevirtIndex::trySingleImplDevirt(llvm::MutableArrayRef<llvm::ValueInfo>, llvm::VTableSlotSummary&, {anonymous}::VTableSlotInfo&, llvm::WholeProgramDevirtResolution*, std::set<llvm::ValueInfo>&)':
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:1402:9: warning: possibly dangling reference to a temporary [-Wdangling-reference]
1402 | auto &S = TheFn.getSummaryList()[0];
| ^
/mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/source/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:1402:37: note: the temporary was destroyed at the end of the full expression 'TheFn.llvm::ValueInfo::getSummaryList().llvm::ArrayRef<std::unique_ptr<llvm::GlobalValueSummary> >::operator[](0)'
1402 | auto &S = TheFn.getSummaryList()[0];
| ^
[1543/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/Combiner.cpp.o
[1544/2555] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/CombinerHelperArtifacts.cpp.o
cooking mesa...
./local/scripts/build-redbear.sh: строка 625: 4138939 Убито REDBEAR_BUILD_PHASE=pre-cook COOKBOOK_OFFLINE="$PRECOOK_OFFLINE" "$PROJECT_ROOT/target/release/repo" cook "$pkg" > "$log" 2>&1
WARNING: pre-cook of mesa failed (non-fatal; will build during main phase). Tail of repo log:
-- Setting native build dir to /mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/target/x86_64-unknown-redox/build/NATIVE
-- Setting native stamp dir to /mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/target/x86_64-unknown-redox/build/NATIVE-stamps
-- Targeting X86
-- Not building llvm-mt because libxml2 is not available
-- LLVM FileCheck Found: /home/kellito/.redoxer/x86_64-unknown-redox/toolchain/bin/FileCheck
-- Google Benchmark version: v0.0.0, normalized to 0.0.0
-- Performing Test HAVE_GNU_POSIX_REGEX -- failed to compile
-- Performing Test HAVE_POSIX_REGEX -- success
-- Performing Test HAVE_STEADY_CLOCK -- success
-- Performing Test HAVE_PTHREAD_AFFINITY -- success
-- Configuring done (0.9s)
-- Generating done (0.8s)
-- Build files have been written to: /mnt/data/Builds/RedBear-OS/recipes/dev/llvm21/target/x86_64-unknown-redox/build
+ ninja -j4
[1/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroAnnotationElide.cpp.o
[2/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/Coroutines.cpp.o
[3/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroCleanup.cpp.o
[4/989] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/MachineIRBuilder.cpp.o
[5/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroConditionalWrapper.cpp.o
[6/989] Building CXX object lib/CodeGen/GlobalISel/CMakeFiles/LLVMGlobalISel.dir/Utils.cpp.o
[7/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroEarly.cpp.o
[8/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroElide.cpp.o
[9/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/SuspendCrossingInfo.cpp.o
[10/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroFrame.cpp.o
[11/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/CoroSplit.cpp.o
[12/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/MaterializationUtils.cpp.o
[13/989] Building CXX object lib/Transforms/Coroutines/CMakeFiles/LLVMCoroutines.dir/SpillUtils.cpp.o
[14/989] Building CXX object lib/Transforms/CFGuard/CMakeFiles/LLVMCFGuard.dir/CFGuard.cpp.o
[15/989] Building CXX object lib/Option/CMakeFiles/LLVMOption.dir/Arg.cpp.o
[16/989] Building CXX object lib/Option/CMakeFiles/LLVMOption.dir/ArgList.cpp.o
[17/989] Building COFFOptions.inc...
[18/989] Linking CXX static library lib/libLLVMOrcShared.a
[19/989] Building CXX object lib/Option/CMakeFiles/LLVMOption.dir/Option.cpp.o
[20/989] Building CXX object lib/Transforms/HipStdPar/CMakeFiles/LLVMHipStdPar.dir/HipStdPar.cpp.o
[21/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/DefaultHostBootstrapValues.cpp.o
[22/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/JITLoaderGDB.cpp.o
[23/989] Building CXX object lib/Option/CMakeFiles/LLVMOption.dir/OptTable.cpp.o
[24/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/JITLoaderPerf.cpp.o
[25/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/JITLoaderVTune.cpp.o
[26/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/ExecutorSharedMemoryMapperService.cpp.o
[27/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/RegisterEHFrames.cpp.o
[28/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/SimpleExecutorDylibManager.cpp.o
[29/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/OrcRTBootstrap.cpp.o
[30/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/TargetExecutionUtils.cpp.o
[31/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/SimpleExecutorMemoryManager.cpp.o
[32/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/UnwindInfoManager.cpp.o
[33/989] Building CXX object lib/ExecutionEngine/Orc/TargetProcess/CMakeFiles/LLVMOrcTargetProcess.dir/SimpleRemoteEPCServer.cpp.o
[34/989] Building CXX object lib/ExecutionEngine/RuntimeDyld/CMakeFiles/LLVMRuntimeDyld.dir/RTDyldMemoryManager.cpp.o
[35/989] Building CXX object lib/ExecutionEngine/RuntimeDyld/CMakeFiles/LLVMRuntimeDyld.dir/JITSymbol.cpp.o
[36/989] Building CXX object lib/ExecutionEngine/RuntimeDyld/CMakeFiles/LLVMRuntimeDyld.dir/RuntimeDyldCOFF.cpp.o
cooking libdrm...
cooking libepoxy...
+74
View File
@@ -0,0 +1,74 @@
From 8368ba6ff143bd6b9a7fdf235918285d9b1f5d2a Mon Sep 17 00:00:00 2001
From: Robert Löhning <robert.loehning@qt.io>
Date: Thu, 26 Mar 2026 13:42:19 +0100
Subject: [PATCH] Test types of nodes before downcasting them
A bad cast in QSvgMarker::drawHelper lead to an endless recursion
resulting in a heap overflow. Credit to OSS-Fuzz which found this as
issue 496327371.
Amends 534d072fe9c060ca3d1b968a717513426c69c956
While fixing that, I found another, similar case and fixed it, too,
although it didn't seem to cause a crash.
Amends 29b848e9ac4e4e13c5b50116a81b1f2677196939
Pick-to: 6.8
Change-Id: Ia57491aa329fea981307a709c5a6a750125fe2c7
Reviewed-by: Hatem ElKharashy <hatem.elkharashy@qt.io>
(cherry picked from commit e488f852fa18c2afc2842a88eff8f66ad4105a45)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
---
diff --git a/src/svg/qsvgstructure.cpp b/src/svg/qsvgstructure.cpp
index 23606e6..5bf485e 100644
--- a/src/svg/qsvgstructure.cpp
+++ b/src/svg/qsvgstructure.cpp
@@ -426,9 +426,10 @@
const bool isPainting = (boundingRect == nullptr);
const auto markers = markersForNode(node);
for (auto &i : markers) {
- QSvgMarker *markNode = static_cast<QSvgMarker*>(node->document()->namedNode(i.markerId));
- if (!markNode)
+ QSvgNode *referencedNode = node->document()->namedNode(i.markerId);
+ if (!referencedNode || referencedNode->type() != QSvgNode::Marker)
continue;
+ QSvgMarker *markNode = static_cast<QSvgMarker *>(referencedNode);
p->save();
p->translate(i.x, i.y);
@@ -729,8 +730,9 @@
// Chrome seems to return the mask of the mask if a mask is set on the mask
if (this->hasMask()) {
- QSvgMask *maskNode = static_cast<QSvgMask*>(document()->namedNode(this->maskId()));
- if (maskNode) {
+ QSvgNode *referencedNode = document()->namedNode(this->maskId());
+ if (referencedNode && referencedNode->type() == QSvgNode::Mask) {
+ QSvgMask *maskNode = static_cast<QSvgMask *>(referencedNode);
QRectF boundsRect;
return maskNode->createMask(p, states, localRect, &boundsRect);
}
diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
index 118f200..7bbbedc 100644
--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
@@ -1868,6 +1868,17 @@
// runtime error: signed integer overflow: -2147483648 + -1 cannot be represented in type 'int'
QTest::newRow("excessive moveto in path") // id=406541912
<< R"(<svg><path stroke="#000" d="M- 7e8t9 ."/><marker id="c"/><use href=" c"/></svg>)"_ba;
+ // Bad-cast to QSvgMarker from QSvgLine -> Heap-buffer-overflow
+ QTest::newRow("line-as-marker") // id=496327371
+ << R"-(<svg><line x1="4" id="lledr" marker-end="url(#lledr)" stroke="#00f"/></svg>)-"_ba;
+ QTest::newRow("line-as-mask") // modeled after 496327371 to test similar problem, needs UBSAN
+ << R"-(<svg>
+ <defs>
+ <line x1="4" id="line"/>
+ <mask id="mask" width="2" height="2" mask="url(#line)"/>
+ </defs>
+ <rect width="2" height="2" mask="url(#mask)"/>
+ </svg>)-"_ba;
}
void tst_QSvgRenderer::ossFuzzRender()
+263 -263
View File
@@ -1,6 +1,6 @@
This is bison.info, produced by makeinfo version 7.3 from bison.texi.
This manual (5 July 2026) is for GNU Bison (version 3.8.2), the GNU
This manual (10 July 2026) is for GNU Bison (version 3.8.2), the GNU
parser generator.
Copyright © 1988-1993, 1995, 1998-2015, 2018-2021 Free Software
@@ -28,7 +28,7 @@ File: bison.info, Node: Top, Next: Introduction, Up: (dir)
Bison
*****
This manual (5 July 2026) is for GNU Bison (version 3.8.2), the GNU
This manual (10 July 2026) is for GNU Bison (version 3.8.2), the GNU
parser generator.
Copyright © 1988-1993, 1995, 1998-2015, 2018-2021 Free Software
@@ -16180,267 +16180,267 @@ Index of Terms

Tag Table:
Node: Top1040
Node: Introduction18154
Node: Conditions19727
Node: Copying21636
Node: Concepts59175
Node: Language and Grammar60367
Node: Grammar in Bison66345
Node: Semantic Values68261
Node: Semantic Actions70389
Node: GLR Parsers71566
Node: Simple GLR Parsers74339
Node: Merging GLR Parses80810
Ref: Merging GLR Parses-Footnote-186139
Node: GLR Semantic Actions86280
Node: Semantic Predicates88877
Node: Locations91330
Node: Bison Parser92808
Node: Stages96001
Node: Grammar Layout97226
Node: Examples98588
Node: RPN Calc100075
Ref: RPN Calc-Footnote-1101127
Node: Rpcalc Declarations101205
Node: Rpcalc Rules103257
Node: Rpcalc Input105148
Node: Rpcalc Line106714
Node: Rpcalc Exp107862
Node: Rpcalc Lexer109871
Node: Rpcalc Main112564
Node: Rpcalc Error112975
Node: Rpcalc Generate114003
Node: Rpcalc Compile115247
Node: Infix Calc116211
Ref: Infix Calc-Footnote-1119054
Node: Simple Error Recovery119207
Node: Location Tracking Calc121142
Node: Ltcalc Declarations121842
Node: Ltcalc Rules122937
Node: Ltcalc Lexer124777
Node: Multi-function Calc127114
Ref: Multi-function Calc-Footnote-1128891
Node: Mfcalc Declarations128969
Node: Mfcalc Rules130993
Node: Mfcalc Symbol Table132271
Node: Mfcalc Lexer135731
Node: Mfcalc Main138304
Node: Exercises139180
Node: Grammar File139707
Node: Grammar Outline140557
Node: Prologue141415
Node: Prologue Alternatives143214
Ref: Prologue Alternatives-Footnote-1152898
Node: Bison Declarations153003
Node: Grammar Rules153413
Node: Epilogue153869
Node: Symbols154920
Node: Rules161943
Node: Rules Syntax162258
Node: Empty Rules164323
Node: Recursion165410
Node: Semantics167068
Node: Value Type168374
Node: Multiple Types169658
Node: Type Generation171108
Node: Union Decl173038
Node: Structured Value Type174431
Node: Actions175457
Node: Action Types179329
Node: Midrule Actions180682
Node: Using Midrule Actions181336
Node: Typed Midrule Actions184873
Node: Midrule Action Translation186421
Node: Midrule Conflicts188913
Node: Tracking Locations191522
Node: Location Type192254
Node: Actions and Locations193777
Node: Printing Locations196159
Node: Location Default Action196919
Node: Named References200452
Node: Declarations203048
Node: Require Decl204735
Node: Token Decl205249
Node: Precedence Decl208162
Node: Type Decl210438
Node: Symbol Decls211389
Node: Initial Action Decl212344
Node: Destructor Decl213157
Node: Printer Decl218801
Node: Expect Decl221070
Node: Start Decl225067
Node: Pure Decl225461
Node: Push Decl227209
Node: Decl Summary231642
Ref: %header234319
Node: %define Summary242648
Ref: api-filename-type244557
Ref: api-token-prefix255495
Node: %code Summary267498
Node: Multiple Parsers271750
Node: Interface275605
Node: Parser Function276712
Node: Push Parser Interface279203
Ref: yypstate_new279588
Ref: yypstate_delete280029
Ref: yypush_parse280443
Ref: yypull_parse281455
Node: Lexical282458
Node: Calling Convention284033
Node: Special Tokens285562
Node: Tokens from Literals286997
Node: Token Values288078
Node: Token Locations289242
Node: Pure Calling290174
Node: Error Reporting292771
Node: Error Reporting Function293294
Node: Syntax Error Reporting Function296664
Node: Action Features301265
Node: Internationalization305605
Node: Enabling I18n306457
Node: Token I18n308567
Node: Algorithm309958
Node: Lookahead312372
Node: Shift/Reduce314582
Node: Precedence318637
Node: Why Precedence319409
Node: Using Precedence321324
Node: Precedence Only322820
Node: Precedence Examples324622
Node: How Precedence325146
Node: Non Operators326287
Node: Contextual Precedence327848
Node: Parser States329590
Node: Reduce/Reduce330839
Node: Mysterious Conflicts335642
Node: Tuning LR339264
Node: LR Table Construction340464
Node: Default Reductions346076
Node: LAC350863
Node: Unreachable States356363
Node: Generalized LR Parsing358366
Node: Memory Management362744
Node: Error Recovery365128
Node: Context Dependency370404
Node: Semantic Tokens371257
Node: Lexical Tie-ins374325
Node: Tie-in Recovery375781
Node: Debugging377911
Node: Counterexamples379374
Node: Understanding385376
Ref: state-8392088
Node: Graphviz397639
Node: Xml401956
Node: Tracing403694
Node: Enabling Traces404067
Node: Mfcalc Traces408193
Node: Invocation413400
Node: Bison Options415502
Node: Operation Modes416349
Node: Diagnostics422058
Ref: Wconflicts-sr422366
Ref: Wconflicts-rr422390
Ref: Wcounterexamples422778
Ref: Wdangling-alias423091
Ref: Wdeprecated424416
Ref: Wempty-rule424540
Ref: Wmidrule-values424752
Ref: Wprecedence425463
Ref: Wyacc426597
Ref: Wother426659
Ref: Wall426963
Ref: Wnone427083
Ref: Werror427359
Node: Tuning the Parser429164
Ref: option-yacc432576
Ref: Tuning the Parser-Footnote-1434425
Node: Output Files434491
Node: Option Cross Key437760
Node: Yacc Library439898
Node: Other Languages440965
Node: C++ Parsers441588
Node: A Simple C++ Example442317
Ref: A Simple C++ Example-Footnote-1446467
Node: C++ Bison Interface446550
Node: C++ Parser Interface448140
Node: C++ Semantic Values452723
Node: C++ Unions453273
Node: C++ Variants454066
Node: C++ Location Values457827
Node: C++ position458766
Node: C++ location461135
Node: Exposing the Location Classes463325
Node: User Defined Location Type465218
Node: C++ Parser Context466797
Node: C++ Scanner Interface470760
Node: Split Symbols471328
Node: Complete Symbols473063
Node: A Complete C++ Example477814
Node: Calc++ --- C++ Calculator478757
Node: Calc++ Parsing Driver479278
Node: Calc++ Parser482241
Node: Calc++ Scanner486356
Node: Calc++ Top Level490299
Node: D Parsers490998
Node: D Bison Interface491702
Node: D Semantic Values492815
Node: D Location Values493646
Node: D Parser Interface494517
Node: D Parser Context Interface499433
Node: D Scanner Interface500876
Node: D Action Features503816
Node: D Push Parser Interface504585
Node: D Complete Symbols506059
Node: Java Parsers506775
Node: Java Bison Interface507591
Node: Java Semantic Values509774
Node: Java Location Values511469
Node: Java Parser Interface513067
Node: Java Parser Context Interface518322
Node: Java Scanner Interface520407
Node: Java Action Features524479
Node: Java Push Parser Interface527230
Node: Java Differences530223
Ref: Java Differences-Footnote-1532886
Node: Java Declarations Summary533040
Node: History538073
Node: Yacc538529
Ref: Yacc-Footnote-1540022
Ref: Yacc-Footnote-2540245
Node: yacchack540315
Node: Byacc540738
Node: Bison541551
Node: Other Ungulates543559
Node: Versioning544139
Node: FAQ547562
Node: Memory Exhausted548589
Node: How Can I Reset the Parser548891
Node: Strings are Destroyed551483
Node: Implementing Gotos/Loops553184
Node: Multiple start-symbols554475
Node: Secure? Conform?556055
Node: Enabling Relocatability556505
Node: I can't build Bison559423
Node: Where can I find help?560683
Node: Bug Reports561476
Node: More Languages562951
Node: Beta Testing563286
Node: Mailing Lists564160
Node: Table of Symbols564372
Node: Glossary581398
Node: GNU Free Documentation License591676
Node: Bibliography616829
Ref: Corbett 1984616969
Ref: Denny 2008617320
Ref: Denny 2010 May617642
Ref: Denny 2010 November617917
Ref: DeRemer 1982618253
Ref: Isradisaikul 2015618523
Ref: Johnson 1978618848
Ref: Knuth 1965619113
Ref: Scott 2000619347
Node: Index of Terms619664
Node: Top1041
Node: Introduction18156
Node: Conditions19729
Node: Copying21638
Node: Concepts59177
Node: Language and Grammar60369
Node: Grammar in Bison66347
Node: Semantic Values68263
Node: Semantic Actions70391
Node: GLR Parsers71568
Node: Simple GLR Parsers74341
Node: Merging GLR Parses80812
Ref: Merging GLR Parses-Footnote-186141
Node: GLR Semantic Actions86282
Node: Semantic Predicates88879
Node: Locations91332
Node: Bison Parser92810
Node: Stages96003
Node: Grammar Layout97228
Node: Examples98590
Node: RPN Calc100077
Ref: RPN Calc-Footnote-1101129
Node: Rpcalc Declarations101207
Node: Rpcalc Rules103259
Node: Rpcalc Input105150
Node: Rpcalc Line106716
Node: Rpcalc Exp107864
Node: Rpcalc Lexer109873
Node: Rpcalc Main112566
Node: Rpcalc Error112977
Node: Rpcalc Generate114005
Node: Rpcalc Compile115249
Node: Infix Calc116213
Ref: Infix Calc-Footnote-1119056
Node: Simple Error Recovery119209
Node: Location Tracking Calc121144
Node: Ltcalc Declarations121844
Node: Ltcalc Rules122939
Node: Ltcalc Lexer124779
Node: Multi-function Calc127116
Ref: Multi-function Calc-Footnote-1128893
Node: Mfcalc Declarations128971
Node: Mfcalc Rules130995
Node: Mfcalc Symbol Table132273
Node: Mfcalc Lexer135733
Node: Mfcalc Main138306
Node: Exercises139182
Node: Grammar File139709
Node: Grammar Outline140559
Node: Prologue141417
Node: Prologue Alternatives143216
Ref: Prologue Alternatives-Footnote-1152900
Node: Bison Declarations153005
Node: Grammar Rules153415
Node: Epilogue153871
Node: Symbols154922
Node: Rules161945
Node: Rules Syntax162260
Node: Empty Rules164325
Node: Recursion165412
Node: Semantics167070
Node: Value Type168376
Node: Multiple Types169660
Node: Type Generation171110
Node: Union Decl173040
Node: Structured Value Type174433
Node: Actions175459
Node: Action Types179331
Node: Midrule Actions180684
Node: Using Midrule Actions181338
Node: Typed Midrule Actions184875
Node: Midrule Action Translation186423
Node: Midrule Conflicts188915
Node: Tracking Locations191524
Node: Location Type192256
Node: Actions and Locations193779
Node: Printing Locations196161
Node: Location Default Action196921
Node: Named References200454
Node: Declarations203050
Node: Require Decl204737
Node: Token Decl205251
Node: Precedence Decl208164
Node: Type Decl210440
Node: Symbol Decls211391
Node: Initial Action Decl212346
Node: Destructor Decl213159
Node: Printer Decl218803
Node: Expect Decl221072
Node: Start Decl225069
Node: Pure Decl225463
Node: Push Decl227211
Node: Decl Summary231644
Ref: %header234321
Node: %define Summary242650
Ref: api-filename-type244559
Ref: api-token-prefix255497
Node: %code Summary267500
Node: Multiple Parsers271752
Node: Interface275607
Node: Parser Function276714
Node: Push Parser Interface279205
Ref: yypstate_new279590
Ref: yypstate_delete280031
Ref: yypush_parse280445
Ref: yypull_parse281457
Node: Lexical282460
Node: Calling Convention284035
Node: Special Tokens285564
Node: Tokens from Literals286999
Node: Token Values288080
Node: Token Locations289244
Node: Pure Calling290176
Node: Error Reporting292773
Node: Error Reporting Function293296
Node: Syntax Error Reporting Function296666
Node: Action Features301267
Node: Internationalization305607
Node: Enabling I18n306459
Node: Token I18n308569
Node: Algorithm309960
Node: Lookahead312374
Node: Shift/Reduce314584
Node: Precedence318639
Node: Why Precedence319411
Node: Using Precedence321326
Node: Precedence Only322822
Node: Precedence Examples324624
Node: How Precedence325148
Node: Non Operators326289
Node: Contextual Precedence327850
Node: Parser States329592
Node: Reduce/Reduce330841
Node: Mysterious Conflicts335644
Node: Tuning LR339266
Node: LR Table Construction340466
Node: Default Reductions346078
Node: LAC350865
Node: Unreachable States356365
Node: Generalized LR Parsing358368
Node: Memory Management362746
Node: Error Recovery365130
Node: Context Dependency370406
Node: Semantic Tokens371259
Node: Lexical Tie-ins374327
Node: Tie-in Recovery375783
Node: Debugging377913
Node: Counterexamples379376
Node: Understanding385378
Ref: state-8392090
Node: Graphviz397641
Node: Xml401958
Node: Tracing403696
Node: Enabling Traces404069
Node: Mfcalc Traces408195
Node: Invocation413402
Node: Bison Options415504
Node: Operation Modes416351
Node: Diagnostics422060
Ref: Wconflicts-sr422368
Ref: Wconflicts-rr422392
Ref: Wcounterexamples422780
Ref: Wdangling-alias423093
Ref: Wdeprecated424418
Ref: Wempty-rule424542
Ref: Wmidrule-values424754
Ref: Wprecedence425465
Ref: Wyacc426599
Ref: Wother426661
Ref: Wall426965
Ref: Wnone427085
Ref: Werror427361
Node: Tuning the Parser429166
Ref: option-yacc432578
Ref: Tuning the Parser-Footnote-1434427
Node: Output Files434493
Node: Option Cross Key437762
Node: Yacc Library439900
Node: Other Languages440967
Node: C++ Parsers441590
Node: A Simple C++ Example442319
Ref: A Simple C++ Example-Footnote-1446469
Node: C++ Bison Interface446552
Node: C++ Parser Interface448142
Node: C++ Semantic Values452725
Node: C++ Unions453275
Node: C++ Variants454068
Node: C++ Location Values457829
Node: C++ position458768
Node: C++ location461137
Node: Exposing the Location Classes463327
Node: User Defined Location Type465220
Node: C++ Parser Context466799
Node: C++ Scanner Interface470762
Node: Split Symbols471330
Node: Complete Symbols473065
Node: A Complete C++ Example477816
Node: Calc++ --- C++ Calculator478759
Node: Calc++ Parsing Driver479280
Node: Calc++ Parser482243
Node: Calc++ Scanner486358
Node: Calc++ Top Level490301
Node: D Parsers491000
Node: D Bison Interface491704
Node: D Semantic Values492817
Node: D Location Values493648
Node: D Parser Interface494519
Node: D Parser Context Interface499435
Node: D Scanner Interface500878
Node: D Action Features503818
Node: D Push Parser Interface504587
Node: D Complete Symbols506061
Node: Java Parsers506777
Node: Java Bison Interface507593
Node: Java Semantic Values509776
Node: Java Location Values511471
Node: Java Parser Interface513069
Node: Java Parser Context Interface518324
Node: Java Scanner Interface520409
Node: Java Action Features524481
Node: Java Push Parser Interface527232
Node: Java Differences530225
Ref: Java Differences-Footnote-1532888
Node: Java Declarations Summary533042
Node: History538075
Node: Yacc538531
Ref: Yacc-Footnote-1540024
Ref: Yacc-Footnote-2540247
Node: yacchack540317
Node: Byacc540740
Node: Bison541553
Node: Other Ungulates543561
Node: Versioning544141
Node: FAQ547564
Node: Memory Exhausted548591
Node: How Can I Reset the Parser548893
Node: Strings are Destroyed551485
Node: Implementing Gotos/Loops553186
Node: Multiple start-symbols554477
Node: Secure? Conform?556057
Node: Enabling Relocatability556507
Node: I can't build Bison559425
Node: Where can I find help?560685
Node: Bug Reports561478
Node: More Languages562953
Node: Beta Testing563288
Node: Mailing Lists564162
Node: Table of Symbols564374
Node: Glossary581400
Node: GNU Free Documentation License591678
Node: Bibliography616831
Ref: Corbett 1984616971
Ref: Denny 2008617322
Ref: Denny 2010 May617644
Ref: Denny 2010 November617919
Ref: DeRemer 1982618255
Ref: Isradisaikul 2015618525
Ref: Johnson 1978618850
Ref: Knuth 1965619115
Ref: Scott 2000619349
Node: Index of Terms619666

End Tag Table
+263 -263
View File
@@ -1,6 +1,6 @@
This is bison.info, produced by makeinfo version 7.3 from bison.texi.
This manual (5 July 2026) is for GNU Bison (version 3.8.2), the GNU
This manual (10 July 2026) is for GNU Bison (version 3.8.2), the GNU
parser generator.
Copyright © 1988-1993, 1995, 1998-2015, 2018-2021 Free Software
@@ -28,7 +28,7 @@ File: bison.info, Node: Top, Next: Introduction, Up: (dir)
Bison
*****
This manual (5 July 2026) is for GNU Bison (version 3.8.2), the GNU
This manual (10 July 2026) is for GNU Bison (version 3.8.2), the GNU
parser generator.
Copyright © 1988-1993, 1995, 1998-2015, 2018-2021 Free Software
@@ -16180,267 +16180,267 @@ Index of Terms

Tag Table:
Node: Top1040
Node: Introduction18154
Node: Conditions19727
Node: Copying21636
Node: Concepts59175
Node: Language and Grammar60367
Node: Grammar in Bison66345
Node: Semantic Values68261
Node: Semantic Actions70389
Node: GLR Parsers71566
Node: Simple GLR Parsers74339
Node: Merging GLR Parses80810
Ref: Merging GLR Parses-Footnote-186139
Node: GLR Semantic Actions86280
Node: Semantic Predicates88877
Node: Locations91330
Node: Bison Parser92808
Node: Stages96001
Node: Grammar Layout97226
Node: Examples98588
Node: RPN Calc100075
Ref: RPN Calc-Footnote-1101127
Node: Rpcalc Declarations101205
Node: Rpcalc Rules103257
Node: Rpcalc Input105148
Node: Rpcalc Line106714
Node: Rpcalc Exp107862
Node: Rpcalc Lexer109871
Node: Rpcalc Main112564
Node: Rpcalc Error112975
Node: Rpcalc Generate114003
Node: Rpcalc Compile115247
Node: Infix Calc116211
Ref: Infix Calc-Footnote-1119054
Node: Simple Error Recovery119207
Node: Location Tracking Calc121142
Node: Ltcalc Declarations121842
Node: Ltcalc Rules122937
Node: Ltcalc Lexer124777
Node: Multi-function Calc127114
Ref: Multi-function Calc-Footnote-1128891
Node: Mfcalc Declarations128969
Node: Mfcalc Rules130993
Node: Mfcalc Symbol Table132271
Node: Mfcalc Lexer135731
Node: Mfcalc Main138304
Node: Exercises139180
Node: Grammar File139707
Node: Grammar Outline140557
Node: Prologue141415
Node: Prologue Alternatives143214
Ref: Prologue Alternatives-Footnote-1152898
Node: Bison Declarations153003
Node: Grammar Rules153413
Node: Epilogue153869
Node: Symbols154920
Node: Rules161943
Node: Rules Syntax162258
Node: Empty Rules164323
Node: Recursion165410
Node: Semantics167068
Node: Value Type168374
Node: Multiple Types169658
Node: Type Generation171108
Node: Union Decl173038
Node: Structured Value Type174431
Node: Actions175457
Node: Action Types179329
Node: Midrule Actions180682
Node: Using Midrule Actions181336
Node: Typed Midrule Actions184873
Node: Midrule Action Translation186421
Node: Midrule Conflicts188913
Node: Tracking Locations191522
Node: Location Type192254
Node: Actions and Locations193777
Node: Printing Locations196159
Node: Location Default Action196919
Node: Named References200452
Node: Declarations203048
Node: Require Decl204735
Node: Token Decl205249
Node: Precedence Decl208162
Node: Type Decl210438
Node: Symbol Decls211389
Node: Initial Action Decl212344
Node: Destructor Decl213157
Node: Printer Decl218801
Node: Expect Decl221070
Node: Start Decl225067
Node: Pure Decl225461
Node: Push Decl227209
Node: Decl Summary231642
Ref: %header234319
Node: %define Summary242648
Ref: api-filename-type244557
Ref: api-token-prefix255495
Node: %code Summary267498
Node: Multiple Parsers271750
Node: Interface275605
Node: Parser Function276712
Node: Push Parser Interface279203
Ref: yypstate_new279588
Ref: yypstate_delete280029
Ref: yypush_parse280443
Ref: yypull_parse281455
Node: Lexical282458
Node: Calling Convention284033
Node: Special Tokens285562
Node: Tokens from Literals286997
Node: Token Values288078
Node: Token Locations289242
Node: Pure Calling290174
Node: Error Reporting292771
Node: Error Reporting Function293294
Node: Syntax Error Reporting Function296664
Node: Action Features301265
Node: Internationalization305605
Node: Enabling I18n306457
Node: Token I18n308567
Node: Algorithm309958
Node: Lookahead312372
Node: Shift/Reduce314582
Node: Precedence318637
Node: Why Precedence319409
Node: Using Precedence321324
Node: Precedence Only322820
Node: Precedence Examples324622
Node: How Precedence325146
Node: Non Operators326287
Node: Contextual Precedence327848
Node: Parser States329590
Node: Reduce/Reduce330839
Node: Mysterious Conflicts335642
Node: Tuning LR339264
Node: LR Table Construction340464
Node: Default Reductions346076
Node: LAC350863
Node: Unreachable States356363
Node: Generalized LR Parsing358366
Node: Memory Management362744
Node: Error Recovery365128
Node: Context Dependency370404
Node: Semantic Tokens371257
Node: Lexical Tie-ins374325
Node: Tie-in Recovery375781
Node: Debugging377911
Node: Counterexamples379374
Node: Understanding385376
Ref: state-8392088
Node: Graphviz397639
Node: Xml401956
Node: Tracing403694
Node: Enabling Traces404067
Node: Mfcalc Traces408193
Node: Invocation413400
Node: Bison Options415502
Node: Operation Modes416349
Node: Diagnostics422058
Ref: Wconflicts-sr422366
Ref: Wconflicts-rr422390
Ref: Wcounterexamples422778
Ref: Wdangling-alias423091
Ref: Wdeprecated424416
Ref: Wempty-rule424540
Ref: Wmidrule-values424752
Ref: Wprecedence425463
Ref: Wyacc426597
Ref: Wother426659
Ref: Wall426963
Ref: Wnone427083
Ref: Werror427359
Node: Tuning the Parser429164
Ref: option-yacc432576
Ref: Tuning the Parser-Footnote-1434425
Node: Output Files434491
Node: Option Cross Key437760
Node: Yacc Library439898
Node: Other Languages440965
Node: C++ Parsers441588
Node: A Simple C++ Example442317
Ref: A Simple C++ Example-Footnote-1446467
Node: C++ Bison Interface446550
Node: C++ Parser Interface448140
Node: C++ Semantic Values452723
Node: C++ Unions453273
Node: C++ Variants454066
Node: C++ Location Values457827
Node: C++ position458766
Node: C++ location461135
Node: Exposing the Location Classes463325
Node: User Defined Location Type465218
Node: C++ Parser Context466797
Node: C++ Scanner Interface470760
Node: Split Symbols471328
Node: Complete Symbols473063
Node: A Complete C++ Example477814
Node: Calc++ --- C++ Calculator478757
Node: Calc++ Parsing Driver479278
Node: Calc++ Parser482241
Node: Calc++ Scanner486356
Node: Calc++ Top Level490299
Node: D Parsers490998
Node: D Bison Interface491702
Node: D Semantic Values492815
Node: D Location Values493646
Node: D Parser Interface494517
Node: D Parser Context Interface499433
Node: D Scanner Interface500876
Node: D Action Features503816
Node: D Push Parser Interface504585
Node: D Complete Symbols506059
Node: Java Parsers506775
Node: Java Bison Interface507591
Node: Java Semantic Values509774
Node: Java Location Values511469
Node: Java Parser Interface513067
Node: Java Parser Context Interface518322
Node: Java Scanner Interface520407
Node: Java Action Features524479
Node: Java Push Parser Interface527230
Node: Java Differences530223
Ref: Java Differences-Footnote-1532886
Node: Java Declarations Summary533040
Node: History538073
Node: Yacc538529
Ref: Yacc-Footnote-1540022
Ref: Yacc-Footnote-2540245
Node: yacchack540315
Node: Byacc540738
Node: Bison541551
Node: Other Ungulates543559
Node: Versioning544139
Node: FAQ547562
Node: Memory Exhausted548589
Node: How Can I Reset the Parser548891
Node: Strings are Destroyed551483
Node: Implementing Gotos/Loops553184
Node: Multiple start-symbols554475
Node: Secure? Conform?556055
Node: Enabling Relocatability556505
Node: I can't build Bison559423
Node: Where can I find help?560683
Node: Bug Reports561476
Node: More Languages562951
Node: Beta Testing563286
Node: Mailing Lists564160
Node: Table of Symbols564372
Node: Glossary581398
Node: GNU Free Documentation License591676
Node: Bibliography616829
Ref: Corbett 1984616969
Ref: Denny 2008617320
Ref: Denny 2010 May617642
Ref: Denny 2010 November617917
Ref: DeRemer 1982618253
Ref: Isradisaikul 2015618523
Ref: Johnson 1978618848
Ref: Knuth 1965619113
Ref: Scott 2000619347
Node: Index of Terms619664
Node: Top1041
Node: Introduction18156
Node: Conditions19729
Node: Copying21638
Node: Concepts59177
Node: Language and Grammar60369
Node: Grammar in Bison66347
Node: Semantic Values68263
Node: Semantic Actions70391
Node: GLR Parsers71568
Node: Simple GLR Parsers74341
Node: Merging GLR Parses80812
Ref: Merging GLR Parses-Footnote-186141
Node: GLR Semantic Actions86282
Node: Semantic Predicates88879
Node: Locations91332
Node: Bison Parser92810
Node: Stages96003
Node: Grammar Layout97228
Node: Examples98590
Node: RPN Calc100077
Ref: RPN Calc-Footnote-1101129
Node: Rpcalc Declarations101207
Node: Rpcalc Rules103259
Node: Rpcalc Input105150
Node: Rpcalc Line106716
Node: Rpcalc Exp107864
Node: Rpcalc Lexer109873
Node: Rpcalc Main112566
Node: Rpcalc Error112977
Node: Rpcalc Generate114005
Node: Rpcalc Compile115249
Node: Infix Calc116213
Ref: Infix Calc-Footnote-1119056
Node: Simple Error Recovery119209
Node: Location Tracking Calc121144
Node: Ltcalc Declarations121844
Node: Ltcalc Rules122939
Node: Ltcalc Lexer124779
Node: Multi-function Calc127116
Ref: Multi-function Calc-Footnote-1128893
Node: Mfcalc Declarations128971
Node: Mfcalc Rules130995
Node: Mfcalc Symbol Table132273
Node: Mfcalc Lexer135733
Node: Mfcalc Main138306
Node: Exercises139182
Node: Grammar File139709
Node: Grammar Outline140559
Node: Prologue141417
Node: Prologue Alternatives143216
Ref: Prologue Alternatives-Footnote-1152900
Node: Bison Declarations153005
Node: Grammar Rules153415
Node: Epilogue153871
Node: Symbols154922
Node: Rules161945
Node: Rules Syntax162260
Node: Empty Rules164325
Node: Recursion165412
Node: Semantics167070
Node: Value Type168376
Node: Multiple Types169660
Node: Type Generation171110
Node: Union Decl173040
Node: Structured Value Type174433
Node: Actions175459
Node: Action Types179331
Node: Midrule Actions180684
Node: Using Midrule Actions181338
Node: Typed Midrule Actions184875
Node: Midrule Action Translation186423
Node: Midrule Conflicts188915
Node: Tracking Locations191524
Node: Location Type192256
Node: Actions and Locations193779
Node: Printing Locations196161
Node: Location Default Action196921
Node: Named References200454
Node: Declarations203050
Node: Require Decl204737
Node: Token Decl205251
Node: Precedence Decl208164
Node: Type Decl210440
Node: Symbol Decls211391
Node: Initial Action Decl212346
Node: Destructor Decl213159
Node: Printer Decl218803
Node: Expect Decl221072
Node: Start Decl225069
Node: Pure Decl225463
Node: Push Decl227211
Node: Decl Summary231644
Ref: %header234321
Node: %define Summary242650
Ref: api-filename-type244559
Ref: api-token-prefix255497
Node: %code Summary267500
Node: Multiple Parsers271752
Node: Interface275607
Node: Parser Function276714
Node: Push Parser Interface279205
Ref: yypstate_new279590
Ref: yypstate_delete280031
Ref: yypush_parse280445
Ref: yypull_parse281457
Node: Lexical282460
Node: Calling Convention284035
Node: Special Tokens285564
Node: Tokens from Literals286999
Node: Token Values288080
Node: Token Locations289244
Node: Pure Calling290176
Node: Error Reporting292773
Node: Error Reporting Function293296
Node: Syntax Error Reporting Function296666
Node: Action Features301267
Node: Internationalization305607
Node: Enabling I18n306459
Node: Token I18n308569
Node: Algorithm309960
Node: Lookahead312374
Node: Shift/Reduce314584
Node: Precedence318639
Node: Why Precedence319411
Node: Using Precedence321326
Node: Precedence Only322822
Node: Precedence Examples324624
Node: How Precedence325148
Node: Non Operators326289
Node: Contextual Precedence327850
Node: Parser States329592
Node: Reduce/Reduce330841
Node: Mysterious Conflicts335644
Node: Tuning LR339266
Node: LR Table Construction340466
Node: Default Reductions346078
Node: LAC350865
Node: Unreachable States356365
Node: Generalized LR Parsing358368
Node: Memory Management362746
Node: Error Recovery365130
Node: Context Dependency370406
Node: Semantic Tokens371259
Node: Lexical Tie-ins374327
Node: Tie-in Recovery375783
Node: Debugging377913
Node: Counterexamples379376
Node: Understanding385378
Ref: state-8392090
Node: Graphviz397641
Node: Xml401958
Node: Tracing403696
Node: Enabling Traces404069
Node: Mfcalc Traces408195
Node: Invocation413402
Node: Bison Options415504
Node: Operation Modes416351
Node: Diagnostics422060
Ref: Wconflicts-sr422368
Ref: Wconflicts-rr422392
Ref: Wcounterexamples422780
Ref: Wdangling-alias423093
Ref: Wdeprecated424418
Ref: Wempty-rule424542
Ref: Wmidrule-values424754
Ref: Wprecedence425465
Ref: Wyacc426599
Ref: Wother426661
Ref: Wall426965
Ref: Wnone427085
Ref: Werror427361
Node: Tuning the Parser429166
Ref: option-yacc432578
Ref: Tuning the Parser-Footnote-1434427
Node: Output Files434493
Node: Option Cross Key437762
Node: Yacc Library439900
Node: Other Languages440967
Node: C++ Parsers441590
Node: A Simple C++ Example442319
Ref: A Simple C++ Example-Footnote-1446469
Node: C++ Bison Interface446552
Node: C++ Parser Interface448142
Node: C++ Semantic Values452725
Node: C++ Unions453275
Node: C++ Variants454068
Node: C++ Location Values457829
Node: C++ position458768
Node: C++ location461137
Node: Exposing the Location Classes463327
Node: User Defined Location Type465220
Node: C++ Parser Context466799
Node: C++ Scanner Interface470762
Node: Split Symbols471330
Node: Complete Symbols473065
Node: A Complete C++ Example477816
Node: Calc++ --- C++ Calculator478759
Node: Calc++ Parsing Driver479280
Node: Calc++ Parser482243
Node: Calc++ Scanner486358
Node: Calc++ Top Level490301
Node: D Parsers491000
Node: D Bison Interface491704
Node: D Semantic Values492817
Node: D Location Values493648
Node: D Parser Interface494519
Node: D Parser Context Interface499435
Node: D Scanner Interface500878
Node: D Action Features503818
Node: D Push Parser Interface504587
Node: D Complete Symbols506061
Node: Java Parsers506777
Node: Java Bison Interface507593
Node: Java Semantic Values509776
Node: Java Location Values511471
Node: Java Parser Interface513069
Node: Java Parser Context Interface518324
Node: Java Scanner Interface520409
Node: Java Action Features524481
Node: Java Push Parser Interface527232
Node: Java Differences530225
Ref: Java Differences-Footnote-1532888
Node: Java Declarations Summary533042
Node: History538075
Node: Yacc538531
Ref: Yacc-Footnote-1540024
Ref: Yacc-Footnote-2540247
Node: yacchack540317
Node: Byacc540740
Node: Bison541553
Node: Other Ungulates543561
Node: Versioning544141
Node: FAQ547564
Node: Memory Exhausted548591
Node: How Can I Reset the Parser548893
Node: Strings are Destroyed551485
Node: Implementing Gotos/Loops553186
Node: Multiple start-symbols554477
Node: Secure? Conform?556057
Node: Enabling Relocatability556507
Node: I can't build Bison559425
Node: Where can I find help?560685
Node: Bug Reports561478
Node: More Languages562953
Node: Beta Testing563288
Node: Mailing Lists564162
Node: Table of Symbols564374
Node: Glossary581400
Node: GNU Free Documentation License591678
Node: Bibliography616831
Ref: Corbett 1984616971
Ref: Denny 2008617322
Ref: Denny 2010 May617644
Ref: Denny 2010 November617919
Ref: DeRemer 1982618255
Ref: Isradisaikul 2015618525
Ref: Johnson 1978618850
Ref: Knuth 1965619115
Ref: Scott 2000619349
Node: Index of Terms619666

End Tag Table
+1 -1
View File
@@ -1,4 +1,4 @@
@set UPDATED 5 July 2026
@set UPDATED 10 July 2026
@set UPDATED-MONTH July 2026
@set EDITION 3.8.2
@set VERSION 3.8.2
@@ -1,4 +1,4 @@
@set UPDATED 5 July 2026
@set UPDATED 10 July 2026
@set UPDATED-MONTH July 2026
@set EDITION 3.8.2
@set VERSION 3.8.2
+230 -230
View File
@@ -43,240 +43,240 @@ END-INFO-DIR-ENTRY

Indirect:
flex.info-1: 1620
flex.info-2: 324917
flex.info-2: 324918

Tag Table:
(Indirect)
Node: Top1620
Node: Copyright7694
Node: Reporting Bugs9211
Node: Introduction9471
Node: Simple Examples10328
Node: Format13771
Node: Definitions Section14192
Ref: Definitions Section-Footnote-116550
Node: Rules Section16626
Node: User Code Section17800
Node: Comments in the Input18246
Node: Patterns19651
Ref: case and character ranges26973
Node: Matching31202
Node: Actions34639
Node: Generated Scanner43962
Node: Start Conditions49185
Node: Multiple Input Buffers60101
Ref: Scanning Strings66886
Node: EOF68579
Node: Misc Macros70215
Node: User Values73173
Node: Yacc75614
Node: Scanner Options76575
Node: Options for Specifying Filenames79407
Ref: option-header79633
Ref: option-outfile80379
Ref: option-stdout80744
Node: Options Affecting Scanner Behavior81763
Ref: option-case-insensitive82004
Ref: option-lex-compat82461
Ref: option-batch83033
Ref: option-interactive83588
Ref: option-7bit84990
Ref: option-8bit86358
Ref: option-default86798
Ref: option-always-interactive86870
Ref: option-posix87498
Ref: option-stack88711
Ref: option-stdinit88827
Ref: option-yylineno89350
Ref: option-yywrap89829
Node: Code-Level And API Options90120
Ref: option-ansi-definitions90347
Ref: option-ansi-prototypes90430
Ref: option-bison-bridge90511
Ref: option-bison-locations90876
Ref: option-noline91164
Ref: option-reentrant91714
Ref: option-c++92346
Ref: option-array92480
Ref: option-pointer92586
Ref: option-prefix92733
Ref: option-main94325
Ref: option-nounistd94529
Ref: option-yyclass95068
Node: Options for Scanner Speed and Size95596
Ref: option-align96158
Ref: option-ecs96668
Ref: option-meta-ecs97751
Ref: option-read98259
Ref: option-full100222
Ref: option-fast100437
Node: Debugging Options101389
Ref: option-backup101576
Ref: option-debug102145
Ref: option-perf-report102887
Ref: option-nodefault103545
Ref: option-trace103875
Ref: option-nowarn104190
Ref: option-verbose104266
Ref: option-warn104723
Node: Miscellaneous Options104950
Node: Performance105434
Node: Cxx115909
Node: Reentrant124503
Node: Reentrant Uses125197
Node: Reentrant Overview126812
Node: Reentrant Example127650
Node: Reentrant Detail128458
Node: Specify Reentrant128895
Node: Extra Reentrant Argument129557
Node: Global Replacement130869
Node: Init and Destroy Functions132160
Node: Accessor Methods134796
Node: Extra Data136183
Node: About yyscan_t138510
Node: Reentrant Functions138919
Ref: bison-functions140420
Node: Lex and Posix141191
Node: Memory Management149030
Ref: memory-management149176
Node: The Default Memory Management149404
Ref: The Default Memory Management-Footnote-1153240
Node: Overriding The Default Memory Management153393
Ref: Overriding The Default Memory Management-Footnote-1155904
Node: A Note About yytext And Memory156080
Node: Serialized Tables157324
Ref: serialization157468
Node: Creating Serialized Tables158238
Node: Loading and Unloading Serialized Tables159885
Node: Tables File Format161694
Node: Diagnostics169019
Node: Limitations172584
Node: Bibliography174608
Node: FAQ175290
Node: When was flex born?179534
Node: How do I expand backslash-escape sequences in C-style quoted strings?179915
Node: Why do flex scanners call fileno if it is not ANSI compatible?181230
Node: Does flex support recursive pattern definitions?182071
Node: How do I skip huge chunks of input (tens of megabytes) while using flex?182922
Node: Flex is not matching my patterns in the same order that I defined them.183401
Node: My actions are executing out of order or sometimes not at all.185187
Node: How can I have multiple input sources feed into the same scanner at the same time?185982
Node: Can I build nested parsers that work with the same input file?188033
Node: How can I match text only at the end of a file?189060
Node: How can I make REJECT cascade across start condition boundaries?189876
Node: Why cant I use fast or full tables with interactive mode?190902
Node: How much faster is -F or -f than -C?192159
Node: If I have a simple grammar cant I just parse it with flex?192471
Node: Why doesn't yyrestart() set the start state back to INITIAL?192953
Node: How can I match C-style comments?193588
Node: The period isn't working the way I expected.194398
Node: Can I get the flex manual in another format?195735
Node: Does there exist a "faster" NDFA->DFA algorithm?196233
Node: How does flex compile the DFA so quickly?196743
Node: How can I use more than 8192 rules?197713
Node: How do I abandon a file in the middle of a scan and switch to a new file?199135
Node: How do I execute code only during initialization (only before the first scan)?199701
Node: How do I execute code at termination?200491
Node: Where else can I find help?200821
Node: Can I include comments in the "rules" section of the file?201195
Node: I get an error about undefined yywrap().201575
Node: How can I change the matching pattern at run time?202063
Node: How can I expand macros in the input?202425
Node: How can I build a two-pass scanner?203462
Node: How do I match any string not matched in the preceding rules?204380
Node: I am trying to port code from AT&T lex that uses yysptr and yysbuf.205301
Node: Is there a way to make flex treat NULL like a regular character?206120
Node: Whenever flex can not match the input it says "flex scanner jammed".206652
Node: Why doesn't flex have non-greedy operators like perl does?207304
Node: Memory leak - 16386 bytes allocated by malloc.208669
Ref: faq-memory-leak208967
Node: How do I track the byte offset for lseek()?209966
Node: How do I use my own I/O classes in a C++ scanner?211523
Node: How do I skip as many chars as possible?212386
Node: deleteme00213461
Node: Are certain equivalent patterns faster than others?213906
Node: Is backing up a big deal?217394
Node: Can I fake multi-byte character support?219365
Node: deleteme01220841
Node: Can you discuss some flex internals?221965
Node: unput() messes up yy_at_bol224254
Node: The | operator is not doing what I want225391
Node: Why can't flex understand this variable trailing context pattern?226982
Node: The ^ operator isn't working228246
Node: Trailing context is getting confused with trailing optional patterns229516
Node: Is flex GNU or not?230784
Node: ERASEME53232497
Node: I need to scan if-then-else blocks and while loops233292
Node: ERASEME55234511
Node: ERASEME56235624
Node: ERASEME57237017
Node: Is there a repository for flex scanners?238050
Node: How can I conditionally compile or preprocess my flex input file?238366
Node: Where can I find grammars for lex and yacc?238839
Node: I get an end-of-buffer message for each character scanned.239186
Node: unnamed-faq-62239781
Node: unnamed-faq-63240829
Node: unnamed-faq-64242141
Node: unnamed-faq-65243142
Node: unnamed-faq-66243943
Node: unnamed-faq-67245073
Node: unnamed-faq-68246075
Node: unnamed-faq-69247232
Node: unnamed-faq-70247965
Node: unnamed-faq-71248741
Node: unnamed-faq-72249970
Node: unnamed-faq-73251038
Node: unnamed-faq-74251982
Node: unnamed-faq-75252952
Node: unnamed-faq-76254124
Node: unnamed-faq-77254845
Node: unnamed-faq-78255753
Node: unnamed-faq-79256766
Node: unnamed-faq-80258501
Node: unnamed-faq-81259844
Node: unnamed-faq-82262684
Node: unnamed-faq-83263666
Node: unnamed-faq-84265471
Node: unnamed-faq-85266589
Node: unnamed-faq-86267636
Node: unnamed-faq-87268609
Node: unnamed-faq-88269270
Node: unnamed-faq-90270126
Node: unnamed-faq-91271424
Node: unnamed-faq-92273907
Node: unnamed-faq-93274421
Node: unnamed-faq-94275363
Node: unnamed-faq-95276805
Node: unnamed-faq-96278338
Node: unnamed-faq-97279122
Node: unnamed-faq-98279804
Node: unnamed-faq-99280494
Node: unnamed-faq-100281453
Node: unnamed-faq-101282178
Node: What is the difference between YYLEX_PARAM and YY_DECL?283011
Node: Why do I get "conflicting types for yylex" error?283535
Node: How do I access the values set in a Flex action from within a Bison action?284065
Node: Appendices284494
Node: Makefiles and Flex284703
Ref: Makefiles and Flex-Footnote-1288049
Ref: Makefiles and Flex-Footnote-2288174
Ref: Makefiles and Flex-Footnote-3288365
Node: Bison Bridge288416
Ref: Bison Bridge-Footnote-1291217
Node: M4 Dependency291409
Ref: M4 Dependency-Footnote-1292903
Node: Common Patterns293039
Node: Numbers293330
Node: Identifiers294323
Node: Quoted Constructs295154
Node: Addresses296228
Node: Indices297548
Node: Concept Index297786
Node: Index of Functions and Macros324917
Node: Index of Variables329886
Node: Index of Data Types331552
Node: Index of Hooks332440
Node: Index of Scanner Options333008
Node: Copyright7695
Node: Reporting Bugs9212
Node: Introduction9472
Node: Simple Examples10329
Node: Format13772
Node: Definitions Section14193
Ref: Definitions Section-Footnote-116551
Node: Rules Section16627
Node: User Code Section17801
Node: Comments in the Input18247
Node: Patterns19652
Ref: case and character ranges26974
Node: Matching31203
Node: Actions34640
Node: Generated Scanner43963
Node: Start Conditions49186
Node: Multiple Input Buffers60102
Ref: Scanning Strings66887
Node: EOF68580
Node: Misc Macros70216
Node: User Values73174
Node: Yacc75615
Node: Scanner Options76576
Node: Options for Specifying Filenames79408
Ref: option-header79634
Ref: option-outfile80380
Ref: option-stdout80745
Node: Options Affecting Scanner Behavior81764
Ref: option-case-insensitive82005
Ref: option-lex-compat82462
Ref: option-batch83034
Ref: option-interactive83589
Ref: option-7bit84991
Ref: option-8bit86359
Ref: option-default86799
Ref: option-always-interactive86871
Ref: option-posix87499
Ref: option-stack88712
Ref: option-stdinit88828
Ref: option-yylineno89351
Ref: option-yywrap89830
Node: Code-Level And API Options90121
Ref: option-ansi-definitions90348
Ref: option-ansi-prototypes90431
Ref: option-bison-bridge90512
Ref: option-bison-locations90877
Ref: option-noline91165
Ref: option-reentrant91715
Ref: option-c++92347
Ref: option-array92481
Ref: option-pointer92587
Ref: option-prefix92734
Ref: option-main94326
Ref: option-nounistd94530
Ref: option-yyclass95069
Node: Options for Scanner Speed and Size95597
Ref: option-align96159
Ref: option-ecs96669
Ref: option-meta-ecs97752
Ref: option-read98260
Ref: option-full100223
Ref: option-fast100438
Node: Debugging Options101390
Ref: option-backup101577
Ref: option-debug102146
Ref: option-perf-report102888
Ref: option-nodefault103546
Ref: option-trace103876
Ref: option-nowarn104191
Ref: option-verbose104267
Ref: option-warn104724
Node: Miscellaneous Options104951
Node: Performance105435
Node: Cxx115910
Node: Reentrant124504
Node: Reentrant Uses125198
Node: Reentrant Overview126813
Node: Reentrant Example127651
Node: Reentrant Detail128459
Node: Specify Reentrant128896
Node: Extra Reentrant Argument129558
Node: Global Replacement130870
Node: Init and Destroy Functions132161
Node: Accessor Methods134797
Node: Extra Data136184
Node: About yyscan_t138511
Node: Reentrant Functions138920
Ref: bison-functions140421
Node: Lex and Posix141192
Node: Memory Management149031
Ref: memory-management149177
Node: The Default Memory Management149405
Ref: The Default Memory Management-Footnote-1153241
Node: Overriding The Default Memory Management153394
Ref: Overriding The Default Memory Management-Footnote-1155905
Node: A Note About yytext And Memory156081
Node: Serialized Tables157325
Ref: serialization157469
Node: Creating Serialized Tables158239
Node: Loading and Unloading Serialized Tables159886
Node: Tables File Format161695
Node: Diagnostics169020
Node: Limitations172585
Node: Bibliography174609
Node: FAQ175291
Node: When was flex born?179535
Node: How do I expand backslash-escape sequences in C-style quoted strings?179916
Node: Why do flex scanners call fileno if it is not ANSI compatible?181231
Node: Does flex support recursive pattern definitions?182072
Node: How do I skip huge chunks of input (tens of megabytes) while using flex?182923
Node: Flex is not matching my patterns in the same order that I defined them.183402
Node: My actions are executing out of order or sometimes not at all.185188
Node: How can I have multiple input sources feed into the same scanner at the same time?185983
Node: Can I build nested parsers that work with the same input file?188034
Node: How can I match text only at the end of a file?189061
Node: How can I make REJECT cascade across start condition boundaries?189877
Node: Why cant I use fast or full tables with interactive mode?190903
Node: How much faster is -F or -f than -C?192160
Node: If I have a simple grammar cant I just parse it with flex?192472
Node: Why doesn't yyrestart() set the start state back to INITIAL?192954
Node: How can I match C-style comments?193589
Node: The period isn't working the way I expected.194399
Node: Can I get the flex manual in another format?195736
Node: Does there exist a "faster" NDFA->DFA algorithm?196234
Node: How does flex compile the DFA so quickly?196744
Node: How can I use more than 8192 rules?197714
Node: How do I abandon a file in the middle of a scan and switch to a new file?199136
Node: How do I execute code only during initialization (only before the first scan)?199702
Node: How do I execute code at termination?200492
Node: Where else can I find help?200822
Node: Can I include comments in the "rules" section of the file?201196
Node: I get an error about undefined yywrap().201576
Node: How can I change the matching pattern at run time?202064
Node: How can I expand macros in the input?202426
Node: How can I build a two-pass scanner?203463
Node: How do I match any string not matched in the preceding rules?204381
Node: I am trying to port code from AT&T lex that uses yysptr and yysbuf.205302
Node: Is there a way to make flex treat NULL like a regular character?206121
Node: Whenever flex can not match the input it says "flex scanner jammed".206653
Node: Why doesn't flex have non-greedy operators like perl does?207305
Node: Memory leak - 16386 bytes allocated by malloc.208670
Ref: faq-memory-leak208968
Node: How do I track the byte offset for lseek()?209967
Node: How do I use my own I/O classes in a C++ scanner?211524
Node: How do I skip as many chars as possible?212387
Node: deleteme00213462
Node: Are certain equivalent patterns faster than others?213907
Node: Is backing up a big deal?217395
Node: Can I fake multi-byte character support?219366
Node: deleteme01220842
Node: Can you discuss some flex internals?221966
Node: unput() messes up yy_at_bol224255
Node: The | operator is not doing what I want225392
Node: Why can't flex understand this variable trailing context pattern?226983
Node: The ^ operator isn't working228247
Node: Trailing context is getting confused with trailing optional patterns229517
Node: Is flex GNU or not?230785
Node: ERASEME53232498
Node: I need to scan if-then-else blocks and while loops233293
Node: ERASEME55234512
Node: ERASEME56235625
Node: ERASEME57237018
Node: Is there a repository for flex scanners?238051
Node: How can I conditionally compile or preprocess my flex input file?238367
Node: Where can I find grammars for lex and yacc?238840
Node: I get an end-of-buffer message for each character scanned.239187
Node: unnamed-faq-62239782
Node: unnamed-faq-63240830
Node: unnamed-faq-64242142
Node: unnamed-faq-65243143
Node: unnamed-faq-66243944
Node: unnamed-faq-67245074
Node: unnamed-faq-68246076
Node: unnamed-faq-69247233
Node: unnamed-faq-70247966
Node: unnamed-faq-71248742
Node: unnamed-faq-72249971
Node: unnamed-faq-73251039
Node: unnamed-faq-74251983
Node: unnamed-faq-75252953
Node: unnamed-faq-76254125
Node: unnamed-faq-77254846
Node: unnamed-faq-78255754
Node: unnamed-faq-79256767
Node: unnamed-faq-80258502
Node: unnamed-faq-81259845
Node: unnamed-faq-82262685
Node: unnamed-faq-83263667
Node: unnamed-faq-84265472
Node: unnamed-faq-85266590
Node: unnamed-faq-86267637
Node: unnamed-faq-87268610
Node: unnamed-faq-88269271
Node: unnamed-faq-90270127
Node: unnamed-faq-91271425
Node: unnamed-faq-92273908
Node: unnamed-faq-93274422
Node: unnamed-faq-94275364
Node: unnamed-faq-95276806
Node: unnamed-faq-96278339
Node: unnamed-faq-97279123
Node: unnamed-faq-98279805
Node: unnamed-faq-99280495
Node: unnamed-faq-100281454
Node: unnamed-faq-101282179
Node: What is the difference between YYLEX_PARAM and YY_DECL?283012
Node: Why do I get "conflicting types for yylex" error?283536
Node: How do I access the values set in a Flex action from within a Bison action?284066
Node: Appendices284495
Node: Makefiles and Flex284704
Ref: Makefiles and Flex-Footnote-1288050
Ref: Makefiles and Flex-Footnote-2288175
Ref: Makefiles and Flex-Footnote-3288366
Node: Bison Bridge288417
Ref: Bison Bridge-Footnote-1291218
Node: M4 Dependency291410
Ref: M4 Dependency-Footnote-1292904
Node: Common Patterns293040
Node: Numbers293331
Node: Identifiers294324
Node: Quoted Constructs295155
Node: Addresses296229
Node: Indices297549
Node: Concept Index297787
Node: Index of Functions and Macros324918
Node: Index of Variables329887
Node: Index of Data Types331553
Node: Index of Hooks332441
Node: Index of Scanner Options333009

End Tag Table
@@ -51,7 +51,7 @@ perform pattern-matching on text. The manual includes both tutorial and
reference sections.
This edition of The flex Manual documents flex version 2.6.4. It
was last updated on 5 July 2026.
was last updated on 10 July 2026.
This manual was written by Vern Paxson, Will Estes and John Millaway.
+1 -1
View File
@@ -1,4 +1,4 @@
@set UPDATED 5 July 2026
@set UPDATED 10 July 2026
@set UPDATED-MONTH July 2026
@set EDITION 2.6.4
@set VERSION 2.6.4
@@ -1,4 +1,4 @@
@set UPDATED 5 July 2026
@set UPDATED 10 July 2026
@set UPDATED-MONTH July 2026
@set EDITION 2.6.4
@set VERSION 2.6.4
+109 -109
View File
@@ -1,6 +1,6 @@
This is m4.info, produced by makeinfo version 7.3 from m4.texi.
This manual (5 July 2026) is for GNU M4 (version 1.4.21), a package
This manual (10 July 2026) is for GNU M4 (version 1.4.21), a package
containing an implementation of the m4 macro language.
Copyright © 1989-1994, 2004-2014, 2016-2017, 2020-2026 Free Software
@@ -19,117 +19,117 @@ END-INFO-DIR-ENTRY

Indirect:
m4.info-1: 828
m4.info-2: 317295
m4.info-1: 829
m4.info-2: 317298

Tag Table:
(Indirect)
Node: Top828
Node: Preliminaries9770
Node: Intro10476
Node: History12167
Node: Bugs16220
Node: Manual17483
Node: Invoking m420986
Node: Operation modes23190
Node: Preprocessor features26289
Node: Limits control29459
Node: Frozen state33470
Node: Debugging options34309
Node: Command line files36361
Node: Syntax38012
Node: Names39167
Node: Quoted strings39649
Node: Comments40316
Node: Other tokens41219
Node: Input processing41813
Ref: Input processing-Footnote-150250
Node: Macros50447
Node: Invocation50941
Node: Inhibiting Invocation51742
Node: Macro Arguments55984
Node: Quoting Arguments59104
Node: Macro expansion61240
Node: Definitions61958
Node: Define62743
Node: Arguments65261
Node: Pseudo Arguments69027
Node: Undefine72656
Node: Defn73815
Node: Pushdef78878
Node: Indir81618
Node: Builtin83785
Node: Conditionals86060
Node: Ifdef87006
Node: Ifelse87888
Node: Shift91274
Node: Forloop102094
Node: Foreach104775
Node: Stacks110397
Node: Composition113532
Node: Debugging121209
Node: Dumpdef121802
Node: Trace123220
Node: Debug Levels126872
Node: Debug Output131742
Node: Input Control133055
Node: Dnl133596
Node: Changequote135538
Node: Changecom145270
Node: Changeword149156
Node: M4wrap154761
Node: File Inclusion158846
Node: Include159167
Node: Search Path161984
Node: Diversions162933
Node: Divert164640
Node: Undivert167206
Node: Divnum170591
Node: Cleardivert171064
Node: Text handling172285
Node: Len173012
Node: Index macro173406
Node: Regexp174299
Node: Substr177460
Node: Translit178518
Node: Patsubst181309
Node: Format185950
Node: Arithmetic189358
Node: Incr189811
Node: Eval191486
Node: Shell commands200230
Node: Platform macros201168
Node: Syscmd203370
Node: Esyscmd205745
Node: Sysval207328
Node: Mkstemp209295
Node: Miscellaneous213352
Node: Errprint213789
Node: Location215041
Node: M4exit217918
Node: Frozen files220044
Node: Using frozen files220842
Node: Frozen file format224223
Node: Compatibility227373
Node: Extensions228455
Node: Incompatibilities232509
Node: Other Incompatibilities241813
Node: Answers244543
Node: Improved exch245357
Node: Improved forloop245910
Node: Improved foreach251366
Node: Improved copy264744
Node: Improved m4wrap268801
Node: Improved cleardivert271297
Node: Improved capitalize272295
Node: Improved fatal_error277331
Node: Copying This Package278428
Node: GNU General Public License278907
Node: Copying This Manual317295
Node: GNU Free Documentation License317819
Node: Indices342943
Node: Macro index343227
Node: Concept index349837
Node: Top829
Node: Preliminaries9772
Node: Intro10478
Node: History12169
Node: Bugs16222
Node: Manual17485
Node: Invoking m420988
Node: Operation modes23192
Node: Preprocessor features26291
Node: Limits control29461
Node: Frozen state33472
Node: Debugging options34311
Node: Command line files36363
Node: Syntax38014
Node: Names39169
Node: Quoted strings39651
Node: Comments40318
Node: Other tokens41221
Node: Input processing41815
Ref: Input processing-Footnote-150252
Node: Macros50449
Node: Invocation50943
Node: Inhibiting Invocation51744
Node: Macro Arguments55986
Node: Quoting Arguments59106
Node: Macro expansion61242
Node: Definitions61960
Node: Define62745
Node: Arguments65263
Node: Pseudo Arguments69029
Node: Undefine72658
Node: Defn73817
Node: Pushdef78880
Node: Indir81620
Node: Builtin83787
Node: Conditionals86062
Node: Ifdef87008
Node: Ifelse87890
Node: Shift91276
Node: Forloop102096
Node: Foreach104777
Node: Stacks110399
Node: Composition113534
Node: Debugging121211
Node: Dumpdef121804
Node: Trace123222
Node: Debug Levels126874
Node: Debug Output131744
Node: Input Control133057
Node: Dnl133598
Node: Changequote135540
Node: Changecom145272
Node: Changeword149158
Node: M4wrap154763
Node: File Inclusion158848
Node: Include159169
Node: Search Path161986
Node: Diversions162935
Node: Divert164642
Node: Undivert167208
Node: Divnum170593
Node: Cleardivert171066
Node: Text handling172287
Node: Len173014
Node: Index macro173408
Node: Regexp174301
Node: Substr177462
Node: Translit178520
Node: Patsubst181311
Node: Format185952
Node: Arithmetic189360
Node: Incr189813
Node: Eval191488
Node: Shell commands200232
Node: Platform macros201170
Node: Syscmd203372
Node: Esyscmd205747
Node: Sysval207330
Node: Mkstemp209297
Node: Miscellaneous213354
Node: Errprint213791
Node: Location215043
Node: M4exit217920
Node: Frozen files220046
Node: Using frozen files220844
Node: Frozen file format224225
Node: Compatibility227375
Node: Extensions228457
Node: Incompatibilities232511
Node: Other Incompatibilities241815
Node: Answers244545
Node: Improved exch245359
Node: Improved forloop245912
Node: Improved foreach251368
Node: Improved copy264746
Node: Improved m4wrap268803
Node: Improved cleardivert271299
Node: Improved capitalize272297
Node: Improved fatal_error277333
Node: Copying This Package278430
Node: GNU General Public License278909
Node: Copying This Manual317298
Node: GNU Free Documentation License317822
Node: Indices342946
Node: Macro index343230
Node: Concept index349840

End Tag Table
+2 -2
View File
@@ -1,6 +1,6 @@
This is m4.info, produced by makeinfo version 7.3 from m4.texi.
This manual (5 July 2026) is for GNU M4 (version 1.4.21), a package
This manual (10 July 2026) is for GNU M4 (version 1.4.21), a package
containing an implementation of the m4 macro language.
Copyright © 1989-1994, 2004-2014, 2016-2017, 2020-2026 Free Software
@@ -23,7 +23,7 @@ File: m4.info, Node: Top, Next: Preliminaries, Up: (dir)
GNU M4
******
This manual (5 July 2026) is for GNU M4 (version 1.4.21), a package
This manual (10 July 2026) is for GNU M4 (version 1.4.21), a package
containing an implementation of the m4 macro language.
Copyright © 1989-1994, 2004-2014, 2016-2017, 2020-2026 Free Software
+1 -1
View File
@@ -1,6 +1,6 @@
This is m4.info, produced by makeinfo version 7.3 from m4.texi.
This manual (5 July 2026) is for GNU M4 (version 1.4.21), a package
This manual (10 July 2026) is for GNU M4 (version 1.4.21), a package
containing an implementation of the m4 macro language.
Copyright © 1989-1994, 2004-2014, 2016-2017, 2020-2026 Free Software
+1 -1
View File
@@ -1,4 +1,4 @@
@set UPDATED 5 July 2026
@set UPDATED 10 July 2026
@set UPDATED-MONTH July 2026
@set EDITION 1.4.21
@set VERSION 1.4.21
+1 -1
View File
@@ -1,4 +1,4 @@
@set UPDATED 5 July 2026
@set UPDATED 10 July 2026
@set UPDATED-MONTH July 2026
@set EDITION 1.4.21
@set VERSION 1.4.21
@@ -45,7 +45,7 @@ fn virgl_box_to_hw(b: &Virgl3DBox) -> VirtioGpuBox {
pub struct VirtioDriver {
info: PciDeviceInfo,
_mmio: MmioRegion,
mmio: MmioRegion,
irq_handle: Mutex<Option<InterruptHandle>>,
width: u32,
height: u32,
@@ -55,7 +55,7 @@ pub struct VirtioDriver {
vblank_count: AtomicU64,
cs_seqno: AtomicU64,
/// The VirtIO GPU transport layer (PCI caps + vrings).
/// When None, we are in framebuffer-only stub mode.
/// When None, the driver falls back to direct BAR framebuffer rendering.
transport: Mutex<Option<VirtioTransport>>,
resources: Mutex<HashMap<u32, ResourceState>>,
scanouts: Mutex<HashMap<u32, ScanoutState>>,
@@ -93,7 +93,7 @@ impl VirtioDriver {
}
let fb_bar = find_fb_bar(&info)?;
let _mmio = map_bar(&fb_bar, "VirtIO FB BAR")?;
let mmio = map_bar(&fb_bar, "VirtIO FB BAR")?;
info!(
"redox-drm: VirtIO GPU at {}: {} MiB BAR at {:#x}",
@@ -125,7 +125,7 @@ impl VirtioDriver {
Ok(Self {
info,
_mmio,
mmio,
irq_handle: Mutex::new(None),
width: 1280,
height: 720,
@@ -149,24 +149,50 @@ impl VirtioDriver {
.transport
.lock()
.map_err(|_| DriverError::Initialization("transport lock poisoned".into()))?;
let t = transport
.as_mut()
.ok_or_else(|| DriverError::Unsupported("virtio transport unavailable"))?;
if let Some(t) = transport.as_mut() {
let gem = self
.gem
.lock()
.map_err(|_| DriverError::Buffer("VirtIO GEM poisoned".into()))?;
let object = gem.object(fb_handle)?;
if object.size < size {
return Err(DriverError::InvalidArgument("fb buffer too small for mode"));
}
let resource_id = t.create_resource_2d(0, mode.hdisplay as u32, mode.vdisplay as u32)?;
let rect = transport::VirtioGpuRect { x: 0, y: 0, width: mode.hdisplay as u32, height: mode.vdisplay as u32 };
t.attach_backing(resource_id, &[(object.phys_addr as u64, object.size as u32)])?;
t.set_scanout(0, resource_id, &rect)?;
t.transfer_to_host_2d(resource_id, &rect, 0, stride)?;
t.resource_flush(resource_id, &rect)?;
Ok(ResourceState { resource_id, width: mode.hdisplay as u32, height: mode.vdisplay as u32, stride, scanout_id: Some(0) })
} else {
self.bar_blit(fb_handle, mode)?;
Ok(ResourceState { resource_id: 0, width: mode.hdisplay as u32, height: mode.vdisplay as u32, stride, scanout_id: None })
}
}
fn bar_blit(&self, fb_handle: u32, mode: &ModeInfo) -> Result<()> {
let gem = self
.gem
.lock()
.map_err(|_| DriverError::Buffer("VirtIO GEM poisoned".into()))?;
let object = gem.object(fb_handle)?;
if object.size < size {
return Err(DriverError::InvalidArgument("fb buffer too small for mode"));
let src = unsafe {
std::slice::from_raw_parts(object.virt_addr as *const u8, object.size as usize)
};
let width = mode.hdisplay as usize;
let height = mode.vdisplay as usize;
let stride = width * 4;
let row_size = stride.min(object.size as usize);
for row in 0..height {
let src_offset = row * stride;
if src_offset + row_size > object.size as usize {
break;
}
let row_bytes = &src[src_offset..src_offset + row_size];
self.mmio.write_bytes(row * stride, row_bytes);
}
let resource_id = t.create_resource_2d(0, mode.hdisplay as u32, mode.vdisplay as u32)?;
let rect = transport::VirtioGpuRect { x: 0, y: 0, width: mode.hdisplay as u32, height: mode.vdisplay as u32 };
t.attach_backing(resource_id, &[(object.phys_addr as u64, object.size as u32)])?;
t.set_scanout(0, resource_id, &rect)?;
t.transfer_to_host_2d(resource_id, &rect, 0, stride)?;
t.resource_flush(resource_id, &rect)?;
Ok(ResourceState { resource_id, width: mode.hdisplay as u32, height: mode.vdisplay as u32, stride, scanout_id: Some(0) })
Ok(())
}
/// Probe VirtIO PCI capabilities, negotiate features, and set up virtqueues.
@@ -19,6 +19,7 @@ namespace KWin
class Display;
class SurfaceInterface;
class PlasmaShellSurfaceInterface;
class OutputInterface;
class PlasmaShellInterfacePrivate;
class PlasmaShellSurfaceInterfacePrivate;
@@ -70,6 +71,11 @@ public:
* @returns the requested position in global coordinates.
*/
QPoint position() const;
/**
* @returns the requested output, or nullptr if no output has been requested.
*/
OutputInterface *output() const;
/**
* @returns Whether a global position has been requested.
*/
@@ -171,6 +177,11 @@ Q_SIGNALS:
*/
void positionChanged();
/**
* A change of the requested output has been made.
*/
void outputChanged();
/**
* The surface has requested to be initially shown under the cursor. Can only occur
* before any buffer has been attached.
+3
View File
@@ -91,3 +91,6 @@ redbear_qt_copy_optional_stage_dir_to_sysroot "${STAGE_USR}" "${SYSROOT}" metaty
[source]
tar = "https://download.qt.io/official_releases/qt/6.11/6.11.1/submodules/qtsvg-everywhere-src-6.11.1.tar.xz"
blake3 = "49b947e1a96bf0a29a1ee84c231a518a1413d9f3ec360617e405400e510508b2"
patches = [
"qtsvg/CVE-2026-6210.patch",
] # heap-overflow fix from Qt patch, cherry-picked from upstream 6.8
+27 -39
View File
@@ -1,20 +1,18 @@
diff -ruw source/lib/cmpbuf.c source-new/lib/cmpbuf.c
--- source/lib/cmpbuf.c 2017-01-01 04:22:36.000000000 -0700
+++ source-new/lib/cmpbuf.c 2018-12-29 07:31:43.920193561 -0700
@@ -71,8 +71,8 @@
ancient AIX hosts that set errno to EINTR after uncaught
SIGCONT. See <news:1r77ojINN85n@ftp.UU.NET>
(1993-04-22). */
- if (! SA_RESTART && errno == EINTR)
- continue;
+ //if (! SA_RESTART && errno == EINTR)
+ // continue;
--- diffutils-3.12/lib/cmpbuf.c 2025-01-12 21:27:47.000000000 +0300
+++ diffutils-3.12-new/lib/cmpbuf.c 2026-07-11 01:26:55.996990194 +0300
@@ -84,8 +84,8 @@
ancient AIX hosts that set errno to EINTR after uncaught
SIGCONT. See <news:1r77ojINN85n@ftp.UU.NET>
(1993-04-22). */
- if (! SA_RESTART && errno == EINTR)
- continue;
+ /*if (! SA_RESTART && errno == EINTR)
+ continue;*/
return SIZE_MAX;
}
diff -ruw source/lib/getdtablesize.c source-new/lib/getdtablesize.c
--- source/lib/getdtablesize.c 2017-05-18 10:23:32.000000000 -0600
+++ source-new/lib/getdtablesize.c 2018-12-29 07:32:31.709586573 -0700
return -1;
}
--- diffutils-3.12/lib/getdtablesize.c 2025-01-02 05:33:12.000000000 +0300
+++ diffutils-3.12-new/lib/getdtablesize.c 2026-07-11 01:26:55.997027743 +0300
@@ -109,6 +109,7 @@
int
getdtablesize (void)
@@ -31,11 +29,10 @@ diff -ruw source/lib/getdtablesize.c source-new/lib/getdtablesize.c
return INT_MAX;
}
diff -ruw source/lib/getprogname.c source-new/lib/getprogname.c
--- source/lib/getprogname.c 2017-01-31 11:36:50.000000000 -0700
+++ source-new/lib/getprogname.c 2018-12-29 07:34:15.432575388 -0700
@@ -51,6 +51,14 @@
# include <sys/procfs.h>
--- diffutils-3.12/lib/getprogname.c 2025-01-02 05:33:12.000000000 +0300
+++ diffutils-3.12-new/lib/getprogname.c 2026-07-11 01:26:55.997103089 +0300
@@ -55,6 +55,14 @@
# include <string.h>
#endif
+#if defined(__redox__)
@@ -46,30 +43,29 @@ diff -ruw source/lib/getprogname.c source-new/lib/getprogname.c
+# include <limits.h>
+#endif
+
#include "dirname.h"
#include "basename-lgpl.h"
#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Cygwin */
@@ -177,6 +185,17 @@
}
#ifndef HAVE_GETPROGNAME /* not Mac OS X, FreeBSD, NetBSD, OpenBSD >= 5.4, Solaris >= 11, Cygwin, Android API level >= 21 */
@@ -297,6 +305,17 @@
close (fd);
}
return NULL;
return "?";
+# elif defined(__redox__)
+ char filename[PATH_MAX];
+ int fd = open ("sys:exe", O_RDONLY);
+ if (fd > 0) {
+ int len = read(fd, filename, PATH_MAX-1);
+ if (len > 0) {
+ filename[len] = '\0';
+ filename[len] = '\x00';
+ return strdup(filename);
+ }
+ }
+ return NULL;
+ return "?";
# else
# error "getprogname module not ported to this OS"
# endif
diff -ruw source/lib/sigprocmask.c source-new/lib/sigprocmask.c
--- source/lib/sigprocmask.c 2017-05-18 10:23:32.000000000 -0600
+++ source-new/lib/sigprocmask.c 2018-12-29 07:45:02.610557142 -0700
--- diffutils-3.12/lib/sigprocmask.c 2025-01-02 05:33:12.000000000 +0300
+++ diffutils-3.12-new/lib/sigprocmask.c 2026-07-11 01:26:55.997143937 +0300
@@ -126,6 +126,7 @@
return 0;
}
@@ -78,11 +74,3 @@ diff -ruw source/lib/sigprocmask.c source-new/lib/sigprocmask.c
int
sigemptyset (sigset_t *set)
{
@@ -180,6 +181,7 @@
*set = ((2U << (NSIG - 1)) - 1) & ~ SIGABRT_COMPAT_MASK;
return 0;
}
+#endif
/* Set of currently blocked signals. */
static volatile sigset_t blocked_set /* = 0 */;
+9 -5
View File
@@ -1,6 +1,6 @@
[source]
tar = "https://ftp.gnu.org/gnu/diffutils/diffutils-3.6.tar.xz"
blake3 = "086a95093c15edcdb826e75ff4de6c2213de6fbd2eb13538d07bdc3286dfb4a4"
tar = "https://ftp.gnu.org/gnu/diffutils/diffutils-3.12.tar.xz"
blake3 = "363fb378c85505b43f91d6e7c7382d571f2f7b47e4d334c18d522baf55599d18"
patches = ["diffutils.patch"]
script = """
autoreconf
@@ -11,6 +11,8 @@ template = "custom"
dependencies = ["relibc"]
script = """
DYNAMIC_INIT
export HELP2MAN=true
export MAKEINFO=true
COOKBOOK_CONFIGURE_FLAGS+=(
gt_cv_locale_fr=false
gt_cv_locale_fr_utf8=false
@@ -24,12 +26,14 @@ COOKBOOK_CONFIGURE_FLAGS+=(
gl_cv_header_sys_types_h=yes
ac_cv_header_wchar_h=yes
ac_cv_header_stdio_h=yes
ac_cv_path_HELP2MAN=true
ac_cv_path_MAKEINFO=true
)
cookbook_configure
"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}"
"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}"
"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}" HELP2MAN=true MAKEINFO=true
"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}" HELP2MAN=true MAKEINFO=true
rm -f "${COOKBOOK_STAGE}/usr/share/info/dir"
"""
[package]
description = "GNU diffutils (gnulib bypass enabled)"
description = "GNU diffutils 3.12 (gnulib bypass enabled)"
@@ -28,8 +28,96 @@ use std::sync::{
Mutex,
};
fn map_framebuffer(_phys: usize, size: usize) -> Vec<u8> {
vec![0u8; size]
enum Framebuffer {
Vec(Vec<u8>),
Mmap(MmapBuffer),
}
impl AsMut<[u8]> for Framebuffer {
fn as_mut(&mut self) -> &mut [u8] {
match self {
Framebuffer::Vec(v) => v.as_mut(),
Framebuffer::Mmap(m) => m.as_mut(),
}
}
}
struct MmapBuffer {
base: *mut u8,
base_len: usize,
data: *mut u8,
len: usize,
}
unsafe impl Send for MmapBuffer {}
impl AsMut<[u8]> for MmapBuffer {
fn as_mut(&mut self) -> &mut [u8] {
unsafe { std::slice::from_raw_parts_mut(self.data, self.len) }
}
}
impl Drop for MmapBuffer {
fn drop(&mut self) {
unsafe {
let _ = libc::munmap(self.base as *mut libc::c_void, self.base_len);
}
}
}
fn map_framebuffer(phys: usize, size: usize) -> std::io::Result<Framebuffer> {
if phys == 0 || size == 0 {
return Ok(Framebuffer::Vec(vec![0u8; size]));
}
let path = if cfg!(target_os = "redox") {
"/scheme/memory\0"
} else {
"/dev/mem\0"
};
let fd = unsafe { libc::open(path.as_ptr() as *const libc::c_char, libc::O_RDWR) };
if fd < 0 {
return Err(std::io::Error::other(format!(
"failed to open framebuffer memory device: {}",
std::io::Error::last_os_error()
)));
}
let page_size = unsafe { libc::sysconf(libc::_SC_PAGESIZE) as usize };
let map_offset = phys & !(page_size - 1);
let in_page = phys - map_offset;
let map_size = ((size + in_page + page_size - 1) / page_size) * page_size;
let ptr = unsafe {
libc::mmap(
std::ptr::null_mut(),
map_size,
libc::PROT_READ | libc::PROT_WRITE,
libc::MAP_SHARED,
fd,
map_offset as libc::off_t,
)
};
unsafe { libc::close(fd); }
if ptr == libc::MAP_FAILED {
return Err(std::io::Error::other(format!(
"failed to map framebuffer at 0x{:X}: {}",
phys,
std::io::Error::last_os_error()
)));
}
let data_ptr = unsafe { (ptr as *mut u8).add(in_page) };
Ok(Framebuffer::Mmap(MmapBuffer {
base: ptr as *mut u8,
base_len: map_size,
data: data_ptr,
len: size,
}))
}
// ── DRM/KMS backend — replaces the VESA framebuffer stub above ──
@@ -1170,7 +1258,7 @@ pub struct Compositor {
fb_width: u32,
fb_height: u32,
fb_stride: u32,
fb_data: Mutex<Vec<u8>>,
fb_data: Mutex<Framebuffer>,
drm: Mutex<Option<drm_backend::DrmOutput>>,
clients: Mutex<HashMap<u32, ClientState>>,
pointer_state: Mutex<PointerState>,
@@ -1200,7 +1288,7 @@ impl Compositor {
.ok();
let fb_size = (fb_height as usize) * (fb_stride as usize);
let fb_data = map_framebuffer(fb_phys, fb_size);
let fb_data = map_framebuffer(fb_phys, fb_size)?;
let globals = vec![
Global {
@@ -3103,7 +3191,7 @@ impl Compositor {
let fb_stride;
let fb_ptr: *mut u8;
// Try DRM first, fall back to fb_data Vec
// Try DRM first, fall back to fb_data buffer
if let Ok(mut drm_guard) = self.drm.lock() {
if let Some(ref mut drm) = *drm_guard {
fb_stride = drm.stride as usize;
@@ -3113,13 +3201,13 @@ impl Compositor {
} else {
let mut fb = self.fb_data.lock().unwrap();
fb_stride = self.fb_stride as usize;
fb_ptr = fb.as_mut_ptr();
fb_ptr = fb.as_mut().as_mut_ptr();
drop(fb); // release lock before unsafe block
}
} else {
let mut fb = self.fb_data.lock().unwrap();
fb_stride = self.fb_stride as usize;
fb_ptr = fb.as_mut_ptr();
fb_ptr = fb.as_mut().as_mut_ptr();
drop(fb);
}
-1
View File
@@ -1 +0,0 @@
../../../local/recipes/wayland/libwayland
-1
View File
@@ -1 +0,0 @@
../../../local/recipes/wayland/seatd-redox
-1
View File
@@ -1 +0,0 @@
../../../local/recipes/wayland/smallvil
-1
View File
@@ -1 +0,0 @@
../../../local/recipes/wayland/wayland-protocols