From: "Ludovic Courtès" <ludo@gnu.org>
To: Jan Nieuwenhuizen <janneke@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: 18/36: services: hurd: Add dummy loopback.
Date: Tue, 05 May 2020 11:23:01 +0200 [thread overview]
Message-ID: <87wo5qn3be.fsf@gnu.org> (raw)
In-Reply-To: <87wo5spswe.fsf@gnu.org> (Jan Nieuwenhuizen's message of "Mon, 04 May 2020 00:15:13 +0200")
[-- Attachment #1: Type: text/plain, Size: 1480 bytes --]
Hi,
Jan Nieuwenhuizen <janneke@gnu.org> skribis:
>> Could it be ‘ifreq-struct-size’ that’s off on GNU/Hurd, or one of its
>> friends?
>
> Something like that: sizeof-ifconf is set to 16 (like on x86_64), but
> it's size should be 8.
Oh, that’s because ‘define-c-struct’ does all the work at
macro-expansion time, with the host types and alignment constraints. I
wonder how we didn’t notice it earlier. Cross-compiling from x86_64 to
ARMv7 has the same problem, but maybe the networking ioctls work by
chance.
The patch below appears to fix it:
--8<---------------cut here---------------start------------->8---
$ ./pre-inst-env guild compile --target=i686-pc-linux-gnu guix/build/syscalls.scm -o guix/build/syscalls.go
wrote `guix/build/syscalls.go'
$ guix environment -s i686-linux -C --ad-hoc guile-next -- guile -L . -C .
GNU Guile 3.0.2
Copyright (C) 1995-2020 Free Software Foundation, Inc.
Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
This program is free software, and you are welcome to redistribute it
under certain conditions; type `,show c' for details.
Enter `,help' for help.
scheme@(guile-user)> ,use(guix build syscalls)
scheme@(guile-user)> ,m(guix build syscalls)
scheme@(guix build syscalls)> sizeof-ifconf
$1 = 8
scheme@(guix build syscalls)> %host-type
$2 = "i686-unknown-linux-gnu"
--8<---------------cut here---------------end--------------->8---
Thank you!
Ludo’.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-patch, Size: 1923 bytes --]
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 73b439fb7d..00d8ceb480 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -23,6 +23,7 @@
(define-module (guix build syscalls)
#:use-module (system foreign)
+ #:use-module (system base target)
#:use-module (rnrs bytevectors)
#:autoload (ice-9 binary-ports) (get-bytevector-n)
#:use-module (srfi srfi-1)
@@ -194,9 +195,14 @@
(* (sizeof* type) n))
((_ type)
(let-syntax ((v (lambda (s)
- (let ((val (sizeof type)))
- (syntax-case s ()
- (_ val))))))
+ ;; When compiling natively, call 'sizeof' at expansion
+ ;; time; otherwise, emit code to call it at run time.
+ (syntax-case s ()
+ (_
+ (if (= (target-word-size)
+ (with-target %host-type target-word-size))
+ (sizeof type)
+ #'(sizeof type)))))))
v))))
(define-syntax alignof*
@@ -208,9 +214,14 @@
(alignof* type))
((_ type)
(let-syntax ((v (lambda (s)
- (let ((val (alignof type)))
- (syntax-case s ()
- (_ val))))))
+ ;; When compiling natively, call 'sizeof' at expansion
+ ;; time; otherwise, emit code to call it at run time.
+ (syntax-case s ()
+ (_
+ (if (= (target-word-size)
+ (with-target %host-type target-word-size))
+ (alignof type)
+ #'(alignof type)))))))
v))))
(define-syntax align ;as found in (system foreign)
next prev parent reply other threads:[~2020-05-05 9:23 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20200427101927.7020.76060@vcs0.savannah.gnu.org>
[not found] ` <20200427101942.B725620A5E@vcs0.savannah.gnu.org>
2020-04-30 21:48 ` 02/36: gnu: guix: Use gnutls-3.6.13 when cross-compiling Ludovic Courtès
2020-05-01 7:22 ` Jan Nieuwenhuizen
[not found] ` <20200427101943.A4BDD20A5E@vcs0.savannah.gnu.org>
2020-04-30 21:50 ` 05/36: vm: Make the device node procedure a parameter Ludovic Courtès
2020-05-01 6:07 ` Jan Nieuwenhuizen
2020-05-03 20:34 ` Ludovic Courtès
[not found] ` <20200427101943.F251E20A5E@vcs0.savannah.gnu.org>
2020-04-30 21:51 ` 06/36: gnu: hurd: Fix references to /bin/w Ludovic Courtès
2020-05-01 6:07 ` Jan Nieuwenhuizen
[not found] ` <20200427101944.46D0C20A5E@vcs0.savannah.gnu.org>
2020-04-30 21:52 ` 07/36: gnu: hurd: Use default Qemu guest ip: 10.0.2.15 Ludovic Courtès
2020-05-01 6:07 ` Jan Nieuwenhuizen
[not found] ` <20200427101944.86DE020BC2@vcs0.savannah.gnu.org>
2020-04-30 21:53 ` 08/36: gnu: hurd: Add NFS support Ludovic Courtès
2020-05-01 6:14 ` Jan Nieuwenhuizen
[not found] ` <20200427101945.023D020BC4@vcs0.savannah.gnu.org>
2020-04-30 21:55 ` 09/36: gnu: Add libtirpc/hurd Ludovic Courtès
2020-05-01 6:15 ` Jan Nieuwenhuizen
2020-04-30 21:56 ` branch wip-hurd-vm created (now fdb35e3) Ludovic Courtès
2020-05-01 7:02 ` Jan Nieuwenhuizen
[not found] ` <20200427101946.414C420A5E@vcs0.savannah.gnu.org>
2020-04-30 22:03 ` 13/36: services: Add hurd-console-service-type Ludovic Courtès
2020-05-01 15:16 ` Jan Nieuwenhuizen
2020-05-01 20:03 ` Jan Nieuwenhuizen
2020-05-03 20:39 ` Ludovic Courtès
2020-05-03 20:55 ` Jan Nieuwenhuizen
[not found] ` <20200427101947.E79D320A5E@vcs0.savannah.gnu.org>
2020-04-30 22:07 ` 18/36: services: hurd: Add dummy loopback Ludovic Courtès
2020-05-01 15:15 ` Jan Nieuwenhuizen
2020-05-03 20:50 ` Ludovic Courtès
2020-05-03 22:15 ` Jan Nieuwenhuizen
2020-05-05 9:23 ` Ludovic Courtès [this message]
2020-05-05 9:38 ` Vincent Legoll
2020-05-06 14:06 ` Ludovic Courtès
2020-05-05 12:46 ` Jan Nieuwenhuizen
2020-05-06 14:09 ` Ludovic Courtès
[not found] ` <20200427101948.9B2B220A5E@vcs0.savannah.gnu.org>
2020-04-30 22:25 ` 20/36: system: hurd: Add the Shepherd Ludovic Courtès
2020-05-01 10:28 ` Jan Nieuwenhuizen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wo5qn3be.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=guix-devel@gnu.org \
--cc=janneke@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).