package/gdb: fix host gdb-11.1 compile with simulator enabled and glibc >= 2.34
- add upstream patch to avoid host gdb-11.1 compile failure with simulator enabled and glibc >= 2.34 Fixes: targ-map.c:412:17: error: initializer element is not constant 412 | { "SIGSTKSZ", SIGSTKSZ, TARGET_SIGSTKSZ }, | ^~~~~~~~ Signed-off-by: Peter Seiderer <ps.report@gmx.net> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
db725c7afb
commit
35870e2078
110
package/gdb/11.1/0006-sim-filter-out-SIGSTKSZ-PR-sim-28302.patch
Normal file
110
package/gdb/11.1/0006-sim-filter-out-SIGSTKSZ-PR-sim-28302.patch
Normal file
@ -0,0 +1,110 @@
|
||||
From 7b3df9b8938357c2b0dcf2624e599a76fc4edc02 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier@gentoo.org>
|
||||
Date: Sun, 3 Oct 2021 12:02:53 -0400
|
||||
Subject: [PATCH] sim: filter out SIGSTKSZ [PR sim/28302]
|
||||
|
||||
We map target signals to host signals so we can propagate signals
|
||||
between the host & simulated worlds. That means we need to know
|
||||
the symbolic names & values of all signals that might be sent.
|
||||
|
||||
The tools that generate that list use signal.h and include all
|
||||
symbols that start with "SIG" so as to automatically include any
|
||||
new symbols that the C library might add. Unfortunately, this
|
||||
also picks up "SIGSTKSZ" which is not actually a signal itself,
|
||||
but a signal related setting -- it's the size of the stack when
|
||||
a signal is handled.
|
||||
|
||||
By itself this doesn't super matter as we will never see a signal
|
||||
with that same value (since the range of valid signals tend to be
|
||||
way less than 1024, and the size of the default signal stack will
|
||||
never be that small). But with recent glibc changes that make this
|
||||
into a dynamic value instead of a compile-time constant, some users
|
||||
see build failures when building the sim.
|
||||
|
||||
As suggested by Adam Sampson, update our scripts to ignore this
|
||||
symbol to simplify everything and avoid the build failure.
|
||||
|
||||
Bug: https://sourceware.org/PR28302
|
||||
|
||||
[Upstream: https://sourceware.org/git/?p=binutils-gdb.git;a=patch;h=39d53d04357606a15efd400147fa7369d71baf2c]
|
||||
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
|
||||
---
|
||||
sim/bfin/linux-targ-map.h | 5 +----
|
||||
sim/common/gennltvals.py | 6 ++++--
|
||||
sim/common/nltvals.def | 1 -
|
||||
3 files changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/sim/bfin/linux-targ-map.h b/sim/bfin/linux-targ-map.h
|
||||
index e9c8c8f..0340ed5 100644
|
||||
--- a/sim/bfin/linux-targ-map.h
|
||||
+++ b/sim/bfin/linux-targ-map.h
|
||||
@@ -30,6 +30,7 @@ echo
|
||||
# XXX: nothing uses this ?
|
||||
echo '#include <signal.h>' | \
|
||||
bfin-uclinux-gcc -E -dD -P - | \
|
||||
+grep -v SIGSTKSZ | \
|
||||
sed -r -n \
|
||||
-e '1istatic CB_TARGET_DEFS_MAP cb_linux_signal_map[] = {' \
|
||||
-e '$i\ \ { 0, -1, -1 }\n};' \
|
||||
@@ -1987,10 +1988,6 @@ static CB_TARGET_DEFS_MAP cb_linux_signal_map[] =
|
||||
#ifdef SIG_SETMASK
|
||||
# define TARGET_LINUX_SIG_SETMASK 2
|
||||
{ "SIG_SETMASK", SIG_SETMASK, TARGET_LINUX_SIG_SETMASK },
|
||||
-#endif
|
||||
-#ifdef SIGSTKSZ
|
||||
-# define TARGET_LINUX_SIGSTKSZ 8192
|
||||
- { "SIGSTKSZ", SIGSTKSZ, TARGET_LINUX_SIGSTKSZ },
|
||||
#endif
|
||||
{ 0, -1, -1 }
|
||||
};
|
||||
diff --git a/sim/common/gennltvals.py b/sim/common/gennltvals.py
|
||||
index b3e558d..bd4d7e9 100755
|
||||
--- a/sim/common/gennltvals.py
|
||||
+++ b/sim/common/gennltvals.py
|
||||
@@ -67,6 +67,7 @@ FILE_HEADER = f"""\
|
||||
def gentvals(output: TextIO, cpp: str, srctype: str, srcdir: Path,
|
||||
headers: Iterable[str],
|
||||
pattern: str,
|
||||
+ filter: str = r'^$',
|
||||
target: str = None):
|
||||
"""Extract constants from the specified files using a regular expression.
|
||||
|
||||
@@ -94,12 +95,13 @@ def gentvals(output: TextIO, cpp: str, srctype: str, srcdir: Path,
|
||||
srcfile = ''.join(f'#include <{x}>\n' for x in headers)
|
||||
syms = set()
|
||||
define_pattern = re.compile(r'^#\s*define\s+(' + pattern + ')')
|
||||
+ filter_pattern = re.compile(filter)
|
||||
for header in headers:
|
||||
with open(srcdir / header, 'r', encoding='utf-8') as fp:
|
||||
data = fp.read()
|
||||
for line in data.splitlines():
|
||||
m = define_pattern.match(line)
|
||||
- if m:
|
||||
+ if m and not filter_pattern.search(line):
|
||||
syms.add(m.group(1))
|
||||
for sym in sorted(syms):
|
||||
srcfile += f'#ifdef {sym}\nDEFVAL {{ "{sym}", {sym} }},\n#endif\n'
|
||||
@@ -129,7 +131,7 @@ def gen_common(output: TextIO, newlib: Path, cpp: str):
|
||||
('errno.h', 'sys/errno.h'), 'E[A-Z0-9]*')
|
||||
|
||||
gentvals(output, cpp, 'signal', newlib / 'newlib/libc/include',
|
||||
- ('signal.h', 'sys/signal.h'), r'SIG[A-Z0-9]*')
|
||||
+ ('signal.h', 'sys/signal.h'), r'SIG[A-Z0-9]*', filter=r'SIGSTKSZ')
|
||||
|
||||
gentvals(output, cpp, 'open', newlib / 'newlib/libc/include',
|
||||
('fcntl.h', 'sys/fcntl.h', 'sys/_default_fcntl.h'), r'O_[A-Z0-9]*')
|
||||
diff --git a/sim/common/nltvals.def b/sim/common/nltvals.def
|
||||
index 8ae8839..8bc6ae5 100644
|
||||
--- a/sim/common/nltvals.def
|
||||
+++ b/sim/common/nltvals.def
|
||||
@@ -116,7 +116,6 @@
|
||||
{ "SIGPROF", 27 },
|
||||
{ "SIGQUIT", 3 },
|
||||
{ "SIGSEGV", 11 },
|
||||
- { "SIGSTKSZ", 8192 },
|
||||
{ "SIGSTOP", 17 },
|
||||
{ "SIGSYS", 12 },
|
||||
{ "SIGTERM", 15 },
|
||||
--
|
||||
2.33.1
|
||||
|
Loading…
Reference in New Issue
Block a user