aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/tools/misc/binutils/R_ARM_COPY.patch
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/tools/misc/binutils/R_ARM_COPY.patch')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/tools/misc/binutils/R_ARM_COPY.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/tools/misc/binutils/R_ARM_COPY.patch b/infra/libkookie/nixpkgs/pkgs/development/tools/misc/binutils/R_ARM_COPY.patch
new file mode 100644
index 000000000000..874809863523
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/tools/misc/binutils/R_ARM_COPY.patch
@@ -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);
+