OLD | NEW |
1 /* PowerPC-specific support for 32-bit ELF | 1 /* PowerPC-specific support for 32-bit ELF |
2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, | 2 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, |
3 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 | 3 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 |
4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
5 Written by Ian Lance Taylor, Cygnus Support. | 5 Written by Ian Lance Taylor, Cygnus Support. |
6 | 6 |
7 This file is part of BFD, the Binary File Descriptor library. | 7 This file is part of BFD, the Binary File Descriptor library. |
8 | 8 |
9 This program is free software; you can redistribute it and/or modify | 9 This program is free software; you can redistribute it and/or modify |
10 it under the terms of the GNU General Public License as published by | 10 it under the terms of the GNU General Public License as published by |
11 the Free Software Foundation; either version 3 of the License, or | 11 the Free Software Foundation; either version 3 of the License, or |
12 (at your option) any later version. | 12 (at your option) any later version. |
13 | 13 |
(...skipping 17 matching lines...) Expand all Loading... |
31 #include <stdarg.h> | 31 #include <stdarg.h> |
32 #include "bfd.h" | 32 #include "bfd.h" |
33 #include "bfdlink.h" | 33 #include "bfdlink.h" |
34 #include "libbfd.h" | 34 #include "libbfd.h" |
35 #include "elf-bfd.h" | 35 #include "elf-bfd.h" |
36 #include "elf/ppc.h" | 36 #include "elf/ppc.h" |
37 #include "elf32-ppc.h" | 37 #include "elf32-ppc.h" |
38 #include "elf-vxworks.h" | 38 #include "elf-vxworks.h" |
39 #include "dwarf2.h" | 39 #include "dwarf2.h" |
40 | 40 |
| 41 typedef enum split16_format_type |
| 42 { |
| 43 split16a_type = 0, |
| 44 split16d_type |
| 45 } |
| 46 split16_format_type; |
| 47 |
41 /* RELA relocations are used here. */ | 48 /* RELA relocations are used here. */ |
42 | 49 |
43 static bfd_reloc_status_type ppc_elf_addr16_ha_reloc | 50 static bfd_reloc_status_type ppc_elf_addr16_ha_reloc |
44 (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); | 51 (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); |
45 static bfd_reloc_status_type ppc_elf_unhandled_reloc | 52 static bfd_reloc_status_type ppc_elf_unhandled_reloc |
46 (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); | 53 (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); |
| 54 static void ppc_elf_vle_split16 |
| 55 (bfd *, bfd_byte *, bfd_vma, bfd_vma, split16_format_type); |
47 | 56 |
48 /* Branch prediction bit for branch taken relocs. */ | 57 /* Branch prediction bit for branch taken relocs. */ |
49 #define BRANCH_PREDICT_BIT 0x200000 | 58 #define BRANCH_PREDICT_BIT 0x200000 |
50 /* Mask to set RA in memory instructions. */ | 59 /* Mask to set RA in memory instructions. */ |
51 #define RA_REGISTER_MASK 0x001f0000 | 60 #define RA_REGISTER_MASK 0x001f0000 |
52 /* Value to shift register by to insert RA. */ | 61 /* Value to shift register by to insert RA. */ |
53 #define RA_REGISTER_SHIFT 16 | 62 #define RA_REGISTER_SHIFT 16 |
54 | 63 |
55 /* The name of the dynamic interpreter. This is put in the .interp | 64 /* The name of the dynamic interpreter. This is put in the .interp |
56 section. */ | 65 section. */ |
(...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1382 HOWTO (R_PPC_EMB_RELSDA, /* type */ | 1391 HOWTO (R_PPC_EMB_RELSDA, /* type */ |
1383 0, /* rightshift */ | 1392 0, /* rightshift */ |
1384 1, /* size (0 = byte, 1 = short, 2 = long) */ | 1393 1, /* size (0 = byte, 1 = short, 2 = long) */ |
1385 16, /* bitsize */ | 1394 16, /* bitsize */ |
1386 FALSE, /* pc_relative */ | 1395 FALSE, /* pc_relative */ |
1387 0, /* bitpos */ | 1396 0, /* bitpos */ |
1388 complain_overflow_signed, /* complain_on_overflow */ | 1397 complain_overflow_signed, /* complain_on_overflow */ |
1389 bfd_elf_generic_reloc, /* special_function */ | 1398 bfd_elf_generic_reloc, /* special_function */ |
1390 "R_PPC_EMB_RELSDA", /* name */ | 1399 "R_PPC_EMB_RELSDA", /* name */ |
1391 FALSE, /* partial_inplace */ | 1400 FALSE, /* partial_inplace */ |
error: old chunk mismatch |
None
OLD | NEW |