Subject: Re: More thoughts on netboot
To: None <jmc@weru.ksu.edu, raub@kushana.aero.ufl.edu>
From: Gordon W. Ross <gwr@mc.com>
List: port-sun3
Date: 01/16/1996 11:06:38
> Date: Mon, 15 Jan 1996 22:03:39 -0600 (CST)
> From: "James Michael Chacon" <jmc@weru.ksu.edu>

> >Probably some bug in the NetBSD/sun3 netboot implementation.
> >The netboot program works on many machines, but may have a
> >problem related to the PROM revision.  (I'm guessing.)
> >
> >What PROM revision does your Sun3/50 say at power-on?
> 
> I have a ROM revision 2.3 on my sun 3/50 and I get the same behavior as he
> is getting when I'm trying to netboot mine. I'm also using the 1.2c netboot
> for this. Do you have any suggestions? 
> 
> James

Someone will need to atack it with the Sun PROM debugging tools.
What you do is build the netboot program with all "interesting"
symbols made non-static (things in netif_sun.c, etc) and then
make yourself a load map using the command:
	nm -n netboot.bin >netboot.nm

With the addresses in the map above you can use the PROM monitor
to set breakpoints, examine memory, etc. (though it's difficult).
It may help to have another sun3 running gdb on netboot.bin so
you can disassemble things and such...

In case anyone wants to look at netboot 1.2c I've attached its map.

Gordon

[ symbol map for the sun3 netboot version 1.2c ]

00240000 F ../libsa/SRT0.o
00240000 T __estack
00240000 T start
00240036 T _abort
00240038 T _reset
0024003e T _getvbr
00240044 F ../libsa/SRT1.o
00240044 T _exit
00240058 T __start
0024008a T ___main
00240094 t ___gnu_compiled_c
00240094 F boot.o
00240094 t gcc2_compiled.
002400c2 T _main
00240164 t ___gnu_compiled_c
00240164 F conf.o
00240164 t gcc2_compiled.
00240168 t ___gnu_compiled_c
00240168 t gcc2_compiled.
00240168 F version.o
0024017c t ___gnu_compiled_c
0024017c T _net_open
0024017c F dev_net.o
0024017c t gcc2_compiled.
002401d2 T _net_close
0024020c T _net_ioctl
00240216 T _net_strategy
002402b0 T _net_mountroot
002403b0 t ___gnu_compiled_c
002403b0 T _socktodesc
002403b0 t gcc2_compiled.
002403b0 F netif_sun.o
002403e2 T _netif_open
002404c8 T _netif_close
002405b8 T _netif_put
002406f0 T _netif_get
002407fa t _sun3_getether
00240848 t ___gnu_compiled_c
00240848 t gcc2_compiled.
00240848 F promdev.o
0024087e T _prom_iopen
0024093e T _prom_iclose
002409c6 t _prom_mapin
00240a80 t ___gnu_compiled_c
00240a80 F arp.o
00240a80 t gcc2_compiled.
00240aa2 T _arpwhohas
00240ba8 t _arpsend
00240bcc t _arprecv
00240c76 T _arp_reply
00240d28 F exec_sun.o
00240d7a T _exec_sun
00240fdc T _read
00240fdc F read.o
00241084 T _close
00241084 F close.o
0024111a T _closeall
00241154 F rarp.o
00241188 T _rarp_getipaddress
00241358 F bootparam.o
0024139c T _bp_whoami
00241516 T _bp_getfile
0024163a T _xdr_string_encode
00241678 T _xdr_string_decode
002416c2 T _xdr_inaddr_encode
00241702 T _xdr_inaddr_decode
0024174c T _nfs_getrootfh
0024174c F nfs.o
0024180c T _nfs_lookupfh
00241910 T _nfs_readdata
002419dc T _nfs_mount
00241a70 T _nfs_open
00241ae2 T _nfs_close
00241b2c T _nfs_read
00241bce T _nfs_write
00241bd8 T _nfs_seek
00241c70 T _nfs_stat
00241cc8 F promboot.o
00241cec T _prom_get_boot_info
00241d98 T _gets
00241d98 F gets.o
00241e40 T _strlen
00241e40 F strlen.o
00241e5c T _open
00241e5c F open.o
00241f32 T _null_open
00241f44 T _null_close
00241f4e T _null_read
00241f60 T _null_write
00241f72 T _null_seek
00241f8c T _null_stat
00241fa0 F rpc.o
00241fb6 T _rpc_call
0024214e T _rpc_fromaddr
00242170 T _rpc_pmap_getcache
002421cc T _rpc_pmap_putcache
002422d4 T _devopen
002422d4 F devopen.o
00242300 F strerror.o
00242424 T _strerror
00242578 F net.o
00242596 T _sendudp
00242710 T _readudp
002428d0 T _sendrecv
00242980 T _inet_addr
00242a68 T _inet_ntoa
00242a76 T _intoa
00242b1c T _ip_convertaddr
00242bc8 T _in_cksum
00242bc8 F in_cksum.o
00242c68 T _sendether
00242c68 F ether.o
00242cdc T _readether
00242d5e T _ether_sprintf
00242db0 T _getsecs
00242db0 F clock.o
00242dc2 T _getticks
00242dd4 T _bzero
00242dd4 F bzero.o
00242df8 T _bcmp
00242df8 F bcmp.o
00242e1c T _bcopy
00242e1c F bcopy.o
00242e56 T _memcpy
00242e78 T _dvma_init
00242e78 F dvma.o
00242eca T _dvma_mapin
00242f04 T _dvma_mapout
00242f32 T _dvma_alloc
00242f5a T _dvma_free
00242f84 T _get_context
00242f84 F control.o
00242f9c T _set_context
00242fb8 T _get_pte
00242fd6 T _set_pte
00242ff8 T _get_segmap
0024301c T _set_segmap
00243042 T _set_segmap_allctx
002430b8 T _alloc
002430b8 F alloc.o
002430fc T _free
00243124 F panic.o
00243126 T _panic
0024314c T _get_control_byte
0024314c F ctrlsp.o
00243166 T _get_control_word
0024317e T _set_control_byte
0024319a T _set_control_word
002431b8 F printf.o
002431d0 T _sprintf
002431f6 T _printf
00243418 T _twiddle
00243450 T _getchar
00243450 F promcons.o
00243466 T _peekchar
00243476 T _putchar
002434a8 D _defname
002434a8 T _etext
002434c8 D _file_system
002434e0 D _nfsys
002434e4 D _devsw
002434f8 D _ndevs
002434fc D _version
00243500 D _bcea
00243506 d _netdev_sock
0024350c D _netif_debug
00243510 d _prom_mapinfo
00243588 d _prom_mapinfo_cnt
0024358c d _prom_devmap
00243590 D _arp_table
002435e0 d _arp_num
002435e4 D _nfs_stat_types
00243604 D _debug
00243608 D _rpc_port
00243620 D _hz
00243624 D _freelist
0024362c D _edata
0024362c b _open_count
00243630 b _sockets
00243698 b _netif_prom
002436ac b _netif_ioreq
002436e2 b _sun3_idprom
00243702 b _promdev_inuse
00243774 B _gateip
00243778 B _bp_server_addr
0024377c B _hostname
002437fc B _hostnamelen
00243800 B _domainname
00243880 B _rpc_xid
00243884 B _nfs_root_node
002438f4 B _rootip
002438f8 B _rpc_pmap_list
00243978 B _prom_bootdev
00243998 B _netmask
0024399c B _prom_boothow
002439a0 B _rootpath
00243a20 B _rpc_pmap_num
00243a24 B _errno
00243a28 B _line
00243a78 B _domainnamelen
00243a7c B _prom_bootfile
00243a80 B _bp_server_port
00243a84 B _myip
00243a88 B _files
00243ad8 B _end