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:
parent
7bebf27930
commit
66319f5cad
@ -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
|
||||
|
@ -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. */
|
||||
|
@ -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]. */
|
||||
|
Loading…
Reference in New Issue
Block a user