svn commit: r311929 - head/sys/boot/common

Ian Lepore ian at freebsd.org
Wed Jan 11 21:42:45 UTC 2017


On Wed, 2017-01-11 at 13:35 -0800, Ngie Cooper wrote:
> On Wed, Jan 11, 2017 at 10:47 AM, Dimitry Andric <dim at freebsd.org>
> wrote:
> > 
> > Author: dim
> > Date: Wed Jan 11 18:47:00 2017
> > New Revision: 311929
> > URL: https://svnweb.freebsd.org/changeset/base/311929
> > 
> > Log:
> >   Don't include <errno.h> in reloc_elf.c, as it includes <stand.h>
> > just
> >   after it, which has a conflicting definition of errno.  This
> > leads to
> >   the following warning with clang 4.0.0:
> > 
> >       In file included from sys/boot/common/reloc_elf32.c:6:
> >       In file included from sys/boot/common/reloc_elf.c:37:
> >       /usr/obj/usr/src/tmp/usr/include/stand.h:155:12: error: this
> > function declaration is not a prototype [-Werror,-Wstrict-
> > prototypes]
> >       extern int errno;
> >                  ^
> >       sys/sys/errno.h:46:26: note: expanded from macro 'errno'
> >       #define errno           (* __error())
> It seems like libstand (once again) should be fixed, not the
> "offending code".
> -Ngie
> 

In this case it's not the library that's in error.  Libstand is the
thing that implements errno, so it's the thing that must define it.

The code that includes both errno.h and libstand.h was wrong.  errno.h
is a standard header file used with libc, and the loader code doesn't
link with libc.

The thing that amazes me is the usual:  how did this ever work with gcc
4.2?

-- Ian



More information about the svn-src-all mailing list