Port-mips archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Running o32 code on n32 (Part 2, fancier programs)



So I'm trying to build packages from pkgsrc with o32. First one to be
built (ever) is pkgtools/digest. but built with -mabi=32, it hangs in an
infinite loop if just run with no arguments (normally it prints usage).

I noticed __getdents30 is in the backtrace and put a breakpoint for it.
after syscall, it changes the badvaddr register.

Also backtrace:
(gdb) bt
#0  0x78729b5c in __getdents30 () from /usr/lib/o32/libc.so.12
#1  0x787297e4 in ___readdir_unlocked50 () from /usr/lib/o32/libc.so.12
#2  0x78727364 in _citrus_load_module () from /usr/lib/o32/libc.so.12
#3  0x7872656c in _citrus_ctype_open () from /usr/lib/o32/libc.so.12
#4  0x7871be90 in _rune_load () from /usr/lib/o32/libc.so.12
#5  0x78719a10 in ?? () from /usr/lib/o32/libc.so.12
#6  0x78719d0c in ?? () from /usr/lib/o32/libc.so.12
#7  0x78719e44 in ?? () from /usr/lib/o32/libc.so.12
#8  0x7871a118 in _citrus_LC_CTYPE_setlocale () from
/usr/lib/o32/libc.so.12
#9  0x78716548 in _generic_LC_ALL_setlocale () from
/usr/lib/o32/libc.so.12
#10 0x78716bec in __setlocale () from /usr/lib/o32/libc.so.12
#11 0x00411dac in main ()

I thought that it might have something to do with registers being
trampled by the kernel on syscalls, but that seems unlikely - o32
just has temporary registers where n32 has non-temporary ones.

Any suggestions/tips?



I'm also slightly puzzled as to why we're saving temporary registers in
systemcall in mipsX_subr.S, isn't caller expected to save them?


Home | Main Index | Thread Index | Old Index