diff options
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.patch | 29 |
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); + |