X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=bfd%2Freloc.c;h=279145851682297baea11742cd1fc930f3c8d614;hb=c46cec3a8cfe02fbe0f6c67ba53abc5369c5c659;hp=4e1958c6364a9b5b2fbc5ec646a13f7826e409b6;hpb=6f7be9592d58646e9ff66e125068691f1e830cc0;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/reloc.c b/bfd/reloc.c index 4e1958c636..2791458516 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -1,7 +1,5 @@ /* BFD support for handling relocation entries. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. + Copyright (C) 1990-2017 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -439,6 +437,7 @@ bfd_get_reloc_size (reloc_howto_type *howto) case 3: return 0; case 4: return 8; case 8: return 16; + case -1: return 2; case -2: return 4; default: abort (); } @@ -502,7 +501,7 @@ bfd_check_overflow (enum complain_overflow how, fieldmask = N_ONES (bitsize); signmask = ~fieldmask; addrmask = N_ONES (addrsize) | (fieldmask << rightshift); - a = (relocation & addrmask) >> rightshift;; + a = (relocation & addrmask) >> rightshift; switch (how) { @@ -580,19 +579,13 @@ bfd_perform_relocation (bfd *abfd, { bfd_vma relocation; bfd_reloc_status_type flag = bfd_reloc_ok; - bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd); + bfd_size_type octets; bfd_vma output_base = 0; reloc_howto_type *howto = reloc_entry->howto; asection *reloc_target_output_section; asymbol *symbol; symbol = *(reloc_entry->sym_ptr_ptr); - if (bfd_is_abs_section (symbol->section) - && output_bfd != NULL) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } /* If we are not producing relocatable output, return an error if the symbol is not defined. An undefined weak symbol is @@ -605,7 +598,7 @@ bfd_perform_relocation (bfd *abfd, /* If there is a function supplied to handle this relocation type, call it. It'll return `bfd_reloc_continue' if further processing can be done. */ - if (howto->special_function) + if (howto && howto->special_function) { bfd_reloc_status_type cont; cont = howto->special_function (abfd, reloc_entry, symbol, data, @@ -615,8 +608,23 @@ bfd_perform_relocation (bfd *abfd, return cont; } - /* Is the address of the relocation really within the section? */ - if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)) + if (bfd_is_abs_section (symbol->section) + && output_bfd != NULL) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + /* PR 17512: file: 0f67f69d. */ + if (howto == NULL) + return bfd_reloc_undefined; + + /* Is the address of the relocation really within the section? + Include the size of the reloc in the test for out of range addresses. + PR 17512: file: c146ab8b, 46dff27f, 38e53ebf. */ + octets = reloc_entry->address * bfd_octets_per_byte (abfd); + if (octets + bfd_get_reloc_size (howto) + > bfd_get_section_limit_octets (abfd, input_section)) return bfd_reloc_outofrange; /* Work out which section the relocation is targeted at and the @@ -786,10 +794,6 @@ space consuming. For each target: } } } - else - { - reloc_entry->addend = 0; - } /* FIXME: This overflow checking is incomplete, because the value might have overflowed before we get here. For a correct check we @@ -970,7 +974,7 @@ bfd_install_relocation (bfd *abfd, { bfd_vma relocation; bfd_reloc_status_type flag = bfd_reloc_ok; - bfd_size_type octets = reloc_entry->address * bfd_octets_per_byte (abfd); + bfd_size_type octets; bfd_vma output_base = 0; reloc_howto_type *howto = reloc_entry->howto; asection *reloc_target_output_section; @@ -978,16 +982,11 @@ bfd_install_relocation (bfd *abfd, bfd_byte *data; symbol = *(reloc_entry->sym_ptr_ptr); - if (bfd_is_abs_section (symbol->section)) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } /* If there is a function supplied to handle this relocation type, call it. It'll return `bfd_reloc_continue' if further processing can be done. */ - if (howto->special_function) + if (howto && howto->special_function) { bfd_reloc_status_type cont; @@ -1002,8 +1001,19 @@ bfd_install_relocation (bfd *abfd, return cont; } + if (bfd_is_abs_section (symbol->section)) + { + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; + } + + /* No need to check for howto != NULL if !bfd_is_abs_section as + it will have been checked in `bfd_perform_relocation already'. */ + /* Is the address of the relocation really within the section? */ - if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)) + octets = reloc_entry->address * bfd_octets_per_byte (abfd); + if (octets + bfd_get_reloc_size (howto) + > bfd_get_section_limit_octets (abfd, input_section)) return bfd_reloc_outofrange; /* Work out which section the relocation is targeted at and the @@ -1338,9 +1348,11 @@ _bfd_final_link_relocate (reloc_howto_type *howto, bfd_vma addend) { bfd_vma relocation; + bfd_size_type octets = address * bfd_octets_per_byte (input_bfd); /* Sanity check the address. */ - if (address > bfd_get_section_limit (input_bfd, input_section)) + if (octets + bfd_get_reloc_size (howto) + > bfd_get_section_limit_octets (input_bfd, input_section)) return bfd_reloc_outofrange; /* This function assumes that we are dealing with a basic relocation @@ -1368,7 +1380,8 @@ _bfd_final_link_relocate (reloc_howto_type *howto, } return _bfd_relocate_contents (howto, input_bfd, relocation, - contents + address); + contents + + address * bfd_octets_per_byte (input_bfd)); } /* Relocate a given location using a given value and howto. */ @@ -1395,8 +1408,9 @@ _bfd_relocate_contents (reloc_howto_type *howto, switch (size) { default: - case 0: abort (); + case 0: + return bfd_reloc_ok; case 1: x = bfd_get_8 (input_bfd, location); break; @@ -1563,8 +1577,9 @@ _bfd_clear_contents (reloc_howto_type *howto, switch (size) { default: - case 0: abort (); + case 0: + return; case 1: x = bfd_get_8 (input_bfd, location); break; @@ -1735,6 +1750,13 @@ ENUMX ENUMDOC For ELF. +ENUM + BFD_RELOC_SIZE32 +ENUMX + BFD_RELOC_SIZE64 +ENUMDOC + Size relocations. + ENUM BFD_RELOC_68K_GLOB_DAT ENUMX @@ -1942,6 +1964,14 @@ ENUMX BFD_RELOC_SPARC_L44 ENUMX BFD_RELOC_SPARC_REGISTER +ENUMX + BFD_RELOC_SPARC_H34 +ENUMX + BFD_RELOC_SPARC_SIZE32 +ENUMX + BFD_RELOC_SPARC_SIZE64 +ENUMX + BFD_RELOC_SPARC_WDISP10 ENUMDOC SPARC64 relocations @@ -2279,6 +2309,22 @@ ENUMX ENUMDOC microMIPS PC-relative relocations. +ENUM + BFD_RELOC_MIPS16_16_PCREL_S1 +ENUMDOC + MIPS16 PC-relative relocation. + +ENUM + BFD_RELOC_MIPS_21_PCREL_S2 +ENUMX + BFD_RELOC_MIPS_26_PCREL_S2 +ENUMX + BFD_RELOC_MIPS_18_PCREL_S3 +ENUMX + BFD_RELOC_MIPS_19_PCREL_S2 +ENUMDOC + MIPS PC-relative relocations. + ENUM BFD_RELOC_MICROMIPS_GPREL16 ENUMX @@ -2400,6 +2446,8 @@ ENUMX BFD_RELOC_MIPS_TLS_TPREL_LO16 ENUMX BFD_RELOC_MICROMIPS_TLS_TPREL_LO16 +ENUMX + BFD_RELOC_MIPS_EH ENUMDOC MIPS ELF relocations. COMMENT @@ -2418,6 +2466,18 @@ ENUMDOC Moxie ELF relocations. COMMENT +ENUM + BFD_RELOC_FT32_10 +ENUMX + BFD_RELOC_FT32_20 +ENUMX + BFD_RELOC_FT32_17 +ENUMX + BFD_RELOC_FT32_18 +ENUMDOC + FT32 ELF relocations. +COMMENT + ENUM BFD_RELOC_FRV_LABEL16 ENUMX @@ -2547,6 +2607,36 @@ ENUMDOC The addend of this reloc is an alignment power that must be honoured at the offset's location, regardless of linker relaxation. +ENUM + BFD_RELOC_MN10300_TLS_GD +ENUMX + BFD_RELOC_MN10300_TLS_LD +ENUMX + BFD_RELOC_MN10300_TLS_LDO +ENUMX + BFD_RELOC_MN10300_TLS_GOTIE +ENUMX + BFD_RELOC_MN10300_TLS_IE +ENUMX + BFD_RELOC_MN10300_TLS_LE +ENUMX + BFD_RELOC_MN10300_TLS_DTPMOD +ENUMX + BFD_RELOC_MN10300_TLS_DTPOFF +ENUMX + BFD_RELOC_MN10300_TLS_TPOFF +ENUMDOC + Various TLS-related relocations. +ENUM + BFD_RELOC_MN10300_32_PCREL +ENUMDOC + This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the + instruction. +ENUM + BFD_RELOC_MN10300_16_PCREL +ENUMDOC + This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the + instruction. COMMENT ENUM @@ -2597,6 +2687,8 @@ ENUMX BFD_RELOC_386_TLS_DESC ENUMX BFD_RELOC_386_IRELATIVE +ENUMX + BFD_RELOC_386_GOT32X ENUMDOC i386/elf relocations @@ -2654,6 +2746,14 @@ ENUMX BFD_RELOC_X86_64_TLSDESC ENUMX BFD_RELOC_X86_64_IRELATIVE +ENUMX + BFD_RELOC_X86_64_PC32_BND +ENUMX + BFD_RELOC_X86_64_PLT32_BND +ENUMX + BFD_RELOC_X86_64_GOTPCRELX +ENUMX + BFD_RELOC_X86_64_REX_GOTPCRELX ENUMDOC x86-64/elf relocations @@ -2766,6 +2866,44 @@ ENUMX BFD_RELOC_PPC_EMB_BIT_FLD ENUMX BFD_RELOC_PPC_EMB_RELSDA +ENUMX + BFD_RELOC_PPC_VLE_REL8 +ENUMX + BFD_RELOC_PPC_VLE_REL15 +ENUMX + BFD_RELOC_PPC_VLE_REL24 +ENUMX + BFD_RELOC_PPC_VLE_LO16A +ENUMX + BFD_RELOC_PPC_VLE_LO16D +ENUMX + BFD_RELOC_PPC_VLE_HI16A +ENUMX + BFD_RELOC_PPC_VLE_HI16D +ENUMX + BFD_RELOC_PPC_VLE_HA16A +ENUMX + BFD_RELOC_PPC_VLE_HA16D +ENUMX + BFD_RELOC_PPC_VLE_SDA21 +ENUMX + BFD_RELOC_PPC_VLE_SDA21_LO +ENUMX + BFD_RELOC_PPC_VLE_SDAREL_LO16A +ENUMX + BFD_RELOC_PPC_VLE_SDAREL_LO16D +ENUMX + BFD_RELOC_PPC_VLE_SDAREL_HI16A +ENUMX + BFD_RELOC_PPC_VLE_SDAREL_HI16D +ENUMX + BFD_RELOC_PPC_VLE_SDAREL_HA16A +ENUMX + BFD_RELOC_PPC_VLE_SDAREL_HA16D +ENUMX + BFD_RELOC_PPC_16DX_HA +ENUMX + BFD_RELOC_PPC_REL16DX_HA ENUMX BFD_RELOC_PPC64_HIGHER ENUMX @@ -2812,6 +2950,14 @@ ENUMX BFD_RELOC_PPC64_PLTGOT16_DS ENUMX BFD_RELOC_PPC64_PLTGOT16_LO_DS +ENUMX + BFD_RELOC_PPC64_ADDR16_HIGH +ENUMX + BFD_RELOC_PPC64_ADDR16_HIGHA +ENUMX + BFD_RELOC_PPC64_ADDR64_LOCAL +ENUMX + BFD_RELOC_PPC64_ENTRY ENUMDOC Power(rs6000) and PowerPC relocations. @@ -2899,6 +3045,14 @@ ENUMX BFD_RELOC_PPC64_DTPREL16_HIGHEST ENUMX BFD_RELOC_PPC64_DTPREL16_HIGHESTA +ENUMX + BFD_RELOC_PPC64_TPREL16_HIGH +ENUMX + BFD_RELOC_PPC64_TPREL16_HIGHA +ENUMX + BFD_RELOC_PPC64_DTPREL16_HIGH +ENUMX + BFD_RELOC_PPC64_DTPREL16_HIGHA ENUMDOC PowerPC and PowerPC64 thread-local storage relocations. @@ -3130,6 +3284,17 @@ ENUM ENUMDOC ARM support for STT_GNU_IFUNC. +ENUM + BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC +ENUMX + BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC +ENUMX + BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC +ENUMX + BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC +ENUMDOC + Thumb1 relocations to support execute-only code. + ENUM BFD_RELOC_ARM_IMMEDIATE ENUMX @@ -3384,18 +3549,143 @@ ENUMDOC Renesas / SuperH SH relocs. Not all of these appear in object files. ENUM - BFD_RELOC_ARC_B22_PCREL -ENUMDOC - ARC Cores relocs. - ARC 22 bit pc-relative branch. The lowest two bits must be zero and are - not stored in the instruction. The high 20 bits are installed in bits 26 - through 7 of the instruction. -ENUM - BFD_RELOC_ARC_B26 + BFD_RELOC_ARC_NONE +ENUMX + BFD_RELOC_ARC_8 +ENUMX + BFD_RELOC_ARC_16 +ENUMX + BFD_RELOC_ARC_24 +ENUMX + BFD_RELOC_ARC_32 +ENUMX + BFD_RELOC_ARC_N8 +ENUMX + BFD_RELOC_ARC_N16 +ENUMX + BFD_RELOC_ARC_N24 +ENUMX + BFD_RELOC_ARC_N32 +ENUMX + BFD_RELOC_ARC_SDA +ENUMX + BFD_RELOC_ARC_SECTOFF +ENUMX + BFD_RELOC_ARC_S21H_PCREL +ENUMX + BFD_RELOC_ARC_S21W_PCREL +ENUMX + BFD_RELOC_ARC_S25H_PCREL +ENUMX + BFD_RELOC_ARC_S25W_PCREL +ENUMX + BFD_RELOC_ARC_SDA32 +ENUMX + BFD_RELOC_ARC_SDA_LDST +ENUMX + BFD_RELOC_ARC_SDA_LDST1 +ENUMX + BFD_RELOC_ARC_SDA_LDST2 +ENUMX + BFD_RELOC_ARC_SDA16_LD +ENUMX + BFD_RELOC_ARC_SDA16_LD1 +ENUMX + BFD_RELOC_ARC_SDA16_LD2 +ENUMX + BFD_RELOC_ARC_S13_PCREL +ENUMX + BFD_RELOC_ARC_W +ENUMX + BFD_RELOC_ARC_32_ME +ENUMX + BFD_RELOC_ARC_32_ME_S +ENUMX + BFD_RELOC_ARC_N32_ME +ENUMX + BFD_RELOC_ARC_SECTOFF_ME +ENUMX + BFD_RELOC_ARC_SDA32_ME +ENUMX + BFD_RELOC_ARC_W_ME +ENUMX + BFD_RELOC_AC_SECTOFF_U8 +ENUMX + BFD_RELOC_AC_SECTOFF_U8_1 +ENUMX + BFD_RELOC_AC_SECTOFF_U8_2 +ENUMX + BFD_RELOC_AC_SECTOFF_S9 +ENUMX + BFD_RELOC_AC_SECTOFF_S9_1 +ENUMX + BFD_RELOC_AC_SECTOFF_S9_2 +ENUMX + BFD_RELOC_ARC_SECTOFF_ME_1 +ENUMX + BFD_RELOC_ARC_SECTOFF_ME_2 +ENUMX + BFD_RELOC_ARC_SECTOFF_1 +ENUMX + BFD_RELOC_ARC_SECTOFF_2 +ENUMX + BFD_RELOC_ARC_SDA_12 +ENUMX + BFD_RELOC_ARC_SDA16_ST2 +ENUMX + BFD_RELOC_ARC_32_PCREL +ENUMX + BFD_RELOC_ARC_PC32 +ENUMX + BFD_RELOC_ARC_GOT32 +ENUMX + BFD_RELOC_ARC_GOTPC32 +ENUMX + BFD_RELOC_ARC_PLT32 +ENUMX + BFD_RELOC_ARC_COPY +ENUMX + BFD_RELOC_ARC_GLOB_DAT +ENUMX + BFD_RELOC_ARC_JMP_SLOT +ENUMX + BFD_RELOC_ARC_RELATIVE +ENUMX + BFD_RELOC_ARC_GOTOFF +ENUMX + BFD_RELOC_ARC_GOTPC +ENUMX + BFD_RELOC_ARC_S21W_PCREL_PLT +ENUMX + BFD_RELOC_ARC_S25H_PCREL_PLT +ENUMX + BFD_RELOC_ARC_TLS_DTPMOD +ENUMX + BFD_RELOC_ARC_TLS_TPOFF +ENUMX + BFD_RELOC_ARC_TLS_GD_GOT +ENUMX + BFD_RELOC_ARC_TLS_GD_LD +ENUMX + BFD_RELOC_ARC_TLS_GD_CALL +ENUMX + BFD_RELOC_ARC_TLS_IE_GOT +ENUMX + BFD_RELOC_ARC_TLS_DTPOFF +ENUMX + BFD_RELOC_ARC_TLS_DTPOFF_S9 +ENUMX + BFD_RELOC_ARC_TLS_LE_S9 +ENUMX + BFD_RELOC_ARC_TLS_LE_32 +ENUMX + BFD_RELOC_ARC_S25W_PCREL_PLT +ENUMX + BFD_RELOC_ARC_S21H_PCREL_PLT +ENUMX + BFD_RELOC_ARC_NPS_CMEM16 ENUMDOC - ARC 26 bit absolute branch. The lowest two bits must be zero and are not - stored in the instruction. The high 24 bits are installed in bits 23 - through 0. + ARC relocs. ENUM BFD_RELOC_BFIN_16_IMM @@ -3744,193 +4034,499 @@ ENUMDOC ENUM - BFD_RELOC_V850_9_PCREL + BFD_RELOC_NDS32_20 ENUMDOC - This is a 9-bit reloc + NDS32 relocs. + This is a 20 bit absolute address. ENUM - BFD_RELOC_V850_22_PCREL + BFD_RELOC_NDS32_9_PCREL ENUMDOC - This is a 22-bit reloc - + This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. ENUM - BFD_RELOC_V850_SDA_16_16_OFFSET + BFD_RELOC_NDS32_WORD_9_PCREL ENUMDOC - This is a 16 bit offset from the short data area pointer. + This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0. ENUM - BFD_RELOC_V850_SDA_15_16_OFFSET + BFD_RELOC_NDS32_15_PCREL ENUMDOC - This is a 16 bit offset (of which only 15 bits are used) from the - short data area pointer. + This is an 15-bit reloc with the right 1 bit assumed to be 0. ENUM - BFD_RELOC_V850_ZDA_16_16_OFFSET + BFD_RELOC_NDS32_17_PCREL ENUMDOC - This is a 16 bit offset from the zero data area pointer. + This is an 17-bit reloc with the right 1 bit assumed to be 0. ENUM - BFD_RELOC_V850_ZDA_15_16_OFFSET + BFD_RELOC_NDS32_25_PCREL ENUMDOC - This is a 16 bit offset (of which only 15 bits are used) from the - zero data area pointer. + This is a 25-bit reloc with the right 1 bit assumed to be 0. ENUM - BFD_RELOC_V850_TDA_6_8_OFFSET + BFD_RELOC_NDS32_HI20 ENUMDOC - This is an 8 bit offset (of which only 6 bits are used) from the - tiny data area pointer. + This is a 20-bit reloc containing the high 20 bits of an address + used with the lower 12 bits ENUM - BFD_RELOC_V850_TDA_7_8_OFFSET + BFD_RELOC_NDS32_LO12S3 ENUMDOC - This is an 8bit offset (of which only 7 bits are used) from the tiny - data area pointer. + This is a 12-bit reloc containing the lower 12 bits of an address + then shift right by 3. This is used with ldi,sdi... ENUM - BFD_RELOC_V850_TDA_7_7_OFFSET + BFD_RELOC_NDS32_LO12S2 ENUMDOC - This is a 7 bit offset from the tiny data area pointer. + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 2. This is used with lwi,swi... ENUM - BFD_RELOC_V850_TDA_16_16_OFFSET + BFD_RELOC_NDS32_LO12S1 ENUMDOC - This is a 16 bit offset from the tiny data area pointer. -COMMENT + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 1. This is used with lhi,shi... ENUM - BFD_RELOC_V850_TDA_4_5_OFFSET + BFD_RELOC_NDS32_LO12S0 ENUMDOC - This is a 5 bit offset (of which only 4 bits are used) from the tiny - data area pointer. + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 0. This is used with lbisbi... ENUM - BFD_RELOC_V850_TDA_4_4_OFFSET + BFD_RELOC_NDS32_LO12S0_ORI ENUMDOC - This is a 4 bit offset from the tiny data area pointer. + This is a 12-bit reloc containing the lower 12 bits of an address + then shift left by 0. This is only used with branch relaxations ENUM - BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET + BFD_RELOC_NDS32_SDA15S3 ENUMDOC - This is a 16 bit offset from the short data area pointer, with the - bits placed non-contiguously in the instruction. + This is a 15-bit reloc containing the small data area 18-bit signed offset + and shift left by 3 for use in ldi, sdi... ENUM - BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET + BFD_RELOC_NDS32_SDA15S2 ENUMDOC - This is a 16 bit offset from the zero data area pointer, with the - bits placed non-contiguously in the instruction. + This is a 15-bit reloc containing the small data area 17-bit signed offset + and shift left by 2 for use in lwi, swi... ENUM - BFD_RELOC_V850_CALLT_6_7_OFFSET + BFD_RELOC_NDS32_SDA15S1 ENUMDOC - This is a 6 bit offset from the call table base pointer. + This is a 15-bit reloc containing the small data area 16-bit signed offset + and shift left by 1 for use in lhi, shi... ENUM - BFD_RELOC_V850_CALLT_16_16_OFFSET + BFD_RELOC_NDS32_SDA15S0 ENUMDOC - This is a 16 bit offset from the call table base pointer. + This is a 15-bit reloc containing the small data area 15-bit signed offset + and shift left by 0 for use in lbi, sbi... ENUM - BFD_RELOC_V850_LONGCALL + BFD_RELOC_NDS32_SDA16S3 ENUMDOC - Used for relaxing indirect function calls. + This is a 16-bit reloc containing the small data area 16-bit signed offset + and shift left by 3 ENUM - BFD_RELOC_V850_LONGJUMP + BFD_RELOC_NDS32_SDA17S2 ENUMDOC - Used for relaxing indirect jumps. + This is a 17-bit reloc containing the small data area 17-bit signed offset + and shift left by 2 for use in lwi.gp, swi.gp... ENUM - BFD_RELOC_V850_ALIGN + BFD_RELOC_NDS32_SDA18S1 ENUMDOC - Used to maintain alignment whilst relaxing. + This is a 18-bit reloc containing the small data area 18-bit signed offset + and shift left by 1 for use in lhi.gp, shi.gp... ENUM - BFD_RELOC_V850_LO16_SPLIT_OFFSET + BFD_RELOC_NDS32_SDA19S0 ENUMDOC - This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu - instructions. + This is a 19-bit reloc containing the small data area 19-bit signed offset + and shift left by 0 for use in lbi.gp, sbi.gp... ENUM - BFD_RELOC_V850_16_PCREL -ENUMDOC - This is a 16-bit reloc. -ENUM - BFD_RELOC_V850_17_PCREL + BFD_RELOC_NDS32_GOT20 +ENUMX + BFD_RELOC_NDS32_9_PLTREL +ENUMX + BFD_RELOC_NDS32_25_PLTREL +ENUMX + BFD_RELOC_NDS32_COPY +ENUMX + BFD_RELOC_NDS32_GLOB_DAT +ENUMX + BFD_RELOC_NDS32_JMP_SLOT +ENUMX + BFD_RELOC_NDS32_RELATIVE +ENUMX + BFD_RELOC_NDS32_GOTOFF +ENUMX + BFD_RELOC_NDS32_GOTOFF_HI20 +ENUMX + BFD_RELOC_NDS32_GOTOFF_LO12 +ENUMX + BFD_RELOC_NDS32_GOTPC20 +ENUMX + BFD_RELOC_NDS32_GOT_HI20 +ENUMX + BFD_RELOC_NDS32_GOT_LO12 +ENUMX + BFD_RELOC_NDS32_GOTPC_HI20 +ENUMX + BFD_RELOC_NDS32_GOTPC_LO12 +ENUMDOC + for PIC +ENUM + BFD_RELOC_NDS32_INSN16 +ENUMX + BFD_RELOC_NDS32_LABEL +ENUMX + BFD_RELOC_NDS32_LONGCALL1 +ENUMX + BFD_RELOC_NDS32_LONGCALL2 +ENUMX + BFD_RELOC_NDS32_LONGCALL3 +ENUMX + BFD_RELOC_NDS32_LONGJUMP1 +ENUMX + BFD_RELOC_NDS32_LONGJUMP2 +ENUMX + BFD_RELOC_NDS32_LONGJUMP3 +ENUMX + BFD_RELOC_NDS32_LOADSTORE +ENUMX + BFD_RELOC_NDS32_9_FIXED +ENUMX + BFD_RELOC_NDS32_15_FIXED +ENUMX + BFD_RELOC_NDS32_17_FIXED +ENUMX + BFD_RELOC_NDS32_25_FIXED +ENUMX + BFD_RELOC_NDS32_LONGCALL4 +ENUMX + BFD_RELOC_NDS32_LONGCALL5 +ENUMX + BFD_RELOC_NDS32_LONGCALL6 +ENUMX + BFD_RELOC_NDS32_LONGJUMP4 +ENUMX + BFD_RELOC_NDS32_LONGJUMP5 +ENUMX + BFD_RELOC_NDS32_LONGJUMP6 +ENUMX + BFD_RELOC_NDS32_LONGJUMP7 +ENUMDOC + for relax +ENUM + BFD_RELOC_NDS32_PLTREL_HI20 +ENUMX + BFD_RELOC_NDS32_PLTREL_LO12 +ENUMX + BFD_RELOC_NDS32_PLT_GOTREL_HI20 +ENUMX + BFD_RELOC_NDS32_PLT_GOTREL_LO12 +ENUMDOC + for PIC +ENUM + BFD_RELOC_NDS32_SDA12S2_DP +ENUMX + BFD_RELOC_NDS32_SDA12S2_SP +ENUMX + BFD_RELOC_NDS32_LO12S2_DP +ENUMX + BFD_RELOC_NDS32_LO12S2_SP +ENUMDOC + for floating point +ENUM + BFD_RELOC_NDS32_DWARF2_OP1 +ENUMX + BFD_RELOC_NDS32_DWARF2_OP2 +ENUMX + BFD_RELOC_NDS32_DWARF2_LEB +ENUMDOC + for dwarf2 debug_line. +ENUM + BFD_RELOC_NDS32_UPDATE_TA +ENUMDOC + for eliminate 16-bit instructions +ENUM + BFD_RELOC_NDS32_PLT_GOTREL_LO20 +ENUMX + BFD_RELOC_NDS32_PLT_GOTREL_LO15 +ENUMX + BFD_RELOC_NDS32_PLT_GOTREL_LO19 +ENUMX + BFD_RELOC_NDS32_GOT_LO15 +ENUMX + BFD_RELOC_NDS32_GOT_LO19 +ENUMX + BFD_RELOC_NDS32_GOTOFF_LO15 +ENUMX + BFD_RELOC_NDS32_GOTOFF_LO19 +ENUMX + BFD_RELOC_NDS32_GOT15S2 +ENUMX + BFD_RELOC_NDS32_GOT17S2 +ENUMDOC + for PIC object relaxation +ENUM + BFD_RELOC_NDS32_5 +ENUMDOC + NDS32 relocs. + This is a 5 bit absolute address. +ENUM + BFD_RELOC_NDS32_10_UPCREL +ENUMDOC + This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0. +ENUM + BFD_RELOC_NDS32_SDA_FP7U2_RELA +ENUMDOC + If fp were omitted, fp can used as another gp. +ENUM + BFD_RELOC_NDS32_RELAX_ENTRY +ENUMX + BFD_RELOC_NDS32_GOT_SUFF +ENUMX + BFD_RELOC_NDS32_GOTOFF_SUFF +ENUMX + BFD_RELOC_NDS32_PLT_GOT_SUFF +ENUMX + BFD_RELOC_NDS32_MULCALL_SUFF +ENUMX + BFD_RELOC_NDS32_PTR +ENUMX + BFD_RELOC_NDS32_PTR_COUNT +ENUMX + BFD_RELOC_NDS32_PTR_RESOLVED +ENUMX + BFD_RELOC_NDS32_PLTBLOCK +ENUMX + BFD_RELOC_NDS32_RELAX_REGION_BEGIN +ENUMX + BFD_RELOC_NDS32_RELAX_REGION_END +ENUMX + BFD_RELOC_NDS32_MINUEND +ENUMX + BFD_RELOC_NDS32_SUBTRAHEND +ENUMX + BFD_RELOC_NDS32_DIFF8 +ENUMX + BFD_RELOC_NDS32_DIFF16 +ENUMX + BFD_RELOC_NDS32_DIFF32 +ENUMX + BFD_RELOC_NDS32_DIFF_ULEB128 +ENUMX + BFD_RELOC_NDS32_EMPTY +ENUMDOC + relaxation relative relocation types +ENUM + BFD_RELOC_NDS32_25_ABS +ENUMDOC + This is a 25 bit absolute address. +ENUM + BFD_RELOC_NDS32_DATA +ENUMX + BFD_RELOC_NDS32_TRAN +ENUMX + BFD_RELOC_NDS32_17IFC_PCREL +ENUMX + BFD_RELOC_NDS32_10IFCU_PCREL +ENUMDOC + For ex9 and ifc using. +ENUM + BFD_RELOC_NDS32_TPOFF +ENUMX + BFD_RELOC_NDS32_TLS_LE_HI20 +ENUMX + BFD_RELOC_NDS32_TLS_LE_LO12 +ENUMX + BFD_RELOC_NDS32_TLS_LE_ADD +ENUMX + BFD_RELOC_NDS32_TLS_LE_LS +ENUMX + BFD_RELOC_NDS32_GOTTPOFF +ENUMX + BFD_RELOC_NDS32_TLS_IE_HI20 +ENUMX + BFD_RELOC_NDS32_TLS_IE_LO12S2 +ENUMX + BFD_RELOC_NDS32_TLS_TPOFF +ENUMX + BFD_RELOC_NDS32_TLS_LE_20 +ENUMX + BFD_RELOC_NDS32_TLS_LE_15S0 +ENUMX + BFD_RELOC_NDS32_TLS_LE_15S1 +ENUMX + BFD_RELOC_NDS32_TLS_LE_15S2 +ENUMDOC + For TLS. + + +ENUM + BFD_RELOC_V850_9_PCREL +ENUMDOC + This is a 9-bit reloc +ENUM + BFD_RELOC_V850_22_PCREL +ENUMDOC + This is a 22-bit reloc + +ENUM + BFD_RELOC_V850_SDA_16_16_OFFSET +ENUMDOC + This is a 16 bit offset from the short data area pointer. +ENUM + BFD_RELOC_V850_SDA_15_16_OFFSET +ENUMDOC + This is a 16 bit offset (of which only 15 bits are used) from the + short data area pointer. +ENUM + BFD_RELOC_V850_ZDA_16_16_OFFSET +ENUMDOC + This is a 16 bit offset from the zero data area pointer. +ENUM + BFD_RELOC_V850_ZDA_15_16_OFFSET +ENUMDOC + This is a 16 bit offset (of which only 15 bits are used) from the + zero data area pointer. +ENUM + BFD_RELOC_V850_TDA_6_8_OFFSET +ENUMDOC + This is an 8 bit offset (of which only 6 bits are used) from the + tiny data area pointer. +ENUM + BFD_RELOC_V850_TDA_7_8_OFFSET +ENUMDOC + This is an 8bit offset (of which only 7 bits are used) from the tiny + data area pointer. +ENUM + BFD_RELOC_V850_TDA_7_7_OFFSET +ENUMDOC + This is a 7 bit offset from the tiny data area pointer. +ENUM + BFD_RELOC_V850_TDA_16_16_OFFSET +ENUMDOC + This is a 16 bit offset from the tiny data area pointer. +COMMENT +ENUM + BFD_RELOC_V850_TDA_4_5_OFFSET +ENUMDOC + This is a 5 bit offset (of which only 4 bits are used) from the tiny + data area pointer. +ENUM + BFD_RELOC_V850_TDA_4_4_OFFSET +ENUMDOC + This is a 4 bit offset from the tiny data area pointer. +ENUM + BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET +ENUMDOC + This is a 16 bit offset from the short data area pointer, with the + bits placed non-contiguously in the instruction. +ENUM + BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET +ENUMDOC + This is a 16 bit offset from the zero data area pointer, with the + bits placed non-contiguously in the instruction. +ENUM + BFD_RELOC_V850_CALLT_6_7_OFFSET +ENUMDOC + This is a 6 bit offset from the call table base pointer. +ENUM + BFD_RELOC_V850_CALLT_16_16_OFFSET +ENUMDOC + This is a 16 bit offset from the call table base pointer. +ENUM + BFD_RELOC_V850_LONGCALL +ENUMDOC + Used for relaxing indirect function calls. +ENUM + BFD_RELOC_V850_LONGJUMP +ENUMDOC + Used for relaxing indirect jumps. +ENUM + BFD_RELOC_V850_ALIGN +ENUMDOC + Used to maintain alignment whilst relaxing. +ENUM + BFD_RELOC_V850_LO16_SPLIT_OFFSET +ENUMDOC + This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu + instructions. +ENUM + BFD_RELOC_V850_16_PCREL +ENUMDOC + This is a 16-bit reloc. +ENUM + BFD_RELOC_V850_17_PCREL ENUMDOC This is a 17-bit reloc. -ENUM +ENUM BFD_RELOC_V850_23 ENUMDOC This is a 23-bit reloc. -ENUM +ENUM BFD_RELOC_V850_32_PCREL ENUMDOC This is a 32-bit reloc. -ENUM +ENUM BFD_RELOC_V850_32_ABS ENUMDOC This is a 32-bit reloc. -ENUM +ENUM BFD_RELOC_V850_16_SPLIT_OFFSET ENUMDOC This is a 16-bit reloc. -ENUM +ENUM BFD_RELOC_V850_16_S1 ENUMDOC This is a 16-bit reloc. -ENUM +ENUM BFD_RELOC_V850_LO16_S1 ENUMDOC Low 16 bits. 16 bit shifted by 1. -ENUM +ENUM BFD_RELOC_V850_CALLT_15_16_OFFSET ENUMDOC This is a 16 bit offset from the call table base pointer. -ENUM +ENUM BFD_RELOC_V850_32_GOTPCREL ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_16_GOT ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_32_GOT ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_22_PLT_PCREL ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_32_PLT_PCREL ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_COPY ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_GLOB_DAT ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_JMP_SLOT ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_RELATIVE ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_16_GOTOFF ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_32_GOTOFF ENUMDOC DSO relocations. -ENUM +ENUM BFD_RELOC_V850_CODE ENUMDOC start code. -ENUM +ENUM BFD_RELOC_V850_DATA ENUMDOC start data in text. -ENUM - BFD_RELOC_MN10300_32_PCREL -ENUMDOC - This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the - instruction. -ENUM - BFD_RELOC_MN10300_16_PCREL -ENUMDOC - This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the - instruction. ENUM BFD_RELOC_TIC30_LDP @@ -4135,54 +4731,133 @@ ENUMDOC COMMENT ENUM - BFD_RELOC_MMIX_GETA + BFD_RELOC_METAG_HIADDR16 ENUMX - BFD_RELOC_MMIX_GETA_1 + BFD_RELOC_METAG_LOADDR16 ENUMX - BFD_RELOC_MMIX_GETA_2 + BFD_RELOC_METAG_RELBRANCH ENUMX - BFD_RELOC_MMIX_GETA_3 -ENUMDOC - These are relocations for the GETA instruction. -ENUM - BFD_RELOC_MMIX_CBRANCH + BFD_RELOC_METAG_GETSETOFF ENUMX - BFD_RELOC_MMIX_CBRANCH_J + BFD_RELOC_METAG_HIOG ENUMX - BFD_RELOC_MMIX_CBRANCH_1 + BFD_RELOC_METAG_LOOG ENUMX - BFD_RELOC_MMIX_CBRANCH_2 + BFD_RELOC_METAG_REL8 ENUMX - BFD_RELOC_MMIX_CBRANCH_3 -ENUMDOC - These are relocations for a conditional branch instruction. -ENUM - BFD_RELOC_MMIX_PUSHJ + BFD_RELOC_METAG_REL16 ENUMX - BFD_RELOC_MMIX_PUSHJ_1 + BFD_RELOC_METAG_HI16_GOTOFF ENUMX - BFD_RELOC_MMIX_PUSHJ_2 + BFD_RELOC_METAG_LO16_GOTOFF ENUMX - BFD_RELOC_MMIX_PUSHJ_3 + BFD_RELOC_METAG_GETSET_GOTOFF ENUMX - BFD_RELOC_MMIX_PUSHJ_STUBBABLE -ENUMDOC - These are relocations for the PUSHJ instruction. -ENUM - BFD_RELOC_MMIX_JMP + BFD_RELOC_METAG_GETSET_GOT ENUMX - BFD_RELOC_MMIX_JMP_1 + BFD_RELOC_METAG_HI16_GOTPC ENUMX - BFD_RELOC_MMIX_JMP_2 + BFD_RELOC_METAG_LO16_GOTPC ENUMX - BFD_RELOC_MMIX_JMP_3 -ENUMDOC - These are relocations for the JMP instruction. -ENUM - BFD_RELOC_MMIX_ADDR19 -ENUMDOC - This is a relocation for a relative address as in a GETA instruction or - a branch. + BFD_RELOC_METAG_HI16_PLT +ENUMX + BFD_RELOC_METAG_LO16_PLT +ENUMX + BFD_RELOC_METAG_RELBRANCH_PLT +ENUMX + BFD_RELOC_METAG_GOTOFF +ENUMX + BFD_RELOC_METAG_PLT +ENUMX + BFD_RELOC_METAG_COPY +ENUMX + BFD_RELOC_METAG_JMP_SLOT +ENUMX + BFD_RELOC_METAG_RELATIVE +ENUMX + BFD_RELOC_METAG_GLOB_DAT +ENUMX + BFD_RELOC_METAG_TLS_GD +ENUMX + BFD_RELOC_METAG_TLS_LDM +ENUMX + BFD_RELOC_METAG_TLS_LDO_HI16 +ENUMX + BFD_RELOC_METAG_TLS_LDO_LO16 +ENUMX + BFD_RELOC_METAG_TLS_LDO +ENUMX + BFD_RELOC_METAG_TLS_IE +ENUMX + BFD_RELOC_METAG_TLS_IENONPIC +ENUMX + BFD_RELOC_METAG_TLS_IENONPIC_HI16 +ENUMX + BFD_RELOC_METAG_TLS_IENONPIC_LO16 +ENUMX + BFD_RELOC_METAG_TLS_TPOFF +ENUMX + BFD_RELOC_METAG_TLS_DTPMOD +ENUMX + BFD_RELOC_METAG_TLS_DTPOFF +ENUMX + BFD_RELOC_METAG_TLS_LE +ENUMX + BFD_RELOC_METAG_TLS_LE_HI16 +ENUMX + BFD_RELOC_METAG_TLS_LE_LO16 +ENUMDOC + Imagination Technologies Meta relocations. + +ENUM + BFD_RELOC_MMIX_GETA +ENUMX + BFD_RELOC_MMIX_GETA_1 +ENUMX + BFD_RELOC_MMIX_GETA_2 +ENUMX + BFD_RELOC_MMIX_GETA_3 +ENUMDOC + These are relocations for the GETA instruction. +ENUM + BFD_RELOC_MMIX_CBRANCH +ENUMX + BFD_RELOC_MMIX_CBRANCH_J +ENUMX + BFD_RELOC_MMIX_CBRANCH_1 +ENUMX + BFD_RELOC_MMIX_CBRANCH_2 +ENUMX + BFD_RELOC_MMIX_CBRANCH_3 +ENUMDOC + These are relocations for a conditional branch instruction. +ENUM + BFD_RELOC_MMIX_PUSHJ +ENUMX + BFD_RELOC_MMIX_PUSHJ_1 +ENUMX + BFD_RELOC_MMIX_PUSHJ_2 +ENUMX + BFD_RELOC_MMIX_PUSHJ_3 +ENUMX + BFD_RELOC_MMIX_PUSHJ_STUBBABLE +ENUMDOC + These are relocations for the PUSHJ instruction. +ENUM + BFD_RELOC_MMIX_JMP +ENUMX + BFD_RELOC_MMIX_JMP_1 +ENUMX + BFD_RELOC_MMIX_JMP_2 +ENUMX + BFD_RELOC_MMIX_JMP_3 +ENUMDOC + These are relocations for the JMP instruction. +ENUM + BFD_RELOC_MMIX_ADDR19 +ENUMDOC + This is a relocation for a relative address as in a GETA instruction or + a branch. ENUM BFD_RELOC_MMIX_ADDR27 ENUMDOC @@ -4273,7 +4948,7 @@ ENUMDOC ENUM BFD_RELOC_AVR_LO8_LDI_GS ENUMDOC - This is a 16 bit reloc for the AVR that stores 8 bit value + This is a 16 bit reloc for the AVR that stores 8 bit value (command address) into 8 bit immediate value of LDI insn. If the address is beyond the 128k boundary, the linker inserts a jump stub for this reloc in the lower 128k. @@ -4331,6 +5006,146 @@ ENUM ENUMDOC This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw instructions +ENUM + BFD_RELOC_AVR_8_LO +ENUMDOC + This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol + in .byte lo8(symbol) +ENUM + BFD_RELOC_AVR_8_HI +ENUMDOC + This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol + in .byte hi8(symbol) +ENUM + BFD_RELOC_AVR_8_HLO +ENUMDOC + This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol + in .byte hlo8(symbol) +ENUM + BFD_RELOC_AVR_DIFF8 +ENUMX + BFD_RELOC_AVR_DIFF16 +ENUMX + BFD_RELOC_AVR_DIFF32 +ENUMDOC + AVR relocations to mark the difference of two local symbols. + These are only needed to support linker relaxation and can be ignored + when not relaxing. The field is set to the value of the difference + assuming no relaxation. The relocation encodes the position of the + second symbol so the linker can determine whether to adjust the field + value. +ENUM + BFD_RELOC_AVR_LDS_STS_16 +ENUMDOC + This is a 7 bit reloc for the AVR that stores SRAM address for 16bit + lds and sts instructions supported only tiny core. +ENUM + BFD_RELOC_AVR_PORT6 +ENUMDOC + This is a 6 bit reloc for the AVR that stores an I/O register + number for the IN and OUT instructions +ENUM + BFD_RELOC_AVR_PORT5 +ENUMDOC + This is a 5 bit reloc for the AVR that stores an I/O register + number for the SBIC, SBIS, SBI and CBI instructions + +ENUM + BFD_RELOC_RISCV_HI20 +ENUMX + BFD_RELOC_RISCV_PCREL_HI20 +ENUMX + BFD_RELOC_RISCV_PCREL_LO12_I +ENUMX + BFD_RELOC_RISCV_PCREL_LO12_S +ENUMX + BFD_RELOC_RISCV_LO12_I +ENUMX + BFD_RELOC_RISCV_LO12_S +ENUMX + BFD_RELOC_RISCV_GPREL12_I +ENUMX + BFD_RELOC_RISCV_GPREL12_S +ENUMX + BFD_RELOC_RISCV_TPREL_HI20 +ENUMX + BFD_RELOC_RISCV_TPREL_LO12_I +ENUMX + BFD_RELOC_RISCV_TPREL_LO12_S +ENUMX + BFD_RELOC_RISCV_TPREL_ADD +ENUMX + BFD_RELOC_RISCV_CALL +ENUMX + BFD_RELOC_RISCV_CALL_PLT +ENUMX + BFD_RELOC_RISCV_ADD8 +ENUMX + BFD_RELOC_RISCV_ADD16 +ENUMX + BFD_RELOC_RISCV_ADD32 +ENUMX + BFD_RELOC_RISCV_ADD64 +ENUMX + BFD_RELOC_RISCV_SUB8 +ENUMX + BFD_RELOC_RISCV_SUB16 +ENUMX + BFD_RELOC_RISCV_SUB32 +ENUMX + BFD_RELOC_RISCV_SUB64 +ENUMX + BFD_RELOC_RISCV_GOT_HI20 +ENUMX + BFD_RELOC_RISCV_TLS_GOT_HI20 +ENUMX + BFD_RELOC_RISCV_TLS_GD_HI20 +ENUMX + BFD_RELOC_RISCV_JMP +ENUMX + BFD_RELOC_RISCV_TLS_DTPMOD32 +ENUMX + BFD_RELOC_RISCV_TLS_DTPREL32 +ENUMX + BFD_RELOC_RISCV_TLS_DTPMOD64 +ENUMX + BFD_RELOC_RISCV_TLS_DTPREL64 +ENUMX + BFD_RELOC_RISCV_TLS_TPREL32 +ENUMX + BFD_RELOC_RISCV_TLS_TPREL64 +ENUMX + BFD_RELOC_RISCV_ALIGN +ENUMX + BFD_RELOC_RISCV_RVC_BRANCH +ENUMX + BFD_RELOC_RISCV_RVC_JUMP +ENUMX + BFD_RELOC_RISCV_RVC_LUI +ENUMX + BFD_RELOC_RISCV_GPREL_I +ENUMX + BFD_RELOC_RISCV_GPREL_S +ENUMX + BFD_RELOC_RISCV_TPREL_I +ENUMX + BFD_RELOC_RISCV_TPREL_S +ENUMX + BFD_RELOC_RISCV_RELAX +ENUMX + BFD_RELOC_RISCV_CFA +ENUMX + BFD_RELOC_RISCV_SUB6 +ENUMX + BFD_RELOC_RISCV_SET6 +ENUMX + BFD_RELOC_RISCV_SET8 +ENUMX + BFD_RELOC_RISCV_SET16 +ENUMX + BFD_RELOC_RISCV_SET32 +ENUMDOC + RISC-V relocations. ENUM BFD_RELOC_RL78_NEG8 @@ -4396,6 +5211,10 @@ ENUMX BFD_RELOC_RL78_HI8 ENUMX BFD_RELOC_RL78_LO16 +ENUMX + BFD_RELOC_RL78_CODE +ENUMX + BFD_RELOC_RL78_SADDR ENUMDOC Renesas RL78 Relocations. @@ -4492,6 +5311,14 @@ ENUM BFD_RELOC_390_GOT16 ENUMDOC 16 bit GOT offset. +ENUM + BFD_RELOC_390_PC12DBL +ENUMDOC + PC relative 12 bit shifted by 1. +ENUM + BFD_RELOC_390_PLT12DBL +ENUMDOC + 12 bit PC rel. PLT shifted by 1. ENUM BFD_RELOC_390_PC16DBL ENUMDOC @@ -4500,6 +5327,14 @@ ENUM BFD_RELOC_390_PLT16DBL ENUMDOC 16 bit PC rel. PLT shifted by 1. +ENUM + BFD_RELOC_390_PC24DBL +ENUMDOC + PC relative 24 bit shifted by 1. +ENUM + BFD_RELOC_390_PLT24DBL +ENUMDOC + 24 bit PC rel. PLT shifted by 1. ENUM BFD_RELOC_390_PC32DBL ENUMDOC @@ -4615,11 +5450,16 @@ ENUMX ENUMDOC Long displacement extension. +ENUM + BFD_RELOC_390_IRELATIVE +ENUMDOC + STT_GNU_IFUNC relocation. + ENUM BFD_RELOC_SCORE_GPREL15 ENUMDOC Score relocations - Low 16 bit for load/store + Low 16 bit for load/store ENUM BFD_RELOC_SCORE_DUMMY2 ENUMX @@ -4660,7 +5500,7 @@ ENUMX BFD_RELOC_SCORE_DUMMY_HI16 ENUMDOC Undocumented Score relocs - + ENUM BFD_RELOC_IP2K_FR9 ENUMDOC @@ -4950,7 +5790,101 @@ ENUM ENUMDOC Motorola 68HC12 reloc. This is the 5 bits of a value. - +ENUM + BFD_RELOC_XGATE_RL_JUMP +ENUMDOC + Freescale XGATE reloc. + This reloc marks the beginning of a bra/jal instruction. +ENUM + BFD_RELOC_XGATE_RL_GROUP +ENUMDOC + Freescale XGATE reloc. + This reloc marks a group of several instructions that gcc generates + and for which the linker relaxation pass can modify and/or remove + some of them. +ENUM + BFD_RELOC_XGATE_LO16 +ENUMDOC + Freescale XGATE reloc. + This is the 16-bit lower part of an address. It is used for the '16-bit' + instructions. +ENUM + BFD_RELOC_XGATE_GPAGE +ENUMDOC + Freescale XGATE reloc. +ENUM + BFD_RELOC_XGATE_24 +ENUMDOC + Freescale XGATE reloc. +ENUM + BFD_RELOC_XGATE_PCREL_9 +ENUMDOC + Freescale XGATE reloc. + This is a 9-bit pc-relative reloc. +ENUM + BFD_RELOC_XGATE_PCREL_10 +ENUMDOC + Freescale XGATE reloc. + This is a 10-bit pc-relative reloc. +ENUM + BFD_RELOC_XGATE_IMM8_LO +ENUMDOC + Freescale XGATE reloc. + This is the 16-bit lower part of an address. It is used for the '16-bit' + instructions. +ENUM + BFD_RELOC_XGATE_IMM8_HI +ENUMDOC + Freescale XGATE reloc. + This is the 16-bit higher part of an address. It is used for the '16-bit' + instructions. +ENUM + BFD_RELOC_XGATE_IMM3 +ENUMDOC + Freescale XGATE reloc. + This is a 3-bit pc-relative reloc. +ENUM + BFD_RELOC_XGATE_IMM4 +ENUMDOC + Freescale XGATE reloc. + This is a 4-bit pc-relative reloc. +ENUM + BFD_RELOC_XGATE_IMM5 +ENUMDOC + Freescale XGATE reloc. + This is a 5-bit pc-relative reloc. +ENUM + BFD_RELOC_M68HC12_9B +ENUMDOC + Motorola 68HC12 reloc. + This is the 9 bits of a value. +ENUM + BFD_RELOC_M68HC12_16B +ENUMDOC + Motorola 68HC12 reloc. + This is the 16 bits of a value. +ENUM + BFD_RELOC_M68HC12_9_PCREL +ENUMDOC + Motorola 68HC12/XGATE reloc. + This is a PCREL9 branch. +ENUM + BFD_RELOC_M68HC12_10_PCREL +ENUMDOC + Motorola 68HC12/XGATE reloc. + This is a PCREL10 branch. +ENUM + BFD_RELOC_M68HC12_LO8XG +ENUMDOC + Motorola 68HC12/XGATE reloc. + This is the 8 bit low part of an absolute address and immediately precedes + a matching HI8XG part. +ENUM + BFD_RELOC_M68HC12_HI8XG +ENUMDOC + Motorola 68HC12/XGATE reloc. + This is the 8 bit high part of an absolute address and immediately follows + a matching LO8XG part. ENUM BFD_RELOC_16C_NUM08 ENUMX @@ -5303,11 +6237,55 @@ ENUMDOC Intel i860 Relocations. ENUM - BFD_RELOC_OPENRISC_ABS_26 + BFD_RELOC_OR1K_REL_26 +ENUMX + BFD_RELOC_OR1K_GOTPC_HI16 +ENUMX + BFD_RELOC_OR1K_GOTPC_LO16 +ENUMX + BFD_RELOC_OR1K_GOT16 +ENUMX + BFD_RELOC_OR1K_PLT26 +ENUMX + BFD_RELOC_OR1K_GOTOFF_HI16 +ENUMX + BFD_RELOC_OR1K_GOTOFF_LO16 +ENUMX + BFD_RELOC_OR1K_COPY +ENUMX + BFD_RELOC_OR1K_GLOB_DAT +ENUMX + BFD_RELOC_OR1K_JMP_SLOT +ENUMX + BFD_RELOC_OR1K_RELATIVE +ENUMX + BFD_RELOC_OR1K_TLS_GD_HI16 +ENUMX + BFD_RELOC_OR1K_TLS_GD_LO16 +ENUMX + BFD_RELOC_OR1K_TLS_LDM_HI16 +ENUMX + BFD_RELOC_OR1K_TLS_LDM_LO16 +ENUMX + BFD_RELOC_OR1K_TLS_LDO_HI16 +ENUMX + BFD_RELOC_OR1K_TLS_LDO_LO16 +ENUMX + BFD_RELOC_OR1K_TLS_IE_HI16 +ENUMX + BFD_RELOC_OR1K_TLS_IE_LO16 +ENUMX + BFD_RELOC_OR1K_TLS_LE_HI16 +ENUMX + BFD_RELOC_OR1K_TLS_LE_LO16 +ENUMX + BFD_RELOC_OR1K_TLS_TPOFF +ENUMX + BFD_RELOC_OR1K_TLS_DTPOFF ENUMX - BFD_RELOC_OPENRISC_REL_26 + BFD_RELOC_OR1K_TLS_DTPMOD ENUMDOC - OpenRISC Relocations. + OpenRISC 1000 Relocations. ENUM BFD_RELOC_H8_DIR16A8 @@ -5319,6 +6297,8 @@ ENUMX BFD_RELOC_H8_DIR24R8 ENUMX BFD_RELOC_H8_DIR32A16 +ENUMX + BFD_RELOC_H8_DISP32A16 ENUMDOC H8 elf Relocations. @@ -5398,314 +6378,1054 @@ ENUMX BFD_RELOC_MSP430_2X_PCREL ENUMX BFD_RELOC_MSP430_RL_PCREL +ENUMX + BFD_RELOC_MSP430_ABS8 +ENUMX + BFD_RELOC_MSP430X_PCR20_EXT_SRC +ENUMX + BFD_RELOC_MSP430X_PCR20_EXT_DST +ENUMX + BFD_RELOC_MSP430X_PCR20_EXT_ODST +ENUMX + BFD_RELOC_MSP430X_ABS20_EXT_SRC +ENUMX + BFD_RELOC_MSP430X_ABS20_EXT_DST +ENUMX + BFD_RELOC_MSP430X_ABS20_EXT_ODST +ENUMX + BFD_RELOC_MSP430X_ABS20_ADR_SRC +ENUMX + BFD_RELOC_MSP430X_ABS20_ADR_DST +ENUMX + BFD_RELOC_MSP430X_PCR16 +ENUMX + BFD_RELOC_MSP430X_PCR20_CALL +ENUMX + BFD_RELOC_MSP430X_ABS16 +ENUMX + BFD_RELOC_MSP430_ABS_HI16 +ENUMX + BFD_RELOC_MSP430_PREL31 +ENUMX + BFD_RELOC_MSP430_SYM_DIFF ENUMDOC msp430 specific relocation codes ENUM - BFD_RELOC_IQ2000_OFFSET_16 + BFD_RELOC_NIOS2_S16 ENUMX - BFD_RELOC_IQ2000_OFFSET_21 + BFD_RELOC_NIOS2_U16 ENUMX - BFD_RELOC_IQ2000_UHI16 -ENUMDOC - IQ2000 Relocations. - + BFD_RELOC_NIOS2_CALL26 +ENUMX + BFD_RELOC_NIOS2_IMM5 +ENUMX + BFD_RELOC_NIOS2_CACHE_OPX +ENUMX + BFD_RELOC_NIOS2_IMM6 +ENUMX + BFD_RELOC_NIOS2_IMM8 +ENUMX + BFD_RELOC_NIOS2_HI16 +ENUMX + BFD_RELOC_NIOS2_LO16 +ENUMX + BFD_RELOC_NIOS2_HIADJ16 +ENUMX + BFD_RELOC_NIOS2_GPREL +ENUMX + BFD_RELOC_NIOS2_UJMP +ENUMX + BFD_RELOC_NIOS2_CJMP +ENUMX + BFD_RELOC_NIOS2_CALLR +ENUMX + BFD_RELOC_NIOS2_ALIGN +ENUMX + BFD_RELOC_NIOS2_GOT16 +ENUMX + BFD_RELOC_NIOS2_CALL16 +ENUMX + BFD_RELOC_NIOS2_GOTOFF_LO +ENUMX + BFD_RELOC_NIOS2_GOTOFF_HA +ENUMX + BFD_RELOC_NIOS2_PCREL_LO +ENUMX + BFD_RELOC_NIOS2_PCREL_HA +ENUMX + BFD_RELOC_NIOS2_TLS_GD16 +ENUMX + BFD_RELOC_NIOS2_TLS_LDM16 +ENUMX + BFD_RELOC_NIOS2_TLS_LDO16 +ENUMX + BFD_RELOC_NIOS2_TLS_IE16 +ENUMX + BFD_RELOC_NIOS2_TLS_LE16 +ENUMX + BFD_RELOC_NIOS2_TLS_DTPMOD +ENUMX + BFD_RELOC_NIOS2_TLS_DTPREL +ENUMX + BFD_RELOC_NIOS2_TLS_TPREL +ENUMX + BFD_RELOC_NIOS2_COPY +ENUMX + BFD_RELOC_NIOS2_GLOB_DAT +ENUMX + BFD_RELOC_NIOS2_JUMP_SLOT +ENUMX + BFD_RELOC_NIOS2_RELATIVE +ENUMX + BFD_RELOC_NIOS2_GOTOFF +ENUMX + BFD_RELOC_NIOS2_CALL26_NOAT +ENUMX + BFD_RELOC_NIOS2_GOT_LO +ENUMX + BFD_RELOC_NIOS2_GOT_HA +ENUMX + BFD_RELOC_NIOS2_CALL_LO +ENUMX + BFD_RELOC_NIOS2_CALL_HA +ENUMX + BFD_RELOC_NIOS2_R2_S12 +ENUMX + BFD_RELOC_NIOS2_R2_I10_1_PCREL +ENUMX + BFD_RELOC_NIOS2_R2_T1I7_1_PCREL +ENUMX + BFD_RELOC_NIOS2_R2_T1I7_2 +ENUMX + BFD_RELOC_NIOS2_R2_T2I4 +ENUMX + BFD_RELOC_NIOS2_R2_T2I4_1 +ENUMX + BFD_RELOC_NIOS2_R2_T2I4_2 +ENUMX + BFD_RELOC_NIOS2_R2_X1I7_2 +ENUMX + BFD_RELOC_NIOS2_R2_X2L5 +ENUMX + BFD_RELOC_NIOS2_R2_F1I5_2 +ENUMX + BFD_RELOC_NIOS2_R2_L5I4X1 +ENUMX + BFD_RELOC_NIOS2_R2_T1X1I6 +ENUMX + BFD_RELOC_NIOS2_R2_T1X1I6_2 +ENUMDOC + Relocations used by the Altera Nios II core. + +ENUM + BFD_RELOC_PRU_U16 +ENUMDOC + PRU LDI 16-bit unsigned data-memory relocation. +ENUM + BFD_RELOC_PRU_U16_PMEMIMM +ENUMDOC + PRU LDI 16-bit unsigned instruction-memory relocation. +ENUM + BFD_RELOC_PRU_LDI32 +ENUMDOC + PRU relocation for two consecutive LDI load instructions that load a + 32 bit value into a register. If the higher bits are all zero, then + the second instruction may be relaxed. +ENUM + BFD_RELOC_PRU_S10_PCREL +ENUMDOC + PRU QBBx 10-bit signed PC-relative relocation. +ENUM + BFD_RELOC_PRU_U8_PCREL +ENUMDOC + PRU 8-bit unsigned relocation used for the LOOP instruction. +ENUM + BFD_RELOC_PRU_32_PMEM +ENUMX + BFD_RELOC_PRU_16_PMEM +ENUMDOC + PRU Program Memory relocations. Used to convert from byte addressing to + 32-bit word addressing. +ENUM + BFD_RELOC_PRU_GNU_DIFF8 +ENUMX + BFD_RELOC_PRU_GNU_DIFF16 +ENUMX + BFD_RELOC_PRU_GNU_DIFF32 +ENUMX + BFD_RELOC_PRU_GNU_DIFF16_PMEM +ENUMX + BFD_RELOC_PRU_GNU_DIFF32_PMEM +ENUMDOC + PRU relocations to mark the difference of two local symbols. + These are only needed to support linker relaxation and can be ignored + when not relaxing. The field is set to the value of the difference + assuming no relaxation. The relocation encodes the position of the + second symbol so the linker can determine whether to adjust the field + value. The PMEM variants encode the word difference, instead of byte + difference between symbols. + +ENUM + BFD_RELOC_IQ2000_OFFSET_16 +ENUMX + BFD_RELOC_IQ2000_OFFSET_21 +ENUMX + BFD_RELOC_IQ2000_UHI16 +ENUMDOC + IQ2000 Relocations. + +ENUM + BFD_RELOC_XTENSA_RTLD +ENUMDOC + Special Xtensa relocation used only by PLT entries in ELF shared + objects to indicate that the runtime linker should set the value + to one of its own internal functions or data structures. +ENUM + BFD_RELOC_XTENSA_GLOB_DAT +ENUMX + BFD_RELOC_XTENSA_JMP_SLOT +ENUMX + BFD_RELOC_XTENSA_RELATIVE +ENUMDOC + Xtensa relocations for ELF shared objects. +ENUM + BFD_RELOC_XTENSA_PLT +ENUMDOC + Xtensa relocation used in ELF object files for symbols that may require + PLT entries. Otherwise, this is just a generic 32-bit relocation. +ENUM + BFD_RELOC_XTENSA_DIFF8 +ENUMX + BFD_RELOC_XTENSA_DIFF16 +ENUMX + BFD_RELOC_XTENSA_DIFF32 +ENUMDOC + Xtensa relocations to mark the difference of two local symbols. + These are only needed to support linker relaxation and can be ignored + when not relaxing. The field is set to the value of the difference + assuming no relaxation. The relocation encodes the position of the + first symbol so the linker can determine whether to adjust the field + value. +ENUM + BFD_RELOC_XTENSA_SLOT0_OP +ENUMX + BFD_RELOC_XTENSA_SLOT1_OP +ENUMX + BFD_RELOC_XTENSA_SLOT2_OP +ENUMX + BFD_RELOC_XTENSA_SLOT3_OP +ENUMX + BFD_RELOC_XTENSA_SLOT4_OP +ENUMX + BFD_RELOC_XTENSA_SLOT5_OP +ENUMX + BFD_RELOC_XTENSA_SLOT6_OP +ENUMX + BFD_RELOC_XTENSA_SLOT7_OP +ENUMX + BFD_RELOC_XTENSA_SLOT8_OP +ENUMX + BFD_RELOC_XTENSA_SLOT9_OP +ENUMX + BFD_RELOC_XTENSA_SLOT10_OP +ENUMX + BFD_RELOC_XTENSA_SLOT11_OP +ENUMX + BFD_RELOC_XTENSA_SLOT12_OP +ENUMX + BFD_RELOC_XTENSA_SLOT13_OP +ENUMX + BFD_RELOC_XTENSA_SLOT14_OP +ENUMDOC + Generic Xtensa relocations for instruction operands. Only the slot + number is encoded in the relocation. The relocation applies to the + last PC-relative immediate operand, or if there are no PC-relative + immediates, to the last immediate operand. +ENUM + BFD_RELOC_XTENSA_SLOT0_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT1_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT2_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT3_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT4_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT5_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT6_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT7_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT8_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT9_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT10_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT11_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT12_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT13_ALT +ENUMX + BFD_RELOC_XTENSA_SLOT14_ALT +ENUMDOC + Alternate Xtensa relocations. Only the slot is encoded in the + relocation. The meaning of these relocations is opcode-specific. +ENUM + BFD_RELOC_XTENSA_OP0 +ENUMX + BFD_RELOC_XTENSA_OP1 +ENUMX + BFD_RELOC_XTENSA_OP2 +ENUMDOC + Xtensa relocations for backward compatibility. These have all been + replaced by BFD_RELOC_XTENSA_SLOT0_OP. +ENUM + BFD_RELOC_XTENSA_ASM_EXPAND +ENUMDOC + Xtensa relocation to mark that the assembler expanded the + instructions from an original target. The expansion size is + encoded in the reloc size. +ENUM + BFD_RELOC_XTENSA_ASM_SIMPLIFY +ENUMDOC + Xtensa relocation to mark that the linker should simplify + assembler-expanded instructions. This is commonly used + internally by the linker after analysis of a + BFD_RELOC_XTENSA_ASM_EXPAND. +ENUM + BFD_RELOC_XTENSA_TLSDESC_FN +ENUMX + BFD_RELOC_XTENSA_TLSDESC_ARG +ENUMX + BFD_RELOC_XTENSA_TLS_DTPOFF +ENUMX + BFD_RELOC_XTENSA_TLS_TPOFF +ENUMX + BFD_RELOC_XTENSA_TLS_FUNC +ENUMX + BFD_RELOC_XTENSA_TLS_ARG +ENUMX + BFD_RELOC_XTENSA_TLS_CALL +ENUMDOC + Xtensa TLS relocations. + +ENUM + BFD_RELOC_Z80_DISP8 +ENUMDOC + 8 bit signed offset in (ix+d) or (iy+d). + +ENUM + BFD_RELOC_Z8K_DISP7 +ENUMDOC + DJNZ offset. +ENUM + BFD_RELOC_Z8K_CALLR +ENUMDOC + CALR offset. +ENUM + BFD_RELOC_Z8K_IMM4L +ENUMDOC + 4 bit value. + +ENUM + BFD_RELOC_LM32_CALL +ENUMX + BFD_RELOC_LM32_BRANCH +ENUMX + BFD_RELOC_LM32_16_GOT +ENUMX + BFD_RELOC_LM32_GOTOFF_HI16 +ENUMX + BFD_RELOC_LM32_GOTOFF_LO16 +ENUMX + BFD_RELOC_LM32_COPY +ENUMX + BFD_RELOC_LM32_GLOB_DAT +ENUMX + BFD_RELOC_LM32_JMP_SLOT +ENUMX + BFD_RELOC_LM32_RELATIVE +ENUMDOC + Lattice Mico32 relocations. + +ENUM + BFD_RELOC_MACH_O_SECTDIFF +ENUMDOC + Difference between two section addreses. Must be followed by a + BFD_RELOC_MACH_O_PAIR. +ENUM + BFD_RELOC_MACH_O_LOCAL_SECTDIFF +ENUMDOC + Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. +ENUM + BFD_RELOC_MACH_O_PAIR +ENUMDOC + Pair of relocation. Contains the first symbol. +ENUM + BFD_RELOC_MACH_O_SUBTRACTOR32 +ENUMDOC + Symbol will be substracted. Must be followed by a BFD_RELOC_32. +ENUM + BFD_RELOC_MACH_O_SUBTRACTOR64 +ENUMDOC + Symbol will be substracted. Must be followed by a BFD_RELOC_64. + +ENUM + BFD_RELOC_MACH_O_X86_64_BRANCH32 +ENUMX + BFD_RELOC_MACH_O_X86_64_BRANCH8 +ENUMDOC + PCREL relocations. They are marked as branch to create PLT entry if + required. +ENUM + BFD_RELOC_MACH_O_X86_64_GOT +ENUMDOC + Used when referencing a GOT entry. +ENUM + BFD_RELOC_MACH_O_X86_64_GOT_LOAD +ENUMDOC + Used when loading a GOT entry with movq. It is specially marked so that + the linker could optimize the movq to a leaq if possible. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_1 +ENUMDOC + Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_2 +ENUMDOC + Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. +ENUM + BFD_RELOC_MACH_O_X86_64_PCREL32_4 +ENUMDOC + Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. + + +ENUM + BFD_RELOC_MACH_O_ARM64_ADDEND +ENUMDOC + Addend for PAGE or PAGEOFF. +ENUM + BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21 +ENUMDOC + Relative offset to page of GOT slot. +ENUM + BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12 +ENUMDOC + Relative offset within page of GOT slot. +ENUM + BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT +ENUMDOC + Address of a GOT entry. + +ENUM + BFD_RELOC_MICROBLAZE_32_LO +ENUMDOC + This is a 32 bit reloc for the microblaze that stores the + low 16 bits of a value +ENUM + BFD_RELOC_MICROBLAZE_32_LO_PCREL +ENUMDOC + This is a 32 bit pc-relative reloc for the microblaze that + stores the low 16 bits of a value +ENUM + BFD_RELOC_MICROBLAZE_32_ROSDA +ENUMDOC + This is a 32 bit reloc for the microblaze that stores a + value relative to the read-only small data area anchor +ENUM + BFD_RELOC_MICROBLAZE_32_RWSDA +ENUMDOC + This is a 32 bit reloc for the microblaze that stores a + value relative to the read-write small data area anchor +ENUM + BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM +ENUMDOC + This is a 32 bit reloc for the microblaze to handle + expressions of the form "Symbol Op Symbol" +ENUM + BFD_RELOC_MICROBLAZE_64_NONE +ENUMDOC + This is a 64 bit reloc that stores the 32 bit pc relative + value in two words (with an imm instruction). No relocation is + done here - only used for relaxing +ENUM + BFD_RELOC_MICROBLAZE_64_GOTPC +ENUMDOC + This is a 64 bit reloc that stores the 32 bit pc relative + value in two words (with an imm instruction). The relocation is + PC-relative GOT offset +ENUM + BFD_RELOC_MICROBLAZE_64_GOT +ENUMDOC + This is a 64 bit reloc that stores the 32 bit pc relative + value in two words (with an imm instruction). The relocation is + GOT offset +ENUM + BFD_RELOC_MICROBLAZE_64_PLT +ENUMDOC + This is a 64 bit reloc that stores the 32 bit pc relative + value in two words (with an imm instruction). The relocation is + PC-relative offset into PLT +ENUM + BFD_RELOC_MICROBLAZE_64_GOTOFF +ENUMDOC + This is a 64 bit reloc that stores the 32 bit GOT relative + value in two words (with an imm instruction). The relocation is + relative offset from _GLOBAL_OFFSET_TABLE_ +ENUM + BFD_RELOC_MICROBLAZE_32_GOTOFF +ENUMDOC + This is a 32 bit reloc that stores the 32 bit GOT relative + value in a word. The relocation is relative offset from + _GLOBAL_OFFSET_TABLE_ +ENUM + BFD_RELOC_MICROBLAZE_COPY +ENUMDOC + This is used to tell the dynamic linker to copy the value out of + the dynamic object into the runtime process image. +ENUM + BFD_RELOC_MICROBLAZE_64_TLS +ENUMDOC + Unused Reloc +ENUM + BFD_RELOC_MICROBLAZE_64_TLSGD +ENUMDOC + This is a 64 bit reloc that stores the 32 bit GOT relative value + of the GOT TLS GD info entry in two words (with an imm instruction). The + relocation is GOT offset. +ENUM + BFD_RELOC_MICROBLAZE_64_TLSLD +ENUMDOC + This is a 64 bit reloc that stores the 32 bit GOT relative value + of the GOT TLS LD info entry in two words (with an imm instruction). The + relocation is GOT offset. +ENUM + BFD_RELOC_MICROBLAZE_32_TLSDTPMOD +ENUMDOC + This is a 32 bit reloc that stores the Module ID to GOT(n). +ENUM + BFD_RELOC_MICROBLAZE_32_TLSDTPREL +ENUMDOC + This is a 32 bit reloc that stores TLS offset to GOT(n+1). +ENUM + BFD_RELOC_MICROBLAZE_64_TLSDTPREL +ENUMDOC + This is a 32 bit reloc for storing TLS offset to two words (uses imm + instruction) +ENUM + BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL +ENUMDOC + This is a 64 bit reloc that stores 32-bit thread pointer relative offset + to two words (uses imm instruction). +ENUM + BFD_RELOC_MICROBLAZE_64_TLSTPREL +ENUMDOC + This is a 64 bit reloc that stores 32-bit thread pointer relative offset + to two words (uses imm instruction). + +ENUM + BFD_RELOC_AARCH64_RELOC_START +ENUMDOC + AArch64 pseudo relocation code to mark the start of the AArch64 + relocation enumerators. N.B. the order of the enumerators is + important as several tables in the AArch64 bfd backend are indexed + by these enumerators; make sure they are all synced. +ENUM + BFD_RELOC_AARCH64_NULL +ENUMDOC + Deprecated AArch64 null relocation code. +ENUM + BFD_RELOC_AARCH64_NONE +ENUMDOC + AArch64 null relocation code. +ENUM + BFD_RELOC_AARCH64_64 +ENUMX + BFD_RELOC_AARCH64_32 +ENUMX + BFD_RELOC_AARCH64_16 +ENUMDOC + Basic absolute relocations of N bits. These are equivalent to +BFD_RELOC_N and they were added to assist the indexing of the howto +table. +ENUM + BFD_RELOC_AARCH64_64_PCREL +ENUMX + BFD_RELOC_AARCH64_32_PCREL +ENUMX + BFD_RELOC_AARCH64_16_PCREL +ENUMDOC + PC-relative relocations. These are equivalent to BFD_RELOC_N_PCREL +and they were added to assist the indexing of the howto table. +ENUM + BFD_RELOC_AARCH64_MOVW_G0 +ENUMDOC + AArch64 MOV[NZK] instruction with most significant bits 0 to 15 + of an unsigned address/value. +ENUM + BFD_RELOC_AARCH64_MOVW_G0_NC +ENUMDOC + AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of + an address/value. No overflow checking. +ENUM + BFD_RELOC_AARCH64_MOVW_G1 +ENUMDOC + AArch64 MOV[NZK] instruction with most significant bits 16 to 31 + of an unsigned address/value. +ENUM + BFD_RELOC_AARCH64_MOVW_G1_NC +ENUMDOC + AArch64 MOV[NZK] instruction with less significant bits 16 to 31 + of an address/value. No overflow checking. +ENUM + BFD_RELOC_AARCH64_MOVW_G2 +ENUMDOC + AArch64 MOV[NZK] instruction with most significant bits 32 to 47 + of an unsigned address/value. +ENUM + BFD_RELOC_AARCH64_MOVW_G2_NC +ENUMDOC + AArch64 MOV[NZK] instruction with less significant bits 32 to 47 + of an address/value. No overflow checking. +ENUM + BFD_RELOC_AARCH64_MOVW_G3 +ENUMDOC + AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 + of a signed or unsigned address/value. +ENUM + BFD_RELOC_AARCH64_MOVW_G0_S +ENUMDOC + AArch64 MOV[NZ] instruction with most significant bits 0 to 15 + of a signed value. Changes instruction to MOVZ or MOVN depending on the + value's sign. +ENUM + BFD_RELOC_AARCH64_MOVW_G1_S +ENUMDOC + AArch64 MOV[NZ] instruction with most significant bits 16 to 31 + of a signed value. Changes instruction to MOVZ or MOVN depending on the + value's sign. +ENUM + BFD_RELOC_AARCH64_MOVW_G2_S +ENUMDOC + AArch64 MOV[NZ] instruction with most significant bits 32 to 47 + of a signed value. Changes instruction to MOVZ or MOVN depending on the + value's sign. +ENUM + BFD_RELOC_AARCH64_LD_LO19_PCREL +ENUMDOC + AArch64 Load Literal instruction, holding a 19 bit pc-relative word + offset. The lowest two bits must be zero and are not stored in the + instruction, giving a 21 bit signed byte offset. +ENUM + BFD_RELOC_AARCH64_ADR_LO21_PCREL +ENUMDOC + AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset. +ENUM + BFD_RELOC_AARCH64_ADR_HI21_PCREL +ENUMDOC + AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page + offset, giving a 4KB aligned page base address. +ENUM + BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL +ENUMDOC + AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page + offset, giving a 4KB aligned page base address, but with no overflow + checking. +ENUM + BFD_RELOC_AARCH64_ADD_LO12 +ENUMDOC + AArch64 ADD immediate instruction, holding bits 0 to 11 of the address. + Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +ENUM + BFD_RELOC_AARCH64_LDST8_LO12 +ENUMDOC + AArch64 8-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +ENUM + BFD_RELOC_AARCH64_TSTBR14 +ENUMDOC + AArch64 14 bit pc-relative test bit and branch. + The lowest two bits must be zero and are not stored in the instruction, + giving a 16 bit signed byte offset. +ENUM + BFD_RELOC_AARCH64_BRANCH19 +ENUMDOC + AArch64 19 bit pc-relative conditional branch and compare & branch. + The lowest two bits must be zero and are not stored in the instruction, + giving a 21 bit signed byte offset. +ENUM + BFD_RELOC_AARCH64_JUMP26 +ENUMDOC + AArch64 26 bit pc-relative unconditional branch. + The lowest two bits must be zero and are not stored in the instruction, + giving a 28 bit signed byte offset. +ENUM + BFD_RELOC_AARCH64_CALL26 +ENUMDOC + AArch64 26 bit pc-relative unconditional branch and link. + The lowest two bits must be zero and are not stored in the instruction, + giving a 28 bit signed byte offset. +ENUM + BFD_RELOC_AARCH64_LDST16_LO12 +ENUMDOC + AArch64 16-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +ENUM + BFD_RELOC_AARCH64_LDST32_LO12 +ENUMDOC + AArch64 32-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +ENUM + BFD_RELOC_AARCH64_LDST64_LO12 +ENUMDOC + AArch64 64-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +ENUM + BFD_RELOC_AARCH64_LDST128_LO12 +ENUMDOC + AArch64 128-bit load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. +ENUM + BFD_RELOC_AARCH64_GOT_LD_PREL19 +ENUMDOC + AArch64 Load Literal instruction, holding a 19 bit PC relative word + offset of the global offset table entry for a symbol. The lowest two + bits must be zero and are not stored in the instruction, giving a 21 + bit signed byte offset. This relocation type requires signed overflow + checking. +ENUM + BFD_RELOC_AARCH64_ADR_GOT_PAGE +ENUMDOC + Get to the page base of the global offset table entry for a symbol as + part of an ADRP instruction using a 21 bit PC relative value.Used in + conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC. +ENUM + BFD_RELOC_AARCH64_LD64_GOT_LO12_NC +ENUMDOC + Unsigned 12 bit byte offset for 64 bit load/store from the page of + the GOT entry for this symbol. Used in conjunction with + BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in LP64 ABI only. +ENUM + BFD_RELOC_AARCH64_LD32_GOT_LO12_NC +ENUMDOC + Unsigned 12 bit byte offset for 32 bit load/store from the page of + the GOT entry for this symbol. Used in conjunction with + BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. + ENUM + BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC +ENUMDOC + Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry + for this symbol. Valid in LP64 ABI only. +ENUM + BFD_RELOC_AARCH64_MOVW_GOTOFF_G1 +ENUMDOC + Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry + for this symbol. Valid in LP64 ABI only. +ENUM + BFD_RELOC_AARCH64_LD64_GOTOFF_LO15 +ENUMDOC + Unsigned 15 bit byte offset for 64 bit load/store from the page of + the GOT entry for this symbol. Valid in LP64 ABI only. +ENUM + BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14 +ENUMDOC + Scaled 14 bit byte offset to the page base of the global offset table. +ENUM + BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15 +ENUMDOC + Scaled 15 bit byte offset to the page base of the global offset table. +ENUM + BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21 +ENUMDOC + Get to the page base of the global offset table entry for a symbols + tls_index structure as part of an adrp instruction using a 21 bit PC + relative value. Used in conjunction with + BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC. +ENUM + BFD_RELOC_AARCH64_TLSGD_ADR_PREL21 +ENUMDOC + AArch64 TLS General Dynamic +ENUM + BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC +ENUMDOC + Unsigned 12 bit byte offset to global offset table entry for a symbols + tls_index structure. Used in conjunction with + BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21. +ENUM + BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC +ENUMDOC + AArch64 TLS General Dynamic relocation. +ENUM + BFD_RELOC_AARCH64_TLSGD_MOVW_G1 +ENUMDOC + AArch64 TLS General Dynamic relocation. +ENUM + BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 +ENUMDOC + AArch64 TLS INITIAL EXEC relocation. +ENUM + BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC +ENUMDOC + AArch64 TLS INITIAL EXEC relocation. +ENUM + BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC +ENUMDOC + AArch64 TLS INITIAL EXEC relocation. +ENUM + BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19 +ENUMDOC + AArch64 TLS INITIAL EXEC relocation. +ENUM + BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC +ENUMDOC + AArch64 TLS INITIAL EXEC relocation. +ENUM + BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1 +ENUMDOC + AArch64 TLS INITIAL EXEC relocation. +ENUM + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12 +ENUMDOC + bit[23:12] of byte offset to module TLS base address. +ENUM + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12 +ENUMDOC + Unsigned 12 bit byte offset to module TLS base address. +ENUM + BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC +ENUMDOC + No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12. +ENUM + BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC +ENUMDOC + Unsigned 12 bit byte offset to global offset table entry for a symbols + tls_index structure. Used in conjunction with + BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21. +ENUM + BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21 +ENUMDOC + GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP + instruction. +ENUM + BFD_RELOC_AARCH64_TLSLD_ADR_PREL21 +ENUMDOC + GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12 +ENUMDOC + bit[11:1] of byte offset to module TLS base address, encoded in ldst + instructions. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC +ENUMDOC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12 +ENUMDOC + bit[11:2] of byte offset to module TLS base address, encoded in ldst + instructions. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC +ENUMDOC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12 +ENUMDOC + bit[11:3] of byte offset to module TLS base address, encoded in ldst + instructions. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC +ENUMDOC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12 +ENUMDOC + bit[11:0] of byte offset to module TLS base address, encoded in ldst + instructions. +ENUM + BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC +ENUMDOC + Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check. +ENUM + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 +ENUMDOC + bit[15:0] of byte offset to module TLS base address. +ENUM + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC +ENUMDOC + No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0 +ENUM + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 +ENUMDOC + bit[31:16] of byte offset to module TLS base address. ENUM - BFD_RELOC_XTENSA_RTLD + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC ENUMDOC - Special Xtensa relocation used only by PLT entries in ELF shared - objects to indicate that the runtime linker should set the value - to one of its own internal functions or data structures. + No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1 ENUM - BFD_RELOC_XTENSA_GLOB_DAT -ENUMX - BFD_RELOC_XTENSA_JMP_SLOT -ENUMX - BFD_RELOC_XTENSA_RELATIVE + BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2 ENUMDOC - Xtensa relocations for ELF shared objects. + bit[47:32] of byte offset to module TLS base address. ENUM - BFD_RELOC_XTENSA_PLT + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2 ENUMDOC - Xtensa relocation used in ELF object files for symbols that may require - PLT entries. Otherwise, this is just a generic 32-bit relocation. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_DIFF8 -ENUMX - BFD_RELOC_XTENSA_DIFF16 -ENUMX - BFD_RELOC_XTENSA_DIFF32 + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 ENUMDOC - Xtensa relocations to mark the difference of two local symbols. - These are only needed to support linker relaxation and can be ignored - when not relaxing. The field is set to the value of the difference - assuming no relaxation. The relocation encodes the position of the - first symbol so the linker can determine whether to adjust the field - value. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_SLOT0_OP -ENUMX - BFD_RELOC_XTENSA_SLOT1_OP -ENUMX - BFD_RELOC_XTENSA_SLOT2_OP -ENUMX - BFD_RELOC_XTENSA_SLOT3_OP -ENUMX - BFD_RELOC_XTENSA_SLOT4_OP -ENUMX - BFD_RELOC_XTENSA_SLOT5_OP -ENUMX - BFD_RELOC_XTENSA_SLOT6_OP -ENUMX - BFD_RELOC_XTENSA_SLOT7_OP -ENUMX - BFD_RELOC_XTENSA_SLOT8_OP -ENUMX - BFD_RELOC_XTENSA_SLOT9_OP -ENUMX - BFD_RELOC_XTENSA_SLOT10_OP -ENUMX - BFD_RELOC_XTENSA_SLOT11_OP -ENUMX - BFD_RELOC_XTENSA_SLOT12_OP -ENUMX - BFD_RELOC_XTENSA_SLOT13_OP -ENUMX - BFD_RELOC_XTENSA_SLOT14_OP + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC ENUMDOC - Generic Xtensa relocations for instruction operands. Only the slot - number is encoded in the relocation. The relocation applies to the - last PC-relative immediate operand, or if there are no PC-relative - immediates, to the last immediate operand. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_SLOT0_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT1_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT2_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT3_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT4_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT5_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT6_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT7_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT8_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT9_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT10_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT11_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT12_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT13_ALT -ENUMX - BFD_RELOC_XTENSA_SLOT14_ALT + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0 ENUMDOC - Alternate Xtensa relocations. Only the slot is encoded in the - relocation. The meaning of these relocations is opcode-specific. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_OP0 -ENUMX - BFD_RELOC_XTENSA_OP1 -ENUMX - BFD_RELOC_XTENSA_OP2 + BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC ENUMDOC - Xtensa relocations for backward compatibility. These have all been - replaced by BFD_RELOC_XTENSA_SLOT0_OP. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_ASM_EXPAND + BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12 ENUMDOC - Xtensa relocation to mark that the assembler expanded the - instructions from an original target. The expansion size is - encoded in the reloc size. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_ASM_SIMPLIFY + BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12 ENUMDOC - Xtensa relocation to mark that the linker should simplify - assembler-expanded instructions. This is commonly used - internally by the linker after analysis of a - BFD_RELOC_XTENSA_ASM_EXPAND. + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_XTENSA_TLSDESC_FN -ENUMX - BFD_RELOC_XTENSA_TLSDESC_ARG -ENUMX - BFD_RELOC_XTENSA_TLS_DTPOFF -ENUMX - BFD_RELOC_XTENSA_TLS_TPOFF -ENUMX - BFD_RELOC_XTENSA_TLS_FUNC -ENUMX - BFD_RELOC_XTENSA_TLS_ARG -ENUMX - BFD_RELOC_XTENSA_TLS_CALL + BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC ENUMDOC - Xtensa TLS relocations. - + AArch64 TLS LOCAL EXEC relocation. ENUM - BFD_RELOC_Z80_DISP8 + BFD_RELOC_AARCH64_TLSDESC_LD_PREL19 ENUMDOC - 8 bit signed offset in (ix+d) or (iy+d). - + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_Z8K_DISP7 + BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21 ENUMDOC - DJNZ offset. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_Z8K_CALLR + BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21 ENUMDOC - CALR offset. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_Z8K_IMM4L + BFD_RELOC_AARCH64_TLSDESC_LD64_LO12 ENUMDOC - 4 bit value. - + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_LM32_CALL -ENUMX - BFD_RELOC_LM32_BRANCH -ENUMX - BFD_RELOC_LM32_16_GOT -ENUMX - BFD_RELOC_LM32_GOTOFF_HI16 -ENUMX - BFD_RELOC_LM32_GOTOFF_LO16 -ENUMX - BFD_RELOC_LM32_COPY -ENUMX - BFD_RELOC_LM32_GLOB_DAT -ENUMX - BFD_RELOC_LM32_JMP_SLOT -ENUMX - BFD_RELOC_LM32_RELATIVE + BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC ENUMDOC - Lattice Mico32 relocations. - + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_SECTDIFF + BFD_RELOC_AARCH64_TLSDESC_ADD_LO12 ENUMDOC - Difference between two section addreses. Must be followed by a - BFD_RELOC_MACH_O_PAIR. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_LOCAL_SECTDIFF + BFD_RELOC_AARCH64_TLSDESC_OFF_G1 ENUMDOC - Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_PAIR + BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC ENUMDOC - Pair of relocation. Contains the first symbol. - + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_X86_64_BRANCH32 -ENUMX - BFD_RELOC_MACH_O_X86_64_BRANCH8 + BFD_RELOC_AARCH64_TLSDESC_LDR ENUMDOC - PCREL relocations. They are marked as branch to create PLT entry if - required. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_X86_64_GOT + BFD_RELOC_AARCH64_TLSDESC_ADD ENUMDOC - Used when referencing a GOT entry. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_X86_64_GOT_LOAD + BFD_RELOC_AARCH64_TLSDESC_CALL ENUMDOC - Used when loading a GOT entry with movq. It is specially marked so that - the linker could optimize the movq to a leaq if possible. + AArch64 TLS DESC relocation. ENUM - BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32 + BFD_RELOC_AARCH64_COPY ENUMDOC - Symbol will be substracted. Must be followed by a BFD_RELOC_64. + AArch64 TLS relocation. ENUM - BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64 + BFD_RELOC_AARCH64_GLOB_DAT ENUMDOC - Symbol will be substracted. Must be followed by a BFD_RELOC_64. + AArch64 TLS relocation. ENUM - BFD_RELOC_MACH_O_X86_64_PCREL32_1 + BFD_RELOC_AARCH64_JUMP_SLOT ENUMDOC - Same as BFD_RELOC_32_PCREL but with an implicit -1 addend. + AArch64 TLS relocation. ENUM - BFD_RELOC_MACH_O_X86_64_PCREL32_2 + BFD_RELOC_AARCH64_RELATIVE ENUMDOC - Same as BFD_RELOC_32_PCREL but with an implicit -2 addend. + AArch64 TLS relocation. ENUM - BFD_RELOC_MACH_O_X86_64_PCREL32_4 + BFD_RELOC_AARCH64_TLS_DTPMOD ENUMDOC - Same as BFD_RELOC_32_PCREL but with an implicit -4 addend. - + AArch64 TLS relocation. ENUM - BFD_RELOC_MICROBLAZE_32_LO + BFD_RELOC_AARCH64_TLS_DTPREL ENUMDOC - This is a 32 bit reloc for the microblaze that stores the - low 16 bits of a value + AArch64 TLS relocation. ENUM - BFD_RELOC_MICROBLAZE_32_LO_PCREL + BFD_RELOC_AARCH64_TLS_TPREL ENUMDOC - This is a 32 bit pc-relative reloc for the microblaze that - stores the low 16 bits of a value + AArch64 TLS relocation. ENUM - BFD_RELOC_MICROBLAZE_32_ROSDA + BFD_RELOC_AARCH64_TLSDESC ENUMDOC - This is a 32 bit reloc for the microblaze that stores a - value relative to the read-only small data area anchor + AArch64 TLS relocation. ENUM - BFD_RELOC_MICROBLAZE_32_RWSDA + BFD_RELOC_AARCH64_IRELATIVE ENUMDOC - This is a 32 bit reloc for the microblaze that stores a - value relative to the read-write small data area anchor + AArch64 support for STT_GNU_IFUNC. ENUM - BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM + BFD_RELOC_AARCH64_RELOC_END ENUMDOC - This is a 32 bit reloc for the microblaze to handle - expressions of the form "Symbol Op Symbol" + AArch64 pseudo relocation code to mark the end of the AArch64 + relocation enumerators that have direct mapping to ELF reloc codes. + There are a few more enumerators after this one; those are mainly + used by the AArch64 assembler for the internal fixup or to select + one of the above enumerators. ENUM - BFD_RELOC_MICROBLAZE_64_NONE + BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP ENUMDOC - This is a 64 bit reloc that stores the 32 bit pc relative - value in two words (with an imm instruction). No relocation is - done here - only used for relaxing + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. ENUM - BFD_RELOC_MICROBLAZE_64_GOTPC + BFD_RELOC_AARCH64_LDST_LO12 ENUMDOC - This is a 64 bit reloc that stores the 32 bit pc relative - value in two words (with an imm instruction). The relocation is - PC-relative GOT offset + AArch64 unspecified load/store instruction, holding bits 0 to 11 of the + address. Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL. ENUM - BFD_RELOC_MICROBLAZE_64_GOT + BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12 ENUMDOC - This is a 64 bit reloc that stores the 32 bit pc relative - value in two words (with an imm instruction). The relocation is - GOT offset + AArch64 pseudo relocation code for TLS local dynamic mode. It's to be + used internally by the AArch64 assembler and not (currently) written to + any object files. ENUM - BFD_RELOC_MICROBLAZE_64_PLT + BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC ENUMDOC - This is a 64 bit reloc that stores the 32 bit pc relative - value in two words (with an imm instruction). The relocation is - PC-relative offset into PLT + Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check. ENUM - BFD_RELOC_MICROBLAZE_64_GOTOFF + BFD_RELOC_AARCH64_LD_GOT_LO12_NC ENUMDOC - This is a 64 bit reloc that stores the 32 bit GOT relative - value in two words (with an imm instruction). The relocation is - relative offset from _GLOBAL_OFFSET_TABLE_ + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. ENUM - BFD_RELOC_MICROBLAZE_32_GOTOFF + BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC ENUMDOC - This is a 32 bit reloc that stores the 32 bit GOT relative - value in a word. The relocation is relative offset from - _GLOBAL_OFFSET_TABLE_ + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. ENUM - BFD_RELOC_MICROBLAZE_COPY + BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC ENUMDOC - This is used to tell the dynamic linker to copy the value out of - the dynamic object into the runtime process image. - + AArch64 pseudo relocation code to be used internally by the AArch64 + assembler and not (currently) written to any object files. ENUM BFD_RELOC_TILEPRO_COPY ENUMX @@ -5866,7 +7586,6 @@ ENUMX BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA ENUMDOC Tilera TILEPro Relocations. - ENUM BFD_RELOC_TILEGX_HW0 ENUMX @@ -5981,6 +7700,18 @@ ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT ENUMX @@ -5989,6 +7720,10 @@ ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD ENUMX @@ -6017,6 +7752,18 @@ ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE ENUMX BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL +ENUMX + BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL ENUMX BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE ENUMX @@ -6089,6 +7836,45 @@ ENUM ENUMDOC Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction. +ENUM + BFD_RELOC_VISIUM_HI16 +ENUMX + BFD_RELOC_VISIUM_LO16 +ENUMX + BFD_RELOC_VISIUM_IM16 +ENUMX + BFD_RELOC_VISIUM_REL16 +ENUMX + BFD_RELOC_VISIUM_HI16_PCREL +ENUMX + BFD_RELOC_VISIUM_LO16_PCREL +ENUMX + BFD_RELOC_VISIUM_IM16_PCREL +ENUMDOC + Visium Relocations. + +ENUM + BFD_RELOC_WASM32_LEB128 +ENUMX + BFD_RELOC_WASM32_LEB128_GOT +ENUMX + BFD_RELOC_WASM32_LEB128_GOT_CODE +ENUMX + BFD_RELOC_WASM32_LEB128_PLT +ENUMX + BFD_RELOC_WASM32_PLT_INDEX +ENUMX + BFD_RELOC_WASM32_ABS32_CODE +ENUMX + BFD_RELOC_WASM32_COPY +ENUMX + BFD_RELOC_WASM32_CODE_POINTER +ENUMX + BFD_RELOC_WASM32_INDEX +ENUMX + BFD_RELOC_WASM32_PLT_SIG +ENUMDOC + WebAssembly relocations. ENDSENUM BFD_RELOC_UNUSED @@ -6155,13 +7941,16 @@ bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code) { case 64: BFD_FAIL (); + break; case 32: return &bfd_howto_32; case 16: BFD_FAIL (); + break; default: BFD_FAIL (); } + break; default: BFD_FAIL (); } @@ -6210,7 +7999,7 @@ bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *link_info ATTRIBUTE_UNUSED, bfd_boolean *again) { - if (link_info->relocatable) + if (bfd_link_relocatable (link_info)) (*link_info->callbacks->einfo) (_("%P%F: --relax and -r may not be used together\n")); @@ -6243,23 +8032,26 @@ INTERNAL_FUNCTION bfd_generic_lookup_section_flags SYNOPSIS - void bfd_generic_lookup_section_flags - (struct bfd_link_info *, struct flag_info *); + bfd_boolean bfd_generic_lookup_section_flags + (struct bfd_link_info *, struct flag_info *, asection *); DESCRIPTION Provides default handling for section flags lookup -- i.e., does nothing. + Returns FALSE if the section should be omitted, otherwise TRUE. */ -void +bfd_boolean bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED, - struct flag_info *flaginfo) + struct flag_info *flaginfo, + asection *section ATTRIBUTE_UNUSED) { if (flaginfo != NULL) { - (*_bfd_error_handler) (_("INPUT_SECTION_FLAGS are not supported.\n")); - return; + _bfd_error_handler (_("INPUT_SECTION_FLAGS are not supported.\n")); + return FALSE; } + return TRUE; } /* @@ -6340,6 +8132,7 @@ bfd_generic_get_relocated_section_contents (bfd *abfd, if (reloc_count > 0) { arelent **parent; + for (parent = reloc_vector; *parent != NULL; parent++) { char *error_message = NULL; @@ -6347,7 +8140,18 @@ bfd_generic_get_relocated_section_contents (bfd *abfd, bfd_reloc_status_type r; symbol = *(*parent)->sym_ptr_ptr; - if (symbol->section && elf_discarded_section (symbol->section)) + /* PR ld/19628: A specially crafted input file + can result in a NULL symbol pointer here. */ + if (symbol == NULL) + { + link_info->callbacks->einfo + /* xgettext:c-format */ + (_("%X%P: %B(%A): error: relocation for offset %V has no value\n"), + abfd, input_section, (* parent)->address); + goto error_return; + } + + if (symbol->section && discarded_section (symbol->section)) { bfd_byte *p; static reloc_howto_type none_howto @@ -6357,7 +8161,7 @@ bfd_generic_get_relocated_section_contents (bfd *abfd, p = data + (*parent)->address * bfd_octets_per_byte (input_bfd); _bfd_clear_contents ((*parent)->howto, input_bfd, input_section, p); - (*parent)->sym_ptr_ptr = bfd_abs_section.symbol_ptr_ptr; + (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr; (*parent)->addend = 0; (*parent)->howto = &none_howto; r = bfd_reloc_ok; @@ -6384,26 +8188,22 @@ bfd_generic_get_relocated_section_contents (bfd *abfd, switch (r) { case bfd_reloc_undefined: - if (!((*link_info->callbacks->undefined_symbol) - (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr), - input_bfd, input_section, (*parent)->address, - TRUE))) - goto error_return; + (*link_info->callbacks->undefined_symbol) + (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr), + input_bfd, input_section, (*parent)->address, TRUE); break; case bfd_reloc_dangerous: BFD_ASSERT (error_message != NULL); - if (!((*link_info->callbacks->reloc_dangerous) - (link_info, error_message, input_bfd, input_section, - (*parent)->address))) - goto error_return; + (*link_info->callbacks->reloc_dangerous) + (link_info, error_message, + input_bfd, input_section, (*parent)->address); break; case bfd_reloc_overflow: - if (!((*link_info->callbacks->reloc_overflow) - (link_info, NULL, - bfd_asymbol_name (*(*parent)->sym_ptr_ptr), - (*parent)->howto->name, (*parent)->addend, - input_bfd, input_section, (*parent)->address))) - goto error_return; + (*link_info->callbacks->reloc_overflow) + (link_info, NULL, + bfd_asymbol_name (*(*parent)->sym_ptr_ptr), + (*parent)->howto->name, (*parent)->addend, + input_bfd, input_section, (*parent)->address); break; case bfd_reloc_outofrange: /* PR ld/13730: @@ -6411,12 +8211,28 @@ bfd_generic_get_relocated_section_contents (bfd *abfd, complete binaries. Do not abort, but issue an error message instead. */ link_info->callbacks->einfo + /* xgettext:c-format */ (_("%X%P: %B(%A): relocation \"%R\" goes out of range\n"), abfd, input_section, * parent); goto error_return; + case bfd_reloc_notsupported: + /* PR ld/17512 + This error can result when processing a corrupt binary. + Do not abort. Issue an error message instead. */ + link_info->callbacks->einfo + /* xgettext:c-format */ + (_("%X%P: %B(%A): relocation \"%R\" is not supported\n"), + abfd, input_section, * parent); + goto error_return; + default: - abort (); + /* PR 17512; file: 90c2a92e. + Report unexpected results, without aborting. */ + link_info->callbacks->einfo + /* xgettext:c-format */ + (_("%X%P: %B(%A): relocation \"%R\" returns an unrecognized value %x\n"), + abfd, input_section, * parent, r); break; }