SHA256
1
0
forked from pool/binutils

- Remove broken arm32-avoid-copyreloc.patch to fix [gcc#108515]

OBS-URL: https://build.opensuse.org/package/show/devel:gcc/binutils?expand=0&rev=428
This commit is contained in:
Richard Biener 2023-01-24 12:54:02 +00:00 committed by Git OBS Bridge
parent 2580f878fb
commit 72dd29de21
3 changed files with 6 additions and 64 deletions

View File

@ -1,61 +0,0 @@
When a writable input section (i.e. data) refers to a symbol defined in an
ET_DYN object, BFD ld for ARM targets generates a COPY dynamic reloc. For
other targets like x86, this situation generates a plain data dynamic
reloc. Gold for ARM also generates the plain data dynamic reloc.
https://bugzilla.suse.com/show_bug.cgi?id=1200962
https://sourceware.org/bugzilla/show_bug.cgi?id=16177
---
bfd/elf32-arm.c | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
Index: binutils-2.39/bfd/elf32-arm.c
===================================================================
--- binutils-2.39.orig/bfd/elf32-arm.c
+++ binutils-2.39/bfd/elf32-arm.c
@@ -16196,6 +16196,21 @@ elf32_arm_adjust_dynamic_symbol (struct
if (bfd_link_pic (info) || globals->root.is_relocatable_executable)
return true;
+ /* If -z nocopyreloc was given, we won't generate them either. */
+ if (info->nocopyreloc)
+ {
+ h->non_got_ref = 0;
+ return true;
+ }
+
+ /* If we don't find any dynamic relocs in read-only sections, then
+ we'll be keeping the dynamic relocs and avoiding the copy reloc. */
+ if (!_bfd_elf_readonly_dynrelocs (h))
+ {
+ h->non_got_ref = 0;
+ return true;
+ }
+
/* We must allocate the symbol in our .dynbss section, which will
become part of the .bss section of the executable. There will be
an entry for this symbol in the .dynsym section. The dynamic
@@ -16205,9 +16220,9 @@ elf32_arm_adjust_dynamic_symbol (struct
determine the address it must put in the global offset table, so
both the dynamic object and the regular object will refer to the
same memory location for the variable. */
- /* If allowed, we must generate a R_ARM_COPY reloc to tell the dynamic
- linker to copy the initial value out of the dynamic object and into
- the runtime process image. We need to remember the offset into the
+ /* We must generate a R_ARM_COPY reloc to tell the dynamic linker to
+ copy the initial value out of the dynamic object and into the
+ runtime process image. We need to remember the offset into the
.rel(a).bss section we are going to use. */
if ((h->root.u.def.section->flags & SEC_READONLY) != 0)
{
@@ -16219,9 +16234,7 @@ elf32_arm_adjust_dynamic_symbol (struct
s = globals->root.sdynbss;
srel = globals->root.srelbss;
}
- if (info->nocopyreloc == 0
- && (h->root.u.def.section->flags & SEC_ALLOC) != 0
- && h->size != 0)
+ if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
{
elf32_arm_allocate_dynrelocs (info, srel, 1);
h->needs_copy = 1;

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Tue Jan 24 12:52:49 UTC 2023 - Richard Biener <rguenther@suse.com>
- Remove broken arm32-avoid-copyreloc.patch to fix [gcc#108515]
-------------------------------------------------------------------
Sat Dec 10 10:00:56 UTC 2022 - Dirk Müller <dmueller@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file for package binutils
#
# Copyright (c) 2022 SUSE LLC
# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -125,7 +125,6 @@ Patch6: unit-at-a-time.patch
Patch8: ld-relro.diff
Patch9: testsuite.diff
Patch10: enable-targets-gold.diff
Patch11: arm32-avoid-copyreloc.patch
Patch12: s390-pic-dso.diff
Patch14: binutils-build-as-needed.diff
Patch15: binutils-znow.patch
@ -247,7 +246,6 @@ cp ld/ldgram.y ld/ldgram.y.orig
%patch8
%patch9
%patch10
%patch11 -p1
%patch12
%patch14
%patch15