diff options
author | Doug Evans <dje@gnu.org> | 1994-11-16 00:53:50 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1994-11-16 00:53:50 +0000 |
commit | 2ffe831c363dee219e8d9788b0c84c87c2d5a37d (patch) | |
tree | aa58723fa200242a9566531f7c25ae9c7a88a3be | |
parent | 9a2073d855c6e922e83f9a36663f8f15b94201e9 (diff) | |
download | gcc-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.c | 21 |
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. */ |