Spec File: Add defines to enable rwx and execstack warnings.

This commit is contained in:
Nick Clifton 2023-06-21 11:20:13 +01:00
parent 41f66d24b8
commit 93b20dcdbf
2 changed files with 79 additions and 11 deletions

View File

@ -1125,3 +1125,39 @@ diff -rup binutils.orig/ld/testsuite/ld-elf/tls.exp binutils-2.40/ld/testsuite/l
# Check to see if the C compiler works.
if { ![check_compiler_available] } {
return
--- binutils.orig/binutils/testsuite/lib/binutils-common.exp 2023-06-21 09:46:50.861865196 +0100
+++ binutils-2.40/binutils/testsuite/lib/binutils-common.exp 2023-06-21 09:47:24.240856913 +0100
@@ -641,6 +641,8 @@ proc prune_warnings_extra { text } {
regsub -all "(^|\n)(\[^\n\]*: NOTE: This behaviour is deprecated\[^\n\]*\n?)+" $text "\\1" text
regsub -all "(^|\n)(\[^\n\]*: warning:\[^\n\]*has a LOAD segment with RWX permissions\[^\n\]*\n?)+" $text "\\1" text
regsub -all "(^|\n)(\[^\n\]*: warning:\[^\n\]*has a TLS segment with execute permission\[^\n\]*\n?)+" $text "\\1" text
+ # Configuring with --enable-warn-execstack=yes will generate warnings if -z execstack is used.
+ regsub -all "(^|\n)(\[^\n\]*: warning: enabling an executable stack because of -z execstack command line option\[^\n\]*\n?)+" $text "\\1" text
return $text
}
diff -rup binutils-2.40/ld/testsuite/ld-elf/elf.exp binutils.new/ld/testsuite/ld-elf/elf.exp
--- binutils-2.40/ld/testsuite/ld-elf/elf.exp 2023-01-14 00:00:00.000000000 +0000
+++ binutils.new/ld/testsuite/ld-elf/elf.exp 2023-06-21 09:31:08.856233444 +0100
@@ -180,6 +180,21 @@ if { [check_gc_sections_available] && ![
}
proc target_defaults_to_execstack {} {
+ global base_dir
+
+ # If the linker has been configured with --enable-default-execstack=no then
+ # this proc should always return 0.
+ if { [file exists $base_dir/config.status] } {
+ set status [remote_exec host grep "enable-default-execstack=no" $base_dir/config.status]
+ if { [lindex $status 0] == 0 } {
+ return 0
+ } else {
+ verbose -log "$base_dir/config.status does not contain enable-default-execstack=no"
+ }
+ } else {
+ verbose -log "there is no file $base_dir/config.status"
+ }
+
if { [istarget "aarch64*-*-*"]
|| [istarget "arc*-*-*"]
|| [istarget "cris*-*-*"]

View File

@ -2,7 +2,7 @@
Summary: A GNU collection of binary utilities
Name: binutils%{?_with_debug:-debug}
Version: 2.40
Release: 9%{?dist}
Release: 10%{?dist}
License: GPLv3+
URL: https://sourceware.org/binutils
@ -31,6 +31,12 @@ URL: https://sourceware.org/binutils
# Default is off because of BZ 1195883.
%define enable_deterministic_archives 0
# Generate a warning when linking creates an executable stack
%define warn_for_executable_stacks 0
# Generate a warning when linking creates a segment with read, write and execute permissions
%define warn_for_rwx_segments 0
# Enable support for GCC LTO compilation.
# Disable if it is necessary to work around bugs in LTO.
%define enable_lto 1
@ -608,6 +614,19 @@ compute_global_configuration()
CARGS="$CARGS --enable-deterministic-archives=no"
%endif
%if %{warn_for_executable_stacks}
CARGS="$CARGS --enable-warn-execstack=yes"
CARGS="$CARGS --enable-default-execstack=no"
%else
CARGS="$CARGS --enable-warn-execstack=no"
%endif
%if %{warn_for_rwx_segments}
CARGS="$CARGS --enable-warn-rwx-segments=yes"
%else
CARGS="$CARGS --enable-warn-rwx-segments=no"
%endif
%if %{enable_lto}
CARGS="$CARGS --enable-lto"
%endif
@ -1085,17 +1104,20 @@ export QA_RPATHS=0x0003
#----------------------------------------------------------------------------
%if %{with gold}
%post gold
%{_sbindir}/alternatives --install %{_bindir}/ld ld \
%{_bindir}/ld.gold %{ld_gold_priority}
exit 0
%endif
%post
%__rm -f %{_bindir}/ld
%{_sbindir}/alternatives --install %{_bindir}/ld ld \
%{_bindir}/ld.bfd %{ld_bfd_priority}
%if %{with gold}
%{_sbindir}/alternatives --install %{_bindir}/ld ld \
%{_bindir}/ld.gold %{ld_gold_priority}
%endif
# Do not run "alternatives --auto ld" here. Leave the setting to
# however the user previously had it set. See BZ 1592069 for more details.
@ -1105,15 +1127,22 @@ exit 0
#----------------------------------------------------------------------------
# Note: $1 == 0 means that there is an uninstall in progress.
# $1 == 1 means that there is an upgrade in progress.
%if %{with gold}
%preun gold
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove ld %{_bindir}/ld.gold
fi
exit 0
%endif
%preun
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove ld %{_bindir}/ld.bfd
fi
%if %{with gold}
if [ $1 = 0 ]; then
%{_sbindir}/alternatives --remove ld %{_bindir}/ld.gold
fi
%endif
exit 0
@ -1245,6 +1274,9 @@ exit 0
#----------------------------------------------------------------------------
%changelog
* Wed Jun 21 2023 Nick Clifton <nickc@redhat.com> - 2.40-10
- Spec File: Add defines to enable rwx and execstack warnings.
* Wed May 31 2023 Nick Clifton <nickc@redhat.com> - 2.40-9
- Spec File: Remove debug files from default package. (#2208360)