Always use PIC for static string codegen
authorLuke Lau <luke_lau@icloud.com>
Mon, 29 Jul 2019 12:18:11 +0000 (13:18 +0100)
committerLuke Lau <luke_lau@icloud.com>
Mon, 29 Jul 2019 12:18:11 +0000 (13:18 +0100)
codegen.scm

index 7c1c3a150727c969a991021fd2c3470e221f573e..00e01296af20661539f8fda3d882c6fa39547092 100644 (file)
     (emit "pop %rbp") ; restore caller's base pointer
     (emit "ret")))
 
-(define (codegen-string label)
-  (case target
-    ('darwin (emit "movq ~a@GOTPCREL(%rip), %rax" label))
-    ('linux  (emit "lea $~a, %rax" label))))
-
 (define cur-label 0)
 (define (fresh-label)
   (set! cur-label (+ 1 cur-label))
     ('bool-literal (emit "movq $~a, %rax" (if e 1 0)))
     ('int-literal (emit "movq $~a, %rax" e))
     
-    ('static-string (codegen-string (cadr e)))
+    ('static-string (emit "movq ~a@GOTPCREL(%rip), %rax"
+                         (cadr e)))
 
     (else (error #f "don't know how to codegen this"))))