diff --git a/devel/binutils/PRE_BUILD b/devel/binutils/PRE_BUILD
new file mode 100755
index 0000000..922c0ab
--- /dev/null
+++ b/devel/binutils/PRE_BUILD
@@ -0,0 +1,3 @@
+default_pre_build &&
+cd $SOURCE_DIRECTORY &&
+apply_patch_dir patches
diff --git a/devel/binutils/patches/elflink.patch
b/devel/binutils/patches/elflink.patch
new file mode 100644
index 0000000..4b5746c
--- /dev/null
+++ b/devel/binutils/patches/elflink.patch
@@ -0,0 +1,24 @@
+diff --git a/bfd/elflink.c b/bfd/elflink.c
+index b24fb95848..02618bed8f 100644
+--- a/bfd/elflink.c
++++ b/bfd/elflink.c
+@@ -686,13 +686,11 @@ bfd_elf_record_link_assignment (bfd *output_bfd,
+ && !h->def_regular)
+ h->root.type = bfd_link_hash_undefined;
+
+- /* If this symbol is not being provided by the linker script, and it is
+- currently defined by a dynamic object, but not by a regular object,
+- then clear out any version information because the symbol will not be
+- associated with the dynamic object any more. */
+- if (!provide
+- && h->def_dynamic
+- && !h->def_regular)
++ /* If this symbol is currently defined by a dynamic object, but not
++ by a regular object, then clear out any version information because
++ the symbol will not be associated with the dynamic object any
++ more. */
++ if (h->def_dynamic && !h->def_regular)
+ h->verinfo.verdef = NULL;
+
+ /* Make sure this symbol is not garbage collected. */
+
[SM-Commit] GIT changes to master grimoire by Treeve Jelbert (9dda45d7ac8361b1f4ae0b277e508a07fa81c068),
Treeve Jelbert, 12/09/2018