+2019-06-19  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_inline_plt): Correct st_other test for
+       functions that require r2 valid to use local entry.
+       (ppc64_elf_size_stubs, ppc64_elf_relocate_section): Likewise.
+
 2019-06-17  Szabolcs Nagy  <szabolcs.nagy@arm.com>
 
        * elfnn-aarch64.c (elfNN_aarch64_allocate_local_dynrelocs): Remove.
 
                        && !(r_type == R_PPC64_PLTCALL_NOTOC
                             && (((h ? h->other : sym->st_other)
                                  & STO_PPC64_LOCAL_MASK)
-                                != 1 << STO_PPC64_LOCAL_BIT)))
+                                > 1 << STO_PPC64_LOCAL_BIT)))
                      *tls_maskp &= ~PLT_KEEP;
                  }
              }
                                   && code_sec->output_section != NULL
                                   && (((hash ? hash->elf.other : sym->st_other)
                                        & STO_PPC64_LOCAL_MASK)
-                                      != 1 << STO_PPC64_LOCAL_BIT)))
+                                      > 1 << STO_PPC64_LOCAL_BIT)))
                        stub_type = ppc_stub_long_branch_notoc;
                    }
                  else if (stub_type != ppc_stub_plt_call)
                  || stub_entry->stub_type == ppc_stub_plt_branch_both)
              && (r_type != R_PPC64_REL24_NOTOC
                  || ((fdh ? fdh->elf.other : sym->st_other)
-                     & STO_PPC64_LOCAL_MASK) == 1 << STO_PPC64_LOCAL_BIT)
+                     & STO_PPC64_LOCAL_MASK) <= 1 << STO_PPC64_LOCAL_BIT)
              && (relocation + addend - from + max_br_offset
                  < 2 * max_br_offset))
            stub_entry = NULL;