BSD 4_4 development
[unix-history] / usr / src / contrib / mprof / PORT-NOTES
From Jeffrey Hsu on the port of mprof to the MIPS:
Date: 8/90
mprof.c
added some #includes for mips compiler stuff
created global int variable intloc for use by assembly language routines
mips traverses the stack differently
call pdrinit in mprof_startup to read in symbol table
used __Argv as alternative to making the application stash argv in some
global somewhere
dynamically set mp_root_address to an address between __start and main
added routines pdrinit, getpdr, getretaddr to handle stack traces
I assume the frame register is 29 and the return address is in 31.
mpfilt.c
pretty much the same code as mprof.c to read in the symbol table
added code to read in structures and typedefs
pretty hairy
-> note: mpheader is a typedef not a structure
mprof only screens out types, in mpf_intern_type
so you may see a mpheader under the size 8 bin
but you can fix that using the same mechanism in mpf_intern_typedef
mprof.h
define CRT0_ADDRESS to dummy value
Makefile
mostly like sun4
changed ASFLAGS to take out sun stuff
changed the way the library was created
Is there some reason for copying libc.a rather than creating a separate
library? The user will have to change his command line in either case.
md.s
added routines to get reg 29 and 31
note: calling the routine to get reg 31 changes reg 31,
so we're not really getting reg 31, but the pc at the time we
call reg 31
all this is accounted for in the code
mpattach.c
added check for realloc w/ null pointer, not really mips specific
advantages: some applications can now run w/o modification
disadvantages: if you use this feature, the direct allocation table
will show realloc as a caller of malloc and your leak table may
have realloc as the last function to call malloc
added mips to the #if check for redefining exit