flex: Fix segfault of stage1flex when host has glibc 2.26 or newer

When the host uses glibc 2.26 or newer, Flex will try to use the
newly-introduced reallocarray() function, but as it would not define
_GNU_SOURCE a segmentation fault would occur later on due to the
compiler assumming that the function is implicitly defined.

This issue manifests itself due to a crash of "stage1flex" during the
Flex bootstrap:

  ./stage1flex   -o stage1scan.c ./scan.l
  make[2]: *** [Makefile:1725: stage1scan.c] Segmentation fault (core dumped)

This imports the patch from the upstream Git repository, and adds flags
in the .mk file to rebuild the Autotools scripts and support files. Due
to the latter, the patch to disable the documentation is changed so it
modifies the .am file instead.

Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
[Arnout:
 - Add Adrian's Sob and upstream ref to new patch;
 - Keep patch 1 as patch 1;
 - Keep Vicente as author of path 1;
 - Add reason for autoreconf in a comment.]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
Adrian Perez de Castro 2017-09-13 17:35:24 +03:00 committed by Arnout Vandecappelle (Essensium/Mind)
parent d6a4807f94
commit c128c5f3c7
3 changed files with 58 additions and 5 deletions

View File

@ -1,4 +1,7 @@
flex: disable documentation
From a98443c6a72d5821d4e0152311e5c3eb4cdff25c Mon Sep 17 00:00:00 2001
From: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
Date: Wed, 13 Sep 2017 17:26:48 +0300
Subject: [PATCH] flex: disable documentation
Since we prevent the flex binary to be built, we also need to prevent
the documentation to be built, otherwise it will fail like this:
@ -9,11 +12,17 @@ make[2]: *** No rule to make target '../src/flex', needed by 'flex.1'.
Stop.
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
[Adrian: patch Makefile.am instead of Makefile.in]
Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
---
Makefile.am | 1 -
1 file changed, 1 deletion(-)
diff -rup a/Makefile.in b/Makefile.in
--- a/Makefile.in 2017-05-06 15:49:09.000000000 +0100
+++ b/Makefile.in 2017-05-10 14:35:20.152794902 +0100
@@ -450,7 +450,6 @@ EXTRA_DIST = \
diff --git a/Makefile.am b/Makefile.am
index 638c549..9db3420 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -43,7 +43,6 @@ EXTRA_DIST = \
SUBDIRS = \
src \
@ -21,3 +30,6 @@ diff -rup a/Makefile.in b/Makefile.in
examples \
po \
tests \
--
2.14.1

View File

@ -0,0 +1,35 @@
From ffa886a580929f26fd5e5a40c9c5334955c48553 Mon Sep 17 00:00:00 2001
From: Explorer09 <explorer09@gmail.com>
Date: Mon, 4 Sep 2017 10:47:33 +0800
Subject: [PATCH] build: AC_USE_SYSTEM_EXTENSIONS in configure.ac.
This would, e.g. define _GNU_SOURCE in config.h, enabling the
reallocarray() prototype in glibc 2.26+ on Linux systems with that
version of glibc.
Fixes #241.
Backported from: 24fd0551333e7eded87b64dd36062da3df2f6380
Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
---
configure.ac | 2 ++
1 file changed, 2 insertions(+)
diff --git a/configure.ac b/configure.ac
index 55e774b..c879fe1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,8 +25,10 @@
# autoconf requirements and initialization
AC_INIT([the fast lexical analyser generator],[2.6.4],[flex-help@lists.sourceforge.net],[flex])
+AC_PREREQ([2.60])
AC_CONFIG_SRCDIR([src/scan.l])
AC_CONFIG_AUX_DIR([build-aux])
+AC_USE_SYSTEM_EXTENSIONS
LT_INIT
AM_INIT_AUTOMAKE([1.11.3 -Wno-portability foreign check-news std-options dist-lzip parallel-tests subdir-objects])
AC_CONFIG_HEADER([src/config.h])
--
2.14.1

View File

@ -10,8 +10,14 @@ FLEX_INSTALL_STAGING = YES
FLEX_LICENSE = FLEX
FLEX_LICENSE_FILES = COPYING
FLEX_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-m4
# 0001-flex-disable-documentation.patch
# 0002-build-AC_USE_SYSTEM_EXTENSIONS-in-configure.ac.patch
FLEX_AUTORECONF = YES
FLEX_GETTEXTIZE = YES
FLEX_CONF_ENV = ac_cv_path_M4=/usr/bin/m4 \
ac_cv_func_reallocarray=no
HOST_FLEX_DEPENDENCIES = host-m4
define FLEX_DISABLE_PROGRAM