diff options
Diffstat (limited to 'trunk/src/arch-cris.c')
-rw-r--r-- | trunk/src/arch-cris.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/trunk/src/arch-cris.c b/trunk/src/arch-cris.c index 43f987a..d70260a 100644 --- a/trunk/src/arch-cris.c +++ b/trunk/src/arch-cris.c @@ -159,7 +159,7 @@ cris_prelink_rela (struct prelink_info *info, GElf_Rela *rela, static int cris_apply_conflict_rela (struct prelink_info *info, GElf_Rela *rela, - char *buf) + char *buf, GElf_Addr dest_addr) { switch (GELF_R_TYPE (rela->r_info)) { @@ -247,13 +247,20 @@ cris_prelink_conflict_rela (DSO *dso, struct prelink_info *info, GElf_Rela *ret; if (GELF_R_TYPE (rela->r_info) == R_CRIS_RELATIVE - || GELF_R_TYPE (rela->r_info) == R_CRIS_NONE) + || GELF_R_TYPE (rela->r_info) == R_CRIS_NONE + || info->dso == dso) /* Fast path: nothing to do. */ return 0; conflict = prelink_conflict (info, GELF_R_SYM (rela->r_info), GELF_R_TYPE (rela->r_info)); if (conflict == NULL) return 0; + else if (conflict->ifunc) + { + error (0, 0, "%s: STT_GNU_IFUNC not handled on CRIS yet", + dso->filename); + return 1; + } value = conflict_lookup_value (conflict); ret = prelink_conflict_add_rela (info); if (ret == NULL) |