[comp.sys.atari.st.tech] Executable Symbol Table

ericco@ssl.berkeley.edu (Eric C. Olson) (11/20/90)

Is there a good reason for executable files to have symbol tables in
them?  I've been poking around various pieces of executable code, and
I've found references in the symbol table (I think) to routines like
printf, etc.  I know on SunOS4.0 a special symbol called "__DYNAMIC"
is used to indicate that shared libraries are needed.  I don't think
that there is anything like this in TOS.

Does this mean that one could load program into memory, and then call
functions withun them as *subroutines*, if you knew the functions
interface, and used compatiable compilers, etc?

Thanks,
Eric
--
Eric
ericco@ssl.berkeley.edu

sstreep@next.com (Sam Streeper) (11/21/90)

In article <ERICCO.90Nov19095024@soc1.ssl.berkeley.edu> ericco@ssl.berkeley.edu (Eric C. Olson) writes:
>
>Is there a good reason for executable files to have symbol tables in
>them?

Assembly language debugging is much easier with symbols because function
names and variables appear by name rather than address.  Most
commercial executables won't have the symbol table as it just swells the
executable size, though.  Not all Atari languages will leave the symbol
table in the executable, and not all debuggers understand it, either.
Laser C and Devpac assembler both do the right thing, for what it's worth.
If you're looking for an excellent assembly language debugger, I recommend
MonST, which is packaged with Devpac.  (The Laser debugger is also an
excellent source debugger, and a passable assembly debugger as well).

>Does this mean that one could load program into memory, and then call
>functions withun them as *subroutines*, if you knew the functions
>interface, and used compatiable compilers, etc?

Yuck.  You _could_ do this, if you were a little crazy...

-sam