On Mon, 25 Jan 2016, Laurent Vivier wrote:
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 ?
Sorry, no idea. I don't seem to have include/arch/ppc64 in my tree from svn either but I don't know if that's normal or not. Maybe it is. Just thought posting more details might help others to help you. For example what was the command that got you the above gdb output and what's the full stack trace?
Probably you are right that it should use 64 bit value for pointers instead of 32 bit but I have no idea why it doesn't. Recent changes in this area seem to be:
1f52358fed8fc785e26539a3efce816cf36ee61e bootstrap: don't include files from target/include as system includes
that remove some typedefs added earlier by
4415741789e3acd525c265c641041c4fd60c3541 PPC: Add kernel header style typedefs
but I don't know if that's related.
Regards, BALATON Zoltan