summaryrefslogtreecommitdiffstats
path: root/trunk/src/prelink.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/prelink.h')
-rw-r--r--trunk/src/prelink.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/trunk/src/prelink.h b/trunk/src/prelink.h
index 5de2f0e..61e25c2 100644
--- a/trunk/src/prelink.h
+++ b/trunk/src/prelink.h
@@ -85,6 +85,14 @@
#define R_ARM_TLS_TPOFF32 19
#endif
+#ifndef R_386_IRELATIVE
+#define R_386_IRELATIVE 42
+#endif
+
+#ifndef R_X86_64_IRELATIVE
+#define R_X86_64_IRELATIVE 37
+#endif
+
struct prelink_entry;
struct prelink_info;
struct PLArch;
@@ -179,7 +187,7 @@ struct PLArch
GElf_Rela *rela, GElf_Addr relaaddr);
int (*arch_prelink_conflict) (DSO *dso, struct prelink_info *info);
int (*apply_conflict_rela) (struct prelink_info *info, GElf_Rela *rela,
- char *buf);
+ char *buf, GElf_Addr dest_addr);
int (*apply_rel) (struct prelink_info *info, GElf_Rel *rel, char *buf);
int (*apply_rela) (struct prelink_info *info, GElf_Rela *rela, char *buf);
int (*rel_to_rela) (DSO *dso, GElf_Rel *rel, GElf_Rela *rela);
@@ -413,7 +421,8 @@ struct prelink_conflict
/* Value it has in conflict.ent. */
GElf_Addr conflictval;
int reloc_class;
- int used;
+ unsigned char used;
+ unsigned char ifunc;
};
struct prelink_conflicts
@@ -489,7 +498,7 @@ int execve_close (FILE *f);
int remove_redundant_cxx_conflicts (struct prelink_info *info);
int get_relocated_mem (struct prelink_info *info, DSO *dso, GElf_Addr addr,
- char *buf, GElf_Word size);
+ char *buf, GElf_Word size, GElf_Addr dest_addr);
int layout_libs (void);