From bc06a3e920f845a40f4f83b9a204fa24763f26a3 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Tue, 5 Aug 2008 10:05:51 +0000 Subject: [PATCH] Emit .type and .size directives for non-common global variables to make the (dynamic) linker happy. [r20987] --- ir/be/begnuas.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ir/be/begnuas.c b/ir/be/begnuas.c index f1b48f47f..fbacf8c62 100644 --- a/ir/be/begnuas.c +++ b/ir/be/begnuas.c @@ -1115,7 +1115,7 @@ static void emit_align(unsigned alignment) if (!is_po2(alignment)) panic("alignment not a power of 2"); - be_emit_irprintf(".p2align\t%u\n", log2_floor(alignment)); + be_emit_irprintf("\t.p2align\t%u\n", log2_floor(alignment)); be_emit_write_line(); } @@ -1183,6 +1183,14 @@ static void dump_global(be_gas_decl_env_t *env, ir_entity *ent) emit_align(align); } + if (visibility != visibility_external_allocated && !emit_as_common) { + be_emit_cstring("\t.type\t"); + be_emit_ident(ld_ident); + be_emit_cstring(", @object\n\t.size\t"); + be_emit_ident(ld_ident); + be_emit_irprintf(", %u\n", get_type_size_bytes(type)); + } + if (!emit_as_common) { be_emit_ident(ld_ident); be_emit_cstring(":\n"); -- 2.20.1