[PATCH] IA-64: Fix linker error with --no-keep-memory.

Jim Wilson jimw@sifive.com
Mon Feb 26 22:06:00 GMT 2018


Fixes for the --no-keep-memory bug reported in PR 15904.  Setting the changed_*
vars prevents us from freeing modified memory.

Tested with binutils, gas, and ld make check.  There were no regressions.

Committed.

Jim

	bfd/
	PR 15904
	* elfnn-ia64.c (elfNN_ia64_relax_section): After ia64_elf_relax_brl
	call, set changed_contents and changed_relocs.  Likewise after
	successful ia64_elf_relax_br call.
---
 bfd/elfnn-ia64.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/bfd/elfnn-ia64.c b/bfd/elfnn-ia64.c
index 595316dc11..84b1af1456 100644
--- a/bfd/elfnn-ia64.c
+++ b/bfd/elfnn-ia64.c
@@ -593,6 +593,9 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
 		     1, change it to slot 2.  */
 		  if ((irel->r_offset & 3) == 1)
 		    irel->r_offset += 1;
+
+		  changed_contents = TRUE;
+		  changed_relocs = TRUE;
 		}
 
 	      continue;
@@ -607,6 +610,9 @@ elfNN_ia64_relax_section (bfd *abfd, asection *sec,
 
 	      /* Make the relocation offset point to slot 1.  */
 	      irel->r_offset = (irel->r_offset & ~((bfd_vma) 0x3)) + 1;
+
+	      changed_contents = TRUE;
+	      changed_relocs = TRUE;
 	      continue;
 	    }
 
-- 
2.14.1



More information about the Binutils mailing list