From patchwork Wed Mar 5 10:45:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nick Clifton X-Patchwork-Id: 107383 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D2C9C3858C52 for ; Wed, 5 Mar 2025 10:46:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D2C9C3858C52 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=DUROLMoc X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 516DE3858D26 for ; Wed, 5 Mar 2025 10:45:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 516DE3858D26 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 516DE3858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741171553; cv=none; b=hTy73WSV4axaTCSWOkzNVdzEtO3QY0fIY8tYa+6nAXS3Mxr6udMH1/vu2g3tbV1JAYg9XUiKhh4sOHaKTxfBIOQg4diSDSH5t1+caXL2nGvKDvJOZVKOH+VueJDqoS+gt4KXqPN1zXHIx4x5rB64J/wcFWuOhGoAHGvrzy5ZVXc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1741171553; c=relaxed/simple; bh=+VL7BtEBbY9LMDF3NaHR698FiS52Yb7kOUyuQf4IPjk=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=ef5vmSrRhn/cCwH46ofq8cHOmxihsCRG2lHb+p4EfJagwP8OGvwvqlQbV1WnYutFrFySiQukQsiIGUVcE0Aniq71yq/Ffgxrcz2BYDfmKdSjcgLwTiIj+cSaBIDRbhVMSfic1BIgPyA2UeX8iFOy52Jep9nnB1e4ameU6H9xpb4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 516DE3858D26 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1741171553; 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:autocrypt:autocrypt; bh=6qTGT3LKxpUvnE3US29TkNLZV7Uw/X1GLHIABhdcC60=; b=DUROLMocHJNKIov21Z91M85kuLSYKtTJ0YZyKRnm3p7SzdfHEX8oW3GpaFZdIDGVokaMEw uxDFmV8LrhxueQDd/mFbZ7GndHgbTOB4VwNsbp74/thoBveDRHdkBLm18WwIdIc8Or0kHg K+aIBifDn9jqfyO8sCUVesPOmF1PaDA= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-284-4ZTPH-YtOkGXUSSxJ4EX3Q-1; Wed, 05 Mar 2025 05:45:34 -0500 X-MC-Unique: 4ZTPH-YtOkGXUSSxJ4EX3Q-1 X-Mimecast-MFC-AGG-ID: 4ZTPH-YtOkGXUSSxJ4EX3Q_1741171532 Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-474fe4511f3so63667191cf.3 for ; Wed, 05 Mar 2025 02:45:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741171532; x=1741776332; h=autocrypt:subject:from:cc:to:content-language:user-agent :mime-version:date:message-id:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Fl0Und7o5a/RjJ65Y4QWREOGshzAYsjQP+v95+ZCSyc=; b=jTeMJVW0UxyepI1EEfhsxQJrftijC4Pzn7bBW+vPJtVgbzzARzCCWzGKn3E1xcdQuT ZMKLbXa7NX4jdrQuvAuIr9xPLrMtP7B9obHMV7JBIgrie9JhSgSGi8AXVuvaHG07UEeA p/gpwHbLhf2KLk9397qd2WZSi/ws8xyROFytQ3t09IKfwh4fcSPgvAWhvH2kUW4GGUUe AJvXEFP+PQ3GktVlYYToJQQwVVQHGDcYK76ErlFo86lTC9ajCPeJ/7TFwOi7exH9Mz3y 9yp9VMgLtZhz++3/c46Wd0CHH56uDq5gvUNB3j8jCP+c+NKJ9+j/ncj+64RFnIj5tCyb AaaQ== X-Gm-Message-State: AOJu0Yyyi6c2ATKAqtmL4aSZfOD8RUwUW4yud44tE4PYqDRa+rMxf2zE BQ/aSx2Bt5dZ7C9Pp00c1eo4aJYctIRU6V08cj78Qg2dlJcA1H0zssbsFhBN+1fme+yG8TIce2V b0zS2alIEpbzsYIdqGEN0oq7RJwxanIRnLifZjY6r1oLHMeJNwJJ681WxdT/qxIo= X-Gm-Gg: ASbGnctvZfGp60g8qbqA/HHGOkWrMq43IDbKRD1tzomHf3HugY0+Q2+f6dFktut6xJn ARNti4y8LgNkJaWrIT4QxnKKo6Ykxv8PYoKmI5JTf7vJWawzTKVpqOcGLESXsOQuMFiGtx9sMkF dlBkUyAMEitPDF5eCLBHofOlQaIWJPZK8ra5Jlq3Z8Qniv9iiwm+GXWrWNO/d7ilsjvVqpufLNW Q/Ss87BLZvZTZ3YWLXkSOHhLJdEA14TjQ3jKtfcpzWUCB3dHOojidBWAgg6NLLtBO1o11gtl/Uy Wie/CqIdqZop+g== X-Received: by 2002:ac8:5a96:0:b0:475:a5a:1140 with SMTP id d75a77b69052e-4750b442f03mr36087121cf.16.1741171532189; Wed, 05 Mar 2025 02:45:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IFjjyBmirA0Ixk+N0X5AaQeUyN7LFIvlrMy8Qn3d3Zhv6gYljoJD+o0fTipCM3HISkmVDTiHw== X-Received: by 2002:ac8:5a96:0:b0:475:a5a:1140 with SMTP id d75a77b69052e-4750b442f03mr36086941cf.16.1741171531897; Wed, 05 Mar 2025 02:45:31 -0800 (PST) Received: from [192.168.1.18] ([79.123.76.198]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-474691a1ff3sm85869121cf.7.2025.03.05.02.45.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 05 Mar 2025 02:45:31 -0800 (PST) Message-ID: <98c5819b-d197-4fdb-aa7f-9fd52801cad8@redhat.com> Date: Wed, 5 Mar 2025 10:45:28 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Matthieu Longo Cc: Binutils From: Nick Clifton Subject: Removing nested function from elfxx-aarch64.c Autocrypt: addr=nickc@redhat.com; keydata= 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 6susi2ReUyNJEJaSnjO5z13TQ1U= X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: QDhDyuUXVCyBys9oxhfFhcmQ3e4wQsSnFIPv-qJTPVM_1741171532 X-Mimecast-Originator: redhat.com Content-Language: en-GB X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org Hi Matthieu, I hope that you do not mind, but I am checking in the attached patch to remove the nested bfd_is_non_dynamic_elf_object function from bfd_linear_search_one_with_gnu_property in elfxx-aarch64.c and instead replace it with an ordinary inline static function. Whilst nested functions are supported by gcc, they are not by others (most notably Clang in this case, which is how I encountered this issue). More than that however they can require the use of an executable stack (depending upon the compiler and the architecture) and this is a bad thing from a security point of view. Cheers Nick diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c index 317052071db..45a02058e81 100644 --- a/bfd/elfxx-aarch64.c +++ b/bfd/elfxx-aarch64.c @@ -704,6 +704,18 @@ typedef struct asection* sec; } bfd_search_result_t; +static inline bool +bfd_is_non_dynamic_elf_object (bfd *abfd, const struct elf_backend_data *out_be) +{ + const struct elf_backend_data *in_be = get_elf_backend_data (abfd); + + return bfd_get_flavour (abfd) == bfd_target_elf_flavour + && bfd_count_sections (abfd) != 0 + && (abfd->flags & (DYNAMIC | BFD_PLUGIN | BFD_LINKER_CREATED)) == 0 + && out_be->elf_machine_code == in_be->elf_machine_code + && out_be->s->elfclass == in_be->s->elfclass; +} + /* Find the first input bfd with GNU properties. If such an input is found, set found to true and return the relevant input. Otherwise, return the last input of bfd inputs. */ @@ -712,22 +724,13 @@ bfd_linear_search_one_with_gnu_property (struct bfd_link_info *info) { const struct elf_backend_data *be = get_elf_backend_data (info->output_bfd); - bool bfd_is_non_dynamic_elf_object (bfd *abfd) - { - return (bfd_get_flavour (abfd) == bfd_target_elf_flavour) - && (bfd_count_sections (abfd) != 0) - && (abfd->flags & (DYNAMIC | BFD_PLUGIN | BFD_LINKER_CREATED)) == 0 - && (be->elf_machine_code == get_elf_backend_data (abfd)->elf_machine_code) - && (be->s->elfclass == get_elf_backend_data (abfd)->s->elfclass); - } - bfd_search_result_t res = { .pbfd = NULL, .sec = NULL, }; for (bfd *pbfd = info->input_bfds; pbfd != NULL; pbfd = pbfd->link.next) - if (bfd_is_non_dynamic_elf_object (pbfd)) + if (bfd_is_non_dynamic_elf_object (pbfd, be)) { res.pbfd = pbfd;