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:
@@ -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
|
||||
[1m[38;5;45mcook relibc - cached[39m[m
|
||||
[01;38;5;155mrepo - publishing relibc[0m
|
||||
[01;38;5;155mrepo - generating repo.toml[0m
|
||||
|
||||
>>> 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...
|
||||
@@ -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()
|
||||
@@ -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,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,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
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,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,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,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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */;
|
||||
|
||||
@@ -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 +0,0 @@
|
||||
../../../local/recipes/wayland/libwayland
|
||||
@@ -1 +0,0 @@
|
||||
../../../local/recipes/wayland/seatd-redox
|
||||
@@ -1 +0,0 @@
|
||||
../../../local/recipes/wayland/smallvil
|
||||
@@ -1 +0,0 @@
|
||||
../../../local/recipes/wayland/wayland-protocols
|
||||
Reference in New Issue
Block a user