From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) by sourceware.org (Postfix) with ESMTPS id D6F163858404 for ; Sun, 28 Jan 2024 15:05:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D6F163858404 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D6F163858404 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::b33 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706454334; cv=none; b=Aj7xUjTvS4E77SxfYfn1Lx8mXMenp/q/sNKBL3lzS6QesK+QcJ5M12JD0L8dgMEAK6/wpB31+K3a32GuuC+eQKMfeClwEB2zxvlF2MLDOyNQzCKilTw8htlEaGxCWtte5E71zSgAqGRIeeluDBhnktMTffv1Trj4U9PQNqweRhE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706454334; c=relaxed/simple; bh=Fz7T6OlwBHq8J25kvMpib4GSYR7MgIR01m/Uu+4MIms=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=rjO0bFDZz46d1oW5jEknUHM44jcKYz9mno+GqdSPF1ozUiG452M6vwPhvgzOOP8YR87WEp2P+MkyzB/rrKs3/lCfy3tmRFx3LNWCRfVyN24MZ8RXtcfES2XXWh43Xc54nWuboERE5RD8BhVGmXMh59OmGMTHiab7BpUoqsYZV5c= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yb1-xb33.google.com with SMTP id 3f1490d57ef6-dc64926af85so1388858276.0 for ; Sun, 28 Jan 2024 07:05:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706454331; x=1707059131; darn=sourceware.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=7j0U0kDB8U/5GmY19YuBFbP3RsrsQA2z+ta9DGtGTDA=; b=dOxIBC3M7u+LbFCU/a7SkyiwgRf0z0UrtoFmwBpAQHO6ZjwK6ABXubR1f/d+alAfCK It4UdiaZIjNkhmZCjPSG2m9DSSRZrRkoWU5qo0pb8LDcPSsQrMGb68FXELXBfXrGWkpA XQK0BhKQNTHSJCadLAdyiH3tfzKICbE0k+Pofee3pvld+XwwZqhymQ7lAyyOVV6/I/9X 4oBeiGXnPfd9ncvoq5HOTu+bhBhssLgWLwpJ6ZauVoQWQM4CX/tJKoAdIjNQkEGYxa04 VEm4tsP8G/1gw+wPesmKKb4u714frlL2mYfanl5yeVCfP6MG91g7scYvlpaSJfcxXWD3 OqGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706454331; x=1707059131; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7j0U0kDB8U/5GmY19YuBFbP3RsrsQA2z+ta9DGtGTDA=; b=PvGTIaa+Bt9R29o5BzQHjThhL3bAxcOLUNdxqOuPeabY3GCQGtzorFi/ttWhBoTEpn srz3NFi8FmcF//06fk4kncIoBEZOOyt/kOICZEVafiOH5Lqd1NGJGpS+p7hyd368ruXb A71z2j17B6C+UFLTShp7LkrrshA8kzl0lN859LEJ4hGgG8Z/OVgxaPXrPNRvV6OnbMhD 4kPVlT3NdwDJK6AJi0dmn3keGtxnHKELxLG9SJZ/VkVQdoKlKhJ9nABYJyMIYckLgMkX ix1f7djz7e+Cpbsirsupin6uMWlv35wjeaTZs4Q2GiNFC1SCMiPPBxn/hoKllcgj9Qsf pBaw== X-Gm-Message-State: AOJu0YwnuIo9HHtozOHc++qwGQIp7tvhPiJpvj5FYf+A72bda2Di3N1U 9x7HH1MHkD5T1Faje66aSxYVsjNJ0sZHZp563L0Une5q610MfmVVOWbJGIBl9jXEJPKq4o7wlQz vuon3JWjCCZtMpCXc6boDFxQBzJRjmsrX X-Google-Smtp-Source: AGHT+IFhlR5oEBdt+fOaz6barGtX+scw3Blu1oLD7YXVskXpqqpjt4NHtT9KBcGEq6E2hfqDsLHnjgTYPd5hFf+LMSU= X-Received: by 2002:a5b:307:0:b0:dbf:48ee:522c with SMTP id j7-20020a5b0307000000b00dbf48ee522cmr1288598ybp.34.1706454330973; Sun, 28 Jan 2024 07:05:30 -0800 (PST) MIME-Version: 1.0 References: <20240126214553.46536-1-hjl.tools@gmail.com> In-Reply-To: <20240126214553.46536-1-hjl.tools@gmail.com> From: "H.J. Lu" Date: Sun, 28 Jan 2024 07:04:54 -0800 Message-ID: Subject: Re: [PATCH v2] ld: Turn on --error-execstack/--error-rwx-segments To: binutils@sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-3020.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: On Fri, Jan 26, 2024 at 1:45=E2=80=AFPM H.J. Lu wrote= : > > Changes in v2: > > 1. Update the expected error in testsuite/ld-elf/pr31299-1.error to > allow different error messages. > > --- > Since --fatal-warnings always turns a warning to an error, turn on > --error-execstack for --warn-execstack and --error-rwx-segments for > --warn-rwx-segments if --fatal-warnings is used, overriding > --no-error-execstack and --no-error-rwx-segments. > > PR ld/31299 > * lexsup.c (parse_args): Turn on --error-execstack for > --warn-execstack and --error-rwx-segments for --warn-rwx-segments > if --fatal-warnings is used. > * testsuite/ld-elf/elf.exp: Run PR ld/31299 tests. > * testsuite/ld-elf/pr31299-1.error: New file. > * testsuite/ld-elf/pr31299-2.error: Likewise. > * testsuite/ld-elf/pr31299-3.error: Likewise. > --- > ld/lexsup.c | 11 +++++++++++ > ld/testsuite/ld-elf/elf.exp | 26 +++++++++++++++++++++++++- > ld/testsuite/ld-elf/pr31299-1.error | 2 ++ > ld/testsuite/ld-elf/pr31299-2.error | 1 + > ld/testsuite/ld-elf/pr31299-3.error | 1 + > 5 files changed, 40 insertions(+), 1 deletion(-) > create mode 100644 ld/testsuite/ld-elf/pr31299-1.error > create mode 100644 ld/testsuite/ld-elf/pr31299-2.error > create mode 100644 ld/testsuite/ld-elf/pr31299-3.error > > diff --git a/ld/lexsup.c b/ld/lexsup.c > index 099dff8ecde..787d3d02e51 100644 > --- a/ld/lexsup.c > +++ b/ld/lexsup.c > @@ -1947,6 +1947,17 @@ parse_args (unsigned argc, char **argv) > && command_line.check_section_addresses < 0) > command_line.check_section_addresses =3D 0; > > + /* Override --no-error-execstack and --no-warn-execstack and turn on > + --error-execstack for --warn-execstack and --error-rwx-segments for > + --warn-rwx-segments if --fatal-warnings is used. */ > + if (config.fatal_warnings) > + { > + if (link_info.warn_execstack) > + link_info.error_execstack =3D 1; > + if (!link_info.no_warn_rwx_segments) > + link_info.warn_is_error_for_rwx_segments =3D 1; > + } > + > if (export_list) > { > struct bfd_elf_version_expr *head =3D export_list->head.list; > diff --git a/ld/testsuite/ld-elf/elf.exp b/ld/testsuite/ld-elf/elf.exp > index 685b87588e7..6ece36b7931 100644 > --- a/ld/testsuite/ld-elf/elf.exp > +++ b/ld/testsuite/ld-elf/elf.exp > @@ -305,7 +305,23 @@ if { [istarget *-*-*linux*] > {nobits-1.s} \ > {} \ > "rwx-segments-3.exe"] \ > - ] > + [list "Ensure that an error issued when creating a segment with R= WX permissions" \ > + "-e 0 -Tnobits-1.t --warn-rwx-segments \ > + --fatal-warnings --no-error-rwx-segments" \ > + "" \ > + "" \ > + {nobits-1.s} \ > + {{ld pr31299-2.error}} \ > + "pr31299-2.exe"] \ > + [list "Ensure that an error issued when creating a TLS segment wi= th execute permission" \ > + "-e 0 -T rwx-segments-2.t --warn-rwx-segments \ > + --fatal-warnings --no-error-rwx-segments" \ > + "" \ > + "" \ > + {size-2.s} \ > + {{ld pr31299-3.error}} \ > + "pr31299-3.exe"] \ > + ] > > set LDFLAGS $curr_ldflags > > @@ -318,6 +334,14 @@ if { [istarget *-*-*linux*] > {pr29072-b.s} \ > {{ld pr29072.b.warn}} \ > "pr29072-b.exe"] \ > + [list "PR ld/31299 (error about absent .note.GNU-stack)" \ > + "-e 0 -z stack-size=3D0x123400 --warn-execstack \ > + --fatal-warnings --no-error-execstack" \ > + "" \ > + "" \ > + {pr29072-b.s} \ > + {{ld pr31299-1.error}} \ > + "pr31299-1.exe"] \ > ] > } else { > run_ld_link_tests [list \ > diff --git a/ld/testsuite/ld-elf/pr31299-1.error b/ld/testsuite/ld-elf/pr= 31299-1.error > new file mode 100644 > index 00000000000..eb2598df3e6 > --- /dev/null > +++ b/ld/testsuite/ld-elf/pr31299-1.error > @@ -0,0 +1,2 @@ > +.*: error: .*\.o: is triggering the generation of an executable stack be= cause it does not have a \.note\.GNU-stack section > +.*: failed to set dynamic section sizes: .* > diff --git a/ld/testsuite/ld-elf/pr31299-2.error b/ld/testsuite/ld-elf/pr= 31299-2.error > new file mode 100644 > index 00000000000..e5b73657069 > --- /dev/null > +++ b/ld/testsuite/ld-elf/pr31299-2.error > @@ -0,0 +1 @@ > +.*: error: .* has a LOAD segment with RWX permissions > diff --git a/ld/testsuite/ld-elf/pr31299-3.error b/ld/testsuite/ld-elf/pr= 31299-3.error > new file mode 100644 > index 00000000000..b9ba368ba2c > --- /dev/null > +++ b/ld/testsuite/ld-elf/pr31299-3.error > @@ -0,0 +1 @@ > +.*: error: .* has a TLS segment with execute permission > -- > 2.43.0 > If there is no objection, I will check it tomorrow. Thanks. --=20 H.J.