Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
expipiplus1 committed Nov 8, 2020
1 parent 43788d3 commit 14efdb2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
29 changes: 29 additions & 0 deletions pkgs/development/tools/misc/binutils/R_ARM_COPY.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
@@ -, +, @@
---
bfd/elf32-arm.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/bfd/elf32-arm.c
+++ a/bfd/elf32-arm.c
@@ -15398,7 +15398,11 @@ elf32_arm_adjust_dynamic_symbol (struct bfd_link_info * info,
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)
+ if (info->nocopyreloc == 0
+ && (h->root.u.def.section->flags & SEC_ALLOC) != 0
+ /* PR 16177: A copy is only needed if the input section is readonly. */
+ && (h->root.u.def.section->flags & SEC_READONLY) != 0
+ && h->size != 0)
{
s = globals->root.sdynrelro;
srel = globals->root.sreldynrelro;
@@ -15410,6 +15414,8 @@ elf32_arm_adjust_dynamic_symbol (struct bfd_link_info * info,
}
if (info->nocopyreloc == 0
&& (h->root.u.def.section->flags & SEC_ALLOC) != 0
+ /* PR 16177: A copy is only needed if the input section is readonly. */
+ && (h->root.u.def.section->flags & SEC_READONLY) != 0
&& h->size != 0)
{
elf32_arm_allocate_dynrelocs (info, srel, 1);

3 changes: 2 additions & 1 deletion pkgs/development/tools/misc/binutils/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ stdenv.mkDerivation {
./0001-x86-Add-a-GNU_PROPERTY_X86_ISA_1_USED-note-if-needed.patch
./0001-x86-Properly-merge-GNU_PROPERTY_X86_ISA_1_USED.patch
./0001-x86-Properly-add-X86_ISA_1_NEEDED-property.patch
] ++ lib.optional stdenv.targetPlatform.isiOS ./support-ios.patch;
] ++ lib.optional stdenv.targetPlatform.isiOS ./support-ios.patch
++ lib.optional stdenv.targetPlatform.isAarch32 ./R_ARM_COPY.patch;

outputs = [ "out" "info" "man" ];

Expand Down

0 comments on commit 14efdb2

Please sign in to comment.