2010-01-13 Tristan Gingold <gingold@adacore.com>
authorTristan Gingold <gingold@adacore.com>
Wed, 13 Jan 2010 11:35:19 +0000 (11:35 +0000)
committerTristan Gingold <gingold@adacore.com>
Wed, 13 Jan 2010 11:35:19 +0000 (11:35 +0000)
* reloc.c: Add MACH_O_X86_64 relocations.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.

bfd/ChangeLog
bfd/bfd-in2.h
bfd/libbfd.h
bfd/reloc.c

index 8c397c3ee8835917c12c689c33ab29183f4aa3f2..b70e9347358eff904ea19515d14edd78b9a33f9c 100644 (file)
@@ -1,3 +1,9 @@
+2010-01-13  Tristan Gingold  <gingold@adacore.com>
+
+       * reloc.c: Add MACH_O_X86_64 relocations.
+       * bfd-in2.h: Regenerate.
+       * libbfd.h: Regenerate.
+
 2010-01-13  Tristan Gingold  <gingold@adacore.com>
 
        * archive.c (normalize): Use lbasename.
index 447f78798323a472ec85b04fb6f0563d24fe39de..b17f2e196dc0f8203a02fdf228798bb1270aed49 100644 (file)
@@ -4563,9 +4563,36 @@ BFD_RELOC_XTENSA_ASM_EXPAND.  */
 BFD_RELOC_MACH_O_PAIR.  */
   BFD_RELOC_MACH_O_SECTDIFF,
 
-/* Mach-O generic relocations.  */
+/* Pair of relocation.  Contains the first symbol.  */
   BFD_RELOC_MACH_O_PAIR,
 
+/* PCREL relocations.  They are marked as branch to create PLT entry if
+required.  */
+  BFD_RELOC_MACH_O_X86_64_BRANCH32,
+  BFD_RELOC_MACH_O_X86_64_BRANCH8,
+
+/* Used when referencing a GOT entry.  */
+  BFD_RELOC_MACH_O_X86_64_GOT,
+
+/* Used when loading a GOT entry with movq.  It is specially marked so that
+the linker could optimize the movq to a leaq if possible.  */
+  BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
+
+/* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
+  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32,
+
+/* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
+  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64,
+
+/* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
+  BFD_RELOC_MACH_O_X86_64_PCREL32_1,
+
+/* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
+  BFD_RELOC_MACH_O_X86_64_PCREL32_2,
+
+/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
+  BFD_RELOC_MACH_O_X86_64_PCREL32_4,
+
 /* This is a 32 bit reloc for the microblaze that stores the 
 low 16 bits of a value  */
   BFD_RELOC_MICROBLAZE_32_LO,
index 8146ef9011617520bdac9a00ae37e209519308ad..073086ca8f85f68be81dc7227f4296cd5f4a3044 100644 (file)
@@ -2103,6 +2103,15 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
   "BFD_RELOC_LM32_RELATIVE",
   "BFD_RELOC_MACH_O_SECTDIFF",
   "BFD_RELOC_MACH_O_PAIR",
+  "BFD_RELOC_MACH_O_X86_64_BRANCH32",
+  "BFD_RELOC_MACH_O_X86_64_BRANCH8",
+  "BFD_RELOC_MACH_O_X86_64_GOT",
+  "BFD_RELOC_MACH_O_X86_64_GOT_LOAD",
+  "BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32",
+  "BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64",
+  "BFD_RELOC_MACH_O_X86_64_PCREL32_1",
+  "BFD_RELOC_MACH_O_X86_64_PCREL32_2",
+  "BFD_RELOC_MACH_O_X86_64_PCREL32_4",
   "BFD_RELOC_MICROBLAZE_32_LO",
   "BFD_RELOC_MICROBLAZE_32_LO_PCREL",
   "BFD_RELOC_MICROBLAZE_32_ROSDA",
index 0ea7a85c192b00a942273686aea5fa07c95e8501..9451740b98b4801ddf7cd882363ecb580c1563c8 100644 (file)
@@ -5235,14 +5235,51 @@ ENUMDOC
  Lattice Mico32 relocations.
 
 ENUM
-   BFD_RELOC_MACH_O_SECTDIFF
+  BFD_RELOC_MACH_O_SECTDIFF
 ENUMDOC
-   Difference between two section addreses.  Must be followed by a
-   BFD_RELOC_MACH_O_PAIR.
+  Difference between two section addreses.  Must be followed by a
+  BFD_RELOC_MACH_O_PAIR.
 ENUM
-   BFD_RELOC_MACH_O_PAIR
+  BFD_RELOC_MACH_O_PAIR
 ENUMDOC
- Mach-O generic relocations.
+  Pair of relocation.  Contains the first symbol.
+
+ENUM
+  BFD_RELOC_MACH_O_X86_64_BRANCH32
+ENUMX
+  BFD_RELOC_MACH_O_X86_64_BRANCH8
+ENUMDOC
+  PCREL relocations.  They are marked as branch to create PLT entry if
+  required.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_GOT
+ENUMDOC
+  Used when referencing a GOT entry.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_GOT_LOAD
+ENUMDOC
+  Used when loading a GOT entry with movq.  It is specially marked so that
+  the linker could optimize the movq to a leaq if possible.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32
+ENUMDOC
+  Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64
+ENUMDOC
+  Symbol will be substracted.  Must be followed by a BFD_RELOC_64.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_PCREL32_1
+ENUMDOC
+  Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_PCREL32_2
+ENUMDOC
+  Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.
+ENUM
+  BFD_RELOC_MACH_O_X86_64_PCREL32_4
+ENUMDOC
+  Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.
 
 ENUM
   BFD_RELOC_MICROBLAZE_32_LO