Added some comments.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2531 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/ume.h b/coregrind/ume.h
index 70008e1..1155ede 100644
--- a/coregrind/ume.h
+++ b/coregrind/ume.h
@@ -54,26 +54,32 @@
/*--- Loading ELF files ---*/
/*------------------------------------------------------------*/
+// Info needed to load and run a program. IN/INOUT/OUT refers to the
+// inputs/outputs of do_exec().
struct exeinfo
{
- addr_t map_base; // INPUT: if non-zero, base address of mappings
- char** argv; // INPUT: the original argv
+ addr_t map_base; // IN: if non-zero, base address of mappings
+ char** argv; // IN: the original argv
addr_t exe_base; // INOUT: lowest (allowed) address of exe
addr_t exe_end; // INOUT: highest (allowed) address
- addr_t phdr; // address phdr was mapped at
- int phnum; // number of phdrs
- addr_t interp_base; // where interpreter (ld.so) was mapped
- addr_t entry; // entrypoint in main executable
- addr_t init_eip; // initial eip
- addr_t brkbase; // base address of brk segment
+ addr_t phdr; // OUT: address phdr was mapped at
+ int phnum; // OUT: number of phdrs
+ addr_t interp_base; // OUT: where interpreter (ld.so) was mapped
+ addr_t entry; // OUT: entrypoint in main executable
+ addr_t init_eip; // OUT: initial eip
+ addr_t brkbase; // OUT: base address of brk segment
// These are the extra args added by #! scripts
- char* interp_name; // INPUT: the interpreter name
- char* interp_args; // INPUT: the args for the interpreter
+ char* interp_name; // OUT: the interpreter name
+ char* interp_args; // OUT: the args for the interpreter
};
+// Does everything short of actually running 'exe': finds the file,
+// checks execute permissions, sets up interpreter if program is a script,
+// reads headers, maps file into memory, and returns important info about
+// the program.
int do_exec(const char *exe, struct exeinfo *info);
/*------------------------------------------------------------*/
@@ -84,6 +90,7 @@
const char *perm, off_t offset,
int maj, int min, int ino));
+// Padding functions used at startup to force things where we want them.
void as_pad(void *start, void *end);
void as_unpad(void *start, void *end);
void as_closepadfile(void);