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