mirror of
https://codeberg.org/guix/guix.git
synced 2026-01-25 12:05:19 -06:00
gnu: re2c: Fix build on armhf-linux.
* gnu/packages/re2c.scm (re2c)[arguments]: When building for armhf-linux add a phase to apply a patch. * gnu/packages/patches/re2c-Use-maximum-alignment.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: I9f056de47dc993b9ad779969f1eec71436c21160 Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
This commit is contained in:
parent
92c63391ee
commit
ab2fed9abc
3 changed files with 64 additions and 1 deletions
|
|
@ -2239,6 +2239,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/racket-chez-scheme-bin-sh.patch \
|
||||
%D%/packages/patches/racket-launcher-config-dir.patch \
|
||||
%D%/packages/patches/racket-rktio-bin-sh.patch \
|
||||
%D%/packages/patches/re2c-Use-maximum-alignment.patch \
|
||||
%D%/packages/patches/reduce-unbundle-libffi.patch \
|
||||
%D%/packages/patches/remake-impure-dirs.patch \
|
||||
%D%/packages/patches/restartd-update-robust.patch \
|
||||
|
|
|
|||
48
gnu/packages/patches/re2c-Use-maximum-alignment.patch
Normal file
48
gnu/packages/patches/re2c-Use-maximum-alignment.patch
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
https://github.com/skvadrik/re2c/pull/555
|
||||
|
||||
From 44125b74628d17f0a0a6cf9b51dd1f24169cd2d5 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Abramov <levenson@mmer.org>
|
||||
Date: Fri, 22 Aug 2025 08:10:08 +0200
|
||||
Subject: [PATCH] Use maximum alignment to ensure compatibility across all
|
||||
architectures.
|
||||
|
||||
---
|
||||
src/util/allocator.h | 14 ++++++++++----
|
||||
1 file changed, 10 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/util/allocator.h b/src/util/allocator.h
|
||||
index e6c85585b..56daf056f 100644
|
||||
--- a/src/util/allocator.h
|
||||
+++ b/src/util/allocator.h
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
+#include <stddef.h>
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
|
||||
@@ -78,11 +79,16 @@ class slab_allocator_t {
|
||||
};
|
||||
|
||||
// Use maximum alignment.
|
||||
+// Use alignment based on pointer size: 32-bit platforms need stronger alignment
|
||||
+// for 64-bit types (double, long long), while 64-bit platforms are already
|
||||
+// sufficiently aligned with pointer-sized alignment.
|
||||
+constexpr size_t ALLOCATOR_ALIGNMENT = (sizeof(void*) == 4) ? alignof(max_align_t) : sizeof(void*);
|
||||
+
|
||||
// Use different types to prevent accidentally mixing allocators for data with different life spans.
|
||||
-using AstAllocator = slab_allocator_t<AllocatorKind::AST, 16 * 4096, sizeof(void*)>;
|
||||
-using IrAllocator = slab_allocator_t<AllocatorKind::IR, 16 * 4096, sizeof(void*)>;
|
||||
-using DfaAllocator = slab_allocator_t<AllocatorKind::DFA, 16 * 4096, sizeof(void*)>;
|
||||
-using OutAllocator = slab_allocator_t<AllocatorKind::OUT, 16 * 4096, sizeof(void*)>;
|
||||
+using AstAllocator = slab_allocator_t<AllocatorKind::AST, 16 * 4096, ALLOCATOR_ALIGNMENT>;
|
||||
+using IrAllocator = slab_allocator_t<AllocatorKind::IR, 16 * 4096, ALLOCATOR_ALIGNMENT>;
|
||||
+using DfaAllocator = slab_allocator_t<AllocatorKind::DFA, 16 * 4096, ALLOCATOR_ALIGNMENT>;
|
||||
+using OutAllocator = slab_allocator_t<AllocatorKind::OUT, 16 * 4096, ALLOCATOR_ALIGNMENT>;
|
||||
|
||||
} // namespace re2c
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
||||
|
|
@ -2,6 +2,7 @@
|
|||
;;; Copyright © 2017, 2020 Sergei Trofimovich <slyfox@inbox.ru>
|
||||
;;; Copyright © 2021 Sergei Trofimovich <slyich@gmail.com>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2025 Alexey Abramov <levenson@mmer.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
|
@ -20,7 +21,10 @@
|
|||
|
||||
(define-module (gnu packages re2c)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu))
|
||||
|
|
@ -38,9 +42,19 @@
|
|||
(base32
|
||||
"07ysqgdm0h566a8lwnpdgycp93vz7zskzihsgah3bla0ycj2pp69"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://re2c.org/")
|
||||
(arguments
|
||||
(if (target-arm32?)
|
||||
(list #:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-sources
|
||||
(lambda _
|
||||
(invoke "patch" "-p1" "--force" "--input"
|
||||
#$(local-file (search-patch
|
||||
"re2c-Use-maximum-alignment.patch")))))))
|
||||
'()))
|
||||
(native-inputs
|
||||
(list python)) ; for the test driver
|
||||
(home-page "https://re2c.org/")
|
||||
(synopsis "Lexer generator for C/C++")
|
||||
(description
|
||||
"@code{re2c} generates minimalistic hard-coded state machine (as opposed
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue