From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by sourceware.org (Postfix) with ESMTPS id 5F5393858D28 for ; Fri, 26 Jan 2024 21:45:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5F5393858D28 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 5F5393858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::62a ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706305558; cv=none; b=GsMBDAmluY70Dd/PhlxxpUPh5r9Q9SULpIzNwXIb6rWNygydiS9h1OLaEd5IbYsB9lnXaaw2NeMdyRolZHMiWUYCv63NYd7rOPz+xA40hxijJmWFK01f4SR0vus6rTExXlxUSQNvAZBbNqKIiZwHKuJuZ9f0y+oaiI8/xFsylJU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706305558; c=relaxed/simple; bh=hC66Jvc+oBwHfswIykB47l8/Fm3XltsUkq7uc9EzMUc=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=kSaij6u9BUGUNgIiJIPE8UC1gg/vXbAxvvFStZ5FA18+dvxLTJ4FSwLk02YR+tWRE1ClP21vIjiaf9xyu29e3pVJOXBm8Qcx0KFgadcYmrjgxvzb2CzEViqYfQkF/GhVK8LLsIT2bLows0k2OVxrP6M68lBNzU425VQdFOUb6KI= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1d76943baafso7983925ad.2 for ; Fri, 26 Jan 2024 13:45:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1706305555; x=1706910355; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=3nYiYt/R74nwmzI41jHVLxDAJVEdj+3d1SQRol3+UN8=; b=ccrxkkYoLGDYLT4cH2K9CVVdiFnAs7ZG9w4JS15yLP7Cfn/SeIkqwH967ZfYVzA/vt KCgAVtAewwUYuRu2gfJ0qoaVXHgdhDNZY4auvUQmoUf4LNPugwOqoJ2QvdpfXDCAbpww lOlK+GdFKQ6Ia0oi9xPQp9lOB0YiyOm7pb1815Xl5sqSQldhV1IUnbUCRREvL+LAhd3u VhIaE4YtjhHLivXSlNAhBaii+LpB2x8H6VJnZK3gU4SEcshXoL9QdAXjywDiguNi/2w3 XSyJxNe2VuWz3bOCLANl2l8Y+ewAaiCngkC0wMqHek4OM/BAxXiZ9A37UHw61dtNBdRi OFJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706305555; x=1706910355; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3nYiYt/R74nwmzI41jHVLxDAJVEdj+3d1SQRol3+UN8=; b=SunlbcC6bYvpoLCMo0yvGcxe79YRsZK0MDyASnshkGJVsN22q9ZOkzHxs5pTVtvnF6 jWVaXbvfTNzl9SD4BOnyNloZKLv/qjUXmyMj4Qxon9vv8AhDfVIlPtJQarfEVUbb0eQh bII72o9NGL0L3KDh9wEWdf93SymhUtvJ+2fP7pvsyuRDiAfawMZ+GcdYMzGOM5CTDl7s xq3Lg8g9nTp002Z80jPNbjo5QYlcVUrsHGl0gZPVr99sEnTTV1vFHd9uL4jeL9Q0fOKD mWin+S9v43LCHiuFx0wJh20DKtNJcuYk2kUSlu2qNdd2EzPOxpEFd5xP53KT202Hul1E 03Ww== X-Gm-Message-State: AOJu0YxCoe7b7I8FD5lmoHUC5uwEuDCKaUgKxtuzHTVI21x3II2gtOmX meHAeks9GHVN+w9dZKcg+fqzjuFqrBNOvYwcptL1/v0a52PqgMgrRIuvK4mD X-Google-Smtp-Source: AGHT+IFR0zXd4ey1RWjy9iBHCqAujWvYU8YDu0Z5wgzAK36SBtFsLoTzd5NCIafbt9RUTYve8zUMJA== X-Received: by 2002:a17:902:bcc9:b0:1d6:f1b5:b799 with SMTP id o9-20020a170902bcc900b001d6f1b5b799mr424088pls.73.1706305555014; Fri, 26 Jan 2024 13:45:55 -0800 (PST) Received: from gnu-cfl-3.localdomain ([172.56.169.51]) by smtp.gmail.com with ESMTPSA id ko3-20020a17090307c300b001d77c28ae9dsm1395229plb.17.2024.01.26.13.45.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 26 Jan 2024 13:45:54 -0800 (PST) Received: from gnu-cfl-3.. (localhost [IPv6:::1]) by gnu-cfl-3.localdomain (Postfix) with ESMTP id 607C4740298 for ; Fri, 26 Jan 2024 13:45:53 -0800 (PST) From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH v2] ld: Turn on --error-execstack/--error-rwx-segments Date: Fri, 26 Jan 2024 13:45:53 -0800 Message-ID: <20240126214553.46536-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3024.0 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: 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 = 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 = 1; + if (!link_info.no_warn_rwx_segments) + link_info.warn_is_error_for_rwx_segments = 1; + } + if (export_list) { struct bfd_elf_version_expr *head = 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 RWX 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 with 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=0x123400 --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/pr31299-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 because 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/pr31299-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/pr31299-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