summaryrefslogtreecommitdiffstats
path: root/main/gcc/gcc-4.6-pr32219.patch
blob: 8233e5b23109929edb256e5a36e8c04ee2ca08cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)