-nostdinc, <bsd.kmod.mk>, and <std{arg,def}.h>

Anonymous swell.k at gmail.com
Mon Jul 26 02:44:37 UTC 2010


Juergen Lock <nox at jelal.kn-bremen.de> writes:

> On Sun, Jul 25, 2010 at 12:59:00AM +0200, Juergen Lock wrote:
>> On Sat, Jul 24, 2010 at 05:17:51PM -0400, Ryan Stone wrote:
>> > I believe that you should be using <sys/stddef.h> and <machine/stdarg.h>
>> 
>> Aaah thank you! :)  I shall make a patch tomorrow.
>
> Anyone want to test this patch on head?  It can go in
> /usr/ports/emulators/kqemu-kmod-devel/files/patch-common-kqemu_int.h:
>
>  Thanx, :)
> 	Juergen
>
> --- common/kqemu_int.h.orig
> +++ common/kqemu_int.h
> @@ -17,8 +17,14 @@
>   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
>   */
>  #ifndef __ASSEMBLY__
> +#ifdef __FreeBSD__
> +#include <sys/types.h>
> +#include <sys/stddef.h>
> +#include <machine/stdarg.h>

You're not gonna make @ and machine symlinks and include them using `-I@'?
I think typedefs need to be hidden, too.

  gcc -Wall -O2 -fomit-frame-pointer -fno-strict-aliasing -Werror  -mno-red-zone -fno-stack-protector    -fpic  -D__KERNEL__ -nostdinc -iwithprefix include -I. -I.. -c -o monitor.o monitor.c -I@
  In file included from monitor.c:20:
  kqemu_int.h:31: error: redefinition of typedef 'uint8_t'
  @/sys/types.h:84: error: previous declaration of 'uint8_t' was here
  kqemu_int.h:32: error: redefinition of typedef 'uint16_t'
  @/sys/types.h:89: error: previous declaration of 'uint16_t' was here
  kqemu_int.h:33: error: redefinition of typedef 'uint32_t'
  @/sys/types.h:94: error: previous declaration of 'uint32_t' was here
  kqemu_int.h:35: error: redefinition of typedef 'uint64_t'
  @/sys/types.h:99: error: previous declaration of 'uint64_t' was here
  kqemu_int.h:40: error: redefinition of typedef 'int8_t'
  @/sys/types.h:64: error: previous declaration of 'int8_t' was here
  kqemu_int.h:41: error: redefinition of typedef 'int16_t'
  @/sys/types.h:69: error: previous declaration of 'int16_t' was here
  kqemu_int.h:42: error: redefinition of typedef 'int32_t'
  @/sys/types.h:74: error: previous declaration of 'int32_t' was here
  kqemu_int.h:44: error: redefinition of typedef 'int64_t'
  @/sys/types.h:79: error: previous declaration of 'int64_t' was here

BTW, the port doesn't respect CC and CFLAGS.

> +#else
>  #include <stddef.h>
>  #include <stdarg.h>
> +#endif
>  
>  #ifndef NO_STD_TYPES
>  


More information about the freebsd-current mailing list