summary refs log tree commit diff
path: root/gas.c
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin@c9x.me>2022-03-14 10:58:55 +0100
committerQuentin Carbonneaux <quentin@c9x.me>2022-03-14 15:32:27 +0100
commit6ca9399ed6bec1a448aef79236670cd3daeb7daf (patch)
treea03e71383dee909f17d613589bec6082713aae23 /gas.c
parent7a7a5f480312b997dcac0e4cc3befb502e54c836 (diff)
downloadroux-6ca9399ed6bec1a448aef79236670cd3daeb7daf.tar.gz
output symbol type and size
That is not available on osx
so I tweaked the gas.c api
a little to conditionally
output the two directives.
Diffstat (limited to 'gas.c')
-rw-r--r--gas.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/gas.c b/gas.c
index e67043b..4ac42be 100644
--- a/gas.c
+++ b/gas.c
@@ -2,6 +2,23 @@
 
 
 char *gasloc, *gassym;
+static int gasasm;
+
+void
+gasinit(enum Asm asmmode)
+{
+	gasasm = asmmode;
+	switch (gasasm) {
+	case Gaself:
+		gasloc = ".L";
+		gassym = "";
+		break;
+	case Gasmacho:
+		gasloc = "L";
+		gassym = "_";
+		break;
+	}
+}
 
 void
 gasemitlnk(char *n, Lnk *l, char *s, FILE *f)
@@ -25,6 +42,15 @@ gasemitlnk(char *n, Lnk *l, char *s, FILE *f)
 }
 
 void
+gasemitfntail(char *fn, FILE *f)
+{
+	if (gasasm == Gaself) {
+		fprintf(f, ".type %s, @function\n", fn);
+		fprintf(f, ".size %s, .-%s\n", fn, fn);
+	}
+}
+
+void
 gasemitdat(Dat *d, FILE *f)
 {
 	static char *dtoa[] = {