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