/[gcl]/gcl/binutils/bfd/elf32-pj.c
ViewVC logotype

Diff of /gcl/binutils/bfd/elf32-pj.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.1 by camm, Fri Aug 9 05:35:17 2002 UTC revision 1.1.1.1.20.1 by camm, Fri Sep 30 02:08:58 2005 UTC
# Line 1  Line 1 
1  /* picoJava specific support for 32-bit ELF  /* picoJava specific support for 32-bit ELF
2     Copyright 1999, 2000, 2001 Free Software Foundation, Inc.     Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
3     Contributed by Steve Chamberlan of Transmeta (sac@pobox.com).     Contributed by Steve Chamberlan of Transmeta (sac@pobox.com).
4    
5  This file is part of BFD, the Binary File Descriptor library.  This file is part of BFD, the Binary File Descriptor library.
# Line 32  static reloc_howto_type *pj_elf_reloc_ty Line 32  static reloc_howto_type *pj_elf_reloc_ty
32  static void pj_elf_info_to_howto  static void pj_elf_info_to_howto
33    PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));    PARAMS ((bfd *, arelent *, Elf_Internal_Rela *));
34  static void pj_elf_final_write_processing  static void pj_elf_final_write_processing
35    PARAMS ((bfd *, boolean));    PARAMS ((bfd *, bfd_boolean));
36    
37  static reloc_howto_type pj_elf_howto_table[] =  static reloc_howto_type pj_elf_howto_table[] =
38  {  {
# Line 41  static reloc_howto_type pj_elf_howto_tab Line 41  static reloc_howto_type pj_elf_howto_tab
41           0,                     /* rightshift */           0,                     /* rightshift */
42           0,                     /* size (0 = byte, 1 = short, 2 = long) */           0,                     /* size (0 = byte, 1 = short, 2 = long) */
43           0,                     /* bitsize */           0,                     /* bitsize */
44           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
45           0,                     /* bitpos */           0,                     /* bitpos */
46           complain_overflow_dont, /* complain_on_overflow */           complain_overflow_dont, /* complain_on_overflow */
47           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
48           "R_PJ_NONE",           /* name */           "R_PJ_NONE",           /* name */
49           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
50           0,                     /* src_mask */           0,                     /* src_mask */
51           0,                     /* dst_mask */           0,                     /* dst_mask */
52           false),                /* pcrel_offset */           FALSE),                /* pcrel_offset */
53    
54    /* 32 bit absolute relocation.  Setting partial_inplace to true and    /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
55       src_mask to a non-zero value is similar to the COFF toolchain.  */       src_mask to a non-zero value is similar to the COFF toolchain.  */
56    HOWTO (R_PJ_DATA_DIR32,               /* type */    HOWTO (R_PJ_DATA_DIR32,               /* type */
57           0,                     /* rightshift */           0,                     /* rightshift */
58           2,                     /* size (0 = byte, 1 = short, 2 = long) */           2,                     /* size (0 = byte, 1 = short, 2 = long) */
59           32,                    /* bitsize */           32,                    /* bitsize */
60           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
61           0,                     /* bitpos */           0,                     /* bitpos */
62           complain_overflow_bitfield, /* complain_on_overflow */           complain_overflow_bitfield, /* complain_on_overflow */
63           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
64           "R_PJ_DIR32",          /* name */           "R_PJ_DIR32",          /* name */
65           true,                  /* partial_inplace */           TRUE,                  /* partial_inplace */
66           0xffffffff,            /* src_mask */           0xffffffff,            /* src_mask */
67           0xffffffff,            /* dst_mask */           0xffffffff,            /* dst_mask */
68           false),                /* pcrel_offset */           FALSE),                /* pcrel_offset */
69    
70    /* 32 bit PC relative relocation.  */    /* 32 bit PC relative relocation.  */
71    HOWTO (R_PJ_CODE_REL32,               /* type */    HOWTO (R_PJ_CODE_REL32,               /* type */
72           0,                     /* rightshift */           0,                     /* rightshift */
73           2,                     /* size (0 = byte, 1 = short, 2 = long) */           2,                     /* size (0 = byte, 1 = short, 2 = long) */
74           32,                    /* bitsize */           32,                    /* bitsize */
75           true,                  /* pc_relative */           TRUE,                  /* pc_relative */
76           0,                     /* bitpos */           0,                     /* bitpos */
77           complain_overflow_signed, /* complain_on_overflow */           complain_overflow_signed, /* complain_on_overflow */
78           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
79           "R_PJ_REL32",          /* name */           "R_PJ_REL32",          /* name */
80           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
81           0,                     /* src_mask */           0,                     /* src_mask */
82           0xffffffff,            /* dst_mask */           0xffffffff,            /* dst_mask */
83           true),                 /* pcrel_offset */           TRUE),                 /* pcrel_offset */
84    
85  /* 16 bit PC relative relocation.  */  /* 16 bit PC relative relocation.  */
86    HOWTO (R_PJ_CODE_REL16,               /* type */    HOWTO (R_PJ_CODE_REL16,               /* type */
87           0,                     /* rightshift */           0,                     /* rightshift */
88           1,                     /* size (0 = byte, 1 = short, 2 = long) */           1,                     /* size (0 = byte, 1 = short, 2 = long) */
89           16,                    /* bitsize */           16,                    /* bitsize */
90           true,                  /* pc_relative */           TRUE,                  /* pc_relative */
91           0,                     /* bitpos */           0,                     /* bitpos */
92           complain_overflow_signed, /* complain_on_overf6w */           complain_overflow_signed, /* complain_on_overf6w */
93           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
94           "R_PJ_REL16",          /* name */           "R_PJ_REL16",          /* name */
95           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
96           0xffff,                /* src_mask */           0xffff,                /* src_mask */
97           0xffff,                /* dst_mask */           0xffff,                /* dst_mask */
98           true),                 /* pcrel_offset */           TRUE),                 /* pcrel_offset */
99    EMPTY_HOWTO (4),    EMPTY_HOWTO (4),
100    EMPTY_HOWTO (5),    EMPTY_HOWTO (5),
101    HOWTO (R_PJ_CODE_DIR32,       /* type */    HOWTO (R_PJ_CODE_DIR32,       /* type */
102           0,                     /* rightshift */           0,                     /* rightshift */
103           2,                     /* size (0 = byte, 1 = short, 2 = long) */           2,                     /* size (0 = byte, 1 = short, 2 = long) */
104           32,                    /* bitsize */           32,                    /* bitsize */
105           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
106           0,                     /* bitpos */           0,                     /* bitpos */
107           complain_overflow_bitfield, /* complain_on_overflow */           complain_overflow_bitfield, /* complain_on_overflow */
108           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
109           "R_PJ_CODE_DIR32",     /* name */           "R_PJ_CODE_DIR32",     /* name */
110           true,                  /* partial_inplace */           TRUE,                  /* partial_inplace */
111           0xffffffff,            /* src_mask */           0xffffffff,            /* src_mask */
112           0xffffffff,            /* dst_mask */           0xffffffff,            /* dst_mask */
113           false),                /* pcrel_offset */           FALSE),                /* pcrel_offset */
114    
115    EMPTY_HOWTO (7),    EMPTY_HOWTO (7),
116    EMPTY_HOWTO (8),    EMPTY_HOWTO (8),
# Line 123  static reloc_howto_type pj_elf_howto_tab Line 123  static reloc_howto_type pj_elf_howto_tab
123           0,                     /* rightshift */           0,                     /* rightshift */
124           1,                     /* size (0 = byte, 1 = short, 2 = long) */           1,                     /* size (0 = byte, 1 = short, 2 = long) */
125           16,                    /* bitsize */           16,                    /* bitsize */
126           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
127           0,                     /* bitpos */           0,                     /* bitpos */
128           complain_overflow_unsigned, /* complain_on_overflow */           complain_overflow_unsigned, /* complain_on_overflow */
129           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
130           "R_PJ_LO16",           /* name */           "R_PJ_LO16",           /* name */
131           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
132           0xffff,                /* src_mask */           0xffff,                /* src_mask */
133           0xffff,                /* dst_mask */           0xffff,                /* dst_mask */
134           true),                 /* pcrel_offset */           TRUE),                 /* pcrel_offset */
135    
136      HOWTO (R_PJ_CODE_HI16,      /* type */      HOWTO (R_PJ_CODE_HI16,      /* type */
137           16,                    /* rightshift */           16,                    /* rightshift */
138           1,                     /* size (0 = byte, 1 = short, 2 = long) */           1,                     /* size (0 = byte, 1 = short, 2 = long) */
139           16,                    /* bitsize */           16,                    /* bitsize */
140           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
141           0,                     /* bitpos */           0,                     /* bitpos */
142           complain_overflow_unsigned, /* complain_on_overflow */           complain_overflow_unsigned, /* complain_on_overflow */
143           pj_elf_reloc,          /* special_function */           pj_elf_reloc,          /* special_function */
144           "R_PJ_HI16",           /* name */           "R_PJ_HI16",           /* name */
145           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
146           0xffff,                /* src_mask */           0xffff,                /* src_mask */
147           0xffff,                /* dst_mask */           0xffff,                /* dst_mask */
148           true),                 /* pcrel_offset */           TRUE),                 /* pcrel_offset */
149    
150    /* GNU extension to record C++ vtable hierarchy */    /* GNU extension to record C++ vtable hierarchy */
151    HOWTO (R_PJ_GNU_VTINHERIT,    /* type */    HOWTO (R_PJ_GNU_VTINHERIT,    /* type */
152           0,                     /* rightshift */           0,                     /* rightshift */
153           2,                     /* size (0 = byte, 1 = short, 2 = long) */           2,                     /* size (0 = byte, 1 = short, 2 = long) */
154           0,                     /* bitsize */           0,                     /* bitsize */
155           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
156           0,                     /* bitpos */           0,                     /* bitpos */
157           complain_overflow_dont, /* complain_on_overflow */           complain_overflow_dont, /* complain_on_overflow */
158           NULL,                  /* special_function */           NULL,                  /* special_function */
159           "R_PJ_GNU_VTINHERIT",  /* name */           "R_PJ_GNU_VTINHERIT",  /* name */
160           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
161           0,                     /* src_mask */           0,                     /* src_mask */
162           0,                     /* dst_mask */           0,                     /* dst_mask */
163           false),                /* pcrel_offset */           FALSE),                /* pcrel_offset */
164    
165    /* GNU extension to record C++ vtable member usage */    /* GNU extension to record C++ vtable member usage */
166    HOWTO (R_PJ_GNU_VTENTRY,     /* type */    HOWTO (R_PJ_GNU_VTENTRY,     /* type */
167           0,                     /* rightshift */           0,                     /* rightshift */
168           2,                     /* size (0 = byte, 1 = short, 2 = long) */           2,                     /* size (0 = byte, 1 = short, 2 = long) */
169           0,                     /* bitsize */           0,                     /* bitsize */
170           false,                 /* pc_relative */           FALSE,                 /* pc_relative */
171           0,                     /* bitpos */           0,                     /* bitpos */
172           complain_overflow_dont, /* complain_on_overflow */           complain_overflow_dont, /* complain_on_overflow */
173           _bfd_elf_rel_vtable_reloc_fn,  /* special_function */           _bfd_elf_rel_vtable_reloc_fn,  /* special_function */
174           "R_PJ_GNU_VTENTRY",   /* name */           "R_PJ_GNU_VTENTRY",   /* name */
175           false,                 /* partial_inplace */           FALSE,                 /* partial_inplace */
176           0,                     /* src_mask */           0,                     /* src_mask */
177           0,                     /* dst_mask */           0,                     /* dst_mask */
178           false),                /* pcrel_offset */           FALSE),                /* pcrel_offset */
   
179  };  };
180    
181  /* This function is used for normal relocs.  This is like the COFF  /* This function is used for normal relocs.  This is like the COFF
# Line 329  pj_elf_info_to_howto (abfd, cache_ptr, d Line 328  pj_elf_info_to_howto (abfd, cache_ptr, d
328  static void  static void
329  pj_elf_final_write_processing (abfd, linker)  pj_elf_final_write_processing (abfd, linker)
330       bfd *abfd;       bfd *abfd;
331       boolean linker ATTRIBUTE_UNUSED;       bfd_boolean linker ATTRIBUTE_UNUSED;
332  {  {
333      elf_elfheader (abfd)->e_flags |= EF_PICOJAVA_ARCH;      elf_elfheader (abfd)->e_flags |= EF_PICOJAVA_ARCH;
334      elf_elfheader (abfd)->e_flags |= EF_PICOJAVA_GNUCALLS;      elf_elfheader (abfd)->e_flags |= EF_PICOJAVA_GNUCALLS;

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.1.20.1

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26