Gdb on a Unix PC (7300, 3b1)
Mike Haertel
mike at thor.acc.stolaf.edu
Sat Aug 19 18:23:03 AEST 1989
In article <15334 at rphroy.UUCP> tkacik at rphroy.UUCP (Tom Tkacik) writes:
>Brian Kilgore writes:
>> I am trying to get Gdb 3.1.2 to compile on an AT&T UNIX PC (7300, 3B1). I have
>>made the proper changes to files to get Gdb to compile, but I need to find out
>>the values to the following defines:
>> FUNCTION_START_OFFSET
>> KERNEL_U_ADDR
>> STACK_END_ADDR
>>I have tried to look up these values but have been unable to find them so far.
>
> [ . . . ]
>
> These are the values that I am using. I got them in a set of patches
>posted by (I believe) Bob Rose (rrr at naucse.UUCP), for gdb2.5.
>I can mail them if needed. They are a great place to start from.
>I do not know where he got these numbers, but they seem to work.
>
>#define FUNCTION_START_OFFSET 0
>#define KERNEL_U_ADDR 04266 /* my mom told me so! */
>#define STACK_END_ADDR 0x1000000
I made gdb 3.1.something work on my 3b1. But I could never get the
coffread.c stuff to work properly, so I finally switched to BSD format
symbol tables (using the GNU assembler and linker, and a variation
on the robotussin theme). Unfortunately, due to disk problems I have
lost the source code. I was planning on completely redoing it with
gdb 3.2 anyway, so I'm not too unhappy.
Last I heard, the incremental symbol-table loading was only implemented
in dbxread.c, so there is another good reason to prefer BSD symbol tables.
FUNCTION_START_OFFSET is certainly 0 on any 68000 machine.
The stack builds downward from 0x300000, so that is STACK_END_ADDR.
This is easily deduced from /usr/include/sys/something-or-other.h.
The u BLOCK in the kernel is located at 0x70000 (see the include files),
and the u STRUCTURE bizarrely begins 0x900 bytes further in. I used
0x70000 for KERNEL_U_ADDR, together with a kludge to offset references
to the u structure another 0x900 bytes. If it weren't for the problem of
reading core files, which begin with a copy of the u block, I would just
have defined KERNEL_U_ADDR to 0x70900.
The breakpoint instructions are slightly different; you can deduce them
with adb. (Set a breakpoint at the beginning of a function, then call
another function to print it out as an array of words.)
Both times I ported it (2.something and 3.1.something) I started with
the sun 2 configuration file and edited it until it worked.
--
Mike Haertel <mike at stolaf.edu>
``There's nothing remarkable about it. All one has to do is hit the right
keys at the right time and the instrument plays itself.'' -- J. S. Bach
More information about the Unix-pc.general
mailing list