diff options
author | Andy Wingo <wingo@pobox.com> | 2013-11-08 10:03:48 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2013-11-08 10:11:48 +0100 |
commit | 0e3a59f75050041f4f6b423a53193609335f708d (patch) | |
tree | ae27d016e349331db5814c33708c3a1c59c21670 /module/system/vm/assembler.scm | |
parent | 1ab116f39075f8dcf1b6c8084d9afc547f9a85b7 (diff) | |
download | guile-0e3a59f75050041f4f6b423a53193609335f708d.tar.gz |
Fix reading and writing arities into DWARF.
* libguile/gsubr.h:
* libguile/gsubr.c (scm_i_primitive_call_ip):
* libguile/programs.c (scm_primitive_call_ip): Adapt to return an
absolute address.
* module/system/vm/assembler.scm (write-arity-headers): Adapt to write
byte addresses (relative to the text base).
* module/system/vm/debug.scm (arity-low-pc, arity-high-pc): Return
absolute addresses, instead of word offsets relative to the text
base.
(find-first-arity): Adapt for absolute addresses.
* module/system/vm/program.scm (program-arguments-alist): Adapt for
arity-low-pc / arity-high-pc absolute addresses.
Diffstat (limited to 'module/system/vm/assembler.scm')
-rw-r--r-- | module/system/vm/assembler.scm | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/module/system/vm/assembler.scm b/module/system/vm/assembler.scm index d6b417f76..7020487fd 100644 --- a/module/system/vm/assembler.scm +++ b/module/system/vm/assembler.scm @@ -1380,8 +1380,8 @@ it will be added to the GC roots at runtime." (define (write-arity-headers metas bv endianness) (define (write-arity-header* pos low-pc high-pc flags nreq nopt) - (bytevector-u32-set! bv pos low-pc endianness) - (bytevector-u32-set! bv (+ pos 4) high-pc endianness) + (bytevector-u32-set! bv pos (* low-pc 4) endianness) + (bytevector-u32-set! bv (+ pos 4) (* high-pc 4) endianness) (bytevector-u32-set! bv (+ pos 8) 0 endianness) ; offset (bytevector-u32-set! bv (+ pos 12) flags endianness) (bytevector-u32-set! bv (+ pos 16) nreq endianness) |