[OpenBIOS] [PATCH] ppc: force target CPU
Laurent Vivier
laurent at vivier.eu
Mon Jan 25 18:25:30 CET 2016
Le 25/01/2016 18:08, BALATON Zoltan a écrit :
> On Mon, 25 Jan 2016, Laurent Vivier wrote:
>>>>>> $ ./config/scripts/switch-arch ppc64
>>>>>> Configuring OpenBIOS on ppc64 for ppc64
>>>>>> Initializing build tree
>>>>>> /home/laurent/Projects/openbios/obj-ppc64...ok.
>>>>>> Creating target config.mak...ok.
>>>>>> Creating target rules.mak...ok.
>>>>>> Creating config files...ok.
>>>>>> [laurent at pmacg5-1 openbios]$ make
>>>>>> Building OpenBIOS for ppc64
>>>>>> Building...
>>>>>> error:
>>>>>> HOSTCC host/kernel/dict.o
>>>>>> HOSTCC host/kernel/bootstrap.o
>>>>>> HOSTCC host/kernel/forth.o
>>>>>> HOSTCC host/kernel/stack.o
>>>>>> HOSTCC forthstrap
>>>>>> GEN bootstrap.dict
>>>>>> panic: segmentation violation at 0x87a1062c
>>>>>> dict=0x3fff87a10010 here=0x3fff87a10638(dict+0x628)
>>>>>> pc=0x0(dict+0x785efff0)
>>>>>> dstackcnt=0 rstackcnt=0 instruction=deadbeef
>>>>>> dstack: 0x0
>>>>>> rstack: 0x0
>>>>>> Writing dictionary core file
>>>>>> rules.mak:69: recipe for target 'bootstrap.dict' failed
>>>>>> make[1]: *** [bootstrap.dict] Error 1
>>>>>> make[1]: Leaving directory
>>>>>> '/home/laurent/Projects/openbios/obj-ppc64'
>>>>>> Makefile:19: recipe for target 'build' failed
>>>>>> make: *** [build] Error 1
>
> Does running 'make V=1' reveal more errors? Or maybe you could check
> bootstrap.dict-console.log or some other console.log files if they are
> created for some more clues whay it fails.
>
There isn't more detail with V=1
With gdb:
Program received signal SIGSEGV, Segmentation fault.
findword (s1=0x10007b80 "(semis)")
at /home/laurent/Projects/openbios/kernel/dict.c:118
118 tmplfa = read_ucell(cell2pointer(tmplfa));
(gdb) whatis tmplfa
type = ucell
(gdb) whatis ucell
type = uint32_t
and in include/kernel/stack.h:
#ifdef NATIVE_BITWIDTH_EQUALS_HOST_BITWIDTH
static inline ucell pointer2cell(const void* x)
{
return (ucell)(uintptr_t)x;
}
static inline void* cell2pointer(ucell x)
{
return (void*)(uintptr_t)x;
}
#endif
So I guess using an uint32_t to store a pointer on a 64bit machine can
cause some troubles.
I have no "include/arch/ppc64/types.h", is that normal ?
>>>> 64bit host: gcc (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4)
>
> Can you try with gcc 4.x? 5.x could be stricter that might cause
> problems but of course best would be if that could be fixed.
>
> Regards,
> BALATON Zoltan
More information about the OpenBIOS
mailing list