On Mon, Mar 18, 2019 at 2:05 PM Ian Lance Taylor <i...@google.com> wrote:
>
> On Mon, Mar 18, 2019 at 11:57 AM James Hilliard
> <james.hillia...@gmail.com> wrote:
> >
> > On Mon, Mar 18, 2019 at 11:19 AM Ian Lance Taylor <i...@google.com> wrote:
> > >
> > > On Sun, Mar 17, 2019 at 6:22 PM <james.hillia...@gmail.com> wrote:
> > > >
> > > > From: James Hilliard <james.hillia...@gmail.com>
> > > >
> > > > Fixes error: ‘st.st_mode’ may be used uninitialized in this function
> > > > ---
> > > > libbacktrace/elf.c | 2 +-
> > > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > > >
> > > > diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c
> > > > index f3988ec02a0..714bfec965d 100644
> > > > --- a/libbacktrace/elf.c
> > > > +++ b/libbacktrace/elf.c
> > > > @@ -765,7 +765,7 @@ elf_syminfo (struct backtrace_state *state,
> > > > uintptr_t addr,
> > > > static int
> > > > elf_is_symlink (const char *filename)
> > > > {
> > > > - struct stat st;
> > > > + struct stat st={0};
> > > >
> > > > if (lstat (filename, &st) < 0)
> > > > return 0;
> > >
> > > I can't see why that is needed. The variable is initialized right
> > > there on the next non-blank line. If the compiler is giving a
> > > warning, then we need to fix the compiler.
> > This is the message I get:
> > ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c: In
> > function ‘elf_is_symlink’:
> > ../../../../libsanitizer/libbacktrace/../../libbacktrace/elf.c:772:21:
> > error: ‘st.st_mode’ may be used uninitialized in this function
> > [-Werror=maybe-uninitialized]
> > return S_ISLNK (st.st_mode);
> > ^
>
> Thanks, but I'm saying that if you look at the code you can see that
> st is clearly initialized, by the call to lstat. I would like to see
> an explanation for why you are seeing that warning before changing the
> code to disable it. Initializing st should not be necessary here.
> For example, perhaps lstat is a macro when compiling libsanitizer; if
> that is the underlying problem, then we should fix the macro, not this
> code.
Yeah, I'm not sure why the compiler thinks lstat isn't initializing st.
What should I do to debug this further?
>
> Ian