aboutsummaryrefslogtreecommitdiff
path: root/tccasm.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2016-06-29 19:22:07 +0200
committerMichael Matz <matz@suse.de>2016-12-15 17:47:07 +0100
commitff5561ff7d699eb9e30e95f1e2cfd1e98e5a990d (patch)
tree5e51fdd0b49127553a4cb24f50b379174a88f6a4 /tccasm.c
parent253afeed1e822965804c0f5503bac057e68f08e8 (diff)
downloadtinycc-ff5561ff7d699eb9e30e95f1e2cfd1e98e5a990d.tar.gz
tinycc-ff5561ff7d699eb9e30e95f1e2cfd1e98e5a990d.tar.bz2
x86-64-asm: Accept expressions for .quad
The x86-64 target has 64bit relocs, and hence can accept generic expressions for '.quad'.
Diffstat (limited to 'tccasm.c')
-rw-r--r--tccasm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/tccasm.c b/tccasm.c
index b3e9eb4..185f066 100644
--- a/tccasm.c
+++ b/tccasm.c
@@ -407,6 +407,10 @@ static void asm_parse_directive(TCCState *s1)
ind += size;
break;
case TOK_ASMDIR_quad:
+#ifdef TCC_TARGET_X86_64
+ size = 8;
+ goto asm_data;
+#else
next();
for(;;) {
uint64_t vl;
@@ -433,6 +437,7 @@ static void asm_parse_directive(TCCState *s1)
next();
}
break;
+#endif
case TOK_ASMDIR_byte:
size = 1;
goto asm_data;
@@ -451,6 +456,10 @@ static void asm_parse_directive(TCCState *s1)
if (sec->sh_type != SHT_NOBITS) {
if (size == 4) {
gen_expr32(&e);
+#ifdef TCC_TARGET_X86_64
+ } else if (size == 8) {
+ gen_expr64(&e);
+#endif
} else {
if (e.sym)
expect("constant");