Nios II large-GOT relocations

2014-02-03  Sandra Loosemore  <sandra@codesourcery.com>

	include/elf/
	* nios2.h (R_NIOS2_GOT_LO, R_NIOS2_GOT_HA): New.
	(R_NIOS2_CALL_LO, R_NIOS2_CALL_HA): New.
	(R_NIOS2_ILLEGAL): Adjust.

	gas/
	* config/tc-nios2.c (md_apply_fix): Test for new relocs.
	(nios2_special_reloc): Add %call_lo, %call_hiadj, %got_lo,
	%got_hiadj relocation operators.  Sort table and add comment
	to explain ordering.
	(nios2_fix_adjustable): Test for new relocs.
	* doc/c-nios2.texi (Nios II Relocations): Document new relocation
	operators.

	bfd/
	* reloc.c (BFD_RELOC_NIOS2_GOT_LO, BFD_RELOC_NIOS2_GOT_HA): New.
	(BFD_RELOC_NIOS2_CALL_LO, BFD_RELOC_NIOS2_CALL_HA): New.
	* libbfd.h: Regenerated.
	* bfd-in2.h: Regenerated.
	* elf32-nios2.c (elf_nios2_howto_table_rel): Add new relocations.
	(nios2_reloc_map): Likewise.
	(GOT_USED, CALL_USED): Renamed from GOT16_USED and CALL16_USED.
	Fixed all references.
	(nios2_elf32_relocate_section): Add new relocations.
	(nios2_elf32_check_relocs): Likewise.
	(nios2_elf32_gc_sweep_hook): Likewise.
This commit is contained in:
Sandra Loosemore 2014-02-03 08:42:42 -08:00
parent af09351e0f
commit 1c2de46353
10 changed files with 192 additions and 18 deletions

View file

@ -1,3 +1,17 @@
2014-02-03 Sandra Loosemore <sandra@codesourcery.com>
* reloc.c (BFD_RELOC_NIOS2_GOT_LO, BFD_RELOC_NIOS2_GOT_HA): New.
(BFD_RELOC_NIOS2_CALL_LO, BFD_RELOC_NIOS2_CALL_HA): New.
* libbfd.h: Regenerated.
* bfd-in2.h: Regenerated.
* elf32-nios2.c (elf_nios2_howto_table_rel): Add new relocations.
(nios2_reloc_map): Likewise.
(GOT_USED, CALL_USED): Renamed from GOT16_USED and CALL16_USED.
Fixed all references.
(nios2_elf32_relocate_section): Add new relocations.
(nios2_elf32_check_relocs): Likewise.
(nios2_elf32_gc_sweep_hook): Likewise.
2014-02-03 Alan Modra <amodra@gmail.com> 2014-02-03 Alan Modra <amodra@gmail.com>
* elf32-ppc.c (struct ppc_elf_link_hash_table): Add params. * elf32-ppc.c (struct ppc_elf_link_hash_table): Add params.

View file

@ -5227,6 +5227,10 @@ a matching LO8XG part. */
BFD_RELOC_NIOS2_RELATIVE, BFD_RELOC_NIOS2_RELATIVE,
BFD_RELOC_NIOS2_GOTOFF, BFD_RELOC_NIOS2_GOTOFF,
BFD_RELOC_NIOS2_CALL26_NOAT, BFD_RELOC_NIOS2_CALL26_NOAT,
BFD_RELOC_NIOS2_GOT_LO,
BFD_RELOC_NIOS2_GOT_HA,
BFD_RELOC_NIOS2_CALL_LO,
BFD_RELOC_NIOS2_CALL_HA,
/* IQ2000 Relocations. */ /* IQ2000 Relocations. */
BFD_RELOC_IQ2000_OFFSET_16, BFD_RELOC_IQ2000_OFFSET_16,

View file

@ -670,6 +670,62 @@ static reloc_howto_type elf_nios2_howto_table_rel[] = {
0xffffffc0, /* dst_mask */ 0xffffffc0, /* dst_mask */
FALSE), /* pcrel_offset */ FALSE), /* pcrel_offset */
HOWTO (R_NIOS2_GOT_LO,
0,
2,
16,
FALSE,
6,
complain_overflow_dont,
bfd_elf_generic_reloc,
"R_NIOS2_GOT_LO",
FALSE,
0x003fffc0,
0x003fffc0,
FALSE),
HOWTO (R_NIOS2_GOT_HA,
0,
2,
16,
FALSE,
6,
complain_overflow_dont,
bfd_elf_generic_reloc,
"R_NIOS2_GOT_HA",
FALSE,
0x003fffc0,
0x003fffc0,
FALSE),
HOWTO (R_NIOS2_CALL_LO,
0,
2,
16,
FALSE,
6,
complain_overflow_dont,
bfd_elf_generic_reloc,
"R_NIOS2_CALL_LO",
FALSE,
0x003fffc0,
0x003fffc0,
FALSE),
HOWTO (R_NIOS2_CALL_HA,
0,
2,
16,
FALSE,
6,
complain_overflow_dont,
bfd_elf_generic_reloc,
"R_NIOS2_CALL_HA",
FALSE,
0x003fffc0,
0x003fffc0,
FALSE),
/* Add other relocations here. */ /* Add other relocations here. */
}; };
@ -749,6 +805,10 @@ static const struct elf_reloc_map nios2_reloc_map[] = {
{BFD_RELOC_NIOS2_RELATIVE, R_NIOS2_RELATIVE}, {BFD_RELOC_NIOS2_RELATIVE, R_NIOS2_RELATIVE},
{BFD_RELOC_NIOS2_GOTOFF, R_NIOS2_GOTOFF}, {BFD_RELOC_NIOS2_GOTOFF, R_NIOS2_GOTOFF},
{BFD_RELOC_NIOS2_CALL26_NOAT, R_NIOS2_CALL26_NOAT}, {BFD_RELOC_NIOS2_CALL26_NOAT, R_NIOS2_CALL26_NOAT},
{BFD_RELOC_NIOS2_GOT_LO, R_NIOS2_GOT_LO},
{BFD_RELOC_NIOS2_GOT_HA, R_NIOS2_GOT_HA},
{BFD_RELOC_NIOS2_CALL_LO, R_NIOS2_CALL_LO},
{BFD_RELOC_NIOS2_CALL_HA, R_NIOS2_CALL_HA},
}; };
enum elf32_nios2_stub_type enum elf32_nios2_stub_type
@ -839,10 +899,11 @@ struct elf32_nios2_link_hash_entry
a dynamic GOT reloc in shared objects, only a dynamic PLT reloc. Lazy a dynamic GOT reloc in shared objects, only a dynamic PLT reloc. Lazy
linking will not work if the dynamic GOT reloc exists. linking will not work if the dynamic GOT reloc exists.
To check for this condition efficiently, we compare got_types_used against To check for this condition efficiently, we compare got_types_used against
CALL16_USED, meaning CALL_USED, meaning
(got_types_used & (GOT16_USED | CALL16_USED)) == CALL16_USED. */ (got_types_used & (GOT_USED | CALL_USED)) == CALL_USED.
#define GOT16_USED 1 */
#define CALL16_USED 2 #define GOT_USED 1
#define CALL_USED 2
unsigned char got_types_used; unsigned char got_types_used;
}; };
@ -2942,6 +3003,10 @@ nios2_elf32_relocate_section (bfd *output_bfd,
case R_NIOS2_GOT16: case R_NIOS2_GOT16:
case R_NIOS2_CALL16: case R_NIOS2_CALL16:
case R_NIOS2_GOT_LO:
case R_NIOS2_GOT_HA:
case R_NIOS2_CALL_LO:
case R_NIOS2_CALL_HA:
/* Relocation is to the entry for this symbol in the /* Relocation is to the entry for this symbol in the
global offset table. */ global offset table. */
if (sgot == NULL) if (sgot == NULL)
@ -2957,7 +3022,7 @@ nios2_elf32_relocate_section (bfd *output_bfd,
bfd_boolean dyn; bfd_boolean dyn;
eh = (struct elf32_nios2_link_hash_entry *)h; eh = (struct elf32_nios2_link_hash_entry *)h;
use_plt = (eh->got_types_used == CALL16_USED use_plt = (eh->got_types_used == CALL_USED
&& h->plt.offset != (bfd_vma) -1); && h->plt.offset != (bfd_vma) -1);
off = h->got.offset; off = h->got.offset;
@ -3044,9 +3109,30 @@ nios2_elf32_relocate_section (bfd *output_bfd,
/* This relocation does not use the addend. */ /* This relocation does not use the addend. */
rel->r_addend = 0; rel->r_addend = 0;
r = _bfd_final_link_relocate (howto, input_bfd, input_section, switch (howto->type)
contents, rel->r_offset, {
relocation, rel->r_addend); case R_NIOS2_GOT_LO:
case R_NIOS2_CALL_LO:
r = nios2_elf32_do_lo16_relocate (input_bfd, howto,
input_section, contents,
rel->r_offset, relocation,
rel->r_addend);
break;
case R_NIOS2_GOT_HA:
case R_NIOS2_CALL_HA:
r = nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
input_section, contents,
rel->r_offset,
relocation,
rel->r_addend);
break;
default:
r = _bfd_final_link_relocate (howto, input_bfd,
input_section, contents,
rel->r_offset, relocation,
rel->r_addend);
break;
}
break; break;
case R_NIOS2_GOTOFF_LO: case R_NIOS2_GOTOFF_LO:
@ -3671,7 +3757,11 @@ nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
switch (r_type) switch (r_type)
{ {
case R_NIOS2_GOT16: case R_NIOS2_GOT16:
case R_NIOS2_GOT_LO:
case R_NIOS2_GOT_HA:
case R_NIOS2_CALL16: case R_NIOS2_CALL16:
case R_NIOS2_CALL_LO:
case R_NIOS2_CALL_HA:
case R_NIOS2_TLS_GD16: case R_NIOS2_TLS_GD16:
case R_NIOS2_TLS_IE16: case R_NIOS2_TLS_IE16:
/* This symbol requires a global offset table entry. */ /* This symbol requires a global offset table entry. */
@ -3682,7 +3772,11 @@ nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
{ {
default: default:
case R_NIOS2_GOT16: case R_NIOS2_GOT16:
case R_NIOS2_GOT_LO:
case R_NIOS2_GOT_HA:
case R_NIOS2_CALL16: case R_NIOS2_CALL16:
case R_NIOS2_CALL_LO:
case R_NIOS2_CALL_HA:
tls_type = GOT_NORMAL; tls_type = GOT_NORMAL;
break; break;
case R_NIOS2_TLS_GD16: case R_NIOS2_TLS_GD16:
@ -3719,7 +3813,9 @@ nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
= (struct elf32_nios2_link_hash_entry *)h; = (struct elf32_nios2_link_hash_entry *)h;
h->got.refcount++; h->got.refcount++;
old_tls_type = elf32_nios2_hash_entry(h)->tls_type; old_tls_type = elf32_nios2_hash_entry(h)->tls_type;
if (r_type == R_NIOS2_CALL16) if (r_type == R_NIOS2_CALL16
|| r_type == R_NIOS2_CALL_LO
|| r_type == R_NIOS2_CALL_HA)
{ {
/* Make sure a plt entry is created for this symbol if /* Make sure a plt entry is created for this symbol if
it turns out to be a function defined by a dynamic it turns out to be a function defined by a dynamic
@ -3727,10 +3823,10 @@ nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
h->plt.refcount++; h->plt.refcount++;
h->needs_plt = 1; h->needs_plt = 1;
h->type = STT_FUNC; h->type = STT_FUNC;
eh->got_types_used |= CALL16_USED; eh->got_types_used |= CALL_USED;
} }
else else
eh->got_types_used |= GOT16_USED; eh->got_types_used |= GOT_USED;
} }
else else
{ {
@ -3964,7 +4060,11 @@ nios2_elf32_gc_sweep_hook (bfd *abfd,
switch (r_type) switch (r_type)
{ {
case R_NIOS2_GOT16: case R_NIOS2_GOT16:
case R_NIOS2_GOT_LO:
case R_NIOS2_GOT_HA:
case R_NIOS2_CALL16: case R_NIOS2_CALL16:
case R_NIOS2_CALL_LO:
case R_NIOS2_CALL_HA:
if (h != NULL) if (h != NULL)
{ {
if (h->got.refcount > 0) if (h->got.refcount > 0)
@ -4114,7 +4214,7 @@ nios2_elf32_finish_dynamic_symbol (bfd *output_bfd,
} }
} }
use_plt = (eh->got_types_used == CALL16_USED use_plt = (eh->got_types_used == CALL_USED
&& h->plt.offset != (bfd_vma) -1); && h->plt.offset != (bfd_vma) -1);
if (!use_plt && h->got.offset != (bfd_vma) -1 if (!use_plt && h->got.offset != (bfd_vma) -1
@ -4587,7 +4687,7 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
} }
eh = (struct elf32_nios2_link_hash_entry *) h; eh = (struct elf32_nios2_link_hash_entry *) h;
use_plt = (eh->got_types_used == CALL16_USED use_plt = (eh->got_types_used == CALL_USED
&& h->plt.offset != (bfd_vma) -1); && h->plt.offset != (bfd_vma) -1);
if (h->got.refcount > 0) if (h->got.refcount > 0)

View file

@ -2533,6 +2533,10 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_NIOS2_RELATIVE", "BFD_RELOC_NIOS2_RELATIVE",
"BFD_RELOC_NIOS2_GOTOFF", "BFD_RELOC_NIOS2_GOTOFF",
"BFD_RELOC_NIOS2_CALL26_NOAT", "BFD_RELOC_NIOS2_CALL26_NOAT",
"BFD_RELOC_NIOS2_GOT_LO",
"BFD_RELOC_NIOS2_GOT_HA",
"BFD_RELOC_NIOS2_CALL_LO",
"BFD_RELOC_NIOS2_CALL_HA",
"BFD_RELOC_IQ2000_OFFSET_16", "BFD_RELOC_IQ2000_OFFSET_16",
"BFD_RELOC_IQ2000_OFFSET_21", "BFD_RELOC_IQ2000_OFFSET_21",
"BFD_RELOC_IQ2000_UHI16", "BFD_RELOC_IQ2000_UHI16",

View file

@ -6067,6 +6067,14 @@ ENUMX
BFD_RELOC_NIOS2_GOTOFF BFD_RELOC_NIOS2_GOTOFF
ENUMX ENUMX
BFD_RELOC_NIOS2_CALL26_NOAT 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
ENUMDOC ENUMDOC
Relocations used by the Altera Nios II core. Relocations used by the Altera Nios II core.

View file

@ -1,3 +1,13 @@
2014-02-03 Sandra Loosemore <sandra@codesourcery.com>
* config/tc-nios2.c (md_apply_fix): Test for new relocs.
(nios2_special_reloc): Add %call_lo, %call_hiadj, %got_lo,
%got_hiadj relocation operators. Sort table and add comment
to explain ordering.
(nios2_fix_adjustable): Test for new relocs.
* doc/c-nios2.texi (Nios II Relocations): Document new relocation
operators.
2014-01-30 Sandra Loosemore <sandra@codesourcery.com> 2014-01-30 Sandra Loosemore <sandra@codesourcery.com>
* config/tc-nios2.c (md_apply_fix): Handle BFD_RELOC_NIOS2_CALL26_NOAT. * config/tc-nios2.c (md_apply_fix): Handle BFD_RELOC_NIOS2_CALL26_NOAT.

View file

@ -1139,7 +1139,6 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
|| fixP->fx_r_type == BFD_RELOC_NIOS2_U16 || fixP->fx_r_type == BFD_RELOC_NIOS2_U16
|| fixP->fx_r_type == BFD_RELOC_16_PCREL || fixP->fx_r_type == BFD_RELOC_16_PCREL
|| fixP->fx_r_type == BFD_RELOC_NIOS2_CALL26 || fixP->fx_r_type == BFD_RELOC_NIOS2_CALL26
|| fixP->fx_r_type == BFD_RELOC_NIOS2_CALL26_NOAT
|| fixP->fx_r_type == BFD_RELOC_NIOS2_IMM5 || fixP->fx_r_type == BFD_RELOC_NIOS2_IMM5
|| fixP->fx_r_type == BFD_RELOC_NIOS2_CACHE_OPX || fixP->fx_r_type == BFD_RELOC_NIOS2_CACHE_OPX
|| fixP->fx_r_type == BFD_RELOC_NIOS2_IMM6 || fixP->fx_r_type == BFD_RELOC_NIOS2_IMM6
@ -1165,6 +1164,11 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
|| fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_LE16 || fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_LE16
|| fixP->fx_r_type == BFD_RELOC_NIOS2_GOTOFF || fixP->fx_r_type == BFD_RELOC_NIOS2_GOTOFF
|| fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPREL || fixP->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPREL
|| fixP->fx_r_type == BFD_RELOC_NIOS2_CALL26_NOAT
|| fixP->fx_r_type == BFD_RELOC_NIOS2_GOT_LO
|| fixP->fx_r_type == BFD_RELOC_NIOS2_GOT_HA
|| fixP->fx_r_type == BFD_RELOC_NIOS2_CALL_LO
|| fixP->fx_r_type == BFD_RELOC_NIOS2_CALL_HA
/* Add other relocs here as we generate them. */ /* Add other relocs here as we generate them. */
)); ));
@ -1301,21 +1305,28 @@ struct nios2_special_relocS
bfd_reloc_code_real_type reloc_type; bfd_reloc_code_real_type reloc_type;
}; };
/* This table is sorted so that prefix strings are listed after the longer
strings that include them -- e.g., %got after %got_hiadj, etc. */
struct nios2_special_relocS nios2_special_reloc[] = { struct nios2_special_relocS nios2_special_reloc[] = {
{"%hiadj", BFD_RELOC_NIOS2_HIADJ16}, {"%hiadj", BFD_RELOC_NIOS2_HIADJ16},
{"%hi", BFD_RELOC_NIOS2_HI16}, {"%hi", BFD_RELOC_NIOS2_HI16},
{"%lo", BFD_RELOC_NIOS2_LO16}, {"%lo", BFD_RELOC_NIOS2_LO16},
{"%gprel", BFD_RELOC_NIOS2_GPREL}, {"%gprel", BFD_RELOC_NIOS2_GPREL},
{"%call_lo", BFD_RELOC_NIOS2_CALL_LO},
{"%call_hiadj", BFD_RELOC_NIOS2_CALL_HA},
{"%call", BFD_RELOC_NIOS2_CALL16}, {"%call", BFD_RELOC_NIOS2_CALL16},
{"%gotoff_lo", BFD_RELOC_NIOS2_GOTOFF_LO}, {"%gotoff_lo", BFD_RELOC_NIOS2_GOTOFF_LO},
{"%gotoff_hiadj", BFD_RELOC_NIOS2_GOTOFF_HA}, {"%gotoff_hiadj", BFD_RELOC_NIOS2_GOTOFF_HA},
{"%gotoff", BFD_RELOC_NIOS2_GOTOFF},
{"%got_hiadj", BFD_RELOC_NIOS2_GOT_HA},
{"%got_lo", BFD_RELOC_NIOS2_GOT_LO},
{"%got", BFD_RELOC_NIOS2_GOT16},
{"%tls_gd", BFD_RELOC_NIOS2_TLS_GD16}, {"%tls_gd", BFD_RELOC_NIOS2_TLS_GD16},
{"%tls_ldm", BFD_RELOC_NIOS2_TLS_LDM16}, {"%tls_ldm", BFD_RELOC_NIOS2_TLS_LDM16},
{"%tls_ldo", BFD_RELOC_NIOS2_TLS_LDO16}, {"%tls_ldo", BFD_RELOC_NIOS2_TLS_LDO16},
{"%tls_ie", BFD_RELOC_NIOS2_TLS_IE16}, {"%tls_ie", BFD_RELOC_NIOS2_TLS_IE16},
{"%tls_le", BFD_RELOC_NIOS2_TLS_LE16}, {"%tls_le", BFD_RELOC_NIOS2_TLS_LE16},
{"%gotoff", BFD_RELOC_NIOS2_GOTOFF},
{"%got", BFD_RELOC_NIOS2_GOT16}
}; };
#define NIOS2_NUM_SPECIAL_RELOCS \ #define NIOS2_NUM_SPECIAL_RELOCS \
@ -2824,7 +2835,12 @@ nios2_fix_adjustable (fixS *fixp)
|| fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPMOD || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPMOD
|| fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPREL || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_DTPREL
|| fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_TPREL || fixp->fx_r_type == BFD_RELOC_NIOS2_TLS_TPREL
|| fixp->fx_r_type == BFD_RELOC_NIOS2_GOTOFF) || fixp->fx_r_type == BFD_RELOC_NIOS2_GOTOFF
|| fixp->fx_r_type == BFD_RELOC_NIOS2_GOT_LO
|| fixp->fx_r_type == BFD_RELOC_NIOS2_GOT_HA
|| fixp->fx_r_type == BFD_RELOC_NIOS2_CALL_LO
|| fixp->fx_r_type == BFD_RELOC_NIOS2_CALL_HA
)
return 0; return 0;
return 1; return 1;

View file

@ -131,7 +131,11 @@ fastint:
@end smallexample @end smallexample
@cindex @code{call} directive, Nios II @cindex @code{call} directive, Nios II
@cindex @code{call_lo} directive, Nios II
@cindex @code{call_hiadj} directive, Nios II
@cindex @code{got} directive, Nios II @cindex @code{got} directive, Nios II
@cindex @code{got_lo} directive, Nios II
@cindex @code{got_hiadj} directive, Nios II
@cindex @code{gotoff} directive, Nios II @cindex @code{gotoff} directive, Nios II
@cindex @code{gotoff_lo} directive, Nios II @cindex @code{gotoff_lo} directive, Nios II
@cindex @code{gotoff_hiadj} directive, Nios II @cindex @code{gotoff_hiadj} directive, Nios II
@ -141,7 +145,11 @@ fastint:
@cindex @code{tls_ldm} directive, Nios II @cindex @code{tls_ldm} directive, Nios II
@cindex @code{tls_ldo} directive, Nios II @cindex @code{tls_ldo} directive, Nios II
@item %call(@var{expression}) @item %call(@var{expression})
@item %call_lo(@var{expression})
@item %call_hiadj(@var{expression})
@itemx %got(@var{expression}) @itemx %got(@var{expression})
@itemx %got_lo(@var{expression})
@itemx %got_hiadj(@var{expression})
@itemx %gotoff(@var{expression}) @itemx %gotoff(@var{expression})
@itemx %gotoff_lo(@var{expression}) @itemx %gotoff_lo(@var{expression})
@itemx %gotoff_hiadj(@var{expression}) @itemx %gotoff_hiadj(@var{expression})

View file

@ -1,3 +1,9 @@
2014-02-03 Sandra Loosemore <sandra@codesourcery.com>
* nios2.h (R_NIOS2_GOT_LO, R_NIOS2_GOT_HA): New.
(R_NIOS2_CALL_LO, R_NIOS2_CALL_HA): New.
(R_NIOS2_ILLEGAL): Adjust.
2014-01-30 Sandra Loosemore <sandra@codesourcery.com> 2014-01-30 Sandra Loosemore <sandra@codesourcery.com>
* nios2.h (elf_nios2_reloc_type): Add R_NIOS2_CALL26_NOAT. * nios2.h (elf_nios2_reloc_type): Add R_NIOS2_CALL26_NOAT.

View file

@ -76,7 +76,11 @@ START_RELOC_NUMBERS (elf_nios2_reloc_type)
RELOC_NUMBER (R_NIOS2_RELATIVE, 39) RELOC_NUMBER (R_NIOS2_RELATIVE, 39)
RELOC_NUMBER (R_NIOS2_GOTOFF, 40) RELOC_NUMBER (R_NIOS2_GOTOFF, 40)
RELOC_NUMBER (R_NIOS2_CALL26_NOAT, 41) RELOC_NUMBER (R_NIOS2_CALL26_NOAT, 41)
RELOC_NUMBER (R_NIOS2_ILLEGAL, 42) RELOC_NUMBER (R_NIOS2_GOT_LO, 42)
RELOC_NUMBER (R_NIOS2_GOT_HA, 43)
RELOC_NUMBER (R_NIOS2_CALL_LO, 44)
RELOC_NUMBER (R_NIOS2_CALL_HA, 45)
RELOC_NUMBER (R_NIOS2_ILLEGAL, 46)
END_RELOC_NUMBERS (R_NIOS2_maxext) END_RELOC_NUMBERS (R_NIOS2_maxext)
/* Processor-specific section flags. */ /* Processor-specific section flags. */