Additional patch (commit 31b4d3a16f200bf04db8439a63b72bba7af4e1be).

Resolves: RHEL-45873
This commit is contained in:
Nick Clifton 2024-07-12 11:24:28 +01:00
parent f8f459207e
commit dfd50d908a
2 changed files with 58 additions and 1 deletions

View File

@ -84,3 +84,57 @@ diff -rup binutils.orig/ld/ldlang.c binutils-2.35.2/ld/ldlang.c
/* Adjust by the offset arg of XXX_SEGMENT_RELRO_END. */
desired_end = relro_end - seg->relro_offset;
Only in binutils-2.35.2/ld: ldlang.c.orig
diff -rup binutils.orig/ld/emultempl/elf-x86.em binutils-2.35.2/ld/emultempl/elf-x86.em
--- binutils.orig/ld/emultempl/elf-x86.em 2024-07-12 10:24:52.597889981 +0100
+++ binutils-2.35.2/ld/emultempl/elf-x86.em 2024-07-12 10:25:12.134935407 +0100
@@ -33,6 +33,7 @@ static struct elf_linker_x86_params para
static void
elf_x86_create_output_section_statements (void)
{
+ config.relro_use_commonpagesize = TRUE;
_bfd_elf_linker_x86_set_options (&link_info, &params);
}
diff -rup binutils.orig/ld/ld.h binutils-2.35.2/ld/ld.h
--- binutils.orig/ld/ld.h 2024-07-12 10:24:52.620890034 +0100
+++ binutils-2.35.2/ld/ld.h 2024-07-12 10:25:12.135935409 +0100
@@ -280,6 +280,10 @@ typedef struct
/* If set, code and non-code sections should never be in one segment. */
bfd_boolean separate_code;
+ /* TRUE if the end of the relro segment should be aligned to
+ COMMONPAGESIZE rather than MAXPAGESIZE. */
+ bfd_boolean relro_use_commonpagesize;
+
/* The rpath separation character. Usually ':'. */
char rpath_separator;
Only in binutils-2.35.2/ld: ld.h.orig
diff -rup binutils.orig/ld/ldexp.c binutils-2.35.2/ld/ldexp.c
--- binutils.orig/ld/ldexp.c 2024-07-12 10:24:53.077891097 +0100
+++ binutils-2.35.2/ld/ldexp.c 2024-07-12 10:25:12.136935412 +0100
@@ -480,7 +480,10 @@ fold_segment_align (seg_align_type *seg,
seg->base = expld.result.value;
seg->commonpagesize = commonpage;
seg->maxpagesize = maxpage;
- seg->relropagesize = maxpage;
+ if (config.relro_use_commonpagesize)
+ seg->relropagesize = commonpage;
+ else
+ seg->relropagesize = maxpage;
seg->relro_end = 0;
}
else
Only in binutils-2.35.2/ld: ldexp.c.orig
diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr18176.d binutils-2.35.2/ld/testsuite/ld-x86-64/pr18176.d
--- binutils.orig/ld/testsuite/ld-x86-64/pr18176.d 2024-07-12 10:24:52.988890890 +0100
+++ binutils-2.35.2/ld/testsuite/ld-x86-64/pr18176.d 2024-07-12 10:25:12.136935412 +0100
@@ -3,6 +3,7 @@
#ld: -melf_x86_64 -shared -z relro -T pr18176.t -z max-page-size=0x200000 -z common-page-size=0x1000
#readelf: -l --wide
#target: x86_64-*-linux*
+#xfail: *-*-*
#...
GNU_RELRO 0x04bd17 0x000000000024bd17 0x000000000024bd17 0x0022e9 0x0022e9 R 0x1
Only in binutils-2.35.2/ld/testsuite/ld-x86-64: pr18176.d.orig

View File

@ -2,7 +2,7 @@
Summary: A GNU collection of binary utilities
Name: binutils%{?_with_debug:-debug}
Version: 2.35.2
Release: 49%{?dist}
Release: 50%{?dist}
License: GPLv3+
URL: https://sourceware.org/binutils
@ -1301,6 +1301,9 @@ exit 0
#----------------------------------------------------------------------------
%changelog
* Fri Jul 12 2024 Nick Clifton <nickc@redhat.com> - 2.35.2-50
- Additional patch (commit 31b4d3a16f200bf04db8439a63b72bba7af4e1be). (RHEL-45873)
* Thu Jul 11 2024 Nick Clifton <nickc@redhat.com> - 2.35.2-49
- Remove the gap between LOAD segments when using RELRO. (RHEL-45873)