elf64.h (UNIQUE_SECTION): Use mips_unique_section.

* config/mips/elf64.h (UNIQUE_SECTION): Use mips_unique_section.
	* config/mips/mips.c (mips_unique_section): Strip encoding from
	decl name.

From-SVN: r53101
This commit is contained in:
Richard Sandiford 2002-05-03 17:08:29 +00:00 committed by Richard Sandiford
parent 7bebf27930
commit 66319f5cad
3 changed files with 9 additions and 65 deletions

View File

@ -1,3 +1,9 @@
2002-05-03 Richard Sandiford <rsandifo@redhat.com>
* config/mips/elf64.h (UNIQUE_SECTION): Use mips_unique_section.
* config/mips/mips.c (mips_unique_section): Strip encoding from
decl name.
2002-05-03 Jakub Jelinek <jakub@redhat.com>
* config/i386/i386.c (ix86_expand_int_movcc): Truncate to proper

View File

@ -209,71 +209,8 @@ do { \
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
#undef UNIQUE_SECTION
#define UNIQUE_SECTION(DECL,RELOC) \
do { \
int len, size, sec; \
const char *name, *prefix; \
char *string; \
static const char *const prefixes[4][2] = { \
{ ".text.", ".gnu.linkonce.t." }, \
{ ".rodata.", ".gnu.linkonce.r." }, \
{ ".data.", ".gnu.linkonce.d." }, \
{ ".sdata.", ".gnu.linkonce.s." } \
}; \
\
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (DECL)); \
size = int_size_in_bytes (TREE_TYPE (decl)); \
\
/* Determine the base section we are interested in: \
0=text, 1=rodata, 2=data, 3=sdata, [4=bss]. */ \
if (TREE_CODE (DECL) == FUNCTION_DECL) \
sec = 0; \
else if (DECL_INITIAL (DECL) == 0 \
|| DECL_INITIAL (DECL) == error_mark_node) \
sec = 2; \
else if ((TARGET_EMBEDDED_PIC || TARGET_MIPS16) \
&& TREE_CODE (decl) == STRING_CST \
&& !flag_writable_strings) \
{ \
/* For embedded position independent code, put constant strings \
in the text section, because the data section is limited to \
64K in size. For mips16 code, put strings in the text \
section so that a PC relative load instruction can be used to \
get their address. */ \
sec = 0; \
} \
else if (TARGET_EMBEDDED_DATA) \
{ \
/* For embedded applications, always put an object in read-only data \
if possible, in order to reduce RAM usage. */ \
\
if (DECL_READONLY_SECTION (DECL, RELOC)) \
sec = 1; \
else if (size > 0 && size <= mips_section_threshold) \
sec = 3; \
else \
sec = 2; \
} \
else \
{ \
/* For hosted applications, always put an object in small data if \
possible, as this gives the best performance. */ \
\
if (size > 0 && size <= mips_section_threshold) \
sec = 3; \
else if (DECL_READONLY_SECTION (DECL, RELOC)) \
sec = 1; \
else \
sec = 2; \
} \
\
prefix = prefixes[sec][DECL_ONE_ONLY (DECL)]; \
len = strlen (name) + strlen (prefix); \
string = alloca (len + 1); \
sprintf (string, "%s%s", prefix, name); \
\
DECL_SECTION_NAME (DECL) = build_string (len, string); \
} while (0)
#define UNIQUE_SECTION(DECL,RELOC) \
mips_unique_section ((DECL), (RELOC))
/* A list of other sections which the compiler might be "in" at any
given time. */

View File

@ -10259,6 +10259,7 @@ mips_unique_section (decl, reloc)
name = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl));
size = int_size_in_bytes (TREE_TYPE (decl));
STRIP_NAME_ENCODING (name, name);
/* Determine the base section we are interested in:
0=text, 1=rodata, 2=data, 3=sdata, [4=bss]. */