https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=918dc783deadc206691dcc20bf8aa6c807c10244
commit 918dc783deadc206691dcc20bf8aa6c807c10244
Author: Alan Modra <amodra@gmail.com>
Date: Tue Aug 25 01:55:38 2020 +0930
PR26489, ASAN: ppc64_elf_size_stubs elf64-ppc.c:13389
Stub sections are inserted after sec_info is sized, so have higher ids.
Test flags that will exclude stub sections before looking at the
sec_info array.
PR 26489
* elf64-ppc.c (ppc64_elf_size_stubs): Test code_sec->has_toc_reloc
and code_sec->makes_toc_func_call before sec_info[code_sec->id].
Diff:
---
bfd/ChangeLog | 6 ++++++
bfd/elf64-ppc.c | 6 +++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8f062b085f3..ca79c4e5830 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-25 Alan Modra <amodra@gmail.com>
+
+ PR 26489
+ * elf64-ppc.c (ppc64_elf_size_stubs): Test code_sec->has_toc_reloc
+ and code_sec->makes_toc_func_call before sec_info[code_sec->id].
+
2020-08-25 Alan Modra <amodra@gmail.com>
PR 26492
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 5a21bfafbcf..d144796b466 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -13426,10 +13426,10 @@ ppc64_elf_size_stubs (struct bfd_link_info *info)
fact a call needing a TOC adjustment. */
if ((code_sec != NULL
&& code_sec->output_section != NULL
- && (htab->sec_info[code_sec->id].toc_off
- != htab->sec_info[section->id].toc_off)
&& (code_sec->has_toc_reloc
- || code_sec->makes_toc_func_call))
+ || code_sec->makes_toc_func_call)
+ && (htab->sec_info[code_sec->id].toc_off
+ != htab->sec_info[section->id].toc_off))
|| (((hash ? hash->elf.other : sym->st_other)
& STO_PPC64_LOCAL_MASK)
== 1 << STO_PPC64_LOCAL_BIT))