NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
port-acorn26/38632: acorn26 fails to build after matt-armv6 branch merge
>Number: 38632
>Category: port-acorn26
>Synopsis: acorn26 fails to build after matt-armv6 branch merge
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: port-acorn26-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Mon May 12 10:35:00 +0000 2008
>Originator: Havard Eidnes
>Release: NetBSD-current of May 11, 2008
>Organization:
I try...
>Environment:
Host System: NetBSD quattro.urc.uninett.no 3.1_STABLE NetBSD 3.1_STABLE
(QUATTRO) #1: Tue Nov 21 02:34:49 CET 2006
he%quattro.urc.uninett.no@localhost:/usr/obj/sys/arch/i386/compile/QUATTRO i386
Architecture: acorn26
Machine: acorn26
>Description:
acorn26 fails to build bcopyinout.o as part of GENERIC, with
/u/build/HEAD/src/sys/arch/arm/arm/bcopyinout.S: Assembler messages:
/u/build/HEAD/src/sys/arch/arm/arm/bcopyinout.S:61: Error: undefined symbol
`cpu_info_store' in operation
/u/build/HEAD/src/sys/arch/arm/arm/bcopyinout.S:61: Error: undefined symbol
`CI_CURPCB' in operation
*** Failed target: bcopyinout.o
An inspection of bcopyinout.S reveals that revision 1.15
changed "_C_LABEL(curpcb)" to "_C_LABEL(cpu_info_store) + CI_CURPCB"
at the quoted line number as part of the matt-armv6 branch merge.
This is in the !MULTIPROCESSOR preprocessor branch.
By the looks of it, acorn26 doesn't have cpu_info nor
cpu_info_store.
It's not obvious to me that this is a reaonable and intended
new requirement for arm ports to provide these structures
even when they are not multiprocessor platforms.
Reverting this single line change reveals another similar change:
compile GENERIC/copystr.o
/u/build/HEAD/src/sys/arch/arm/arm/copystr.S: Assembler messages:
/u/build/HEAD/src/sys/arch/arm/arm/copystr.S:60: Error: undefined symbol
`cpu_info_store' in operation
/u/build/HEAD/src/sys/arch/arm/arm/copystr.S:60: Error: undefined symbol
`CI_CURPCB' in operation
...and reverting similarly reveals another completely different
problem:
compile GENERIC/cpuswitch.o
/u/build/HEAD/src/sys/arch/acorn26/acorn26/cpuswitch.c:58: error: expected
identifier or '(' before '&' token
/u/build/HEAD/src/sys/arch/acorn26/acorn26/cpuswitch.c:58: error: expected ')'
before '->' token
...and... hmm, this is
struct pcb *curpcb;
and apparently this is now defined to something else, but I
can't see why that should happen:
#ifdef _KERNEL
#ifdef _KERNEL_OPT
#include "opt_multiprocessor.h"
#endif
#ifdef MULTIPROCESSOR
#define curpcb (curcpu()->ci_curpcb)
#else
extern struct pcb *curpcb;
#endif
#endif /* _KERNEL */
says arm/include/pcb.h, and MULTIPROCESSOR is not defined
in the configuration. However, arm/include/cpu.h says:
#ifndef curpcb
#define curpcb (curcpu()->ci_curpcb)
#endif
in the !MULTIRPROCESSOR preprocessor branch, which is
probably the source of this last problem.
>How-To-Repeat:
Try to build -current for acorn26, watch it fail as above.
>Fix:
Sorry, don't know.
See above for half-baked attempts at probably following the
wrong path, and that cpu_info_store and associated glue is
now probably a requirement also for non-MULTIPROCESSOR platforms.
Home |
Main Index |
Thread Index |
Old Index