#include "elf/i960.h"
#include "elf/ia64.h"
#include "elf/ip2k.h"
+#include "elf/lm32.h"
#include "elf/iq2000.h"
#include "elf/m32c.h"
#include "elf/m32r.h"
case EM_IP2K:
case EM_IP2K_OLD:
case EM_IQ2000:
+ case EM_LATTICEMICO32:
case EM_M32C_OLD:
case EM_M32C:
case EM_M32R:
rtype = elf_xtensa_reloc_type (type);
break;
+ case EM_LATTICEMICO32:
+ rtype = elf_lm32_reloc_type (type);
+ break;
+
case EM_M32C_OLD:
case EM_M32C:
rtype = elf_m32c_reloc_type (type);
printf (" ");
- if (ELF_ST_TYPE (psym->st_info) == STT_IFUNC)
- {
- const char * name;
- unsigned int len;
- unsigned int width = is_32bit_elf ? 8 : 14;
-
- /* Relocations against IFUNC symbols do not use the value of
- the symbol as the address to relocate against. Instead
- they invoke the function named by the symbol and use its
- result as the address for relocation.
-
- To indicate this to the user, do not display the value of
- the symbol in the "Symbols's Value" field. Instead show
- its name followed by () as a hint that the symbol is
- invoked. */
-
- if (strtab == NULL
- || psym->st_name == 0
- || psym->st_name >= strtablen)
- name = "??";
- else
- name = strtab + psym->st_name;
-
- len = print_symbol (width, name);
- printf ("()%-*s", len <= width ? (width + 1) - len : 1, " ");
- }
- else
- {
- print_vma (psym->st_value, LONG_HEX);
+ print_vma (psym->st_value, LONG_HEX);
- printf (is_32bit_elf ? " " : " ");
- }
+ printf (is_32bit_elf ? " " : " ");
if (psym->st_name == 0)
{
case EM_IQ2000: return "Vitesse IQ2000";
case EM_XTENSA_OLD:
case EM_XTENSA: return "Tensilica Xtensa Processor";
+ case EM_LATTICEMICO32: return "Lattice Mico32";
case EM_M32C_OLD:
case EM_M32C: return "Renesas M32c";
case EM_MT: return "Morpho Techologies MT processor";
if (type == STT_HP_STUB)
return "HP_STUB";
}
- else if (elf_header.e_ident[EI_OSABI] == ELFOSABI_LINUX
- || elf_header.e_ident[EI_OSABI] == ELFOSABI_HURD
- /* GNU/Linux is still using the default value 0. */
- || elf_header.e_ident[EI_OSABI] == ELFOSABI_NONE)
- {
- if (type == STT_IFUNC)
- return "IFUNC";
- }
snprintf (buff, sizeof (buff), _("<OS specific>: %d"), type);
}
return reloc_type == 2; /* R_IP2K_32. */
case EM_IQ2000:
return reloc_type == 2; /* R_IQ2000_32. */
+ case EM_LATTICEMICO32:
+ return reloc_type == 3; /* R_LM32_32. */
case EM_M32C_OLD:
case EM_M32C:
return reloc_type == 3; /* R_M32C_32. */