OSDN Git Service

PR debug/31510
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Mar 2008 15:48:09 +0000 (15:48 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 16 Mar 2008 15:48:09 +0000 (15:48 +0000)
* dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
emulated thread local variables.

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

gcc/ChangeLog
gcc/dbxout.c

index 58d4785..fa2ed09 100644 (file)
@@ -1,3 +1,9 @@
+2008-03-16  James E. Wilson  <wilson@tuliptree.org>
+
+       PR debug/31510
+       * dbxout.c (dbxout_expand_expr, case VAR_DECL): Return NULL for
+       emulated thread local variables.
+
 2008-03-16  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/35607
index ad1b3c7..8b11a9a 100644 (file)
@@ -2332,6 +2332,15 @@ dbxout_expand_expr (tree expr)
   switch (TREE_CODE (expr))
     {
     case VAR_DECL:
+      /* We can't handle emulated tls variables, because the address is an
+        offset to the return value of __emutls_get_address, and there is no
+        way to express that in stabs.  Also, there are name mangling issues
+        here.  We end up with references to undefined symbols if we don't
+        disable debug info for these variables.  */
+      if (!targetm.have_tls && DECL_THREAD_LOCAL_P (expr))
+       return NULL;
+      /* FALLTHRU */
+
     case PARM_DECL:
       if (DECL_HAS_VALUE_EXPR_P (expr))
        return dbxout_expand_expr (DECL_VALUE_EXPR (expr));