From aae8280935aab812c3666d1c5c0ea099e96927cc Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Sat, 14 Apr 2018 15:58:07 -0700 Subject: [PATCH] Fix bug where --icf=safe triggers segfault when linking ARM. When checking a R_ARM_TARGET[12] relocation, we need a valid target pointer, but the garbage collection code was passing a NULL instead. gold/ PR gold/23046 * gc.h (gc_process_relocs): Pass target to scan.global_reloc_may_be_function_pointer. --- gold/ChangeLog | 6 ++++++ gold/gc.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index fa7317370aa..b86812ceeac 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2018-04-14 Cary Coutant + + PR gold/23046 + * gc.h (gc_process_relocs): Pass target to + scan.global_reloc_may_be_function_pointer. + 2018-04-09 Alan Modra * configure: Regenerate. diff --git a/gold/gc.h b/gold/gc.h index eda332c22dc..00f383f4434 100644 --- a/gold/gc.h +++ b/gold/gc.h @@ -300,7 +300,7 @@ gc_process_relocs( && dst_obj != NULL && (!is_ordinary || scan.global_reloc_may_be_function_pointer( - symtab, NULL, NULL, src_obj, src_indx, NULL, reloc, + symtab, NULL, target, src_obj, src_indx, NULL, reloc, r_type, gsym))) symtab->icf()->set_section_has_function_pointers(dst_obj, dst_indx); -- 2.30.2