OSDN Git Service

PR target/43888
authordavek <davek@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 6 May 2010 16:06:18 +0000 (16:06 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:01:02 +0000 (14:01 +0900)
* config/i386/winnt.c (i386_pe_binds_local_p): Tweak weak symbol
handling to still return true for x64 targets.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159111 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/winnt.c

index f925089..467fc40 100644 (file)
@@ -1,3 +1,9 @@
+2010-05-06  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       PR target/43888
+       * config/i386/winnt.c (i386_pe_binds_local_p): Tweak weak symbol
+       handling to still return true for x64 targets.
+
 2010-05-06  Maxim Kuvyrkov  <maxim@codesourcery.com>
 
        * config/m68k/uclinux.h (LIB_SPEC): Bring in sync with config/linux.h.
index 34d3f42..3750e0c 100644 (file)
@@ -324,7 +324,10 @@ i386_pe_binds_local_p (const_tree exp)
   /* Or a weak one, now that they are supported.  */
   if ((TREE_CODE (exp) == VAR_DECL || TREE_CODE (exp) == FUNCTION_DECL)
       && DECL_WEAK (exp))
-    return false;
+    /* But x64 gets confused and attempts to use unsupported GOTPCREL
+       relocations if we tell it the truth, so we still return true in
+       that case until the deeper problem can be fixed.  */
+    return (TARGET_64BIT && DEFAULT_ABI == MS_ABI);
 
   return true;
 }