aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@gnu.org>1994-11-16 00:53:50 +0000
committerDoug Evans <dje@gnu.org>1994-11-16 00:53:50 +0000
commit2ffe831c363dee219e8d9788b0c84c87c2d5a37d (patch)
treeaa58723fa200242a9566531f7c25ae9c7a88a3be
parent9a2073d855c6e922e83f9a36663f8f15b94201e9 (diff)
downloadgcc-2ffe831c363dee219e8d9788b0c84c87c2d5a37d.zip
gcc-2ffe831c363dee219e8d9788b0c84c87c2d5a37d.tar.gz
gcc-2ffe831c363dee219e8d9788b0c84c87c2d5a37d.tar.bz2
(named_section): New argument decl, all callers changed.
From-SVN: r8460
-rw-r--r--gcc/varasm.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 4a46ec1..1e6a8ae 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -203,19 +203,28 @@ in_text_section ()
return in_section == in_text;
}
-/* Tell assembler to change to named section. */
+/* Tell assembler to change to section NAME for DECL.
+ If DECL is NULL, just switch to section NAME.
+ If NAME is NULL, get the name from DECL. */
void
-named_section (name)
+named_section (decl, name)
+ tree decl;
char *name;
{
+ if (decl != NULL_TREE
+ && (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL))
+ abort ();
+ if (name == NULL)
+ name = TREE_STRING_POINTER (DECL_SECTION_NAME (decl));
+
if (in_section != in_named || strcmp (name, in_named_name))
{
in_named_name = name;
in_section = in_named;
#ifdef ASM_OUTPUT_SECTION_NAME
- ASM_OUTPUT_SECTION_NAME (asm_out_file, name);
+ ASM_OUTPUT_SECTION_NAME (asm_out_file, decl, name);
#else
/* Section attributes are not supported if this macro isn't provided -
some host formats don't support them at all. The front-end should
@@ -713,7 +722,7 @@ assemble_start_function (decl, fnname)
output_constant_pool (fnname, decl);
if (IN_NAMED_SECTION (decl))
- named_section (TREE_STRING_POINTER (DECL_SECTION_NAME (decl)));
+ named_section (decl, NULL);
else
text_section ();
@@ -1141,7 +1150,7 @@ assemble_variable (decl, top_level, at_end, dont_output_data)
/* Switch to the proper section for this data. */
if (IN_NAMED_SECTION (decl))
- named_section (TREE_STRING_POINTER (DECL_SECTION_NAME (decl)));
+ named_section (decl, NULL);
else
{
/* C++ can have const variables that get initialized from constructors,
@@ -2673,7 +2682,7 @@ output_constant_def_contents (exp, reloc, labelno)
int align;
if (IN_NAMED_SECTION (exp))
- named_section (TREE_STRING_POINTER (DECL_SECTION_NAME (exp)));
+ named_section (exp, NULL);
else
{
/* First switch to text section, except for writable strings. */