Subject: kern/18533: syssrc/arch/i386/i386/pmc.c won't compile
To: None <>
From: None <>
List: netbsd-bugs
Date: 10/04/2002 23:46:47
>Number:         18533
>Category:       kern
>Synopsis:       Can't build kernel with 20021003 CVS
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Oct 04 14:47:00 PDT 2002
>Originator:     Xavier HUMBERT
>Release:        NetBSD 1.6H
System: NetBSD 1.6H NetBSD 1.6H (XAVIER) #27: Mon Sep 9 19:08:59 CEST 2002 i386
Architecture: i386
Machine: i386
	While trying to build 1.6I kernel, with 20021003 source, it fails on
arch/i386/i386/pmc.c whith message :
/usr/tools/bin/i386--netbsdelf-gcc  -pipe -ffreestanding  -O2 -Werror -Wall -Wno-main -Wno-format-zero-length -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wno-uninitialized  -Di386 -I.  -I../../../../arch -I../../../.. -nostdinc -DIPSEC_DEBUG -DFRENCH_KBD -DMAXUSERS=32 -D_KERNEL -D_KERNEL_OPT   -c /usr/src/sys/arch/i386/compile/XAVIER/../../../../arch/i386/i386/pmc.c
/usr/src/sys/arch/i386/compile/XAVIER/../../../../arch/i386/i386/pmc.c: In function `pmc_init':
/usr/src/sys/arch/i386/compile/XAVIER/../../../../arch/i386/i386/pmc.c:77: `cpu_vendor' undeclared (first use in this function)
/usr/src/sys/arch/i386/compile/XAVIER/../../../../arch/i386/i386/pmc.c:77: (Each undeclared identifier is reported only once
/usr/src/sys/arch/i386/compile/XAVIER/../../../../arch/i386/i386/pmc.c:77: for each function it appears in.)
*** Error code 1
The code source involved is :

/* $NetBSD: pmc.c,v 1.4 2002/06/07 04:04:47 gmcgarry Exp $  */
static void
   switch (cpu_class) {
      case CPUCLASS_586:
--->   if (strcmp(cpu_vendor, "GenuineIntel") == 0) {

The char * cpu_vendor variable is not declared in the file, neither static,
nor extern.

Grepping at the headers, i noticed :

[root@arnor root]# cd /sys/arch/     
[root@arnor arch]# find . -name "*.h" | xargs grep cpu_vendor                          
./i386/include/cpu.h:   int cpu_vendor;
./i386/include/cpu.h:   const char *cpu_vendorname;
./i386/include/cpu.h:   int cpu_vendor;
./i386/include/cpu.h:   const char *cpu_vendorname;
./x86_64/include/cpu.h:extern char cpu_vendor[];

Which seems curious.

	cd /usr/src/sys/arch/i386/compile/XAVIER && make depend && make
	I am actually trying to compile without "options PERFCTRS" and it 
seems to compile, as I write this (poor old P200 is not fast enough for
immediate result :-)
(After compile) Yes, it does fix

Best regards,