mariadb/mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch
Martin Pluskal f8b34d4b4d Accepting request 787639 from home:marxin:branches:server:database
- Add mariadb-10.5-fix-prevent-optimizing-out-buf-argument-in-ch.patch
  in order to fix boo#1158405 (MDEV-21248).

OBS-URL: https://build.opensuse.org/request/show/787639
OBS-URL: https://build.opensuse.org/package/show/server:database/mariadb?expand=0&rev=250
2020-03-24 05:57:11 +00:00

41 lines
1.3 KiB
Diff

From 35c277851972267d4d020126ab8f893c4b17dd36 Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Sun, 8 Dec 2019 10:52:27 +0100
Subject: [PATCH] MDEV-21248: Prevent optimizing out buf argument in
check_stack_overrun.
When using LTO, one can see optimization of stack variables that
are passed to check_stack_overrun as argument buf. That prevents
proper stack overrun detection.
---
sql/sql_parse.cc | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index dc81e8a2b91..6f3c076709a 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -7392,8 +7392,17 @@ long max_stack_used;
corresponding exec. (Thus we only have to check in fix_fields.)
- Passing to check_stack_overrun() prevents the compiler from removing it.
*/
-bool check_stack_overrun(THD *thd, long margin,
- uchar *buf __attribute__((unused)))
+
+bool
+#ifdef __GNUC__
+/*
+ Do not optimize the function in order to preserve a stack variable creation.
+ Otherwise, the variable pointed as "buf" can be removed due to a missing
+ usage.
+ */
+__attribute__((optimize("-O0")))
+#endif
+check_stack_overrun(THD *thd, long margin, uchar *buf __attribute__((unused)))
{
long stack_used;
DBUG_ASSERT(thd == current_thd);
--
2.25.1