aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2010-07-08 08:12:07 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2010-07-08 08:12:07 +0000
commit51d49bc21877f8fb9850e30ef168f71ea6d164e8 (patch)
tree26d0738f7dca8510662fa1bf2b76f5b8bff98445 /gcc
parent718f9c0f875a2f6d0fd5ed20a78113f1a69d6bed (diff)
downloadgcc-51d49bc21877f8fb9850e30ef168f71ea6d164e8.zip
gcc-51d49bc21877f8fb9850e30ef168f71ea6d164e8.tar.gz
gcc-51d49bc21877f8fb9850e30ef168f71ea6d164e8.tar.bz2
dwarf2out.c (AT_linkage_name): Delete.
* dwarf2out.c (AT_linkage_name): Delete. (add_linkage_attr): New function. (add_linkage_name): Call it to emit the linkage attribute. (dwarf2out_finish): Likewise. (move_linkage_attr): Explicitly accept both attribute variants. From-SVN: r161944
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/dwarf2out.c33
2 files changed, 31 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b34ce74..e374743 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * dwarf2out.c (AT_linkage_name): Delete.
+ (add_linkage_attr): New function.
+ (add_linkage_name): Call it to emit the linkage attribute.
+ (dwarf2out_finish): Likewise.
+ (move_linkage_attr): Explicitly accept both attribute variants.
+
2010-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
* toplev.h: Do not include diagnostic-core.h.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 434783a..5340ffc 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -6385,11 +6385,6 @@ static void gen_remaining_tmpl_value_param_die_attribute (void);
#define DEBUG_MACINFO_SECTION_LABEL "Ldebug_macinfo"
#endif
-/* Mangled name attribute to use. This used to be a vendor extension
- until DWARF 4 standardized it. */
-#define AT_linkage_name \
- (dwarf_version >= 4 ? DW_AT_linkage_name : DW_AT_MIPS_linkage_name)
-
/* Definitions of defaults for formats and names of various special
(artificial) labels which may be generated within this file (when the -g
@@ -17384,6 +17379,25 @@ add_pure_or_virtual_attribute (dw_die_ref die, tree func_decl)
}
}
+/* Add a DW_AT_linkage_name or DW_AT_MIPS_linkage_name attribute for the
+ given decl. This used to be a vendor extension until after DWARF 4
+ standardized it. */
+
+static void
+add_linkage_attr (dw_die_ref die, tree decl)
+{
+ const char *name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
+
+ /* Mimic what assemble_name_raw does with a leading '*'. */
+ if (name[0] == '*')
+ name = &name[1];
+
+ if (dwarf_version >= 4)
+ add_AT_string (die, DW_AT_linkage_name, name);
+ else
+ add_AT_string (die, DW_AT_MIPS_linkage_name, name);
+}
+
/* Add source coordinate attributes for the given decl. */
static void
@@ -17418,8 +17432,7 @@ add_linkage_name (dw_die_ref die, tree decl)
deferred_asm_name = asm_name;
}
else if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl))
- add_AT_string (die, AT_linkage_name,
- IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
+ add_linkage_attr (die, decl);
}
}
@@ -22017,7 +22030,8 @@ move_linkage_attr (dw_die_ref die)
unsigned ix = VEC_length (dw_attr_node, die->die_attr);
dw_attr_node linkage = *VEC_index (dw_attr_node, die->die_attr, ix - 1);
- gcc_assert (linkage.dw_attr == AT_linkage_name);
+ gcc_assert (linkage.dw_attr == DW_AT_linkage_name
+ || linkage.dw_attr == DW_AT_MIPS_linkage_name);
while (--ix > 0)
{
@@ -22250,8 +22264,7 @@ dwarf2out_finish (const char *filename)
tree decl = node->created_for;
if (DECL_ASSEMBLER_NAME (decl) != DECL_NAME (decl))
{
- add_AT_string (node->die, AT_linkage_name,
- IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
+ add_linkage_attr (node->die, decl);
move_linkage_attr (node->die);
}
}