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.
This commit is contained in:
Cary Coutant 2018-04-14 15:58:07 -07:00
parent 702d167134
commit aae8280935
2 changed files with 7 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2018-04-14 Cary Coutant <ccoutant@gmail.com>
PR gold/23046
* gc.h (gc_process_relocs): Pass target to
scan.global_reloc_may_be_function_pointer.
2018-04-09 Alan Modra <amodra@gmail.com>
* configure: Regenerate.

View File

@ -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);