From 1ffce3f87dc6e62d49b5aaa0bc29c6d4cfbc6db6 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 13 Jan 2022 15:42:13 +1030 Subject: [PATCH] Re: gas: add visibility support using GNU syntax on XCOFF tc-ppc.c: In function 'ppc_comm': tc-ppc.c:4560:40: error: 'visibility' may be used uninitialized in this function [-Werror=maybe-uninitialized] With that fixed we hit lots of segfaults in the ld testsuite. PR 22085 bfd/ * xcofflink.c (xcoff_link_input_bfd): Don't segfault on NULL sym_hash. gas/ * config/tc-ppc.c (ppc_comm): Init visibility. --- bfd/xcofflink.c | 7 +++++-- gas/config/tc-ppc.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c index 6e994720f6d..70d371e4aed 100644 --- a/bfd/xcofflink.c +++ b/bfd/xcofflink.c @@ -4615,8 +4615,11 @@ xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo, } /* Update visibility. */ - isym.n_type &= ~SYM_V_MASK; - isym.n_type |= (*sym_hash)->visibility; + if (*sym_hash) + { + isym.n_type &= ~SYM_V_MASK; + isym.n_type |= (*sym_hash)->visibility; + } /* Output the symbol. */ bfd_coff_swap_sym_out (output_bfd, (void *) &isym, (void *) outsym); diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index ac10772a61e..054f9c72161 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -4380,7 +4380,7 @@ ppc_comm (int lcomm) symbolS *lcomm_sym = NULL; symbolS *sym; char *pfrag; - unsigned short visibility; + unsigned short visibility = 0; struct ppc_xcoff_section *section; endc = get_symbol_name (&name); -- 2.30.2