Add and delete all the files which need adding and deleting.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2119 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/ume.h b/coregrind/ume.h
new file mode 100644
index 0000000..664c125
--- /dev/null
+++ b/coregrind/ume.h
@@ -0,0 +1,77 @@
+#ifndef _COREGRIND_UME_H
+#define _COREGRIND_UME_H
+
+#include <elf.h>
+#include <sys/types.h>
+
+#if ELFSZ == 64
+#define ESZ(x) Elf64_##x
+#elif ELFSZ == 32
+#define ESZ(x) Elf32_##x
+#else
+#error ELFSZ needs to ==32 or ==64
+#endif
+
+/* Integer type the same size as a pointer */
+typedef ESZ(Addr) addr_t;
+
+struct exeinfo
+{
+ int setbrk; /* INPUT: if true, set the brk segment base */
+ addr_t map_base; /* INPUT: if non-zero, base address of mappings */
+
+ 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 */
+
+ /* these are the extra args added by #! scripts */
+ char *argv0; /* the interpreter name */
+ char *argv1; /* the args for the interpreter */
+
+ char **argv; /* the original argv */
+};
+
+int do_exec(const char *exe, struct exeinfo *info);
+
+void foreach_map(int (*fn)(void *start, void *end,
+ const char *perm, off_t offset,
+ int maj, int min, int ino));
+void as_pad(void *start, void *end);
+void as_unpad(void *start, void *end);
+void as_closepadfile(void);
+int as_getpadfd(void);
+void as_setpadfd(int);
+
+struct elfinfo
+{
+ ESZ(Ehdr) e;
+ ESZ(Phdr) *p;
+ int fd;
+};
+
+struct elfinfo *readelf(int fd, const char *filename);
+ESZ(Addr) mapelf(struct elfinfo *e, ESZ(Addr) base, int setbrk);
+
+struct ume_auxv
+{
+ int a_type;
+ union {
+ void *a_ptr;
+ int a_val;
+ void (*a_fcn)(void);
+ };
+};
+
+struct ume_auxv *find_auxv(int *orig_esp);
+
+/* Our private auxv entries */
+#define AT_UME_PADFD 0xff01 /* padding file fd */
+#define AT_UME_EXECFD 0xff02 /* stage1 executable fd */
+
+#endif /* _COREGRIND_UME_H */