Get rid of the -1 dummy valued enum in START_RELOC_NUMBERS.

Remove duplicate reloc enums in elf32-d[13]0v.c
Remove EMPTY_HOWTOs in elf32-i386.c
This commit is contained in:
Alan Modra
2000-06-07 03:43:33 +00:00
parent 3e0bf9f1f0
commit 1b452ec66b
30 changed files with 177 additions and 149 deletions

View File

@ -1,3 +1,20 @@
2000-06-07 Alan Modra <alan@linuxcare.com.au>
* elf32-d10v.c: Include elf/d10v.h
(enum reloc_type): Delete.
* elf32-d30v.c: Include elf/d30v.h
(enum reloc_type): Delete.
* Makefile.am: Run "make dep-am" to regenerate dependencies.
* Makefile.in: Regenerate.
* elf32-i386.c (elf_howto_table): Remove EMPTY_HOWTOs.
(R_386_standard, R_386_ext_offset): Define.
(elf_i386_reloc_type_lookup): Modify calculation of index into
elf_howto_table since we've removed the gap.
(elf_i386_info_to_howto_rel): Likewise.
(elf_i386_relocate_section): Likewise.
2000-06-06 Michael Snyder <msnyder@seadog.cygnus.com> 2000-06-06 Michael Snyder <msnyder@seadog.cygnus.com>
* elf.c (elf_grok_pr_status): Eliminate reference to prgregset_t. * elf.c (elf_grok_pr_status): Eliminate reference to prgregset_t.

View File

@ -900,10 +900,12 @@ elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
elf32-target.h elf32-target.h
elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h elf32-target.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/d10v.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h elf32-target.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \

View File

@ -1428,10 +1428,12 @@ elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \
elf32-target.h elf32-target.h
elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-d10v.lo: elf32-d10v.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h elf32-target.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/d10v.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-d30v.lo: elf32-d30v.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h elf32-target.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/d30v.h $(INCDIR)/elf/reloc-macros.h \
elf32-target.h
elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-fr30.lo: elf32-fr30.c $(INCDIR)/filenames.h elf-bfd.h \
$(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \
$(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \

View File

@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h" #include "sysdep.h"
#include "libbfd.h" #include "libbfd.h"
#include "elf-bfd.h" #include "elf-bfd.h"
/* #include "elf/d10v.h" */ #include "elf/d10v.h"
static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
@ -33,20 +33,6 @@ static void d10v_info_to_howto_rel
/* Use REL instead of RELA to save space */ /* Use REL instead of RELA to save space */
#define USE_REL #define USE_REL
enum reloc_type
{
R_D10V_NONE = 0,
R_D10V_10_PCREL_R,
R_D10V_10_PCREL_L,
R_D10V_16,
R_D10V_18,
R_D10V_18_PCREL,
R_D10V_32,
R_D10V_GNU_VTINHERIT,
R_D10V_GNU_VTENTRY,
R_D10V_max
};
static reloc_howto_type elf_d10v_howto_table[] = static reloc_howto_type elf_d10v_howto_table[] =
{ {
/* This reloc does nothing. */ /* This reloc does nothing. */

View File

@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h" #include "sysdep.h"
#include "libbfd.h" #include "libbfd.h"
#include "elf-bfd.h" #include "elf-bfd.h"
#include "elf/d30v.h"
static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
@ -46,24 +47,6 @@ static bfd_reloc_status_type bfd_elf_d30v_reloc_21 PARAMS ((
bfd *output_bfd, bfd *output_bfd,
char **error_message)); char **error_message));
enum reloc_type
{
R_D30V_NONE = 0,
R_D30V_6,
R_D30V_9_PCREL,
R_D30V_9_PCREL_R,
R_D30V_15,
R_D30V_15_PCREL,
R_D30V_15_PCREL_R,
R_D30V_21,
R_D30V_21_PCREL,
R_D30V_21_PCREL_R,
R_D30V_32,
R_D30V_32_PCREL,
R_D30V_32_NORMAL,
R_D30V_max
};
static reloc_howto_type elf_d30v_howto_table[] = static reloc_howto_type elf_d30v_howto_table[] =
{ {
/* This reloc does nothing. */ /* This reloc does nothing. */

View File

@ -56,31 +56,56 @@ static boolean elf_i386_finish_dynamic_sections
static reloc_howto_type elf_howto_table[]= static reloc_howto_type elf_howto_table[]=
{ {
HOWTO(R_386_NONE, 0,0, 0,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_NONE", true,0x00000000,0x00000000,false), HOWTO(R_386_NONE, 0, 0, 0, false, 0, complain_overflow_bitfield,
HOWTO(R_386_32, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_32", true,0xffffffff,0xffffffff,false), bfd_elf_generic_reloc, "R_386_NONE",
HOWTO(R_386_PC32, 0,2,32,true, 0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PC32", true,0xffffffff,0xffffffff,true), true, 0x00000000, 0x00000000, false),
HOWTO(R_386_GOT32, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GOT32", true,0xffffffff,0xffffffff,false), HOWTO(R_386_32, 0, 2, 32, false, 0, complain_overflow_bitfield,
HOWTO(R_386_PLT32, 0,2,32,true,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PLT32", true,0xffffffff,0xffffffff,true), bfd_elf_generic_reloc, "R_386_32",
HOWTO(R_386_COPY, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_COPY", true,0xffffffff,0xffffffff,false), true, 0xffffffff, 0xffffffff, false),
HOWTO(R_386_GLOB_DAT, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GLOB_DAT", true,0xffffffff,0xffffffff,false), HOWTO(R_386_PC32, 0, 2, 32, true, 0, complain_overflow_bitfield,
HOWTO(R_386_JUMP_SLOT, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_JUMP_SLOT",true,0xffffffff,0xffffffff,false), bfd_elf_generic_reloc, "R_386_PC32",
HOWTO(R_386_RELATIVE, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_RELATIVE", true,0xffffffff,0xffffffff,false), true, 0xffffffff, 0xffffffff, true),
HOWTO(R_386_GOTOFF, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GOTOFF", true,0xffffffff,0xffffffff,false), HOWTO(R_386_GOT32, 0, 2, 32, false, 0, complain_overflow_bitfield,
HOWTO(R_386_GOTPC, 0,2,32,true,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_GOTPC", true,0xffffffff,0xffffffff,true), bfd_elf_generic_reloc, "R_386_GOT32",
EMPTY_HOWTO (11), true, 0xffffffff, 0xffffffff, false),
EMPTY_HOWTO (12), HOWTO(R_386_PLT32, 0, 2, 32, true, 0, complain_overflow_bitfield,
EMPTY_HOWTO (13), bfd_elf_generic_reloc, "R_386_PLT32",
EMPTY_HOWTO (14), true, 0xffffffff, 0xffffffff, true),
EMPTY_HOWTO (15), HOWTO(R_386_COPY, 0, 2, 32, false, 0, complain_overflow_bitfield,
EMPTY_HOWTO (16), bfd_elf_generic_reloc, "R_386_COPY",
EMPTY_HOWTO (17), true, 0xffffffff, 0xffffffff, false),
EMPTY_HOWTO (18), HOWTO(R_386_GLOB_DAT, 0, 2, 32, false, 0, complain_overflow_bitfield,
EMPTY_HOWTO (19), bfd_elf_generic_reloc, "R_386_GLOB_DAT",
true, 0xffffffff, 0xffffffff, false),
HOWTO(R_386_JUMP_SLOT, 0, 2, 32, false, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_JUMP_SLOT",
true, 0xffffffff, 0xffffffff, false),
HOWTO(R_386_RELATIVE, 0, 2, 32, false, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_RELATIVE",
true, 0xffffffff, 0xffffffff, false),
HOWTO(R_386_GOTOFF, 0, 2, 32, false, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_GOTOFF",
true, 0xffffffff, 0xffffffff, false),
HOWTO(R_386_GOTPC, 0, 2, 32, true, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_GOTPC",
true, 0xffffffff, 0xffffffff, true),
#define R_386_standard ((unsigned int) R_386_GOTPC + 1)
#define R_386_ext_offset ((unsigned int) R_386_16 - R_386_standard)
/* The remaining relocs are a GNU extension. */ /* The remaining relocs are a GNU extension. */
HOWTO(R_386_16, 0,1,16,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_16", true,0xffff,0xffff,false), HOWTO(R_386_16, 0, 1, 16, false, 0, complain_overflow_bitfield,
HOWTO(R_386_PC16, 0,1,16,true, 0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PC16", true,0xffff,0xffff,true), bfd_elf_generic_reloc, "R_386_16",
HOWTO(R_386_8, 0,0,8,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_8", true,0xff,0xff,false), true, 0xffff, 0xffff, false),
HOWTO(R_386_PC8, 0,0,8,true, 0,complain_overflow_signed, bfd_elf_generic_reloc,"R_386_PC8", true,0xff,0xff,true), HOWTO(R_386_PC16, 0, 1, 16, true, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_PC16",
true, 0xffff, 0xffff, true),
HOWTO(R_386_8, 0, 0, 8, false, 0, complain_overflow_bitfield,
bfd_elf_generic_reloc, "R_386_8",
true, 0xff, 0xff, false),
HOWTO(R_386_PC8, 0, 0, 8, true, 0, complain_overflow_signed,
bfd_elf_generic_reloc, "R_386_PC8",
true, 0xff, 0xff, true)
}; };
/* GNU extension to record C++ vtable hierarchy. */ /* GNU extension to record C++ vtable hierarchy. */
@ -130,68 +155,68 @@ elf_i386_reloc_type_lookup (abfd, code)
{ {
case BFD_RELOC_NONE: case BFD_RELOC_NONE:
TRACE ("BFD_RELOC_NONE"); TRACE ("BFD_RELOC_NONE");
return &elf_howto_table[ (int)R_386_NONE ]; return &elf_howto_table[(unsigned int) R_386_NONE ];
case BFD_RELOC_32: case BFD_RELOC_32:
TRACE ("BFD_RELOC_32"); TRACE ("BFD_RELOC_32");
return &elf_howto_table[ (int)R_386_32 ]; return &elf_howto_table[(unsigned int) R_386_32 ];
case BFD_RELOC_CTOR: case BFD_RELOC_CTOR:
TRACE ("BFD_RELOC_CTOR"); TRACE ("BFD_RELOC_CTOR");
return &elf_howto_table[ (int)R_386_32 ]; return &elf_howto_table[(unsigned int) R_386_32 ];
case BFD_RELOC_32_PCREL: case BFD_RELOC_32_PCREL:
TRACE ("BFD_RELOC_PC32"); TRACE ("BFD_RELOC_PC32");
return &elf_howto_table[ (int)R_386_PC32 ]; return &elf_howto_table[(unsigned int) R_386_PC32 ];
case BFD_RELOC_386_GOT32: case BFD_RELOC_386_GOT32:
TRACE ("BFD_RELOC_386_GOT32"); TRACE ("BFD_RELOC_386_GOT32");
return &elf_howto_table[ (int)R_386_GOT32 ]; return &elf_howto_table[(unsigned int) R_386_GOT32 ];
case BFD_RELOC_386_PLT32: case BFD_RELOC_386_PLT32:
TRACE ("BFD_RELOC_386_PLT32"); TRACE ("BFD_RELOC_386_PLT32");
return &elf_howto_table[ (int)R_386_PLT32 ]; return &elf_howto_table[(unsigned int) R_386_PLT32 ];
case BFD_RELOC_386_COPY: case BFD_RELOC_386_COPY:
TRACE ("BFD_RELOC_386_COPY"); TRACE ("BFD_RELOC_386_COPY");
return &elf_howto_table[ (int)R_386_COPY ]; return &elf_howto_table[(unsigned int) R_386_COPY ];
case BFD_RELOC_386_GLOB_DAT: case BFD_RELOC_386_GLOB_DAT:
TRACE ("BFD_RELOC_386_GLOB_DAT"); TRACE ("BFD_RELOC_386_GLOB_DAT");
return &elf_howto_table[ (int)R_386_GLOB_DAT ]; return &elf_howto_table[(unsigned int) R_386_GLOB_DAT ];
case BFD_RELOC_386_JUMP_SLOT: case BFD_RELOC_386_JUMP_SLOT:
TRACE ("BFD_RELOC_386_JUMP_SLOT"); TRACE ("BFD_RELOC_386_JUMP_SLOT");
return &elf_howto_table[ (int)R_386_JUMP_SLOT ]; return &elf_howto_table[(unsigned int) R_386_JUMP_SLOT ];
case BFD_RELOC_386_RELATIVE: case BFD_RELOC_386_RELATIVE:
TRACE ("BFD_RELOC_386_RELATIVE"); TRACE ("BFD_RELOC_386_RELATIVE");
return &elf_howto_table[ (int)R_386_RELATIVE ]; return &elf_howto_table[(unsigned int) R_386_RELATIVE ];
case BFD_RELOC_386_GOTOFF: case BFD_RELOC_386_GOTOFF:
TRACE ("BFD_RELOC_386_GOTOFF"); TRACE ("BFD_RELOC_386_GOTOFF");
return &elf_howto_table[ (int)R_386_GOTOFF ]; return &elf_howto_table[(unsigned int) R_386_GOTOFF ];
case BFD_RELOC_386_GOTPC: case BFD_RELOC_386_GOTPC:
TRACE ("BFD_RELOC_386_GOTPC"); TRACE ("BFD_RELOC_386_GOTPC");
return &elf_howto_table[ (int)R_386_GOTPC ]; return &elf_howto_table[(unsigned int) R_386_GOTPC ];
/* The remaining relocs are a GNU extension. */ /* The remaining relocs are a GNU extension. */
case BFD_RELOC_16: case BFD_RELOC_16:
TRACE ("BFD_RELOC_16"); TRACE ("BFD_RELOC_16");
return &elf_howto_table[(int) R_386_16]; return &elf_howto_table[(unsigned int) R_386_16 - R_386_ext_offset];
case BFD_RELOC_16_PCREL: case BFD_RELOC_16_PCREL:
TRACE ("BFD_RELOC_16_PCREL"); TRACE ("BFD_RELOC_16_PCREL");
return &elf_howto_table[(int) R_386_PC16]; return &elf_howto_table[(unsigned int) R_386_PC16 - R_386_ext_offset];
case BFD_RELOC_8: case BFD_RELOC_8:
TRACE ("BFD_RELOC_8"); TRACE ("BFD_RELOC_8");
return &elf_howto_table[(int) R_386_8]; return &elf_howto_table[(unsigned int) R_386_8 - R_386_ext_offset];
case BFD_RELOC_8_PCREL: case BFD_RELOC_8_PCREL:
TRACE ("BFD_RELOC_8_PCREL"); TRACE ("BFD_RELOC_8_PCREL");
return &elf_howto_table[(int) R_386_PC8]; return &elf_howto_table[(unsigned int) R_386_PC8 - R_386_ext_offset];
case BFD_RELOC_VTABLE_INHERIT: case BFD_RELOC_VTABLE_INHERIT:
TRACE ("BFD_RELOC_VTABLE_INHERIT"); TRACE ("BFD_RELOC_VTABLE_INHERIT");
@ -231,14 +256,19 @@ elf_i386_info_to_howto_rel (abfd, cache_ptr, dst)
cache_ptr->howto = &elf32_i386_vtinherit_howto; cache_ptr->howto = &elf32_i386_vtinherit_howto;
else if (type == R_386_GNU_VTENTRY) else if (type == R_386_GNU_VTENTRY)
cache_ptr->howto = &elf32_i386_vtentry_howto; cache_ptr->howto = &elf32_i386_vtentry_howto;
else if (type < R_386_max
&& (type < FIRST_INVALID_RELOC || type > LAST_INVALID_RELOC))
cache_ptr->howto = &elf_howto_table[(int) type];
else else
{ {
(*_bfd_error_handler) (_("%s: invalid relocation type %d"), unsigned int indx;
bfd_get_filename (abfd), (int) type);
cache_ptr->howto = &elf_howto_table[(int) R_386_NONE]; if ((indx = (unsigned int) type) >= R_386_standard
&& ((indx = (unsigned int) type - R_386_ext_offset)
>= sizeof (elf_howto_table) / sizeof (elf_howto_table[0])))
{
(*_bfd_error_handler) (_("%s: invalid relocation type %d"),
bfd_get_filename (abfd), (int) type);
indx = (unsigned int) R_386_NONE;
}
cache_ptr->howto = &elf_howto_table[indx];
} }
} }
@ -1283,20 +1313,20 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
asection *sec; asection *sec;
bfd_vma relocation; bfd_vma relocation;
bfd_reloc_status_type r; bfd_reloc_status_type r;
unsigned int indx;
r_type = ELF32_R_TYPE (rel->r_info); r_type = ELF32_R_TYPE (rel->r_info);
if (r_type == R_386_GNU_VTINHERIT if (r_type == R_386_GNU_VTINHERIT
|| r_type == R_386_GNU_VTENTRY) || r_type == R_386_GNU_VTENTRY)
continue; continue;
if (r_type < 0 if ((indx = (unsigned) r_type) >= R_386_standard
|| r_type >= (int) R_386_max && ((indx = (unsigned) r_type - R_386_ext_offset)
|| (r_type >= (int) FIRST_INVALID_RELOC >= sizeof (elf_howto_table) / sizeof (elf_howto_table[0])))
&& r_type <= (int) LAST_INVALID_RELOC))
{ {
bfd_set_error (bfd_error_bad_value); bfd_set_error (bfd_error_bad_value);
return false; return false;
} }
howto = elf_howto_table + r_type; howto = elf_howto_table + indx;
r_symndx = ELF32_R_SYM (rel->r_info); r_symndx = ELF32_R_SYM (rel->r_info);

View File

@ -1,3 +1,38 @@
2000-06-06 Alan Modra <alan@linuxcare.com.au>
* reloc-macros.h (START_RELOC_NUMBERS): Don't define initial dummy
-1 valued enum.
(RELOC_NUMBER, FAKE_RELOC, EMPTY_RELOC): Append rather than
prepend comma.
(END_RELOC_NUMBERS): Give macro an arg to define as last enum.
* alpha.h (R_ALPHA_max): Define via END_RELOC_NUMBERS rather than
with EMPTY_RELOC.
* arc.h (R_ARC_max): Likewise.
* avr.h (R_AVR_max): Likewise.
* fr30.h (R_FR30_max): Likewise.
* hppa.h (R_PARISC_UNIMPLEMENTED): Likewise.
* i960.h (R_960_max): Likewise.
* m32r.h (R_M32R_max): Likewise.
* m68k.h (R_68K_max): Likewise.
* mcore.h (R_MCORE_max): Likewise.
* mn10300.h (R_MN10300_MAX): Likewise.
* pj.h (R_PJ_max): Likewise.
* ppc.h (R_PPC_max): Likewise.
* sh.h (R_SH_max): Likewise.
* sparc.h (R_SPARC_max): Likewise.
* v850.h (R_V850_max): Likewise.
* arm.h (R_ARM_max): Define via END_RELOC_NUMBERS.
* d10v.h (R_D10V_max): Likewise.
* d30v.h (R_D30V_max): Likewise.
* ia64.h (R_IA64_max): Likewise.
* mips.h (R_MIPS_maxext): Likewise.
* mn10200.h (R_MN10200_max): Likewise.
* i386.h (R_386_max): Remove old RELOC_NUMBER definition, and
define via END_RELOC_NUMBERS.
2000-06-03 Alan Modra <alan@linuxcare.com.au> 2000-06-03 Alan Modra <alan@linuxcare.com.au>
* reloc-macros.h (START_RELOC_NUMBERS): Fix name clash for * reloc-macros.h (START_RELOC_NUMBERS): Fix name clash for

View File

@ -102,7 +102,6 @@ START_RELOC_NUMBERS (elf_alpha_reloc_type)
RELOC_NUMBER (R_ALPHA_JMP_SLOT, 26) /* Create PLT entry */ RELOC_NUMBER (R_ALPHA_JMP_SLOT, 26) /* Create PLT entry */
RELOC_NUMBER (R_ALPHA_RELATIVE, 27) /* Adjust by program base */ RELOC_NUMBER (R_ALPHA_RELATIVE, 27) /* Adjust by program base */
EMPTY_RELOC (R_ALPHA_max) END_RELOC_NUMBERS (R_ALPHA_max)
END_RELOC_NUMBERS
#endif /* _ELF_ALPHA_H */ #endif /* _ELF_ALPHA_H */

View File

@ -31,8 +31,7 @@ START_RELOC_NUMBERS (elf_arc_reloc_type)
RELOC_NUMBER (R_ARC_32, 1) RELOC_NUMBER (R_ARC_32, 1)
RELOC_NUMBER (R_ARC_B26, 2) RELOC_NUMBER (R_ARC_B26, 2)
RELOC_NUMBER (R_ARC_B22_PCREL, 3) RELOC_NUMBER (R_ARC_B22_PCREL, 3)
EMPTY_RELOC (R_ARC_max) END_RELOC_NUMBERS (R_ARC_max)
END_RELOC_NUMBERS
/* Processor specific flags for the ELF header e_flags field. */ /* Processor specific flags for the ELF header e_flags field. */

View File

@ -124,6 +124,6 @@ START_RELOC_NUMBERS (elf_arm_reloc_type)
RELOC_NUMBER (R_ARM_RABS32, 253) RELOC_NUMBER (R_ARM_RABS32, 253)
RELOC_NUMBER (R_ARM_RPC24, 254) RELOC_NUMBER (R_ARM_RPC24, 254)
RELOC_NUMBER (R_ARM_RBASE, 255) RELOC_NUMBER (R_ARM_RBASE, 255)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_ARM_max)
#endif /* _ELF_ARM_H */ #endif /* _ELF_ARM_H */

View File

@ -52,7 +52,6 @@ START_RELOC_NUMBERS (elf_avr_reloc_type)
RELOC_NUMBER (R_AVR_HI8_LDI_PM_NEG, 16) RELOC_NUMBER (R_AVR_HI8_LDI_PM_NEG, 16)
RELOC_NUMBER (R_AVR_HH8_LDI_PM_NEG, 17) RELOC_NUMBER (R_AVR_HH8_LDI_PM_NEG, 17)
RELOC_NUMBER (R_AVR_CALL, 18) RELOC_NUMBER (R_AVR_CALL, 18)
EMPTY_RELOC (R_AVR_max) END_RELOC_NUMBERS (R_AVR_max)
END_RELOC_NUMBERS
#endif /* _ELF_AVR_H */ #endif /* _ELF_AVR_H */

View File

@ -33,6 +33,6 @@ START_RELOC_NUMBERS (elf_d10v_reloc_type)
RELOC_NUMBER (R_D10V_32, 6) RELOC_NUMBER (R_D10V_32, 6)
RELOC_NUMBER (R_D10V_GNU_VTINHERIT, 7) RELOC_NUMBER (R_D10V_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_D10V_GNU_VTENTRY, 8) RELOC_NUMBER (R_D10V_GNU_VTENTRY, 8)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_D10V_max)
#endif #endif

View File

@ -37,6 +37,6 @@ START_RELOC_NUMBERS (elf_d30v_reloc_type)
RELOC_NUMBER (R_D30V_32, 10) RELOC_NUMBER (R_D30V_32, 10)
RELOC_NUMBER (R_D30V_32_PCREL, 11) RELOC_NUMBER (R_D30V_32_PCREL, 11)
RELOC_NUMBER (R_D30V_32_NORMAL, 12) RELOC_NUMBER (R_D30V_32_NORMAL, 12)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_D30V_max)
#endif #endif

View File

@ -37,7 +37,6 @@ START_RELOC_NUMBERS (elf_fr30_reloc_type)
RELOC_NUMBER (R_FR30_12_PCREL, 10) RELOC_NUMBER (R_FR30_12_PCREL, 10)
RELOC_NUMBER (R_FR30_GNU_VTINHERIT, 11) RELOC_NUMBER (R_FR30_GNU_VTINHERIT, 11)
RELOC_NUMBER (R_FR30_GNU_VTENTRY, 12) RELOC_NUMBER (R_FR30_GNU_VTENTRY, 12)
EMPTY_RELOC (R_FR30_max) END_RELOC_NUMBERS (R_FR30_max)
END_RELOC_NUMBERS
#endif /* _ELF_FR30_H */ #endif /* _ELF_FR30_H */

View File

@ -267,8 +267,7 @@ START_RELOC_NUMBERS (elf_hppa_reloc_type)
RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229) RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229)
RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230) RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230)
RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231) RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231)
EMPTY_RELOC (R_PARISC_UNIMPLEMENTED) END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED)
END_RELOC_NUMBERS
#ifndef RELOC_MACROS_GEN_FUNC #ifndef RELOC_MACROS_GEN_FUNC
typedef enum elf_hppa_reloc_type elf_hppa_reloc_type; typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;

View File

@ -40,10 +40,9 @@ START_RELOC_NUMBERS (elf_i386_reloc_type)
RELOC_NUMBER (R_386_PC16, 21) RELOC_NUMBER (R_386_PC16, 21)
RELOC_NUMBER (R_386_8, 22) RELOC_NUMBER (R_386_8, 22)
RELOC_NUMBER (R_386_PC8, 23) RELOC_NUMBER (R_386_PC8, 23)
RELOC_NUMBER (R_386_max, 24)
/* These are GNU extensions to enable C++ vtable garbage collection. */ /* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_386_GNU_VTINHERIT, 250) RELOC_NUMBER (R_386_GNU_VTINHERIT, 250)
RELOC_NUMBER (R_386_GNU_VTENTRY, 251) RELOC_NUMBER (R_386_GNU_VTENTRY, 251)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_386_max)
#endif #endif

View File

@ -32,7 +32,6 @@ START_RELOC_NUMBERS (elf_i960_reloc_type)
RELOC_NUMBER (R_960_OPTCALL, 5) RELOC_NUMBER (R_960_OPTCALL, 5)
RELOC_NUMBER (R_960_OPTCALLX, 6) RELOC_NUMBER (R_960_OPTCALLX, 6)
RELOC_NUMBER (R_960_OPTCALLXA, 7) RELOC_NUMBER (R_960_OPTCALLXA, 7)
EMPTY_RELOC (R_960_max) END_RELOC_NUMBERS (R_960_max)
END_RELOC_NUMBERS
#endif /* _ELF_I960_H */ #endif /* _ELF_I960_H */

View File

@ -167,6 +167,6 @@ START_RELOC_NUMBERS (elf_ia64_reloc_type)
RELOC_NUMBER (R_IA64_LTOFF_TP22, 0x9a) /* @ltoff(sym-TP+add), add imm22 ## */ RELOC_NUMBER (R_IA64_LTOFF_TP22, 0x9a) /* @ltoff(sym-TP+add), add imm22 ## */
FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0x9a) FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0x9a)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_IA64_max)
#endif /* _ELF_IA64_H */ #endif /* _ELF_IA64_H */

View File

@ -37,8 +37,7 @@ START_RELOC_NUMBERS (elf_m32r_reloc_type)
RELOC_NUMBER (R_M32R_SDA16, 10) RELOC_NUMBER (R_M32R_SDA16, 10)
RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11) RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11)
RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12) RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12)
EMPTY_RELOC (R_M32R_max) END_RELOC_NUMBERS (R_M32R_max)
END_RELOC_NUMBERS
/* Processor specific section indices. These sections do not actually /* Processor specific section indices. These sections do not actually
exist. Symbols with a st_shndx field corresponding to one of these exist. Symbols with a st_shndx field corresponding to one of these

View File

@ -50,8 +50,7 @@ START_RELOC_NUMBERS (elf_m68k_reloc_type)
/* These are GNU extensions to enable C++ vtable garbage collection. */ /* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23) RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23)
RELOC_NUMBER (R_68K_GNU_VTENTRY, 24) RELOC_NUMBER (R_68K_GNU_VTENTRY, 24)
EMPTY_RELOC (R_68K_max) END_RELOC_NUMBERS (R_68K_max)
END_RELOC_NUMBERS
#define EF_CPU32 0x00810000 #define EF_CPU32 0x00810000

View File

@ -38,8 +38,7 @@ START_RELOC_NUMBERS (elf_mcore_reloc_type)
RELOC_NUMBER (R_MCORE_COPY, 10) RELOC_NUMBER (R_MCORE_COPY, 10)
RELOC_NUMBER (R_MCORE_GLOB_DAT, 11) RELOC_NUMBER (R_MCORE_GLOB_DAT, 11)
RELOC_NUMBER (R_MCORE_JUMP_SLOT, 12) RELOC_NUMBER (R_MCORE_JUMP_SLOT, 12)
EMPTY_RELOC (R_MCORE_max) END_RELOC_NUMBERS (R_MCORE_max)
END_RELOC_NUMBERS
/* Section Attributes. */ /* Section Attributes. */
#define SHF_MCORE_NOREAD 0x80000000 #define SHF_MCORE_NOREAD 0x80000000

View File

@ -84,7 +84,7 @@ START_RELOC_NUMBERS (elf_mips_reloc_type)
/* These are GNU extensions to enable C++ vtable garbage collection. */ /* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_MIPS_GNU_VTINHERIT, 253) RELOC_NUMBER (R_MIPS_GNU_VTINHERIT, 253)
RELOC_NUMBER (R_MIPS_GNU_VTENTRY, 254) RELOC_NUMBER (R_MIPS_GNU_VTENTRY, 254)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_MIPS_maxext)
/* Processor specific flags for the ELF header e_flags field. */ /* Processor specific flags for the ELF header e_flags field. */

View File

@ -34,6 +34,6 @@ START_RELOC_NUMBERS (elf_mn10200_reloc_type)
RELOC_NUMBER (R_MN10200_PCREL8, 5) RELOC_NUMBER (R_MN10200_PCREL8, 5)
RELOC_NUMBER (R_MN10200_PCREL16, 6) RELOC_NUMBER (R_MN10200_PCREL16, 6)
RELOC_NUMBER (R_MN10200_PCREL24, 7) RELOC_NUMBER (R_MN10200_PCREL24, 7)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_MN10200_max)
#endif /* _ELF_MN10200_H */ #endif /* _ELF_MN10200_H */

View File

@ -36,8 +36,7 @@ START_RELOC_NUMBERS (elf_mn10300_reloc_type)
RELOC_NUMBER (R_MN10300_GNU_VTINHERIT, 7) RELOC_NUMBER (R_MN10300_GNU_VTINHERIT, 7)
RELOC_NUMBER (R_MN10300_GNU_VTENTRY, 8) RELOC_NUMBER (R_MN10300_GNU_VTENTRY, 8)
RELOC_NUMBER (R_MN10300_24, 9) RELOC_NUMBER (R_MN10300_24, 9)
EMPTY_RELOC (R_MN10300_MAX) END_RELOC_NUMBERS (R_MN10300_MAX)
END_RELOC_NUMBERS
/* Machine variant if we know it. This field was invented at Cygnus, /* Machine variant if we know it. This field was invented at Cygnus,
but it is hoped that other vendors will adopt it. If some standard but it is hoped that other vendors will adopt it. If some standard

View File

@ -35,8 +35,7 @@ START_RELOC_NUMBERS (elf_pj_reloc_type)
RELOC_NUMBER (R_PJ_CODE_HI16, 14) RELOC_NUMBER (R_PJ_CODE_HI16, 14)
RELOC_NUMBER (R_PJ_GNU_VTINHERIT, 15) RELOC_NUMBER (R_PJ_GNU_VTINHERIT, 15)
RELOC_NUMBER (R_PJ_GNU_VTENTRY, 16) RELOC_NUMBER (R_PJ_GNU_VTENTRY, 16)
EMPTY_RELOC (R_PJ_max) END_RELOC_NUMBERS (R_PJ_max)
END_RELOC_NUMBERS
#define EF_PICOJAVA_ARCH 0x0000000f #define EF_PICOJAVA_ARCH 0x0000000f
#define EF_PICOJAVA_NEWCALLS 0x00000010 #define EF_PICOJAVA_NEWCALLS 0x00000010

View File

@ -96,8 +96,7 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
that may still be in object files. */ that may still be in object files. */
RELOC_NUMBER (R_PPC_TOC16, 255) RELOC_NUMBER (R_PPC_TOC16, 255)
EMPTY_RELOC (R_PPC_max) END_RELOC_NUMBERS (R_PPC_max)
END_RELOC_NUMBERS
/* Processor specific flags for the ELF header e_flags field. */ /* Processor specific flags for the ELF header e_flags field. */

View File

@ -27,20 +27,20 @@
START_RELOC_NUMBERS (foo) START_RELOC_NUMBERS (foo)
RELOC_NUMBER (R_foo_NONE, 0) RELOC_NUMBER (R_foo_NONE, 0)
RELOC_NUMBER (R_foo_32, 1) RELOC_NUMBER (R_foo_32, 1)
FAKE_RELOC (R_foo_illegal, 2) EMPTY_RELOC (R_foo_good)
EMPTY_RELOC (R_foo_max) FAKE_RELOC (R_foo_illegal, 9)
END_RELOC_NUMBERS END_RELOC_NUMBERS (R_foo_count)
Then the following will be produced by default (ie if Then the following will be produced by default (ie if
RELOC_MACROS_GEN_FUNC is *not* defined). RELOC_MACROS_GEN_FUNC is *not* defined).
enum foo enum foo
{ {
foo = -1,
R_foo_NONE = 0, R_foo_NONE = 0,
R_foo_32 = 1, R_foo_32 = 1,
R_foo_illegal = 2, R_foo_good,
R_foo_max R_foo_illegal = 9,
R_foo_count
}; };
If RELOC_MACROS_GEN_FUNC *is* defined, then instead the If RELOC_MACROS_GEN_FUNC *is* defined, then instead the
@ -87,7 +87,7 @@ name (rtype) \
#define FAKE_RELOC(name, number) #define FAKE_RELOC(name, number)
#define EMPTY_RELOC(name) #define EMPTY_RELOC(name)
#define END_RELOC_NUMBERS \ #define END_RELOC_NUMBERS(name) \
default: return NULL; \ default: return NULL; \
} \ } \
} }
@ -95,21 +95,11 @@ name (rtype) \
#else /* Default to generating enum. */ #else /* Default to generating enum. */
/* Some compilers cannot cope with an enum that ends with a trailing #define START_RELOC_NUMBERS(name) enum name {
comma, so START_RELOC_NUMBERS creates a fake reloc entry, (initialised #define RELOC_NUMBER(name, number) name = number,
to -1 so that the first real entry will still default to 0). Further #define FAKE_RELOC(name, number) name = number,
entries then prepend a comma to their definitions, creating a list #define EMPTY_RELOC(name) name,
of enumerator entries that will satisfy these compilers. */ #define END_RELOC_NUMBERS(name) name };
#if defined (__STDC__) || defined (ALMOST_STDC)
#define START_RELOC_NUMBERS(name) enum name { _##name = -1
#else
#define START_RELOC_NUMBERS(name) enum name { _/**/name = -1
#endif
#define RELOC_NUMBER(name, number) , name = number
#define FAKE_RELOC(name, number) , name = number
#define EMPTY_RELOC(name) , name
#define END_RELOC_NUMBERS };
#endif #endif

View File

@ -78,7 +78,6 @@ START_RELOC_NUMBERS (elf_sh_reloc_type)
RELOC_NUMBER (R_SH_GNU_VTENTRY, 35) RELOC_NUMBER (R_SH_GNU_VTENTRY, 35)
RELOC_NUMBER (R_SH_LOOP_START, 36) RELOC_NUMBER (R_SH_LOOP_START, 36)
RELOC_NUMBER (R_SH_LOOP_END, 37) RELOC_NUMBER (R_SH_LOOP_END, 37)
EMPTY_RELOC (R_SH_max) END_RELOC_NUMBERS (R_SH_max)
END_RELOC_NUMBERS
#endif #endif

View File

@ -134,8 +134,7 @@ START_RELOC_NUMBERS (elf_sparc_reloc_type)
RELOC_NUMBER (R_SPARC_GNU_VTINHERIT, 250) RELOC_NUMBER (R_SPARC_GNU_VTINHERIT, 250)
RELOC_NUMBER (R_SPARC_GNU_VTENTRY, 251) RELOC_NUMBER (R_SPARC_GNU_VTENTRY, 251)
EMPTY_RELOC (R_SPARC_max) END_RELOC_NUMBERS (R_SPARC_max)
END_RELOC_NUMBERS
/* Relocation macros. */ /* Relocation macros. */

View File

@ -77,9 +77,7 @@ START_RELOC_NUMBERS (v850_reloc_type)
/* END CYGNUS LOCAL */ /* END CYGNUS LOCAL */
RELOC_NUMBER (R_V850_GNU_VTINHERIT, 23) RELOC_NUMBER (R_V850_GNU_VTINHERIT, 23)
RELOC_NUMBER (R_V850_GNU_VTENTRY, 24) RELOC_NUMBER (R_V850_GNU_VTENTRY, 24)
END_RELOC_NUMBERS (R_V850_max)
EMPTY_RELOC (R_V850_max)
END_RELOC_NUMBERS
/* Processor specific section indices. These sections do not actually /* Processor specific section indices. These sections do not actually