OSDN Git Service

* varasm.c (default_assemble_visibility): Remove extra ().
[pf3gnuchains/gcc-fork.git] / gcc / xcoffout.h
index 59a0d3a..a3d2899 100644 (file)
@@ -68,34 +68,39 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 /* Define our own finish symbol function, since xcoff stabs have their
    own different format.  */
 
-#define DBX_FINISH_STABS(CODE, LINE, ADDR, LABEL, NUMBER) do { \
-  if (ADDR)                                                    \
-    {                                                          \
-      /* If we are writing a function name, we must ensure that        \
-        there is no storage-class suffix on the name.  */      \
-      if (CODE == N_FUN && GET_CODE (ADDR) == SYMBOL_REF)      \
-       {                                                       \
-         const char *_p = XSTR (ADDR, 0);                      \
-         if (*_p == '*')                                       \
-           fputs (_p+1, asm_out_file);                         \
-         else                                                  \
-           for (; *_p != '[' && *_p; _p++)                     \
-             putc (*_p, asm_out_file);                         \
-       }                                                       \
-      else                                                     \
-       {                                                       \
-         if (CODE == N_FUN)                                    \
-           putc ('.', asm_out_file);                           \
-         output_addr_const (asm_out_file, ADDR);               \
-       }                                                       \
-    }                                                          \
-  else if (LABEL)                                              \
-    assemble_name (asm_out_file, LABEL);                       \
-  else                                                         \
-    dbxout_int (NUMBER);                                       \
-  putc (',', asm_out_file);                                    \
-  dbxout_int (stab_to_sclass (CODE));                          \
-  fputs (",0\n", asm_out_file);                                        \
+#define DBX_FINISH_STABS(SYM, CODE, LINE, ADDR, LABEL, NUMBER) do {    \
+  if (ADDR)                                                            \
+    {                                                                  \
+      /* If we are writing a function name, we must emit a dot in      \
+        order to refer to the function code, not its descriptor.  */   \
+      if (CODE == N_FUN)                                               \
+       putc ('.', asm_out_file);                                       \
+                                                                       \
+      /* If we are writing a function name, we must ensure that                \
+        there is no storage-class suffix on the name.  */              \
+      if (CODE == N_FUN && GET_CODE (ADDR) == SYMBOL_REF)              \
+       {                                                               \
+         const char *_p = XSTR (ADDR, 0);                              \
+         if (*_p == '*')                                               \
+           fputs (_p+1, asm_out_file);                                 \
+         else                                                          \
+           for (; *_p != '[' && *_p; _p++)                             \
+             putc (*_p, asm_out_file);                                 \
+       }                                                               \
+      else                                                             \
+       output_addr_const (asm_out_file, ADDR);                         \
+    }                                                                  \
+  /* Another special case: N_GSYM always gets the symbol name,         \
+     whether or not LABEL or NUMBER are set.  */                       \
+  else if (CODE == N_GSYM)                                             \
+    assemble_name (asm_out_file, XSTR (XEXP (DECL_RTL (SYM), 0), 0));  \
+  else if (LABEL)                                                      \
+    assemble_name (asm_out_file, LABEL);                               \
+  else                                                                 \
+    dbxout_int (NUMBER);                                               \
+  putc (',', asm_out_file);                                            \
+  dbxout_int (stab_to_sclass (CODE));                                  \
+  fputs (",0\n", asm_out_file);                                                \
 } while (0)
 
 /* These are IBM XCOFF extensions we need to reference in dbxout.c