diff options
-rw-r--r-- | bfd/ChangeLog | 17 | ||||
-rw-r--r-- | bfd/Makefile.am | 6 | ||||
-rw-r--r-- | bfd/Makefile.in | 6 | ||||
-rw-r--r-- | bfd/elf32-d10v.c | 16 | ||||
-rw-r--r-- | bfd/elf32-d30v.c | 19 | ||||
-rw-r--r-- | bfd/elf32-i386.c | 132 | ||||
-rw-r--r-- | include/elf/ChangeLog | 35 | ||||
-rw-r--r-- | include/elf/alpha.h | 3 | ||||
-rw-r--r-- | include/elf/arc.h | 3 | ||||
-rw-r--r-- | include/elf/arm.h | 2 | ||||
-rw-r--r-- | include/elf/avr.h | 3 | ||||
-rw-r--r-- | include/elf/d10v.h | 2 | ||||
-rw-r--r-- | include/elf/d30v.h | 2 | ||||
-rw-r--r-- | include/elf/fr30.h | 3 | ||||
-rw-r--r-- | include/elf/hppa.h | 3 | ||||
-rw-r--r-- | include/elf/i386.h | 3 | ||||
-rw-r--r-- | include/elf/i960.h | 3 | ||||
-rw-r--r-- | include/elf/ia64.h | 2 | ||||
-rw-r--r-- | include/elf/m32r.h | 3 | ||||
-rw-r--r-- | include/elf/m68k.h | 3 | ||||
-rw-r--r-- | include/elf/mcore.h | 3 | ||||
-rw-r--r-- | include/elf/mips.h | 2 | ||||
-rw-r--r-- | include/elf/mn10200.h | 2 | ||||
-rw-r--r-- | include/elf/mn10300.h | 3 | ||||
-rw-r--r-- | include/elf/pj.h | 3 | ||||
-rw-r--r-- | include/elf/ppc.h | 3 | ||||
-rw-r--r-- | include/elf/reloc-macros.h | 34 | ||||
-rw-r--r-- | include/elf/sh.h | 3 | ||||
-rw-r--r-- | include/elf/sparc.h | 3 | ||||
-rw-r--r-- | include/elf/v850.h | 4 |
30 files changed, 177 insertions, 149 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 6df6346..d0f4584 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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> * elf.c (elf_grok_pr_status): Eliminate reference to prgregset_t. diff --git a/bfd/Makefile.am b/bfd/Makefile.am index 380b993..1b6a0a7 100644 --- a/bfd/Makefile.am +++ b/bfd/Makefile.am @@ -900,10 +900,12 @@ elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-target.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)/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 \ $(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 \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \ diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 3192f32..f23960a 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -1428,10 +1428,12 @@ elf32-avr.lo: elf32-avr.c $(INCDIR)/filenames.h elf-bfd.h \ elf32-target.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)/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 \ $(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 \ $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h \ $(INCDIR)/bfdlink.h $(INCDIR)/elf/fr30.h $(INCDIR)/elf/reloc-macros.h \ diff --git a/bfd/elf32-d10v.c b/bfd/elf32-d10v.c index dd2e892..3fbf05b 100644 --- a/bfd/elf32-d10v.c +++ b/bfd/elf32-d10v.c @@ -22,7 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "sysdep.h" #include "libbfd.h" #include "elf-bfd.h" -/* #include "elf/d10v.h" */ +#include "elf/d10v.h" static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup 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 */ #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[] = { /* This reloc does nothing. */ diff --git a/bfd/elf32-d30v.c b/bfd/elf32-d30v.c index 52bafb9..c7fde2b 100644 --- a/bfd/elf32-d30v.c +++ b/bfd/elf32-d30v.c @@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "sysdep.h" #include "libbfd.h" #include "elf-bfd.h" +#include "elf/d30v.h" static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup 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, 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[] = { /* This reloc does nothing. */ diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c index 53edaaf..1a12571 100644 --- a/bfd/elf32-i386.c +++ b/bfd/elf32-i386.c @@ -56,31 +56,56 @@ static boolean elf_i386_finish_dynamic_sections 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_32, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_32", true,0xffffffff,0xffffffff,false), - HOWTO(R_386_PC32, 0,2,32,true, 0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PC32", true,0xffffffff,0xffffffff,true), - 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_PLT32, 0,2,32,true,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_PLT32", true,0xffffffff,0xffffffff,true), - HOWTO(R_386_COPY, 0,2,32,false,0,complain_overflow_bitfield, bfd_elf_generic_reloc,"R_386_COPY", 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_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), - EMPTY_HOWTO (11), - EMPTY_HOWTO (12), - EMPTY_HOWTO (13), - EMPTY_HOWTO (14), - EMPTY_HOWTO (15), - EMPTY_HOWTO (16), - EMPTY_HOWTO (17), - EMPTY_HOWTO (18), - EMPTY_HOWTO (19), + 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_32, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_32", + true, 0xffffffff, 0xffffffff, false), + HOWTO(R_386_PC32, 0, 2, 32, true, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_PC32", + true, 0xffffffff, 0xffffffff, true), + 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_PLT32, 0, 2, 32, true, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_PLT32", + true, 0xffffffff, 0xffffffff, true), + HOWTO(R_386_COPY, 0, 2, 32, false, 0, complain_overflow_bitfield, + bfd_elf_generic_reloc, "R_386_COPY", + 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_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. */ - 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_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), + 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_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. */ @@ -130,68 +155,68 @@ elf_i386_reloc_type_lookup (abfd, code) { case 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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. */ case 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: 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: 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: 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: 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; else if (type == R_386_GNU_VTENTRY) 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 { - (*_bfd_error_handler) (_("%s: invalid relocation type %d"), - bfd_get_filename (abfd), (int) type); - cache_ptr->howto = &elf_howto_table[(int) R_386_NONE]; + unsigned int indx; + + 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; bfd_vma relocation; bfd_reloc_status_type r; + unsigned int indx; r_type = ELF32_R_TYPE (rel->r_info); if (r_type == R_386_GNU_VTINHERIT || r_type == R_386_GNU_VTENTRY) continue; - if (r_type < 0 - || r_type >= (int) R_386_max - || (r_type >= (int) FIRST_INVALID_RELOC - && r_type <= (int) LAST_INVALID_RELOC)) + if ((indx = (unsigned) r_type) >= R_386_standard + && ((indx = (unsigned) r_type - R_386_ext_offset) + >= sizeof (elf_howto_table) / sizeof (elf_howto_table[0]))) { bfd_set_error (bfd_error_bad_value); return false; } - howto = elf_howto_table + r_type; + howto = elf_howto_table + indx; r_symndx = ELF32_R_SYM (rel->r_info); diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index ecbae34..521bd80 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -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> * reloc-macros.h (START_RELOC_NUMBERS): Fix name clash for diff --git a/include/elf/alpha.h b/include/elf/alpha.h index 1ae9d5e..1f6b377 100644 --- a/include/elf/alpha.h +++ b/include/elf/alpha.h @@ -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_RELATIVE, 27) /* Adjust by program base */ - EMPTY_RELOC (R_ALPHA_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_ALPHA_max) #endif /* _ELF_ALPHA_H */ diff --git a/include/elf/arc.h b/include/elf/arc.h index 334b55f..c552bf0 100644 --- a/include/elf/arc.h +++ b/include/elf/arc.h @@ -31,8 +31,7 @@ START_RELOC_NUMBERS (elf_arc_reloc_type) RELOC_NUMBER (R_ARC_32, 1) RELOC_NUMBER (R_ARC_B26, 2) RELOC_NUMBER (R_ARC_B22_PCREL, 3) - EMPTY_RELOC (R_ARC_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_ARC_max) /* Processor specific flags for the ELF header e_flags field. */ diff --git a/include/elf/arm.h b/include/elf/arm.h index 04c46de..0499251 100644 --- a/include/elf/arm.h +++ b/include/elf/arm.h @@ -124,6 +124,6 @@ START_RELOC_NUMBERS (elf_arm_reloc_type) RELOC_NUMBER (R_ARM_RABS32, 253) RELOC_NUMBER (R_ARM_RPC24, 254) RELOC_NUMBER (R_ARM_RBASE, 255) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_ARM_max) #endif /* _ELF_ARM_H */ diff --git a/include/elf/avr.h b/include/elf/avr.h index 1527455..c4cb860 100644 --- a/include/elf/avr.h +++ b/include/elf/avr.h @@ -52,7 +52,6 @@ START_RELOC_NUMBERS (elf_avr_reloc_type) RELOC_NUMBER (R_AVR_HI8_LDI_PM_NEG, 16) RELOC_NUMBER (R_AVR_HH8_LDI_PM_NEG, 17) RELOC_NUMBER (R_AVR_CALL, 18) - EMPTY_RELOC (R_AVR_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_AVR_max) #endif /* _ELF_AVR_H */ diff --git a/include/elf/d10v.h b/include/elf/d10v.h index 63b79c8..2e32750 100644 --- a/include/elf/d10v.h +++ b/include/elf/d10v.h @@ -33,6 +33,6 @@ START_RELOC_NUMBERS (elf_d10v_reloc_type) RELOC_NUMBER (R_D10V_32, 6) RELOC_NUMBER (R_D10V_GNU_VTINHERIT, 7) RELOC_NUMBER (R_D10V_GNU_VTENTRY, 8) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_D10V_max) #endif diff --git a/include/elf/d30v.h b/include/elf/d30v.h index adbad19..c0f3bc8 100644 --- a/include/elf/d30v.h +++ b/include/elf/d30v.h @@ -37,6 +37,6 @@ START_RELOC_NUMBERS (elf_d30v_reloc_type) RELOC_NUMBER (R_D30V_32, 10) RELOC_NUMBER (R_D30V_32_PCREL, 11) RELOC_NUMBER (R_D30V_32_NORMAL, 12) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_D30V_max) #endif diff --git a/include/elf/fr30.h b/include/elf/fr30.h index 223b052..65ca907 100644 --- a/include/elf/fr30.h +++ b/include/elf/fr30.h @@ -37,7 +37,6 @@ START_RELOC_NUMBERS (elf_fr30_reloc_type) RELOC_NUMBER (R_FR30_12_PCREL, 10) RELOC_NUMBER (R_FR30_GNU_VTINHERIT, 11) RELOC_NUMBER (R_FR30_GNU_VTENTRY, 12) - EMPTY_RELOC (R_FR30_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_FR30_max) #endif /* _ELF_FR30_H */ diff --git a/include/elf/hppa.h b/include/elf/hppa.h index 0e45d74..af32636 100644 --- a/include/elf/hppa.h +++ b/include/elf/hppa.h @@ -267,8 +267,7 @@ START_RELOC_NUMBERS (elf_hppa_reloc_type) RELOC_NUMBER (R_PARISC_LTOFF_TP16F, 229) RELOC_NUMBER (R_PARISC_LTOFF_TP16WF, 230) RELOC_NUMBER (R_PARISC_LTOFF_TP16DF, 231) - EMPTY_RELOC (R_PARISC_UNIMPLEMENTED) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED) #ifndef RELOC_MACROS_GEN_FUNC typedef enum elf_hppa_reloc_type elf_hppa_reloc_type; diff --git a/include/elf/i386.h b/include/elf/i386.h index 0586661..a8e1bf4 100644 --- a/include/elf/i386.h +++ b/include/elf/i386.h @@ -40,10 +40,9 @@ START_RELOC_NUMBERS (elf_i386_reloc_type) RELOC_NUMBER (R_386_PC16, 21) RELOC_NUMBER (R_386_8, 22) RELOC_NUMBER (R_386_PC8, 23) - RELOC_NUMBER (R_386_max, 24) /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_386_GNU_VTINHERIT, 250) RELOC_NUMBER (R_386_GNU_VTENTRY, 251) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_386_max) #endif diff --git a/include/elf/i960.h b/include/elf/i960.h index 3e60289..2c7a143 100644 --- a/include/elf/i960.h +++ b/include/elf/i960.h @@ -32,7 +32,6 @@ START_RELOC_NUMBERS (elf_i960_reloc_type) RELOC_NUMBER (R_960_OPTCALL, 5) RELOC_NUMBER (R_960_OPTCALLX, 6) RELOC_NUMBER (R_960_OPTCALLXA, 7) - EMPTY_RELOC (R_960_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_960_max) #endif /* _ELF_I960_H */ diff --git a/include/elf/ia64.h b/include/elf/ia64.h index 9d50030..15847c8 100644 --- a/include/elf/ia64.h +++ b/include/elf/ia64.h @@ -167,6 +167,6 @@ START_RELOC_NUMBERS (elf_ia64_reloc_type) RELOC_NUMBER (R_IA64_LTOFF_TP22, 0x9a) /* @ltoff(sym-TP+add), add imm22 ## */ FAKE_RELOC (R_IA64_MAX_RELOC_CODE, 0x9a) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_IA64_max) #endif /* _ELF_IA64_H */ diff --git a/include/elf/m32r.h b/include/elf/m32r.h index a12ae16..e4b5dbf 100644 --- a/include/elf/m32r.h +++ b/include/elf/m32r.h @@ -37,8 +37,7 @@ START_RELOC_NUMBERS (elf_m32r_reloc_type) RELOC_NUMBER (R_M32R_SDA16, 10) RELOC_NUMBER (R_M32R_GNU_VTINHERIT, 11) RELOC_NUMBER (R_M32R_GNU_VTENTRY, 12) - EMPTY_RELOC (R_M32R_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_M32R_max) /* Processor specific section indices. These sections do not actually exist. Symbols with a st_shndx field corresponding to one of these diff --git a/include/elf/m68k.h b/include/elf/m68k.h index e2d51ef..2c44a58 100644 --- a/include/elf/m68k.h +++ b/include/elf/m68k.h @@ -50,8 +50,7 @@ START_RELOC_NUMBERS (elf_m68k_reloc_type) /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_68K_GNU_VTINHERIT, 23) RELOC_NUMBER (R_68K_GNU_VTENTRY, 24) - EMPTY_RELOC (R_68K_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_68K_max) #define EF_CPU32 0x00810000 diff --git a/include/elf/mcore.h b/include/elf/mcore.h index 62a88c9..b96ab60 100644 --- a/include/elf/mcore.h +++ b/include/elf/mcore.h @@ -38,8 +38,7 @@ START_RELOC_NUMBERS (elf_mcore_reloc_type) RELOC_NUMBER (R_MCORE_COPY, 10) RELOC_NUMBER (R_MCORE_GLOB_DAT, 11) RELOC_NUMBER (R_MCORE_JUMP_SLOT, 12) - EMPTY_RELOC (R_MCORE_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_MCORE_max) /* Section Attributes. */ #define SHF_MCORE_NOREAD 0x80000000 diff --git a/include/elf/mips.h b/include/elf/mips.h index e5e3739..f7f03d9 100644 --- a/include/elf/mips.h +++ b/include/elf/mips.h @@ -84,7 +84,7 @@ START_RELOC_NUMBERS (elf_mips_reloc_type) /* These are GNU extensions to enable C++ vtable garbage collection. */ RELOC_NUMBER (R_MIPS_GNU_VTINHERIT, 253) 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. */ diff --git a/include/elf/mn10200.h b/include/elf/mn10200.h index 5e29e0a..d7c102e 100644 --- a/include/elf/mn10200.h +++ b/include/elf/mn10200.h @@ -34,6 +34,6 @@ START_RELOC_NUMBERS (elf_mn10200_reloc_type) RELOC_NUMBER (R_MN10200_PCREL8, 5) RELOC_NUMBER (R_MN10200_PCREL16, 6) RELOC_NUMBER (R_MN10200_PCREL24, 7) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_MN10200_max) #endif /* _ELF_MN10200_H */ diff --git a/include/elf/mn10300.h b/include/elf/mn10300.h index 4e7fce5..29fea0f 100644 --- a/include/elf/mn10300.h +++ b/include/elf/mn10300.h @@ -36,8 +36,7 @@ START_RELOC_NUMBERS (elf_mn10300_reloc_type) RELOC_NUMBER (R_MN10300_GNU_VTINHERIT, 7) RELOC_NUMBER (R_MN10300_GNU_VTENTRY, 8) RELOC_NUMBER (R_MN10300_24, 9) - EMPTY_RELOC (R_MN10300_MAX) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_MN10300_MAX) /* 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 diff --git a/include/elf/pj.h b/include/elf/pj.h index 6bb8306..07d4583 100644 --- a/include/elf/pj.h +++ b/include/elf/pj.h @@ -35,8 +35,7 @@ START_RELOC_NUMBERS (elf_pj_reloc_type) RELOC_NUMBER (R_PJ_CODE_HI16, 14) RELOC_NUMBER (R_PJ_GNU_VTINHERIT, 15) RELOC_NUMBER (R_PJ_GNU_VTENTRY, 16) - EMPTY_RELOC (R_PJ_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_PJ_max) #define EF_PICOJAVA_ARCH 0x0000000f #define EF_PICOJAVA_NEWCALLS 0x00000010 diff --git a/include/elf/ppc.h b/include/elf/ppc.h index b3116d8..b37be7c 100644 --- a/include/elf/ppc.h +++ b/include/elf/ppc.h @@ -96,8 +96,7 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type) that may still be in object files. */ RELOC_NUMBER (R_PPC_TOC16, 255) - EMPTY_RELOC (R_PPC_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_PPC_max) /* Processor specific flags for the ELF header e_flags field. */ diff --git a/include/elf/reloc-macros.h b/include/elf/reloc-macros.h index 9c27e89..d006147 100644 --- a/include/elf/reloc-macros.h +++ b/include/elf/reloc-macros.h @@ -27,20 +27,20 @@ START_RELOC_NUMBERS (foo) RELOC_NUMBER (R_foo_NONE, 0) RELOC_NUMBER (R_foo_32, 1) - FAKE_RELOC (R_foo_illegal, 2) - EMPTY_RELOC (R_foo_max) - END_RELOC_NUMBERS + EMPTY_RELOC (R_foo_good) + FAKE_RELOC (R_foo_illegal, 9) + END_RELOC_NUMBERS (R_foo_count) Then the following will be produced by default (ie if RELOC_MACROS_GEN_FUNC is *not* defined). enum foo { - foo = -1, R_foo_NONE = 0, R_foo_32 = 1, - R_foo_illegal = 2, - R_foo_max + R_foo_good, + R_foo_illegal = 9, + R_foo_count }; If RELOC_MACROS_GEN_FUNC *is* defined, then instead the @@ -87,7 +87,7 @@ name (rtype) \ #define FAKE_RELOC(name, number) #define EMPTY_RELOC(name) -#define END_RELOC_NUMBERS \ +#define END_RELOC_NUMBERS(name) \ default: return NULL; \ } \ } @@ -95,21 +95,11 @@ name (rtype) \ #else /* Default to generating enum. */ -/* Some compilers cannot cope with an enum that ends with a trailing - comma, so START_RELOC_NUMBERS creates a fake reloc entry, (initialised - to -1 so that the first real entry will still default to 0). Further - entries then prepend a comma to their definitions, creating a list - of enumerator entries that will satisfy these compilers. */ -#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 }; +#define START_RELOC_NUMBERS(name) enum name { +#define RELOC_NUMBER(name, number) name = number, +#define FAKE_RELOC(name, number) name = number, +#define EMPTY_RELOC(name) name, +#define END_RELOC_NUMBERS(name) name }; #endif diff --git a/include/elf/sh.h b/include/elf/sh.h index 2b132c1..ae09698 100644 --- a/include/elf/sh.h +++ b/include/elf/sh.h @@ -78,7 +78,6 @@ START_RELOC_NUMBERS (elf_sh_reloc_type) RELOC_NUMBER (R_SH_GNU_VTENTRY, 35) RELOC_NUMBER (R_SH_LOOP_START, 36) RELOC_NUMBER (R_SH_LOOP_END, 37) - EMPTY_RELOC (R_SH_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_SH_max) #endif diff --git a/include/elf/sparc.h b/include/elf/sparc.h index 390e4a8..7b2380f 100644 --- a/include/elf/sparc.h +++ b/include/elf/sparc.h @@ -134,8 +134,7 @@ START_RELOC_NUMBERS (elf_sparc_reloc_type) RELOC_NUMBER (R_SPARC_GNU_VTINHERIT, 250) RELOC_NUMBER (R_SPARC_GNU_VTENTRY, 251) - EMPTY_RELOC (R_SPARC_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_SPARC_max) /* Relocation macros. */ diff --git a/include/elf/v850.h b/include/elf/v850.h index d443b7f..45b0e39 100644 --- a/include/elf/v850.h +++ b/include/elf/v850.h @@ -77,9 +77,7 @@ START_RELOC_NUMBERS (v850_reloc_type) /* END CYGNUS LOCAL */ RELOC_NUMBER (R_V850_GNU_VTINHERIT, 23) RELOC_NUMBER (R_V850_GNU_VTENTRY, 24) - - EMPTY_RELOC (R_V850_max) -END_RELOC_NUMBERS +END_RELOC_NUMBERS (R_V850_max) /* Processor specific section indices. These sections do not actually |