aboutsummaryrefslogtreecommitdiffstats
path: root/testing/gcc/gcc-4.6-pr32219.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/gcc/gcc-4.6-pr32219.patch')
-rw-r--r--testing/gcc/gcc-4.6-pr32219.patch25
1 files changed, 25 insertions, 0 deletions
diff --git a/testing/gcc/gcc-4.6-pr32219.patch b/testing/gcc/gcc-4.6-pr32219.patch
new file mode 100644
index 0000000000..8233e5b231
--- /dev/null
+++ b/testing/gcc/gcc-4.6-pr32219.patch
@@ -0,0 +1,25 @@
+--- ./gcc/varasm.c.orig
++++ ./gcc/varasm.c
+@@ -6758,6 +6758,10 @@
+ /* Static variables are always local. */
+ else if (! TREE_PUBLIC (exp))
+ local_p = true;
++ /* Weak data can be overridden by a strong symbol
++ in another module and so are not local. */
++ else if (DECL_WEAK (exp))
++ local_p = false;
+ /* A variable is local if the user has said explicitly that it will
+ be. */
+ else if ((DECL_VISIBILITY_SPECIFIED (exp)
+@@ -6771,11 +6775,6 @@
+ local. */
+ else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT)
+ local_p = true;
+- /* Default visibility weak data can be overridden by a strong symbol
+- in another module and so are not local. */
+- else if (DECL_WEAK (exp)
+- && !resolved_locally)
+- local_p = false;
+ /* If PIC, then assume that any global name can be overridden by
+ symbols resolved from other modules. */
+ else if (shlib)