From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 6C3AA3858CDA for ; Thu, 10 Nov 2022 20:08:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6C3AA3858CDA Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1668110930; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=imZn4STyfubwLL0DRz9SLEwC1prD9Ni9Mbds5icfPLE=; b=fPLyGuPixfb0IbrGIm5nCAOuZ+tOxfRUwnGDjwg2JfIsFmBSytZ+mOKeaeFJyElP+yZWtH 0k0tS5Wu4yX1J3NynMc7/OG67ZO1G520O+qPGpwbJcueKVqQ0aKvAoR9EagGFm6uiuPg4v bGgWjGiXVefB9OqMS7b4xD2vfwXLzG4= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-80-vm0qsjlMM5mA3MipOEAcYQ-1; Thu, 10 Nov 2022 15:08:46 -0500 X-MC-Unique: vm0qsjlMM5mA3MipOEAcYQ-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 0B21E3C0F676; Thu, 10 Nov 2022 20:08:46 +0000 (UTC) Received: from oldenburg.str.redhat.com (unknown [10.39.193.5]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 3360F1121330; Thu, 10 Nov 2022 20:08:45 +0000 (UTC) From: Florian Weimer To: "H.J. Lu" Cc: libc-alpha@sourceware.org Subject: Re: [PATCH] Linux: Support non-variadic calls to prctl (bug 29770) References: <878rkiu72f.fsf@oldenburg.str.redhat.com> <87cz9usjn3.fsf@oldenburg.str.redhat.com> Date: Thu, 10 Nov 2022 21:08:43 +0100 In-Reply-To: (H. J. Lu's message of "Thu, 10 Nov 2022 11:55:22 -0800") Message-ID: <878rkishbo.fsf@oldenburg.str.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.3 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: * H. J. Lu: > On Thu, Nov 10, 2022 at 11:18 AM Florian Weimer wrote: >> >> * H. J. Lu: >> >> > prctl is an exported variadic function. Do we need to keep it? >> >> Do you mean whether we should keep it as a variadic function or turn it >> into a function with a fixed argument list? > > Yes. > >> Unfortunately the types and number of arguments vary between the >> sub-operations. Pretty much any application calling prctl would have to >> be changed. It's just syscall by another name (and with a fixed number >> of course). >> > > has > > extern int prctl (int __option, ...) __THROW; > > Your change works for > > int prctl(int option, unsigned long arg2, unsigned long arg3, > unsigned long arg4, unsigned long arg5); > > prtcl (...); > > But it breaks > > #include > > prctl (...); I don't think that's true for our current ABIs. They support unprototyped calls, and by extension this also means that calls through a variadic prototype to a prototyped non-variadic function must work as well. There are other ABIs which do not work this way, but glibc hasn't been ported to them (and it's unclear how useful they would be for GNU/Linux). The new C implementation is equivalent to the previous assembler implementation. Thanks, Florian