From f43714e62080f8bdf1ddb02672d26527ac3819ec Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 16 Nov 2016 23:12:14 +0100 Subject: syscalls: C struct writer correctly handles pointer fields. * guix/build/syscalls.scm (write-type): Add case for '*. --- guix/build/syscalls.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm index 2cee6544c4..bdc9940bb3 100644 --- a/guix/build/syscalls.scm +++ b/guix/build/syscalls.scm @@ -202,7 +202,7 @@ result is the alignment of the \"most strictly aligned component\"." types ...)))) (define-syntax write-type - (syntax-rules (~ array) + (syntax-rules (~ array *) ((_ bv offset (type ~ order) value) (bytevector-uint-set! bv offset value (endianness order) (sizeof* type))) @@ -215,6 +215,9 @@ result is the alignment of the \"most strictly aligned component\"." ((head . tail) (write-type bv o type head) (loop (+ 1 i) tail (+ o (sizeof* type)))))))) + ((_ bv offset '* value) + (bytevector-uint-set! bv offset (pointer-address value) + (native-endianness) (sizeof* '*))) ((_ bv offset type value) (bytevector-uint-set! bv offset value (native-endianness) (sizeof* type))))) -- cgit v1.2.3