Date: Tue, 31 May 2016 20:32:32 -0400 From: Allan Jude <allanjude@freebsd.org> To: Xin Li <delphij@delphij.net>, Garrett Cooper <ngie@FreeBSD.org>, src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Cc: d@delphij.net Subject: Re: svn commit: r301023 - head/sys/boot/geli Message-ID: <7085dc80-f4ce-9a78-7153-0bf4995cabd4@freebsd.org> In-Reply-To: <31d1323b-cb13-9a90-8b25-430fdbc1d225@delphij.net> References: <201605310624.u4V6OAYi071387@repo.freebsd.org> <31d1323b-cb13-9a90-8b25-430fdbc1d225@delphij.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2016-05-31 02:31, Xin Li wrote: > > > On 5/30/16 23:24, Garrett Cooper wrote: >> Author: ngie >> Date: Tue May 31 06:24:09 2016 >> New Revision: 301023 >> URL: https://svnweb.freebsd.org/changeset/base/301023 >> >> Log: >> Add missing libc includes to fix -Wimplicit-function-declaration warnings >> >> MFC after: 2 weeks >> Reported by: clang >> Sponsored by: EMC / Isilon Storage Division >> >> Modified: >> head/sys/boot/geli/geliboot_crypto.c >> >> Modified: head/sys/boot/geli/geliboot_crypto.c >> ============================================================================== >> --- head/sys/boot/geli/geliboot_crypto.c Tue May 31 06:00:18 2016 (r301022) >> +++ head/sys/boot/geli/geliboot_crypto.c Tue May 31 06:24:09 2016 (r301023) >> @@ -27,6 +27,10 @@ >> * $FreeBSD$ >> */ >> >> +#include <stdio.h> >> +#include <string.h> >> +#include <strings.h> >> + >> #include "geliboot.h" > > This is wrong, you shouldn't use standard C library in freestanding > environment. > > It seems that libstand.h is explicitly excluded, why? (in geliboot.h, > allanjude cc'ed): > > %%% > /* AES-XTS implementation */ > #define _STAND > #define STAND_H /* We don't want stand.h in {gpt,zfs,gptzfs}boot */ > #include <opencrypto/xform_enc.h> > > %%% > > Cheers, > The boot loader uses sys/common/util.h to avoid needing all of libstand in size sensitive files like boot2 (7kb) and zfsboot (64kb). If you then pull in stand.h or string.h, you get conflicting definitions of the functions like printf and bcmp. The manual defines for STAND_H, _STRING_H_, _STDIO_H_, etc, are there to block those files being included by existing library we use, like opencrypto and geli. Since these are included before geliboot.h, and only compiled into the libgeliboot.a archive, it would seem to work, although it is probably confusing to anyone trying to read the code. -- Allan Jude
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7085dc80-f4ce-9a78-7153-0bf4995cabd4>