X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Felf32-d30v.c;h=4b184d635543de3f8e762b361f8ba83747964b5c;hb=062b7c0c141b6d28a037c6acf3a822539e701827;hp=43fc9b637ea9d1419e264b17df5fa2f16e5a65dc;hpb=a7c108501aa17c815e4085b2421bca552b292d02;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/elf32-d30v.c b/bfd/elf32-d30v.c index 43fc9b637e..4b184d6355 100644 --- a/bfd/elf32-d30v.c +++ b/bfd/elf32-d30v.c @@ -1,5 +1,6 @@ /* D30V-specific support for 32-bit ELF - Copyright (C) 1997, 98, 99, 2000 Free Software Foundation, Inc. + Copyright 1997, 1998, 1999, 2000, 2001, 2002 + Free Software Foundation, Inc. Contributed by Martin Hunt (hunt@cygnus.com). This file is part of BFD, the Binary File Descriptor library. @@ -27,9 +28,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type code)); static void d30v_info_to_howto_rel - PARAMS ((bfd *, arelent *, Elf32_Internal_Rel *)); + PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); static void d30v_info_to_howto_rela - PARAMS ((bfd *, arelent *, Elf32_Internal_Rela *)); + PARAMS ((bfd *, arelent *, Elf_Internal_Rela *)); static bfd_reloc_status_type bfd_elf_d30v_reloc PARAMS (( bfd *abfd, arelent *reloc_entry, @@ -54,195 +55,195 @@ static reloc_howto_type elf_d30v_howto_table[] = 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - false, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_D30V_NONE", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - false), /* pcrel_offset */ + FALSE), /* pcrel_offset */ /* A 6 bit absolute relocation */ HOWTO (R_D30V_6, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 6, /* bitsize */ - false, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_D30V_6", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x3f, /* src_mask */ 0x3f, /* dst_mask */ - false), /* pcrel_offset */ + FALSE), /* pcrel_offset */ /* A relative 9 bit relocation, right shifted by 3 */ HOWTO (R_D30V_9_PCREL, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 6, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc_21, /* special_function */ "R_D30V_9_PCREL", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x3f, /* src_mask */ 0x3f, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* A relative 9 bit relocation, right shifted by 3 */ HOWTO (R_D30V_9_PCREL_R, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 6, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc_21, /* special_function */ "R_D30V_9_PCREL_R", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x3f, /* src_mask */ 0x3f, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* An absolute 15 bit relocation, right shifted by 3 */ HOWTO (R_D30V_15, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 12, /* bitsize */ - false, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_D30V_15", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xfff, /* src_mask */ 0xfff, /* dst_mask */ - false), /* pcrel_offset */ + FALSE), /* pcrel_offset */ /* A relative 15 bit relocation, right shifted by 3 */ HOWTO (R_D30V_15_PCREL, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 12, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc_21, /* special_function */ "R_D30V_15_PCREL", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xfff, /* src_mask */ 0xfff, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* A relative 15 bit relocation, right shifted by 3 */ HOWTO (R_D30V_15_PCREL_R, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 12, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc_21, /* special_function */ "R_D30V_15_PCREL_R", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xfff, /* src_mask */ 0xfff, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* An absolute 21 bit relocation, right shifted by 3 */ HOWTO (R_D30V_21, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 18, /* bitsize */ - false, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ "R_D30V_21", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x3ffff, /* src_mask */ 0x3ffff, /* dst_mask */ - false), /* pcrel_offset */ + FALSE), /* pcrel_offset */ /* A relative 21 bit relocation, right shifted by 3 */ HOWTO (R_D30V_21_PCREL, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 18, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc_21, /* special_function */ "R_D30V_21_PCREL", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x3ffff, /* src_mask */ 0x3ffff, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* A relative 21 bit relocation, right shifted by 3, in the Right container */ HOWTO (R_D30V_21_PCREL_R, /* type */ 3, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 18, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc_21, /* special_function */ "R_D30V_21_PCREL_R", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0x3ffff, /* src_mask */ 0x3ffff, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* A D30V 32 bit absolute relocation */ HOWTO (R_D30V_32, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - false, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ bfd_elf_d30v_reloc, /* special_function */ "R_D30V_32", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ - false), /* pcrel_offset */ + FALSE), /* pcrel_offset */ /* A relative 32 bit relocation */ HOWTO (R_D30V_32_PCREL, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - true, /* pc_relative */ + TRUE, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ bfd_elf_d30v_reloc, /* special_function */ "R_D30V_32_PCREL", /* name */ - false, /* partial_inplace */ + FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ - true), /* pcrel_offset */ + TRUE), /* pcrel_offset */ /* A regular 32 bit absolute relocation */ HOWTO (R_D30V_32_NORMAL, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - false, /* pc_relative */ + FALSE, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ bfd_elf_generic_reloc, /* special_function */ - "R_D30V_32_NORMAL", /* name */ - false, /* partial_inplace */ + "R_D30V_32_NORMAL", /* name */ + FALSE, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ - false), /* pcrel_offset */ + FALSE), /* pcrel_offset */ }; @@ -313,7 +314,7 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd, /* Here the variable relocation holds the final address of the symbol we are relocating against, plus any addend. */ - if (howto->pc_relative == true) + if (howto->pc_relative) { tmp_addr = input_section->output_section->vma + input_section->output_offset + reloc_entry->address; @@ -332,7 +333,7 @@ bfd_elf_d30v_reloc (abfd, reloc_entry, symbol, data, input_section, output_bfd, relocation += num; - if (howto->pc_relative == true && howto->bitsize == 32) + if (howto->pc_relative && howto->bitsize == 32) { /* The D30V has a PC that doesn't wrap and PC-relative jumps are signed, so a PC-relative jump can't be more than +/- 2^31 bytes. @@ -422,11 +423,11 @@ bfd_elf_d30v_reloc_21 (abfd, reloc_entry, symbol, data, input_section, output_bf /* Here the variable relocation holds the final address of the symbol we are relocating against, plus any addend. */ - if (howto->pc_relative == true) + if (howto->pc_relative) { relocation -= (input_section->output_section->vma + input_section->output_offset); - if (howto->pcrel_offset == true) + if (howto->pcrel_offset) relocation -= reloc_entry->address; } @@ -521,7 +522,7 @@ static void d30v_info_to_howto_rel (abfd, cache_ptr, dst) bfd *abfd ATTRIBUTE_UNUSED; arelent *cache_ptr; - Elf32_Internal_Rel *dst; + Elf_Internal_Rela *dst; { unsigned int r_type; @@ -536,7 +537,7 @@ static void d30v_info_to_howto_rela (abfd, cache_ptr, dst) bfd *abfd ATTRIBUTE_UNUSED; arelent *cache_ptr; - Elf32_Internal_Rela *dst; + Elf_Internal_Rela *dst; { unsigned int r_type; @@ -546,7 +547,8 @@ d30v_info_to_howto_rela (abfd, cache_ptr, dst) } #define ELF_ARCH bfd_arch_d30v -#define ELF_MACHINE_CODE EM_CYGNUS_D30V +#define ELF_MACHINE_CODE EM_D30V +#define ELF_MACHINE_ALT1 EM_CYGNUS_D30V #define ELF_MAXPAGESIZE 0x1000 #define TARGET_BIG_SYM bfd_elf32_d30v_vec