aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnestas Kulik <ekulik@redhat.com>2020-01-25 18:44:11 +0100
committerJussi Pakkanen <jpakkane@gmail.com>2020-01-25 23:07:38 +0200
commitdbad64cf34ba43b24dc2d71bd260f137acc37ea5 (patch)
treec14976cf980023ccdc887212fcfd396bc05b1688
parentf54f27b1a8d0b3ea842ed8981f4f56cd305f9794 (diff)
downloadmeson-dbad64cf34ba43b24dc2d71bd260f137acc37ea5.zip
meson-dbad64cf34ba43b24dc2d71bd260f137acc37ea5.tar.gz
meson-dbad64cf34ba43b24dc2d71bd260f137acc37ea5.tar.bz2
tests: Prevent multiple-definition of symbols
With GCC 10, -fno-common becomes default behavior, meaning that any subtly-broken code will be broken not so subtly anymore. This commit changes the linkage to variables declared in headers to external and, where needed, adds additional definitions in other compilation units.
-rw-r--r--test cases/common/219 source set configuration_data/all.h6
-rw-r--r--test cases/common/219 source set configuration_data/f.c2
-rw-r--r--test cases/common/220 source set dictionary/all.h6
-rw-r--r--test cases/common/220 source set dictionary/f.c2
-rw-r--r--test cases/common/68 build always/version.h2
-rw-r--r--test cases/common/69 vcstag/tagprog.c2
6 files changed, 14 insertions, 6 deletions
diff --git a/test cases/common/219 source set configuration_data/all.h b/test cases/common/219 source set configuration_data/all.h
index 728a7f6..e3547df 100644
--- a/test cases/common/219 source set configuration_data/all.h
+++ b/test cases/common/219 source set configuration_data/all.h
@@ -3,5 +3,7 @@ extern void g(void);
extern void h(void);
extern void undefined(void);
-/* No extern here to get a common symbol */
-void (*p)(void);
+/* Defined in nope.c and f.c,
+ * value depends on the source set and configuration used.
+ */
+extern void (*p)(void);
diff --git a/test cases/common/219 source set configuration_data/f.c b/test cases/common/219 source set configuration_data/f.c
index a50ecda..33d2f18 100644
--- a/test cases/common/219 source set configuration_data/f.c
+++ b/test cases/common/219 source set configuration_data/f.c
@@ -1,5 +1,7 @@
#include "all.h"
+void (*p)(void) = (void *)0x12AB34CD;
+
void f(void)
{
}
diff --git a/test cases/common/220 source set dictionary/all.h b/test cases/common/220 source set dictionary/all.h
index 728a7f6..e3547df 100644
--- a/test cases/common/220 source set dictionary/all.h
+++ b/test cases/common/220 source set dictionary/all.h
@@ -3,5 +3,7 @@ extern void g(void);
extern void h(void);
extern void undefined(void);
-/* No extern here to get a common symbol */
-void (*p)(void);
+/* Defined in nope.c and f.c,
+ * value depends on the source set and configuration used.
+ */
+extern void (*p)(void);
diff --git a/test cases/common/220 source set dictionary/f.c b/test cases/common/220 source set dictionary/f.c
index a50ecda..9c5bb1c 100644
--- a/test cases/common/220 source set dictionary/f.c
+++ b/test cases/common/220 source set dictionary/f.c
@@ -1,5 +1,7 @@
#include "all.h"
+void (*p)(void) = (void *)0x1234ABCD;
+
void f(void)
{
}
diff --git a/test cases/common/68 build always/version.h b/test cases/common/68 build always/version.h
index d3fe5c6..7d433f0 100644
--- a/test cases/common/68 build always/version.h
+++ b/test cases/common/68 build always/version.h
@@ -1,3 +1,3 @@
#pragma once
-const char *version_string;
+extern const char *version_string;
diff --git a/test cases/common/69 vcstag/tagprog.c b/test cases/common/69 vcstag/tagprog.c
index 19b7754..27c3cc5 100644
--- a/test cases/common/69 vcstag/tagprog.c
+++ b/test cases/common/69 vcstag/tagprog.c
@@ -1,6 +1,6 @@
#include<stdio.h>
-const char *vcstag;
+extern const char *vcstag;
int main(void) {
printf("Version is %s\n", vcstag);