aboutsummaryrefslogtreecommitdiff
path: root/man/man3/symbol.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/symbol.3')
-rw-r--r--man/man3/symbol.3436
1 files changed, 0 insertions, 436 deletions
diff --git a/man/man3/symbol.3 b/man/man3/symbol.3
deleted file mode 100644
index f22590ae..00000000
--- a/man/man3/symbol.3
+++ /dev/null
@@ -1,436 +0,0 @@
-.TH SYMBOL 3
-.SH NAME
-syminit, getsym, symbase, pc2sp, pc2line, textseg, line2addr, lookup, findlocal,
-getauto, findsym, localsym, globalsym, textsym, file2pc, fileelem, filesym,
-fileline, fnbound \- symbol table access functions
-.SH SYNOPSIS
-.B #include <u.h>
-.br
-.B #include <libc.h>
-.br
-.B #include <bio.h>
-.br
-.B #include <mach.h>
-.PP
-.ta \w'\fLmachines 'u
-.B
-int syminit(int fd, Fhdr *fp)
-.PP
-.B
-Sym *getsym(int index)
-.PP
-.B
-Sym *symbase(long *nsyms)
-.PP
-.B
-int fileelem(Sym **fp, uchar *encname, char *buf, int n)
-.PP
-.B
-int filesym(int index, char *buf, int n)
-.PP
-.B
-long pc2sp(ulong pc)
-.PP
-.B
-long pc2line(ulong pc)
-.PP
-.B
-void textseg(ulong base, Fhdr *fp)
-.PP
-.B
-long line2addr(ulong line, ulong basepc)
-.PP
-.B
-int lookup(char *fn, char *var, Symbol *s)
-.PP
-.B
-int findlocal(Symbol *s1, char *name, Symbol *s2)
-.PP
-.B
-int getauto(Symbol *s1, int off, int class, Symbol *s2)
-.PP
-.B
-int findsym(long addr, int class, Symbol *s)
-.PP
-.B
-int localsym(Symbol *s, int index)
-.PP
-.B
-int globalsym(Symbol *s, int index)
-.PP
-.B
-int textsym(Symbol *s, int index)
-.PP
-.B
-long file2pc(char *file, ulong line)
-.PP
-.B
-int fileline(char *str, int n, ulong addr)
-.PP
-.B
-int fnbound(long addr, ulong *bounds)
-.SH DESCRIPTION
-These functions provide machine-independent access to the
-symbol table of an executable file or executing process.
-The latter is accessible by opening the device
-.B /proc/\fIpid\fP/text
-as described in
-.IR proc (3).
-.IR Mach (2)
-and
-.IR object (2)
-describe additional library functions
-for processing executable and object files.
-.PP
-.IR Syminit ,
-.IR getsym ,
-.IR symbase ,
-.IR fileelem ,
-.IR pc2sp ,
-.IR pc2line ,
-and
-.I line2addr
-process the symbol table contained in an executable file
-or the
-.B text
-image of an executing program.
-The symbol table is stored internally as an array of
-.B Sym
-data structures as defined in
-.IR a.out (6).
-.PP
-.I Syminit
-uses the data in the
-.B Fhdr
-structure filled by
-.I crackhdr
-(see
-.IR mach (2))
-to read the raw symbol tables from the open file descriptor
-.IR fd .
-It returns the count of the number of symbols
-or \-1 if an error occurs.
-.PP
-.I Getsym
-returns the address of the
-.IR i th
-.B Sym
-structure or zero if
-.I index
-is out of range.
-.PP
-.I Symbase
-returns the address of the first
-.B Sym
-structure in the symbol table. The number of
-entries in the symbol table is returned in
-.IR nsyms .
-.PP
-.I Fileelem
-converts a file name, encoded as described in
-.IR a.out (6),
-to a character string.
-.I Fp
-is the base of
-an array of pointers to file path components ordered by path index.
-.I Encname
-is the address of an array of encoded
-file path components in the form of a
-.B z
-symbol table entry.
-.I Buf
-and
-.I n
-specify the
-address of a receiving character buffer and its length.
-.I Fileelem
-returns the length of the null-terminated string
-that is at most
-.IR n \-1
-bytes long.
-.PP
-.I Filesym
-is a higher-level interface to
-.IR fileelem .
-It fills
-.I buf
-with the name of the
-.IR i th
-file and returns the length of the null-terminated string
-that is at most
-.IR n \-1
-bytes long.
-File names are retrieved in no particular order, although
-the order of retrieval does not vary from one pass to the next.
-A zero is returned when
-.I index
-is too large or too small or an error occurs during file name
-conversion.
-.PP
-.I Pc2sp
-returns an offset associated with
-a given value of the program counter. Adding this offset
-to the current value of the stack pointer gives the address
-of the current stack frame. This approach only applies
-to the 68020 architecture; other architectures
-use a fixed stack frame offset by a constant contained
-in a dummy local variable (called
-.BR .frame )
-in the symbol table.
-.PP
-.I Pc2line
-returns the line number of the statement associated
-with the instruction address
-.IR pc .
-The
-line number is the absolute line number in the
-source file as seen by the compiler after pre-processing; the
-original line number in the source file may be derived from this
-value using the history stacks contained in the symbol table.
-.PP
-.I Pc2sp
-and
-.I pc2line
-must know the start and end addresses of the text segment
-for proper operation. These values are calculated from the
-file header by function
-.IR syminit .
-If the text segment address is changed, the application
-program must invoke
-.I textseg
-to recalculate the boundaries of the segment.
-.I Base
-is the new base address of the text segment and
-.I fp
-points to the
-.I Fhdr
-data structure filled by
-.IR crackhdr .
-.PP
-.I Line2addr
-converts a line number to an instruction address. The
-first argument is the absolute line number in
-a file. Since a line number does not uniquely identify
-an instruction location (e.g., every source file has line 1),
-a second argument specifies a text address
-from which the search begins. Usually this
-is the address of the first function in the file of interest.
-.PP
-.IR Pc2sp ,
-.IR pc2line ,
-and
-.I line2addr
-return \-1 in the case of an error.
-.PP
-.IR Lookup ,
-.IR findlocal ,
-.IR getauto ,
-.IR findsym ,
-.IR localsym ,
-.IR globalsym ,
-.IR textsym ,
-.IR file2pc ,
-and
-.I fileline
-operate on data structures riding above the raw symbol table.
-These data structures occupy memory
-and impose a startup penalty but speed retrievals
-and provide higher-level access to the basic symbol
-table data.
-.I Syminit
-must be called
-prior to using these functions.
-The
-.B Symbol
-data structure:
-.IP
-.EX
-typedef struct {
- void *handle; /* private */
- struct {
- char *name;
- long value;
- char type;
- char class;
- };
-} Symbol;
-.EE
-.LP
-describes a symbol table entry.
-The
-.B value
-field contains the offset of the symbol within its
-address space: global variables relative to the beginning
-of the data segment, text beyond the start of the text
-segment, and automatic variables and parameters relative
-to the stack frame. The
-.B type
-field contains the type of the symbol as defined in
-.IR a.out (6).
-The
-.B class
-field assigns the symbol to a general class;
-.BR CTEXT ,
-.BR CDATA ,
-.BR CAUTO ,
-and
-.B CPARAM
-are the most popular.
-.PP
-.I Lookup
-fills a
-.B Symbol
-structure with symbol table information. Global variables
-and functions are represented by a single name; local variables
-and parameters are uniquely specified by a function and
-variable name pair. Arguments
-.I fn
-and
-.I var
-contain the
-name of a function and variable, respectively.
-If both
-are non-zero, the symbol table is searched for a parameter
-or automatic variable. If only
-.I var
-is
-zero, the text symbol table is searched for function
-.IR fn .
-If only
-.I fn
-is zero, the global variable table
-is searched for
-.IR var .
-.PP
-.I Findlocal
-fills
-.I s2
-with the symbol table data of the automatic variable
-or parameter matching
-.IR name .
-.I S1
-is a
-.B Symbol
-data structure describing a function or a local variable;
-the latter resolves to its owning function.
-.PP
-.I Getauto
-searches the local symbols associated with function
-.I s1
-for an automatic variable or parameter located at stack
-offset
-.IR off .
-.I Class
-selects the class of
-variable:
-.B CAUTO
-or
-.BR CPARAM .
-.I S2
-is the address of a
-.B Symbol
-data structure to receive the symbol table information
-of the desired symbol.
-.PP
-.I Findsym
-returns the symbol table entry of type
-.I class
-stored near
-.IR addr .
-The selected symbol is a global variable or function
-with address nearest to and less than or equal to
-.IR addr .
-Class specification
-.B CDATA
-searches only the global variable symbol table; class
-.B CTEXT
-limits the search to the text symbol table.
-Class specification
-.B CANY
-searches the text table first, then the global table.
-.PP
-.I Localsym
-returns the
-.IR i th
-local variable in the function
-associated with
-.IR s .
-.I S
-may reference a function or a local variable; the latter
-resolves to its owning function.
-If the
-.IR i th
-local symbol exists,
-.I s
-is filled with the data describing it.
-.PP
-.I Globalsym
-loads
-.I s
-with the symbol table information of the
-.IR i th
-global variable.
-.PP
-.I Textsym
-loads
-.I s
-with the symbol table information of the
-.IR i th
-text symbol. The text symbols are ordered
-by increasing address.
-.PP
-.I File2pc
-returns a text address associated with
-.I line
-in file
-.IR file ,
-or -1 on an error.
-.PP
-.I Fileline
-converts text address
-.I addr
-to its equivalent
-line number in a source file. The result,
-a null terminated character string of
-the form
-.LR file:line ,
-is placed in buffer
-.I str
-of
-.I n
-bytes.
-.PP
-.I Fnbound
-returns the start and end addresses of the function containing
-the text address supplied as the first argument. The second
-argument is an array of two unsigned longs;
-.I fnbound
-places the bounding addresses of the function in the first
-and second elements of this array. The start address is the
-address of the first instruction of the function; the end
-address is the address of the start of the next function
-in memory, so it is beyond the end of the target function.
-.I Fnbound
-returns 1 if the address is within a text function, or zero
-if the address selects no function.
-.PP
-Functions
-.I file2pc
-and
-.I fileline
-may produce inaccurate results when applied to
-optimized code.
-.PP
-Unless otherwise specified, all functions return 1
-on success, or 0 on error. When an error occurs,
-a message describing it is stored in the system
-error buffer where it is available via
-.IR errstr .
-.SH SOURCE
-.B /sys/src/libmach
-.SH "SEE ALSO"
-.IR mach (2),
-.IR object (2),
-.IR errstr (2),
-.IR proc (3),
-.IR a.out (6)