Emit size and type for symbols

This commit is contained in:
Rui Ueyama 2020-09-10 15:51:47 +09:00
parent c32f0e21e7
commit 8d130ab93f
1 changed files with 5 additions and 1 deletions

View File

@ -1186,7 +1186,6 @@ static void emit_data(Obj *prog) {
int align = (var->ty->kind == TY_ARRAY && var->ty->size >= 16)
? MAX(16, var->align) : var->align;
println(" .align %d", align);
// Common symbol
if (opt_fcommon && var->is_tentative) {
@ -1201,6 +1200,9 @@ static void emit_data(Obj *prog) {
else
println(" .data");
println(" .type %s, @object", var->name);
println(" .size %s, %d", var->name, var->ty->size);
println(" .align %d", align);
println("%s:", var->name);
Relocation *rel = var->rel;
@ -1223,6 +1225,7 @@ static void emit_data(Obj *prog) {
else
println(" .bss");
println(" .align %d", align);
println("%s:", var->name);
println(" .zero %d", var->ty->size);
}
@ -1279,6 +1282,7 @@ static void emit_text(Obj *prog) {
println(" .globl %s", fn->name);
println(" .text");
println(" .type %s, @function", fn->name);
println("%s:", fn->name);
current_fn = fn;