Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jan 2017 14:42:36 -0700
From:      Ian Lepore <ian@freebsd.org>
To:        Ngie Cooper <yaneurabeya@gmail.com>, Dimitry Andric <dim@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>
Subject:   Re: svn commit: r311929 - head/sys/boot/common
Message-ID:  <1484170956.86335.17.camel@freebsd.org>
In-Reply-To: <CAGHfRMBy7KPP=vLjEpyfRuf_u4S%2B2mO_W3US9WodMf=ckRJKBQ@mail.gmail.com>
References:  <201701111847.v0BIl0Mg013954@repo.freebsd.org> <CAGHfRMBy7KPP=vLjEpyfRuf_u4S%2B2mO_W3US9WodMf=ckRJKBQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2017-01-11 at 13:35 -0800, Ngie Cooper wrote:
> On Wed, Jan 11, 2017 at 10:47 AM, Dimitry Andric <dim@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1484170956.86335.17.camel>