package/libtalloc: fix build wihout SSP
Fix the following build failure without SSP raised since the addition of
the package in commit f0d37e275a
:
/home/autobuild/autobuild/instance-5/output-1/host/lib/gcc/i686-buildroot-linux-musl/9.4.0/../../../../i686-buildroot-linux-musl/bin/ld: talloc.c.5.o: in function `_vasprintf_tc':
talloc.c:(.text+0x427d): undefined reference to `__stack_chk_fail_local'
Fixes:
- http://autobuild.buildroot.org/results/e221bde25c7622db99761d0adcd56663296beb15
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
This commit is contained in:
parent
9fc652a373
commit
6a8dae6ddd
@ -0,0 +1,116 @@
|
||||
From 5885ed8e6db7648e6842d9811aace7edc4e8aba7 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Wed, 20 Apr 2022 11:16:52 +0200
|
||||
Subject: [PATCH] buildtools/wafsamba: add --disable-stack-protector option
|
||||
|
||||
Allow the user to disable stack-protector through
|
||||
--disable-stack-protector to avoid the following build failure with
|
||||
libtalloc on embedded toolchains which don't support stack-protector:
|
||||
|
||||
/home/autobuild/autobuild/instance-5/output-1/host/lib/gcc/i686-buildroot-linux-musl/9.4.0/../../../../i686-buildroot-linux-musl/bin/ld: talloc.c.5.o: in function `_vasprintf_tc':
|
||||
talloc.c:(.text+0x427d): undefined reference to `__stack_chk_fail_local'
|
||||
|
||||
This build failure is raised since
|
||||
https://gitlab.com/ffontaine/samba/-/commit/38e97f8b52e85bdfcf2d74a4fb3c848fa46ba371
|
||||
because stack-protector is enabled on libtalloc despite the fact that
|
||||
libssp is not available:
|
||||
|
||||
Checking if compiler accepts -fstack-protector-strong : yes
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/e221bde25c7622db99761d0adcd56663296beb15
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status:
|
||||
https://gitlab.com/samba-team/samba/-/merge_requests/2493]
|
||||
---
|
||||
buildtools/wafsamba/samba_autoconf.py | 49 ++++++++++++++-------------
|
||||
buildtools/wafsamba/wscript | 3 ++
|
||||
2 files changed, 28 insertions(+), 24 deletions(-)
|
||||
|
||||
diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
|
||||
index 78927d85193..23a995e1c34 100644
|
||||
--- a/buildtools/wafsamba/samba_autoconf.py
|
||||
+++ b/buildtools/wafsamba/samba_autoconf.py
|
||||
@@ -703,9 +703,28 @@ def SAMBA_CONFIG_H(conf, path=None):
|
||||
if not IN_LAUNCH_DIR(conf):
|
||||
return
|
||||
|
||||
- # we need to build real code that can't be optimized away to test
|
||||
- stack_protect_list = ['-fstack-protector-strong', '-fstack-protector']
|
||||
- for stack_protect_flag in stack_protect_list:
|
||||
+ if not Options.options.disable_stack_protector:
|
||||
+ # we need to build real code that can't be optimized away to test
|
||||
+ stack_protect_list = ['-fstack-protector-strong', '-fstack-protector']
|
||||
+ for stack_protect_flag in stack_protect_list:
|
||||
+ flag_supported = conf.check(fragment='''
|
||||
+ #include <stdio.h>
|
||||
+
|
||||
+ int main(void)
|
||||
+ {
|
||||
+ char t[100000];
|
||||
+ while (fgets(t, sizeof(t), stdin));
|
||||
+ return 0;
|
||||
+ }
|
||||
+ ''',
|
||||
+ execute=0,
|
||||
+ cflags=[ '-Werror', '-Wp,-D_FORTIFY_SOURCE=2', stack_protect_flag],
|
||||
+ mandatory=False,
|
||||
+ msg='Checking if compiler accepts %s' % (stack_protect_flag))
|
||||
+ if flag_supported:
|
||||
+ conf.ADD_CFLAGS('%s' % (stack_protect_flag))
|
||||
+ break
|
||||
+
|
||||
flag_supported = conf.check(fragment='''
|
||||
#include <stdio.h>
|
||||
|
||||
@@ -717,29 +736,11 @@ def SAMBA_CONFIG_H(conf, path=None):
|
||||
}
|
||||
''',
|
||||
execute=0,
|
||||
- cflags=[ '-Werror', '-Wp,-D_FORTIFY_SOURCE=2', stack_protect_flag],
|
||||
+ cflags=[ '-Werror', '-fstack-clash-protection'],
|
||||
mandatory=False,
|
||||
- msg='Checking if compiler accepts %s' % (stack_protect_flag))
|
||||
+ msg='Checking if compiler accepts -fstack-clash-protection')
|
||||
if flag_supported:
|
||||
- conf.ADD_CFLAGS('%s' % (stack_protect_flag))
|
||||
- break
|
||||
-
|
||||
- flag_supported = conf.check(fragment='''
|
||||
- #include <stdio.h>
|
||||
-
|
||||
- int main(void)
|
||||
- {
|
||||
- char t[100000];
|
||||
- while (fgets(t, sizeof(t), stdin));
|
||||
- return 0;
|
||||
- }
|
||||
- ''',
|
||||
- execute=0,
|
||||
- cflags=[ '-Werror', '-fstack-clash-protection'],
|
||||
- mandatory=False,
|
||||
- msg='Checking if compiler accepts -fstack-clash-protection')
|
||||
- if flag_supported:
|
||||
- conf.ADD_CFLAGS('-fstack-clash-protection')
|
||||
+ conf.ADD_CFLAGS('-fstack-clash-protection')
|
||||
|
||||
if Options.options.debug:
|
||||
conf.ADD_CFLAGS('-g', testflags=True)
|
||||
diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
|
||||
index 8729b0829da..d75bb3b1c0c 100644
|
||||
--- a/buildtools/wafsamba/wscript
|
||||
+++ b/buildtools/wafsamba/wscript
|
||||
@@ -165,6 +165,9 @@ Currently the only tested value is 'smbtorture,smbd/smbd' for Samba'''),
|
||||
gr.add_option('--disable-warnings-as-errors',
|
||||
help=("Do not treat all warnings as errors (disable -Werror)"),
|
||||
action="store_true", dest='disable_warnings_as_errors', default=False)
|
||||
+ gr.add_option('--disable-stack-protector',
|
||||
+ help=("Disable stack-protector"),
|
||||
+ action="store_true", dest='disable_stack_protector', default=False)
|
||||
opt.add_option('--enable-coverage',
|
||||
help=("enable options necessary for code coverage "
|
||||
"reporting on selftest (default=no)"),
|
||||
--
|
||||
2.35.1
|
||||
|
@ -20,6 +20,7 @@ LIBTALLOC_INSTALL_STAGING = YES
|
||||
# libtalloc since it's optional.
|
||||
LIBTALLOC_CONF_OPTS += --cross-compile \
|
||||
--cross-answers=$(@D)/cache.txt \
|
||||
--disable-stack-protector \
|
||||
--hostcc=gcc \
|
||||
--with-libiconv=$(STAGING_DIR)/usr
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user