From: Joseph Myers Date: Mon, 27 Jan 2020 22:00:52 +0000 (+0000) Subject: Support gnu_unique_object symbols on MIPS. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=15d552394e1cb94598eef278ff3d9e9876097b33;p=gcc.git Support gnu_unique_object symbols on MIPS. mips_declare_object_name is missing the support for declaring symbols as gnu_unique_object that is present in the generic ASM_DECLARE_OBJECT_NAME in elfos.h. I'm not aware of any MIPS-specific reason for that support to be absent; mips_declare_object_name predates the addition of gnu_unique_object support and as far as I can tell this was simply an oversight when that support was added. This patch adds the missing support, following the code in elfos.h. Tested with no regressions with cross to mips-linux-gnu. In particular, this fixes the failure of the recently-added glibc test elf/tst-dlopen-nodelete-reloc, which relies on the compiler generating such symbols, for MIPS. * config/mips/mips.c (mips_declare_object_name) [USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object. --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b3624b15195..af0945f6799 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-01-27 Joseph Myers + + * config/mips/mips.c (mips_declare_object_name) + [USE_GNU_UNIQUE_OBJECT]: Support use of gnu_unique_object. + 2020-01-27 Martin Liska PR gcov-profile/93403 diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index dae189ed20d..513fc5fe295 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -9775,7 +9775,14 @@ mips_declare_object_name (FILE *stream, const char *name, tree decl ATTRIBUTE_UNUSED) { #ifdef ASM_OUTPUT_TYPE_DIRECTIVE - ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "object"); +#ifdef USE_GNU_UNIQUE_OBJECT + /* As in elfos.h. */ + if (USE_GNU_UNIQUE_OBJECT && DECL_ONE_ONLY (decl) + && (!DECL_ARTIFICIAL (decl) || !TREE_READONLY (decl))) + ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "gnu_unique_object"); + else +#endif + ASM_OUTPUT_TYPE_DIRECTIVE (stream, name, "object"); #endif size_directive_output = 0;