On Tue, Mar 21, 2023 at 2:04 PM Sergey Bugaev <buga...@gmail.com> wrote: > It seems to parse the bootscript correctly. It starts the initial > thread, which loads the ELF and then hangs right here (on printf???): > > <snip> > > Does that ring any bells?
Maybe this will shed some light: (gdb) s charput (pos=3840, ch=116 't', chattr=7 '\a') at ../i386/i386at/kd.c:2591 2591 *(vid_start + pos) = ch; (gdb) bt #0 charput (pos=3840, ch=116 't', chattr=7 '\a') at ../i386/i386at/kd.c:2591 #1 0xffffffff8100d4c0 in kd_putc (ch=<optimized out>) at ../i386/i386at/kd.c:1291 #2 0xffffffff8100f9a5 in kd_putc_esc (c=<optimized out>) at ../i386/i386at/kd.c:1240 #3 kdcnputc (dev=<optimized out>, c=<optimized out>) at ../i386/i386at/kd.c:2938 #4 0xffffffff8102c888 in cnputc (c=116 't') at ../device/cons.c:163 #5 0xffffffff81014365 in _doprnt (fmt=fmt@entry=0xffffffff81066a56 "task loaded:", argp=argp@entry=0xffffffffbf112f20, putc=0xffffffff8102cb30 <cnputc>, radix=radix@entry=16, putc_arg=putc_arg@entry=0) at ../kern/printf.c:177 #6 0xffffffff81015252 in vprintf (listp=0xffffffffbf112f20, fmt=0xffffffff81066a56 "task loaded:") at ../kern/printf.c:502 #7 printf (fmt=fmt@entry=0xffffffff81066a56 "task loaded:") at ../kern/printf.c:511 #8 0xffffffff8104ad9b in user_bootstrap () at ../kern/bootstrap.c:815 #9 0x0000000000000000 in ?? () (gdb) p vid_start $67 = (u_char *) 0xffffffff800b8000 <error: Cannot access memory at address 0xffffffff800b8000> (gdb) p *vid_start Cannot access memory at address 0xffffffff800b8000 (gdb) info mem Using memory regions provided by the target. There are no memory regions defined. (gdb) s t_page_fault () at ../x86_64/locore.S:442 442 pushq $(T_PAGE_FAULT) /* mark a page fault trap */ (gdb) bt #0 t_page_fault () at ../x86_64/locore.S:442 #1 0x0000000000000002 in ?? () #2 0xffffffff8100c8eb in charput (pos=3840, ch=116 't', chattr=7 '\a') at ../i386/i386at/kd.c:2591 #3 0x0000000000000008 in ?? () #4 0x0000000000000202 in ?? () #5 0xffffffffbf112e20 in ?? () #6 0x0000000000000010 in ?? () #7 0xffffffff8100d4c0 in kd_putc (ch=<optimized out>) at ../i386/i386at/kd.c:1291 #8 0xffffffff8100f9a5 in kd_putc_esc (c=<optimized out>) at ../i386/i386at/kd.c:1240 #9 kdcnputc (dev=<optimized out>, c=<optimized out>) at ../i386/i386at/kd.c:2938 #10 0xffffffff8102c888 in cnputc (c=116 't') at ../device/cons.c:163 #11 0xffffffff81014365 in _doprnt (fmt=fmt@entry=0xffffffff81066a56 "task loaded:", argp=argp@entry=0xffffffffbf112f20, putc=0xffffffff8102cb30 <cnputc>, radix=radix@entry=16, putc_arg=putc_arg@entry=0) at ../kern/printf.c:177 #12 0xffffffff81015252 in vprintf (listp=0xffffffffbf112f20, fmt=0xffffffff81066a56 "task loaded:") at ../kern/printf.c:502 #13 printf (fmt=fmt@entry=0xffffffff81066a56 "task loaded:") at ../kern/printf.c:511 #14 0xffffffff8104ad9b in user_bootstrap () at ../kern/bootstrap.c:815 #15 0x0000000000000000 in ?? () (gdb) Sergey