aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoffrey Keating <geoffk@redhat.com>2001-05-15 19:54:53 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2001-05-15 19:54:53 +0000
commitc53c4afc0a194658e45e9e05a5da400df6c4d06d (patch)
tree660473c3d3af41800821cd8d2024c656ff94e290
parent50c30603faa3e8c77727c64af61b6441926a5633 (diff)
downloadgcc-c53c4afc0a194658e45e9e05a5da400df6c4d06d.zip
gcc-c53c4afc0a194658e45e9e05a5da400df6c4d06d.tar.gz
gcc-c53c4afc0a194658e45e9e05a5da400df6c4d06d.tar.bz2
objc-act.c (handle_class_ref): Use rest_of_decl_compilation so that CHOOSE_SECTION gets used.
* objc/objc-act.c (handle_class_ref): Use rest_of_decl_compilation so that CHOOSE_SECTION gets used. From-SVN: r42114
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/objc/objc-act.c20
2 files changed, 11 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0189949..0ac1f3d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2001-05-15 Geoffrey Keating <geoffk@redhat.com>
+ * objc/objc-act.c (handle_class_ref): Use rest_of_decl_compilation
+ so that CHOOSE_SECTION gets used.
+
* config/rs6000/sysv4.h (ASM_PREFERRED_EH_DATA_FORMAT): Treat
TARGET_RELOCATABLE like flag_pic for now.
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 5936e2e..b6ea821 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -8438,20 +8438,16 @@ handle_class_ref (chain)
pushdecl (decl);
rest_of_decl_compilation (decl, 0, 0, 0);
- /* Make following constant read-only, but only for GNU runtime. */
- if (!flag_next_runtime)
- readonly_data_section ();
-
+ /* Make a decl for the address. */
+ sprintf (string, "%sobjc_class_ref_%s",
+ (flag_next_runtime ? "." : "__"), name);
exp = build1 (ADDR_EXPR, string_type_node, decl);
+ decl = build_decl (VAR_DECL, get_identifier (string), string_type_node);
+ DECL_INITIAL (decl) = exp;
+ TREE_STATIC (decl) = 1;
- /* Align the section properly. */
- assemble_constant_align (exp);
-
- /* Inform the assembler about this new external thing. */
- assemble_external (decl);
-
- /* Output a constant to reference this address. */
- output_constant (exp, int_size_in_bytes (string_type_node));
+ pushdecl (decl);
+ rest_of_decl_compilation (decl, 0, 0, 0);
}
static void