From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by sourceware.org (Postfix) with ESMTPS id B344D3857C50 for ; Fri, 19 Mar 2021 11:26:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B344D3857C50 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=iki.fi Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=jhietaniemi@gmail.com Received: by mail-lf1-x12d.google.com with SMTP id q13so9429789lfu.8 for ; Fri, 19 Mar 2021 04:26:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:reply-to:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=2OE5YTzYqUMzFqiqXhxiLc39gVoW/YgytNZNHAjK8BA=; b=J0hHe6QxEwcnm4b8YIMHZ0Gh39ZSIJBJ1KdSXr6ceAUUMFgFNo0TZAm+gI5TlORJ1m VAd5yhvAqlggZ/Jf/WJOt78fTJdGONX2XH2kBFWvEHbCxg/e4gRU2/bWlrkJ1SAfJWBB 5OuwQYe0LzoH3RZXb2ag+9nSsP2qjb6q/lRyql7chKD5bNq1qz7iKa1V41xHWfIbSisW 35+LWHirl6IfyFdUuUD7z2XYQeueYfAbQHTiah8VL+JiMGx3Xoo+FBIttUYeXVPnPNDS vBqVfIUbjEgHMpfnDgmfZzMHsorBXgXTI0YGWllH56etlR0/70UKs2Z8KBwpod5HdpwM ODJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:subject:to:references:from :message-id:date:user-agent:mime-version:in-reply-to :content-transfer-encoding; bh=2OE5YTzYqUMzFqiqXhxiLc39gVoW/YgytNZNHAjK8BA=; b=Njs20VLV1rD3KvsGIYeJTqs+rQNEcvE37qh3eVlDPw34KmvQ8HFyowJDPyzX1PAdx+ 6SxkIWVT5wcJwK70TVSKfcdO22dIfri7jRXpJbPzk8LQrlyPTyYtKIOX2oU1/Dhbkdp6 VHJ4YN+gAVH7HfklCwrvzei71hxUwKbzB9p+KUqKg99bYxy2dekBRWHF6qPyys7W35pa UBtAgClCiUMN23iPHa/2XYbnVC2MNFYePgJOXJkG0mxqjfx3qgTApXwlw+UBL9/VXDBK IE4dmNgBQz5Il6sHJOkVE8rNKZ8zrShMj7KjF4b9OKTpbUDpZZn0CpQUPUmkVKcqX1Uh 6iEQ== X-Gm-Message-State: AOAM5315mjOo1xpzTRkYKLeuq4kqfKD5/GyxYtgB9rPN+kW0XbmM0++u awVIvcj2jG5P86DCQbF/rMpZMnX166V+Rw== X-Google-Smtp-Source: ABdhPJy9vaVkHOEGlwcUceIwq2PWNenMoQKvUkOI4Fo3OHefgtWBApNxY1+6nkIiwP0ItMWt0E05gw== X-Received: by 2002:a19:c14c:: with SMTP id r73mr535739lff.581.1616153211317; Fri, 19 Mar 2021 04:26:51 -0700 (PDT) Received: from Phaistos.local (dsl-hkibng42-567333-24.dhcp.inet.fi. [86.115.51.24]) by smtp.gmail.com with ESMTPSA id u16sm651888lja.48.2021.03.19.04.26.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 19 Mar 2021 04:26:50 -0700 (PDT) Sender: "jhi@iki.fi" Reply-To: jhi@iki.fi Subject: Re: How to call 'printf' using libffi? To: Andrew Haley , libffi-discuss@sourceware.org References: <00aed94e-6f76-f6d7-9878-a3eb50dce543@163.com> <7c8729d8-d10e-cdb8-5518-e2f82ccbe141@redhat.com> From: Jarkko Hietaniemi Message-ID: Date: Fri, 19 Mar 2021 13:26:48 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.5.1 MIME-Version: 1.0 In-Reply-To: <7c8729d8-d10e-cdb8-5518-e2f82ccbe141@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libffi-discuss@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libffi-discuss mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Mar 2021 11:26:54 -0000 Andrew Haley via Libffi-discuss wrote: > On 3/18/21 3:25 PM, Anthony Green wrote: >> arg_types[0] = &ffi_type_pointer; >> arg_types[1] = &ffi_type_double; >> arg_types[2] = &ffi_type_sint; >> arg_types[3] = NULL; >> >> /* This printf call is variadic */ >> ffi_prep_cif_var(&cif, FFI_DEFAULT_ABI, 1, 3, &ffi_type_sint, arg_types); > > Surely that only works if a varargs call uses the same ABI as a normal > call. They don't always, > Yeah, it's a mess, e.g. https://www.quora.com/How-are-varargs-typically-implemented-in-C-under-the-hood