diff options
author | Quentin Carbonneaux <quentin@c9x.me> | 2022-03-14 10:58:55 +0100 |
---|---|---|
committer | Quentin Carbonneaux <quentin@c9x.me> | 2022-03-14 15:32:27 +0100 |
commit | 6ca9399ed6bec1a448aef79236670cd3daeb7daf (patch) | |
tree | a03e71383dee909f17d613589bec6082713aae23 /gas.c | |
parent | 7a7a5f480312b997dcac0e4cc3befb502e54c836 (diff) | |
download | roux-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.c | 26 |
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[] = { |