Date: Sun, 30 Aug 2009 15:35:17 GMT From: "System V. Unix" <sysv@yahoo.com> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/138350: UFS_EXTATTR static int prototyping error ufs_extattr_autostart_locked Message-ID: <200908301535.n7UFZHNQ093589@www.freebsd.org> Resent-Message-ID: <200908301540.n7UFe2sL029399@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 138350 >Category: kern >Synopsis: UFS_EXTATTR static int prototyping error ufs_extattr_autostart_locked >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Aug 30 15:40:02 UTC 2009 >Closed-Date: >Last-Modified: >Originator: System V. Unix >Release: 7.2-RELEASE >Organization: >Environment: >Description: Using additional kernel option UFS_EXTATTR in 7.2-RELEASE causes a kernel build failure cc -c -O2 -frename-registers -pipe -fno-strict-aliasing -std=c99 -g -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc -I. -I../../.. -I../../../contrib/altq -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-mmx -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -Werror ../../../ufs/ufs/ufs_extattr.c cc1: warnings being treated as errors ./../../ufs/ufs/ufs_extattr.c:97: warning: 'ufs_extattr_autostart_locked' declared 'static' but never defined *** Error code 1 This is because the routine is getting optionally defined around line 215 with a #ifdef UFS_EXTATTR_AUTOSTART, but the prototype is missing the analoguous #ifdef, and the compiler seems to be picky. >How-To-Repeat: Add option UFS_EXTATTR to the 7.2-RELEASE kernel and do a build. The problem was NOT seen in 7.1-RELEASE. >Fix: Trivial solution. Simply the add the pre-process directives around the prototyping of the subroutine at the head of the file. The routine lower down in ufs_extattr.c already has the #ifdefs around it. #ifdef UFS_EXTATTR_AUTOSTART #endif /* !UFS_EXTATTR_AUTOSTART */ That way BOTH the prototype and the subroutine have that #ifdef. e.g. ------------- diff -u usr/src/sys/ufs/ufs/ufs_extattr.c.orig usr/src/sys/ufs/ufs/ufs_extattr.c --- usr/src/sys/ufs/ufs/ufs_extattr.c.orig 2009-08-30 16:57:35.000000000 -0600 +++ usr/src/sys/ufs/ufs/ufs_extattr.c 2009-08-30 17:26:46.000000000 -0600 @@ -93,8 +93,10 @@ struct thread *td); static int ufs_extattr_rm(struct vnode *vp, int attrnamespace, const char *name, struct ucred *cred, struct thread *td); +#ifdef UFS_EXTATTR_AUTOSTART static int ufs_extattr_autostart_locked(struct mount *mp, struct thread *td); +#endif /* !UFS_EXTATTR_AUTOSTART */ static int ufs_extattr_start_locked(struct ufsmount *ump, struct thread *td); >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908301535.n7UFZHNQ093589>