diff options
Diffstat (limited to 'elf/dl-reloc.c')
-rw-r--r-- | elf/dl-reloc.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index 54a2acc065..0bf39a8b5e 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -129,3 +129,27 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], } } } + +#include "../stdio-common/_itoa.h" +#define DIGIT(b) _itoa_lower_digits[(b) & 0xf]; + +void +internal_function +_dl_reloc_bad_type (struct link_map *map, uint_fast8_t type, int plt) +{ + extern const char _itoa_lower_digits[]; + if (plt) + { + char msg[] = "unexpected reloc type 0x??"; + msg[sizeof msg - 2] = DIGIT(type >> 8); + msg[sizeof msg - 1] = DIGIT(type); + _dl_signal_error (0, map->l_name, msg); + } + else + { + char msg[] = "unexpected PLT reloc type 0x??"; + msg[sizeof msg - 2] = DIGIT(type >> 8); + msg[sizeof msg - 1] = DIGIT(type); + _dl_signal_error (0, map->l_name, msg); + } +} |