diff options
Diffstat (limited to 'linker/linker.h')
| -rw-r--r-- | linker/linker.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/linker/linker.h b/linker/linker.h index d29484c..0c986cd 100644 --- a/linker/linker.h +++ b/linker/linker.h @@ -31,7 +31,8 @@ #include <unistd.h> #include <sys/types.h> -#include <linux/elf.h> +#include <elf.h> +#include <sys/exec_elf.h> #undef PAGE_MASK #undef PAGE_SIZE @@ -83,6 +84,7 @@ typedef struct soinfo soinfo; #define FLAG_LINKED 0x00000001 #define FLAG_ERROR 0x00000002 #define FLAG_EXE 0x00000004 // The main executable +#define FLAG_LINKER 0x00000010 // The linker itself #define SOINFO_NAME_LEN 128 @@ -140,6 +142,12 @@ struct soinfo unsigned refcount; struct link_map linkmap; + + int constructors_called; + + Elf32_Addr gnu_relro_start; + unsigned gnu_relro_len; + }; @@ -200,6 +208,7 @@ Elf32_Sym *lookup(const char *name, soinfo **found, soinfo *start); soinfo *find_containing_library(const void *addr); Elf32_Sym *find_containing_symbol(const void *addr, soinfo *si); const char *linker_get_error(void); +void call_constructors_recursive(soinfo *si); #ifdef ANDROID_ARM_LINKER typedef long unsigned int *_Unwind_Ptr; |
