]> Cypherpunks repositories - gostls13.git/commitdiff
debug/elf: add relocation constants
authorDavid Crawshaw <crawshaw@golang.org>
Fri, 6 Oct 2017 19:59:44 +0000 (15:59 -0400)
committerDavid Crawshaw <crawshaw@golang.org>
Wed, 11 Oct 2017 16:40:10 +0000 (16:40 +0000)
Compiled from various tables found around the internet.

Some of these are used by cmd/link.

Change-Id: I258b25e694dbe91a61d675763f2c47ccc928fd70
Reviewed-on: https://go-review.googlesource.com/69012
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/debug/elf/elf.go

index 6e6c801a49a6680fc0498790d8e1e1d59de9e58e..c8a4fe6e610ccd46b31e957ac2947a2f09f82407 100644 (file)
@@ -744,30 +744,49 @@ func (i SymVis) GoString() string { return stringName(uint32(i), stvStrings, tru
 type R_X86_64 int
 
 const (
-       R_X86_64_NONE     R_X86_64 = 0  /* No relocation. */
-       R_X86_64_64       R_X86_64 = 1  /* Add 64 bit symbol value. */
-       R_X86_64_PC32     R_X86_64 = 2  /* PC-relative 32 bit signed sym value. */
-       R_X86_64_GOT32    R_X86_64 = 3  /* PC-relative 32 bit GOT offset. */
-       R_X86_64_PLT32    R_X86_64 = 4  /* PC-relative 32 bit PLT offset. */
-       R_X86_64_COPY     R_X86_64 = 5  /* Copy data from shared object. */
-       R_X86_64_GLOB_DAT R_X86_64 = 6  /* Set GOT entry to data address. */
-       R_X86_64_JMP_SLOT R_X86_64 = 7  /* Set GOT entry to code address. */
-       R_X86_64_RELATIVE R_X86_64 = 8  /* Add load address of shared object. */
-       R_X86_64_GOTPCREL R_X86_64 = 9  /* Add 32 bit signed pcrel offset to GOT. */
-       R_X86_64_32       R_X86_64 = 10 /* Add 32 bit zero extended symbol value */
-       R_X86_64_32S      R_X86_64 = 11 /* Add 32 bit sign extended symbol value */
-       R_X86_64_16       R_X86_64 = 12 /* Add 16 bit zero extended symbol value */
-       R_X86_64_PC16     R_X86_64 = 13 /* Add 16 bit signed extended pc relative symbol value */
-       R_X86_64_8        R_X86_64 = 14 /* Add 8 bit zero extended symbol value */
-       R_X86_64_PC8      R_X86_64 = 15 /* Add 8 bit signed extended pc relative symbol value */
-       R_X86_64_DTPMOD64 R_X86_64 = 16 /* ID of module containing symbol */
-       R_X86_64_DTPOFF64 R_X86_64 = 17 /* Offset in TLS block */
-       R_X86_64_TPOFF64  R_X86_64 = 18 /* Offset in static TLS block */
-       R_X86_64_TLSGD    R_X86_64 = 19 /* PC relative offset to GD GOT entry */
-       R_X86_64_TLSLD    R_X86_64 = 20 /* PC relative offset to LD GOT entry */
-       R_X86_64_DTPOFF32 R_X86_64 = 21 /* Offset in TLS block */
-       R_X86_64_GOTTPOFF R_X86_64 = 22 /* PC relative offset to IE GOT entry */
-       R_X86_64_TPOFF32  R_X86_64 = 23 /* Offset in static TLS block */
+       R_X86_64_NONE            R_X86_64 = 0  /* No relocation. */
+       R_X86_64_64              R_X86_64 = 1  /* Add 64 bit symbol value. */
+       R_X86_64_PC32            R_X86_64 = 2  /* PC-relative 32 bit signed sym value. */
+       R_X86_64_GOT32           R_X86_64 = 3  /* PC-relative 32 bit GOT offset. */
+       R_X86_64_PLT32           R_X86_64 = 4  /* PC-relative 32 bit PLT offset. */
+       R_X86_64_COPY            R_X86_64 = 5  /* Copy data from shared object. */
+       R_X86_64_GLOB_DAT        R_X86_64 = 6  /* Set GOT entry to data address. */
+       R_X86_64_JMP_SLOT        R_X86_64 = 7  /* Set GOT entry to code address. */
+       R_X86_64_RELATIVE        R_X86_64 = 8  /* Add load address of shared object. */
+       R_X86_64_GOTPCREL        R_X86_64 = 9  /* Add 32 bit signed pcrel offset to GOT. */
+       R_X86_64_32              R_X86_64 = 10 /* Add 32 bit zero extended symbol value */
+       R_X86_64_32S             R_X86_64 = 11 /* Add 32 bit sign extended symbol value */
+       R_X86_64_16              R_X86_64 = 12 /* Add 16 bit zero extended symbol value */
+       R_X86_64_PC16            R_X86_64 = 13 /* Add 16 bit signed extended pc relative symbol value */
+       R_X86_64_8               R_X86_64 = 14 /* Add 8 bit zero extended symbol value */
+       R_X86_64_PC8             R_X86_64 = 15 /* Add 8 bit signed extended pc relative symbol value */
+       R_X86_64_DTPMOD64        R_X86_64 = 16 /* ID of module containing symbol */
+       R_X86_64_DTPOFF64        R_X86_64 = 17 /* Offset in TLS block */
+       R_X86_64_TPOFF64         R_X86_64 = 18 /* Offset in static TLS block */
+       R_X86_64_TLSGD           R_X86_64 = 19 /* PC relative offset to GD GOT entry */
+       R_X86_64_TLSLD           R_X86_64 = 20 /* PC relative offset to LD GOT entry */
+       R_X86_64_DTPOFF32        R_X86_64 = 21 /* Offset in TLS block */
+       R_X86_64_GOTTPOFF        R_X86_64 = 22 /* PC relative offset to IE GOT entry */
+       R_X86_64_TPOFF32         R_X86_64 = 23 /* Offset in static TLS block */
+       R_X86_64_PC64            R_X86_64 = 24 /* PC relative 64-bit sign extended symbol value. */
+       R_X86_64_GOTOFF64        R_X86_64 = 25
+       R_X86_64_GOTPC32         R_X86_64 = 26
+       R_X86_64_GOT64           R_X86_64 = 27
+       R_X86_64_GOTPCREL64      R_X86_64 = 28
+       R_X86_64_GOTPC64         R_X86_64 = 29
+       R_X86_64_GOTPLT64        R_X86_64 = 30
+       R_X86_64_PLTOFF64        R_X86_64 = 31
+       R_X86_64_SIZE32          R_X86_64 = 32
+       R_X86_64_SIZE64          R_X86_64 = 33
+       R_X86_64_GOTPC32_TLSDESC R_X86_64 = 34
+       R_X86_64_TLSDESC_CALL    R_X86_64 = 35
+       R_X86_64_TLSDESC         R_X86_64 = 36
+       R_X86_64_IRELATIVE       R_X86_64 = 37
+       R_X86_64_RELATIVE64      R_X86_64 = 38
+       R_X86_64_PC32_BND        R_X86_64 = 39
+       R_X86_64_PLT32_BND       R_X86_64 = 40
+       R_X86_64_GOTPCRELX       R_X86_64 = 41
+       R_X86_64_REX_GOTPCRELX   R_X86_64 = 42
 )
 
 var rx86_64Strings = []intName{
@@ -795,6 +814,25 @@ var rx86_64Strings = []intName{
        {21, "R_X86_64_DTPOFF32"},
        {22, "R_X86_64_GOTTPOFF"},
        {23, "R_X86_64_TPOFF32"},
+       {24, "R_X86_64_PC64"},
+       {25, "R_X86_64_GOTOFF64"},
+       {26, "R_X86_64_GOTPC32"},
+       {27, "R_X86_64_GOT64"},
+       {28, "R_X86_64_GOTPCREL64"},
+       {29, "R_X86_64_GOTPC64"},
+       {30, "R_X86_64_GOTPLT64"},
+       {31, "R_X86_64_PLTOFF64"},
+       {32, "R_X86_64_SIZE32"},
+       {33, "R_X86_64_SIZE64"},
+       {34, "R_X86_64_GOTPC32_TLSDESC"},
+       {35, "R_X86_64_TLSDESC_CALL"},
+       {36, "R_X86_64_TLSDESC"},
+       {37, "R_X86_64_IRELATIVE"},
+       {38, "R_X86_64_RELATIVE64"},
+       {39, "R_X86_64_PC32_BND"},
+       {40, "R_X86_64_PLT32_BND"},
+       {41, "R_X86_64_GOTPCRELX"},
+       {42, "R_X86_64_REX_GOTPCRELX"},
 }
 
 func (i R_X86_64) String() string   { return stringName(uint32(i), rx86_64Strings, false) }
@@ -887,10 +925,17 @@ const (
        R_AARCH64_LDST64_ABS_LO12_NC              R_AARCH64 = 286
        R_AARCH64_LDST128_ABS_LO12_NC             R_AARCH64 = 299
        R_AARCH64_GOT_LD_PREL19                   R_AARCH64 = 309
+       R_AARCH64_LD64_GOTOFF_LO15                R_AARCH64 = 310
        R_AARCH64_ADR_GOT_PAGE                    R_AARCH64 = 311
        R_AARCH64_LD64_GOT_LO12_NC                R_AARCH64 = 312
+       R_AARCH64_LD64_GOTPAGE_LO15               R_AARCH64 = 313
+       R_AARCH64_TLSGD_ADR_PREL21                R_AARCH64 = 512
        R_AARCH64_TLSGD_ADR_PAGE21                R_AARCH64 = 513
        R_AARCH64_TLSGD_ADD_LO12_NC               R_AARCH64 = 514
+       R_AARCH64_TLSGD_MOVW_G1                   R_AARCH64 = 515
+       R_AARCH64_TLSGD_MOVW_G0_NC                R_AARCH64 = 516
+       R_AARCH64_TLSLD_ADR_PREL21                R_AARCH64 = 517
+       R_AARCH64_TLSLD_ADR_PAGE21                R_AARCH64 = 518
        R_AARCH64_TLSIE_MOVW_GOTTPREL_G1          R_AARCH64 = 539
        R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC       R_AARCH64 = 540
        R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21       R_AARCH64 = 541
@@ -914,6 +959,10 @@ const (
        R_AARCH64_TLSDESC_LDR                     R_AARCH64 = 567
        R_AARCH64_TLSDESC_ADD                     R_AARCH64 = 568
        R_AARCH64_TLSDESC_CALL                    R_AARCH64 = 569
+       R_AARCH64_TLSLE_LDST128_TPREL_LO12        R_AARCH64 = 570
+       R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC     R_AARCH64 = 571
+       R_AARCH64_TLSLD_LDST128_DTPREL_LO12       R_AARCH64 = 572
+       R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC    R_AARCH64 = 573
        R_AARCH64_COPY                            R_AARCH64 = 1024
        R_AARCH64_GLOB_DAT                        R_AARCH64 = 1025
        R_AARCH64_JUMP_SLOT                       R_AARCH64 = 1026
@@ -1009,10 +1058,17 @@ var raarch64Strings = []intName{
        {286, "R_AARCH64_LDST64_ABS_LO12_NC"},
        {299, "R_AARCH64_LDST128_ABS_LO12_NC"},
        {309, "R_AARCH64_GOT_LD_PREL19"},
+       {310, "R_AARCH64_LD64_GOTOFF_LO15"},
        {311, "R_AARCH64_ADR_GOT_PAGE"},
        {312, "R_AARCH64_LD64_GOT_LO12_NC"},
+       {313, "R_AARCH64_LD64_GOTPAGE_LO15"},
+       {512, "R_AARCH64_TLSGD_ADR_PREL21"},
        {513, "R_AARCH64_TLSGD_ADR_PAGE21"},
        {514, "R_AARCH64_TLSGD_ADD_LO12_NC"},
+       {515, "R_AARCH64_TLSGD_MOVW_G1"},
+       {516, "R_AARCH64_TLSGD_MOVW_G0_NC"},
+       {517, "R_AARCH64_TLSLD_ADR_PREL21"},
+       {518, "R_AARCH64_TLSLD_ADR_PAGE21"},
        {539, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G1"},
        {540, "R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC"},
        {541, "R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21"},
@@ -1036,6 +1092,10 @@ var raarch64Strings = []intName{
        {567, "R_AARCH64_TLSDESC_LDR"},
        {568, "R_AARCH64_TLSDESC_ADD"},
        {569, "R_AARCH64_TLSDESC_CALL"},
+       {570, "R_AARCH64_TLSLE_LDST128_TPREL_LO12"},
+       {571, "R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC"},
+       {572, "R_AARCH64_TLSLD_LDST128_DTPREL_LO12"},
+       {573, "R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC"},
        {1024, "R_AARCH64_COPY"},
        {1025, "R_AARCH64_GLOB_DAT"},
        {1026, "R_AARCH64_JUMP_SLOT"},
@@ -1122,39 +1182,150 @@ func (i R_ALPHA) GoString() string { return stringName(uint32(i), ralphaStrings,
 type R_ARM int
 
 const (
-       R_ARM_NONE          R_ARM = 0 /* No relocation. */
-       R_ARM_PC24          R_ARM = 1
-       R_ARM_ABS32         R_ARM = 2
-       R_ARM_REL32         R_ARM = 3
-       R_ARM_PC13          R_ARM = 4
-       R_ARM_ABS16         R_ARM = 5
-       R_ARM_ABS12         R_ARM = 6
-       R_ARM_THM_ABS5      R_ARM = 7
-       R_ARM_ABS8          R_ARM = 8
-       R_ARM_SBREL32       R_ARM = 9
-       R_ARM_THM_PC22      R_ARM = 10
-       R_ARM_THM_PC8       R_ARM = 11
-       R_ARM_AMP_VCALL9    R_ARM = 12
-       R_ARM_SWI24         R_ARM = 13
-       R_ARM_THM_SWI8      R_ARM = 14
-       R_ARM_XPC25         R_ARM = 15
-       R_ARM_THM_XPC22     R_ARM = 16
-       R_ARM_COPY          R_ARM = 20 /* Copy data from shared object. */
-       R_ARM_GLOB_DAT      R_ARM = 21 /* Set GOT entry to data address. */
-       R_ARM_JUMP_SLOT     R_ARM = 22 /* Set GOT entry to code address. */
-       R_ARM_RELATIVE      R_ARM = 23 /* Add load address of shared object. */
-       R_ARM_GOTOFF        R_ARM = 24 /* Add GOT-relative symbol address. */
-       R_ARM_GOTPC         R_ARM = 25 /* Add PC-relative GOT table address. */
-       R_ARM_GOT32         R_ARM = 26 /* Add PC-relative GOT offset. */
-       R_ARM_PLT32         R_ARM = 27 /* Add PC-relative PLT offset. */
-       R_ARM_GNU_VTENTRY   R_ARM = 100
-       R_ARM_GNU_VTINHERIT R_ARM = 101
-       R_ARM_RSBREL32      R_ARM = 250
-       R_ARM_THM_RPC22     R_ARM = 251
-       R_ARM_RREL32        R_ARM = 252
-       R_ARM_RABS32        R_ARM = 253
-       R_ARM_RPC24         R_ARM = 254
-       R_ARM_RBASE         R_ARM = 255
+       R_ARM_NONE               R_ARM = 0 /* No relocation. */
+       R_ARM_PC24               R_ARM = 1
+       R_ARM_ABS32              R_ARM = 2
+       R_ARM_REL32              R_ARM = 3
+       R_ARM_PC13               R_ARM = 4
+       R_ARM_ABS16              R_ARM = 5
+       R_ARM_ABS12              R_ARM = 6
+       R_ARM_THM_ABS5           R_ARM = 7
+       R_ARM_ABS8               R_ARM = 8
+       R_ARM_SBREL32            R_ARM = 9
+       R_ARM_THM_PC22           R_ARM = 10
+       R_ARM_THM_PC8            R_ARM = 11
+       R_ARM_AMP_VCALL9         R_ARM = 12
+       R_ARM_SWI24              R_ARM = 13
+       R_ARM_THM_SWI8           R_ARM = 14
+       R_ARM_XPC25              R_ARM = 15
+       R_ARM_THM_XPC22          R_ARM = 16
+       R_ARM_TLS_DTPMOD32       R_ARM = 17
+       R_ARM_TLS_DTPOFF32       R_ARM = 18
+       R_ARM_TLS_TPOFF32        R_ARM = 19
+       R_ARM_COPY               R_ARM = 20 /* Copy data from shared object. */
+       R_ARM_GLOB_DAT           R_ARM = 21 /* Set GOT entry to data address. */
+       R_ARM_JUMP_SLOT          R_ARM = 22 /* Set GOT entry to code address. */
+       R_ARM_RELATIVE           R_ARM = 23 /* Add load address of shared object. */
+       R_ARM_GOTOFF             R_ARM = 24 /* Add GOT-relative symbol address. */
+       R_ARM_GOTPC              R_ARM = 25 /* Add PC-relative GOT table address. */
+       R_ARM_GOT32              R_ARM = 26 /* Add PC-relative GOT offset. */
+       R_ARM_PLT32              R_ARM = 27 /* Add PC-relative PLT offset. */
+       R_ARM_CALL               R_ARM = 28
+       R_ARM_JUMP24             R_ARM = 29
+       R_ARM_THM_JUMP24         R_ARM = 30
+       R_ARM_BASE_ABS           R_ARM = 31
+       R_ARM_ALU_PCREL_7_0      R_ARM = 32
+       R_ARM_ALU_PCREL_15_8     R_ARM = 33
+       R_ARM_ALU_PCREL_23_15    R_ARM = 34
+       R_ARM_LDR_SBREL_11_10_NC R_ARM = 35
+       R_ARM_ALU_SBREL_19_12_NC R_ARM = 36
+       R_ARM_ALU_SBREL_27_20_CK R_ARM = 37
+       R_ARM_TARGET1            R_ARM = 38
+       R_ARM_SBREL31            R_ARM = 39
+       R_ARM_V4BX               R_ARM = 40
+       R_ARM_TARGET2            R_ARM = 41
+       R_ARM_PREL31             R_ARM = 42
+       R_ARM_MOVW_ABS_NC        R_ARM = 43
+       R_ARM_MOVT_ABS           R_ARM = 44
+       R_ARM_MOVW_PREL_NC       R_ARM = 45
+       R_ARM_MOVT_PREL          R_ARM = 46
+       R_ARM_THM_MOVW_ABS_NC    R_ARM = 47
+       R_ARM_THM_MOVT_ABS       R_ARM = 48
+       R_ARM_THM_MOVW_PREL_NC   R_ARM = 49
+       R_ARM_THM_MOVT_PREL      R_ARM = 50
+       R_ARM_THM_JUMP19         R_ARM = 51
+       R_ARM_THM_JUMP6          R_ARM = 52
+       R_ARM_THM_ALU_PREL_11_0  R_ARM = 53
+       R_ARM_THM_PC12           R_ARM = 54
+       R_ARM_ABS32_NOI          R_ARM = 55
+       R_ARM_REL32_NOI          R_ARM = 56
+       R_ARM_ALU_PC_G0_NC       R_ARM = 57
+       R_ARM_ALU_PC_G0          R_ARM = 58
+       R_ARM_ALU_PC_G1_NC       R_ARM = 59
+       R_ARM_ALU_PC_G1          R_ARM = 60
+       R_ARM_ALU_PC_G2          R_ARM = 61
+       R_ARM_LDR_PC_G1          R_ARM = 62
+       R_ARM_LDR_PC_G2          R_ARM = 63
+       R_ARM_LDRS_PC_G0         R_ARM = 64
+       R_ARM_LDRS_PC_G1         R_ARM = 65
+       R_ARM_LDRS_PC_G2         R_ARM = 66
+       R_ARM_LDC_PC_G0          R_ARM = 67
+       R_ARM_LDC_PC_G1          R_ARM = 68
+       R_ARM_LDC_PC_G2          R_ARM = 69
+       R_ARM_ALU_SB_G0_NC       R_ARM = 70
+       R_ARM_ALU_SB_G0          R_ARM = 71
+       R_ARM_ALU_SB_G1_NC       R_ARM = 72
+       R_ARM_ALU_SB_G1          R_ARM = 73
+       R_ARM_ALU_SB_G2          R_ARM = 74
+       R_ARM_LDR_SB_G0          R_ARM = 75
+       R_ARM_LDR_SB_G1          R_ARM = 76
+       R_ARM_LDR_SB_G2          R_ARM = 77
+       R_ARM_LDRS_SB_G0         R_ARM = 78
+       R_ARM_LDRS_SB_G1         R_ARM = 79
+       R_ARM_LDRS_SB_G2         R_ARM = 80
+       R_ARM_LDC_SB_G0          R_ARM = 81
+       R_ARM_LDC_SB_G1          R_ARM = 82
+       R_ARM_LDC_SB_G2          R_ARM = 83
+       R_ARM_MOVW_BREL_NC       R_ARM = 84
+       R_ARM_MOVT_BREL          R_ARM = 85
+       R_ARM_MOVW_BREL          R_ARM = 86
+       R_ARM_THM_MOVW_BREL_NC   R_ARM = 87
+       R_ARM_THM_MOVT_BREL      R_ARM = 88
+       R_ARM_THM_MOVW_BREL      R_ARM = 89
+       R_ARM_TLS_GOTDESC        R_ARM = 90
+       R_ARM_TLS_CALL           R_ARM = 91
+       R_ARM_TLS_DESCSEQ        R_ARM = 92
+       R_ARM_THM_TLS_CALL       R_ARM = 93
+       R_ARM_PLT32_ABS          R_ARM = 94
+       R_ARM_GOT_ABS            R_ARM = 95
+       R_ARM_GOT_PREL           R_ARM = 96
+       R_ARM_GOT_BREL12         R_ARM = 97
+       R_ARM_GOTOFF12           R_ARM = 98
+       R_ARM_GOTRELAX           R_ARM = 99
+       R_ARM_GNU_VTENTRY        R_ARM = 100
+       R_ARM_GNU_VTINHERIT      R_ARM = 101
+       R_ARM_THM_JUMP11         R_ARM = 102
+       R_ARM_THM_JUMP8          R_ARM = 103
+       R_ARM_TLS_GD32           R_ARM = 104
+       R_ARM_TLS_LDM32          R_ARM = 105
+       R_ARM_TLS_LDO32          R_ARM = 106
+       R_ARM_TLS_IE32           R_ARM = 107
+       R_ARM_TLS_LE32           R_ARM = 108
+       R_ARM_TLS_LDO12          R_ARM = 109
+       R_ARM_TLS_LE12           R_ARM = 110
+       R_ARM_TLS_IE12GP         R_ARM = 111
+       R_ARM_PRIVATE_0          R_ARM = 112
+       R_ARM_PRIVATE_1          R_ARM = 113
+       R_ARM_PRIVATE_2          R_ARM = 114
+       R_ARM_PRIVATE_3          R_ARM = 115
+       R_ARM_PRIVATE_4          R_ARM = 116
+       R_ARM_PRIVATE_5          R_ARM = 117
+       R_ARM_PRIVATE_6          R_ARM = 118
+       R_ARM_PRIVATE_7          R_ARM = 119
+       R_ARM_PRIVATE_8          R_ARM = 120
+       R_ARM_PRIVATE_9          R_ARM = 121
+       R_ARM_PRIVATE_10         R_ARM = 122
+       R_ARM_PRIVATE_11         R_ARM = 123
+       R_ARM_PRIVATE_12         R_ARM = 124
+       R_ARM_PRIVATE_13         R_ARM = 125
+       R_ARM_PRIVATE_14         R_ARM = 126
+       R_ARM_PRIVATE_15         R_ARM = 127
+       R_ARM_ME_TOO             R_ARM = 128
+       R_ARM_THM_TLS_DESCSEQ16  R_ARM = 129
+       R_ARM_THM_TLS_DESCSEQ32  R_ARM = 130
+       R_ARM_THM_GOT_BREL12     R_ARM = 131
+       R_ARM_THM_ALU_ABS_G0_NC  R_ARM = 132
+       R_ARM_THM_ALU_ABS_G1_NC  R_ARM = 133
+       R_ARM_THM_ALU_ABS_G2_NC  R_ARM = 134
+       R_ARM_THM_ALU_ABS_G3     R_ARM = 135
+       R_ARM_IRELATIVE          R_ARM = 160
+       R_ARM_RXPC25             R_ARM = 249
+       R_ARM_RSBREL32           R_ARM = 250
+       R_ARM_THM_RPC22          R_ARM = 251
+       R_ARM_RREL32             R_ARM = 252
+       R_ARM_RABS32             R_ARM = 253
+       R_ARM_RPC24              R_ARM = 254
+       R_ARM_RBASE              R_ARM = 255
 )
 
 var rarmStrings = []intName{
@@ -1175,6 +1346,9 @@ var rarmStrings = []intName{
        {14, "R_ARM_THM_SWI8"},
        {15, "R_ARM_XPC25"},
        {16, "R_ARM_THM_XPC22"},
+       {17, "R_ARM_TLS_DTPMOD32"},
+       {18, "R_ARM_TLS_DTPOFF32"},
+       {19, "R_ARM_TLS_TPOFF32"},
        {20, "R_ARM_COPY"},
        {21, "R_ARM_GLOB_DAT"},
        {22, "R_ARM_JUMP_SLOT"},
@@ -1183,8 +1357,116 @@ var rarmStrings = []intName{
        {25, "R_ARM_GOTPC"},
        {26, "R_ARM_GOT32"},
        {27, "R_ARM_PLT32"},
+       {28, "R_ARM_CALL"},
+       {29, "R_ARM_JUMP24"},
+       {30, "R_ARM_THM_JUMP24"},
+       {31, "R_ARM_BASE_ABS"},
+       {32, "R_ARM_ALU_PCREL_7_0"},
+       {33, "R_ARM_ALU_PCREL_15_8"},
+       {34, "R_ARM_ALU_PCREL_23_15"},
+       {35, "R_ARM_LDR_SBREL_11_10_NC"},
+       {36, "R_ARM_ALU_SBREL_19_12_NC"},
+       {37, "R_ARM_ALU_SBREL_27_20_CK"},
+       {38, "R_ARM_TARGET1"},
+       {39, "R_ARM_SBREL31"},
+       {40, "R_ARM_V4BX"},
+       {41, "R_ARM_TARGET2"},
+       {42, "R_ARM_PREL31"},
+       {43, "R_ARM_MOVW_ABS_NC"},
+       {44, "R_ARM_MOVT_ABS"},
+       {45, "R_ARM_MOVW_PREL_NC"},
+       {46, "R_ARM_MOVT_PREL"},
+       {47, "R_ARM_THM_MOVW_ABS_NC"},
+       {48, "R_ARM_THM_MOVT_ABS"},
+       {49, "R_ARM_THM_MOVW_PREL_NC"},
+       {50, "R_ARM_THM_MOVT_PREL"},
+       {51, "R_ARM_THM_JUMP19"},
+       {52, "R_ARM_THM_JUMP6"},
+       {53, "R_ARM_THM_ALU_PREL_11_0"},
+       {54, "R_ARM_THM_PC12"},
+       {55, "R_ARM_ABS32_NOI"},
+       {56, "R_ARM_REL32_NOI"},
+       {57, "R_ARM_ALU_PC_G0_NC"},
+       {58, "R_ARM_ALU_PC_G0"},
+       {59, "R_ARM_ALU_PC_G1_NC"},
+       {60, "R_ARM_ALU_PC_G1"},
+       {61, "R_ARM_ALU_PC_G2"},
+       {62, "R_ARM_LDR_PC_G1"},
+       {63, "R_ARM_LDR_PC_G2"},
+       {64, "R_ARM_LDRS_PC_G0"},
+       {65, "R_ARM_LDRS_PC_G1"},
+       {66, "R_ARM_LDRS_PC_G2"},
+       {67, "R_ARM_LDC_PC_G0"},
+       {68, "R_ARM_LDC_PC_G1"},
+       {69, "R_ARM_LDC_PC_G2"},
+       {70, "R_ARM_ALU_SB_G0_NC"},
+       {71, "R_ARM_ALU_SB_G0"},
+       {72, "R_ARM_ALU_SB_G1_NC"},
+       {73, "R_ARM_ALU_SB_G1"},
+       {74, "R_ARM_ALU_SB_G2"},
+       {75, "R_ARM_LDR_SB_G0"},
+       {76, "R_ARM_LDR_SB_G1"},
+       {77, "R_ARM_LDR_SB_G2"},
+       {78, "R_ARM_LDRS_SB_G0"},
+       {79, "R_ARM_LDRS_SB_G1"},
+       {80, "R_ARM_LDRS_SB_G2"},
+       {81, "R_ARM_LDC_SB_G0"},
+       {82, "R_ARM_LDC_SB_G1"},
+       {83, "R_ARM_LDC_SB_G2"},
+       {84, "R_ARM_MOVW_BREL_NC"},
+       {85, "R_ARM_MOVT_BREL"},
+       {86, "R_ARM_MOVW_BREL"},
+       {87, "R_ARM_THM_MOVW_BREL_NC"},
+       {88, "R_ARM_THM_MOVT_BREL"},
+       {89, "R_ARM_THM_MOVW_BREL"},
+       {90, "R_ARM_TLS_GOTDESC"},
+       {91, "R_ARM_TLS_CALL"},
+       {92, "R_ARM_TLS_DESCSEQ"},
+       {93, "R_ARM_THM_TLS_CALL"},
+       {94, "R_ARM_PLT32_ABS"},
+       {95, "R_ARM_GOT_ABS"},
+       {96, "R_ARM_GOT_PREL"},
+       {97, "R_ARM_GOT_BREL12"},
+       {98, "R_ARM_GOTOFF12"},
+       {99, "R_ARM_GOTRELAX"},
        {100, "R_ARM_GNU_VTENTRY"},
        {101, "R_ARM_GNU_VTINHERIT"},
+       {102, "R_ARM_THM_JUMP11"},
+       {103, "R_ARM_THM_JUMP8"},
+       {104, "R_ARM_TLS_GD32"},
+       {105, "R_ARM_TLS_LDM32"},
+       {106, "R_ARM_TLS_LDO32"},
+       {107, "R_ARM_TLS_IE32"},
+       {108, "R_ARM_TLS_LE32"},
+       {109, "R_ARM_TLS_LDO12"},
+       {110, "R_ARM_TLS_LE12"},
+       {111, "R_ARM_TLS_IE12GP"},
+       {112, "R_ARM_PRIVATE_0"},
+       {113, "R_ARM_PRIVATE_1"},
+       {114, "R_ARM_PRIVATE_2"},
+       {115, "R_ARM_PRIVATE_3"},
+       {116, "R_ARM_PRIVATE_4"},
+       {117, "R_ARM_PRIVATE_5"},
+       {118, "R_ARM_PRIVATE_6"},
+       {119, "R_ARM_PRIVATE_7"},
+       {120, "R_ARM_PRIVATE_8"},
+       {121, "R_ARM_PRIVATE_9"},
+       {122, "R_ARM_PRIVATE_10"},
+       {123, "R_ARM_PRIVATE_11"},
+       {124, "R_ARM_PRIVATE_12"},
+       {125, "R_ARM_PRIVATE_13"},
+       {126, "R_ARM_PRIVATE_14"},
+       {127, "R_ARM_PRIVATE_15"},
+       {128, "R_ARM_ME_TOO"},
+       {129, "R_ARM_THM_TLS_DESCSEQ16"},
+       {130, "R_ARM_THM_TLS_DESCSEQ32"},
+       {131, "R_ARM_THM_GOT_BREL12"},
+       {132, "R_ARM_THM_ALU_ABS_G0_NC"},
+       {133, "R_ARM_THM_ALU_ABS_G1_NC"},
+       {134, "R_ARM_THM_ALU_ABS_G2_NC"},
+       {135, "R_ARM_THM_ALU_ABS_G3"},
+       {160, "R_ARM_IRELATIVE"},
+       {249, "R_ARM_RXPC25"},
        {250, "R_ARM_RSBREL32"},
        {251, "R_ARM_THM_RPC22"},
        {252, "R_ARM_RREL32"},
@@ -1200,37 +1482,48 @@ func (i R_ARM) GoString() string { return stringName(uint32(i), rarmStrings, tru
 type R_386 int
 
 const (
-       R_386_NONE         R_386 = 0  /* No relocation. */
-       R_386_32           R_386 = 1  /* Add symbol value. */
-       R_386_PC32         R_386 = 2  /* Add PC-relative symbol value. */
-       R_386_GOT32        R_386 = 3  /* Add PC-relative GOT offset. */
-       R_386_PLT32        R_386 = 4  /* Add PC-relative PLT offset. */
-       R_386_COPY         R_386 = 5  /* Copy data from shared object. */
-       R_386_GLOB_DAT     R_386 = 6  /* Set GOT entry to data address. */
-       R_386_JMP_SLOT     R_386 = 7  /* Set GOT entry to code address. */
-       R_386_RELATIVE     R_386 = 8  /* Add load address of shared object. */
-       R_386_GOTOFF       R_386 = 9  /* Add GOT-relative symbol address. */
-       R_386_GOTPC        R_386 = 10 /* Add PC-relative GOT table address. */
-       R_386_TLS_TPOFF    R_386 = 14 /* Negative offset in static TLS block */
-       R_386_TLS_IE       R_386 = 15 /* Absolute address of GOT for -ve static TLS */
-       R_386_TLS_GOTIE    R_386 = 16 /* GOT entry for negative static TLS block */
-       R_386_TLS_LE       R_386 = 17 /* Negative offset relative to static TLS */
-       R_386_TLS_GD       R_386 = 18 /* 32 bit offset to GOT (index,off) pair */
-       R_386_TLS_LDM      R_386 = 19 /* 32 bit offset to GOT (index,zero) pair */
-       R_386_TLS_GD_32    R_386 = 24 /* 32 bit offset to GOT (index,off) pair */
-       R_386_TLS_GD_PUSH  R_386 = 25 /* pushl instruction for Sun ABI GD sequence */
-       R_386_TLS_GD_CALL  R_386 = 26 /* call instruction for Sun ABI GD sequence */
-       R_386_TLS_GD_POP   R_386 = 27 /* popl instruction for Sun ABI GD sequence */
-       R_386_TLS_LDM_32   R_386 = 28 /* 32 bit offset to GOT (index,zero) pair */
-       R_386_TLS_LDM_PUSH R_386 = 29 /* pushl instruction for Sun ABI LD sequence */
-       R_386_TLS_LDM_CALL R_386 = 30 /* call instruction for Sun ABI LD sequence */
-       R_386_TLS_LDM_POP  R_386 = 31 /* popl instruction for Sun ABI LD sequence */
-       R_386_TLS_LDO_32   R_386 = 32 /* 32 bit offset from start of TLS block */
-       R_386_TLS_IE_32    R_386 = 33 /* 32 bit offset to GOT static TLS offset entry */
-       R_386_TLS_LE_32    R_386 = 34 /* 32 bit offset within static TLS block */
-       R_386_TLS_DTPMOD32 R_386 = 35 /* GOT entry containing TLS index */
-       R_386_TLS_DTPOFF32 R_386 = 36 /* GOT entry containing TLS offset */
-       R_386_TLS_TPOFF32  R_386 = 37 /* GOT entry of -ve static TLS offset */
+       R_386_NONE          R_386 = 0  /* No relocation. */
+       R_386_32            R_386 = 1  /* Add symbol value. */
+       R_386_PC32          R_386 = 2  /* Add PC-relative symbol value. */
+       R_386_GOT32         R_386 = 3  /* Add PC-relative GOT offset. */
+       R_386_PLT32         R_386 = 4  /* Add PC-relative PLT offset. */
+       R_386_COPY          R_386 = 5  /* Copy data from shared object. */
+       R_386_GLOB_DAT      R_386 = 6  /* Set GOT entry to data address. */
+       R_386_JMP_SLOT      R_386 = 7  /* Set GOT entry to code address. */
+       R_386_RELATIVE      R_386 = 8  /* Add load address of shared object. */
+       R_386_GOTOFF        R_386 = 9  /* Add GOT-relative symbol address. */
+       R_386_GOTPC         R_386 = 10 /* Add PC-relative GOT table address. */
+       R_386_32PLT         R_386 = 11
+       R_386_TLS_TPOFF     R_386 = 14 /* Negative offset in static TLS block */
+       R_386_TLS_IE        R_386 = 15 /* Absolute address of GOT for -ve static TLS */
+       R_386_TLS_GOTIE     R_386 = 16 /* GOT entry for negative static TLS block */
+       R_386_TLS_LE        R_386 = 17 /* Negative offset relative to static TLS */
+       R_386_TLS_GD        R_386 = 18 /* 32 bit offset to GOT (index,off) pair */
+       R_386_TLS_LDM       R_386 = 19 /* 32 bit offset to GOT (index,zero) pair */
+       R_386_16            R_386 = 20
+       R_386_PC16          R_386 = 21
+       R_386_8             R_386 = 22
+       R_386_PC8           R_386 = 23
+       R_386_TLS_GD_32     R_386 = 24 /* 32 bit offset to GOT (index,off) pair */
+       R_386_TLS_GD_PUSH   R_386 = 25 /* pushl instruction for Sun ABI GD sequence */
+       R_386_TLS_GD_CALL   R_386 = 26 /* call instruction for Sun ABI GD sequence */
+       R_386_TLS_GD_POP    R_386 = 27 /* popl instruction for Sun ABI GD sequence */
+       R_386_TLS_LDM_32    R_386 = 28 /* 32 bit offset to GOT (index,zero) pair */
+       R_386_TLS_LDM_PUSH  R_386 = 29 /* pushl instruction for Sun ABI LD sequence */
+       R_386_TLS_LDM_CALL  R_386 = 30 /* call instruction for Sun ABI LD sequence */
+       R_386_TLS_LDM_POP   R_386 = 31 /* popl instruction for Sun ABI LD sequence */
+       R_386_TLS_LDO_32    R_386 = 32 /* 32 bit offset from start of TLS block */
+       R_386_TLS_IE_32     R_386 = 33 /* 32 bit offset to GOT static TLS offset entry */
+       R_386_TLS_LE_32     R_386 = 34 /* 32 bit offset within static TLS block */
+       R_386_TLS_DTPMOD32  R_386 = 35 /* GOT entry containing TLS index */
+       R_386_TLS_DTPOFF32  R_386 = 36 /* GOT entry containing TLS offset */
+       R_386_TLS_TPOFF32   R_386 = 37 /* GOT entry of -ve static TLS offset */
+       R_386_SIZE32        R_386 = 38
+       R_386_TLS_GOTDESC   R_386 = 39
+       R_386_TLS_DESC_CALL R_386 = 40
+       R_386_TLS_DESC      R_386 = 41
+       R_386_IRELATIVE     R_386 = 42
+       R_386_GOT32X        R_386 = 43
 )
 
 var r386Strings = []intName{
@@ -1245,12 +1538,17 @@ var r386Strings = []intName{
        {8, "R_386_RELATIVE"},
        {9, "R_386_GOTOFF"},
        {10, "R_386_GOTPC"},
+       {11, "R_386_32PLT"},
        {14, "R_386_TLS_TPOFF"},
        {15, "R_386_TLS_IE"},
        {16, "R_386_TLS_GOTIE"},
        {17, "R_386_TLS_LE"},
        {18, "R_386_TLS_GD"},
        {19, "R_386_TLS_LDM"},
+       {20, "R_386_16"},
+       {21, "R_386_PC16"},
+       {22, "R_386_8"},
+       {23, "R_386_PC8"},
        {24, "R_386_TLS_GD_32"},
        {25, "R_386_TLS_GD_PUSH"},
        {26, "R_386_TLS_GD_CALL"},
@@ -1265,6 +1563,12 @@ var r386Strings = []intName{
        {35, "R_386_TLS_DTPMOD32"},
        {36, "R_386_TLS_DTPOFF32"},
        {37, "R_386_TLS_TPOFF32"},
+       {38, "R_386_SIZE32"},
+       {39, "R_386_TLS_GOTDESC"},
+       {40, "R_386_TLS_DESC_CALL"},
+       {41, "R_386_TLS_DESC"},
+       {42, "R_386_IRELATIVE"},
+       {43, "R_386_GOT32X"},
 }
 
 func (i R_386) String() string   { return stringName(uint32(i), r386Strings, false) }
@@ -1380,70 +1684,75 @@ func (i R_MIPS) String() string   { return stringName(uint32(i), rmipsStrings, f
 func (i R_MIPS) GoString() string { return stringName(uint32(i), rmipsStrings, true) }
 
 // Relocation types for PowerPC.
+//
+// Values that are shared by both R_PPC and R_PPC64 are prefixed with
+// R_POWERPC_ in the ELF standard. For the R_PPC type, the relevant
+// shared relocations have been renamed with the prefix R_PPC_.
+// The original name follows the value in a comment.
 type R_PPC int
 
 const (
-       R_PPC_NONE            R_PPC = 0 /* No relocation. */
-       R_PPC_ADDR32          R_PPC = 1
-       R_PPC_ADDR24          R_PPC = 2
-       R_PPC_ADDR16          R_PPC = 3
-       R_PPC_ADDR16_LO       R_PPC = 4
-       R_PPC_ADDR16_HI       R_PPC = 5
-       R_PPC_ADDR16_HA       R_PPC = 6
-       R_PPC_ADDR14          R_PPC = 7
-       R_PPC_ADDR14_BRTAKEN  R_PPC = 8
-       R_PPC_ADDR14_BRNTAKEN R_PPC = 9
-       R_PPC_REL24           R_PPC = 10
-       R_PPC_REL14           R_PPC = 11
-       R_PPC_REL14_BRTAKEN   R_PPC = 12
-       R_PPC_REL14_BRNTAKEN  R_PPC = 13
-       R_PPC_GOT16           R_PPC = 14
-       R_PPC_GOT16_LO        R_PPC = 15
-       R_PPC_GOT16_HI        R_PPC = 16
-       R_PPC_GOT16_HA        R_PPC = 17
+       R_PPC_NONE            R_PPC = 0  // R_POWERPC_NONE
+       R_PPC_ADDR32          R_PPC = 1  // R_POWERPC_ADDR32
+       R_PPC_ADDR24          R_PPC = 2  // R_POWERPC_ADDR24
+       R_PPC_ADDR16          R_PPC = 3  // R_POWERPC_ADDR16
+       R_PPC_ADDR16_LO       R_PPC = 4  // R_POWERPC_ADDR16_LO
+       R_PPC_ADDR16_HI       R_PPC = 5  // R_POWERPC_ADDR16_HI
+       R_PPC_ADDR16_HA       R_PPC = 6  // R_POWERPC_ADDR16_HA
+       R_PPC_ADDR14          R_PPC = 7  // R_POWERPC_ADDR14
+       R_PPC_ADDR14_BRTAKEN  R_PPC = 8  // R_POWERPC_ADDR14_BRTAKEN
+       R_PPC_ADDR14_BRNTAKEN R_PPC = 9  // R_POWERPC_ADDR14_BRNTAKEN
+       R_PPC_REL24           R_PPC = 10 // R_POWERPC_REL24
+       R_PPC_REL14           R_PPC = 11 // R_POWERPC_REL14
+       R_PPC_REL14_BRTAKEN   R_PPC = 12 // R_POWERPC_REL14_BRTAKEN
+       R_PPC_REL14_BRNTAKEN  R_PPC = 13 // R_POWERPC_REL14_BRNTAKEN
+       R_PPC_GOT16           R_PPC = 14 // R_POWERPC_GOT16
+       R_PPC_GOT16_LO        R_PPC = 15 // R_POWERPC_GOT16_LO
+       R_PPC_GOT16_HI        R_PPC = 16 // R_POWERPC_GOT16_HI
+       R_PPC_GOT16_HA        R_PPC = 17 // R_POWERPC_GOT16_HA
        R_PPC_PLTREL24        R_PPC = 18
-       R_PPC_COPY            R_PPC = 19
-       R_PPC_GLOB_DAT        R_PPC = 20
-       R_PPC_JMP_SLOT        R_PPC = 21
-       R_PPC_RELATIVE        R_PPC = 22
+       R_PPC_COPY            R_PPC = 19 // R_POWERPC_COPY
+       R_PPC_GLOB_DAT        R_PPC = 20 // R_POWERPC_GLOB_DAT
+       R_PPC_JMP_SLOT        R_PPC = 21 // R_POWERPC_JMP_SLOT
+       R_PPC_RELATIVE        R_PPC = 22 // R_POWERPC_RELATIVE
        R_PPC_LOCAL24PC       R_PPC = 23
-       R_PPC_UADDR32         R_PPC = 24
-       R_PPC_UADDR16         R_PPC = 25
-       R_PPC_REL32           R_PPC = 26
-       R_PPC_PLT32           R_PPC = 27
-       R_PPC_PLTREL32        R_PPC = 28
-       R_PPC_PLT16_LO        R_PPC = 29
-       R_PPC_PLT16_HI        R_PPC = 30
-       R_PPC_PLT16_HA        R_PPC = 31
+       R_PPC_UADDR32         R_PPC = 24 // R_POWERPC_UADDR32
+       R_PPC_UADDR16         R_PPC = 25 // R_POWERPC_UADDR16
+       R_PPC_REL32           R_PPC = 26 // R_POWERPC_REL32
+       R_PPC_PLT32           R_PPC = 27 // R_POWERPC_PLT32
+       R_PPC_PLTREL32        R_PPC = 28 // R_POWERPC_PLTREL32
+       R_PPC_PLT16_LO        R_PPC = 29 // R_POWERPC_PLT16_LO
+       R_PPC_PLT16_HI        R_PPC = 30 // R_POWERPC_PLT16_HI
+       R_PPC_PLT16_HA        R_PPC = 31 // R_POWERPC_PLT16_HA
        R_PPC_SDAREL16        R_PPC = 32
-       R_PPC_SECTOFF         R_PPC = 33
-       R_PPC_SECTOFF_LO      R_PPC = 34
-       R_PPC_SECTOFF_HI      R_PPC = 35
-       R_PPC_SECTOFF_HA      R_PPC = 36
-       R_PPC_TLS             R_PPC = 67
-       R_PPC_DTPMOD32        R_PPC = 68
-       R_PPC_TPREL16         R_PPC = 69
-       R_PPC_TPREL16_LO      R_PPC = 70
-       R_PPC_TPREL16_HI      R_PPC = 71
-       R_PPC_TPREL16_HA      R_PPC = 72
-       R_PPC_TPREL32         R_PPC = 73
-       R_PPC_DTPREL16        R_PPC = 74
-       R_PPC_DTPREL16_LO     R_PPC = 75
-       R_PPC_DTPREL16_HI     R_PPC = 76
-       R_PPC_DTPREL16_HA     R_PPC = 77
-       R_PPC_DTPREL32        R_PPC = 78
-       R_PPC_GOT_TLSGD16     R_PPC = 79
-       R_PPC_GOT_TLSGD16_LO  R_PPC = 80
-       R_PPC_GOT_TLSGD16_HI  R_PPC = 81
-       R_PPC_GOT_TLSGD16_HA  R_PPC = 82
-       R_PPC_GOT_TLSLD16     R_PPC = 83
-       R_PPC_GOT_TLSLD16_LO  R_PPC = 84
-       R_PPC_GOT_TLSLD16_HI  R_PPC = 85
-       R_PPC_GOT_TLSLD16_HA  R_PPC = 86
-       R_PPC_GOT_TPREL16     R_PPC = 87
-       R_PPC_GOT_TPREL16_LO  R_PPC = 88
-       R_PPC_GOT_TPREL16_HI  R_PPC = 89
-       R_PPC_GOT_TPREL16_HA  R_PPC = 90
+       R_PPC_SECTOFF         R_PPC = 33 // R_POWERPC_SECTOFF
+       R_PPC_SECTOFF_LO      R_PPC = 34 // R_POWERPC_SECTOFF_LO
+       R_PPC_SECTOFF_HI      R_PPC = 35 // R_POWERPC_SECTOFF_HI
+       R_PPC_SECTOFF_HA      R_PPC = 36 // R_POWERPC_SECTOFF_HA
+       R_PPC_TLS             R_PPC = 67 // R_POWERPC_TLS
+       R_PPC_DTPMOD32        R_PPC = 68 // R_POWERPC_DTPMOD32
+       R_PPC_TPREL16         R_PPC = 69 // R_POWERPC_TPREL16
+       R_PPC_TPREL16_LO      R_PPC = 70 // R_POWERPC_TPREL16_LO
+       R_PPC_TPREL16_HI      R_PPC = 71 // R_POWERPC_TPREL16_HI
+       R_PPC_TPREL16_HA      R_PPC = 72 // R_POWERPC_TPREL16_HA
+       R_PPC_TPREL32         R_PPC = 73 // R_POWERPC_TPREL32
+       R_PPC_DTPREL16        R_PPC = 74 // R_POWERPC_DTPREL16
+       R_PPC_DTPREL16_LO     R_PPC = 75 // R_POWERPC_DTPREL16_LO
+       R_PPC_DTPREL16_HI     R_PPC = 76 // R_POWERPC_DTPREL16_HI
+       R_PPC_DTPREL16_HA     R_PPC = 77 // R_POWERPC_DTPREL16_HA
+       R_PPC_DTPREL32        R_PPC = 78 // R_POWERPC_DTPREL32
+       R_PPC_GOT_TLSGD16     R_PPC = 79 // R_POWERPC_GOT_TLSGD16
+       R_PPC_GOT_TLSGD16_LO  R_PPC = 80 // R_POWERPC_GOT_TLSGD16_LO
+       R_PPC_GOT_TLSGD16_HI  R_PPC = 81 // R_POWERPC_GOT_TLSGD16_HI
+       R_PPC_GOT_TLSGD16_HA  R_PPC = 82 // R_POWERPC_GOT_TLSGD16_HA
+       R_PPC_GOT_TLSLD16     R_PPC = 83 // R_POWERPC_GOT_TLSLD16
+       R_PPC_GOT_TLSLD16_LO  R_PPC = 84 // R_POWERPC_GOT_TLSLD16_LO
+       R_PPC_GOT_TLSLD16_HI  R_PPC = 85 // R_POWERPC_GOT_TLSLD16_HI
+       R_PPC_GOT_TLSLD16_HA  R_PPC = 86 // R_POWERPC_GOT_TLSLD16_HA
+       R_PPC_GOT_TPREL16     R_PPC = 87 // R_POWERPC_GOT_TPREL16
+       R_PPC_GOT_TPREL16_LO  R_PPC = 88 // R_POWERPC_GOT_TPREL16_LO
+       R_PPC_GOT_TPREL16_HI  R_PPC = 89 // R_POWERPC_GOT_TPREL16_HI
+       R_PPC_GOT_TPREL16_HA  R_PPC = 90 // R_POWERPC_GOT_TPREL16_HA
        R_PPC_EMB_NADDR32     R_PPC = 101
        R_PPC_EMB_NADDR16     R_PPC = 102
        R_PPC_EMB_NADDR16_LO  R_PPC = 103
@@ -1500,7 +1809,6 @@ var rppcStrings = []intName{
        {34, "R_PPC_SECTOFF_LO"},
        {35, "R_PPC_SECTOFF_HI"},
        {36, "R_PPC_SECTOFF_HA"},
-
        {67, "R_PPC_TLS"},
        {68, "R_PPC_DTPMOD32"},
        {69, "R_PPC_TPREL16"},
@@ -1525,7 +1833,6 @@ var rppcStrings = []intName{
        {88, "R_PPC_GOT_TPREL16_LO"},
        {89, "R_PPC_GOT_TPREL16_HI"},
        {90, "R_PPC_GOT_TPREL16_HA"},
-
        {101, "R_PPC_EMB_NADDR32"},
        {102, "R_PPC_EMB_NADDR16"},
        {103, "R_PPC_EMB_NADDR16_LO"},
@@ -1548,29 +1855,34 @@ func (i R_PPC) String() string   { return stringName(uint32(i), rppcStrings, fal
 func (i R_PPC) GoString() string { return stringName(uint32(i), rppcStrings, true) }
 
 // Relocation types for 64-bit PowerPC or Power Architecture processors.
+//
+// Values that are shared by both R_PPC and R_PPC64 are prefixed with
+// R_POWERPC_ in the ELF standard. For the R_PPC64 type, the relevant
+// shared relocations have been renamed with the prefix R_PPC64_.
+// The original name follows the value in a comment.
 type R_PPC64 int
 
 const (
-       R_PPC64_NONE               R_PPC64 = 0
-       R_PPC64_ADDR32             R_PPC64 = 1
-       R_PPC64_ADDR24             R_PPC64 = 2
-       R_PPC64_ADDR16             R_PPC64 = 3
-       R_PPC64_ADDR16_LO          R_PPC64 = 4
-       R_PPC64_ADDR16_HI          R_PPC64 = 5
-       R_PPC64_ADDR16_HA          R_PPC64 = 6
-       R_PPC64_ADDR14             R_PPC64 = 7
-       R_PPC64_ADDR14_BRTAKEN     R_PPC64 = 8
-       R_PPC64_ADDR14_BRNTAKEN    R_PPC64 = 9
-       R_PPC64_REL24              R_PPC64 = 10
-       R_PPC64_REL14              R_PPC64 = 11
-       R_PPC64_REL14_BRTAKEN      R_PPC64 = 12
-       R_PPC64_REL14_BRNTAKEN     R_PPC64 = 13
-       R_PPC64_GOT16              R_PPC64 = 14
-       R_PPC64_GOT16_LO           R_PPC64 = 15
-       R_PPC64_GOT16_HI           R_PPC64 = 16
-       R_PPC64_GOT16_HA           R_PPC64 = 17
-       R_PPC64_JMP_SLOT           R_PPC64 = 21
-       R_PPC64_REL32              R_PPC64 = 26
+       R_PPC64_NONE               R_PPC64 = 0  // R_POWERPC_NONE
+       R_PPC64_ADDR32             R_PPC64 = 1  // R_POWERPC_ADDR32
+       R_PPC64_ADDR24             R_PPC64 = 2  // R_POWERPC_ADDR24
+       R_PPC64_ADDR16             R_PPC64 = 3  // R_POWERPC_ADDR16
+       R_PPC64_ADDR16_LO          R_PPC64 = 4  // R_POWERPC_ADDR16_LO
+       R_PPC64_ADDR16_HI          R_PPC64 = 5  // R_POWERPC_ADDR16_HI
+       R_PPC64_ADDR16_HA          R_PPC64 = 6  // R_POWERPC_ADDR16_HA
+       R_PPC64_ADDR14             R_PPC64 = 7  // R_POWERPC_ADDR14
+       R_PPC64_ADDR14_BRTAKEN     R_PPC64 = 8  // R_POWERPC_ADDR14_BRTAKEN
+       R_PPC64_ADDR14_BRNTAKEN    R_PPC64 = 9  // R_POWERPC_ADDR14_BRNTAKEN
+       R_PPC64_REL24              R_PPC64 = 10 // R_POWERPC_REL24
+       R_PPC64_REL14              R_PPC64 = 11 // R_POWERPC_REL14
+       R_PPC64_REL14_BRTAKEN      R_PPC64 = 12 // R_POWERPC_REL14_BRTAKEN
+       R_PPC64_REL14_BRNTAKEN     R_PPC64 = 13 // R_POWERPC_REL14_BRNTAKEN
+       R_PPC64_GOT16              R_PPC64 = 14 // R_POWERPC_GOT16
+       R_PPC64_GOT16_LO           R_PPC64 = 15 // R_POWERPC_GOT16_LO
+       R_PPC64_GOT16_HI           R_PPC64 = 16 // R_POWERPC_GOT16_HI
+       R_PPC64_GOT16_HA           R_PPC64 = 17 // R_POWERPC_GOT16_HA
+       R_PPC64_JMP_SLOT           R_PPC64 = 21 // R_POWERPC_JMP_SLOT
+       R_PPC64_REL32              R_PPC64 = 26 // R_POWERPC_REL32
        R_PPC64_ADDR64             R_PPC64 = 38
        R_PPC64_ADDR16_HIGHER      R_PPC64 = 39
        R_PPC64_ADDR16_HIGHERA     R_PPC64 = 40
@@ -1582,40 +1894,49 @@ const (
        R_PPC64_TOC16_HI           R_PPC64 = 49
        R_PPC64_TOC16_HA           R_PPC64 = 50
        R_PPC64_TOC                R_PPC64 = 51
+       R_PPC64_PLTGOT16           R_PPC64 = 52
+       R_PPC64_PLTGOT16_LO        R_PPC64 = 53
+       R_PPC64_PLTGOT16_HI        R_PPC64 = 54
+       R_PPC64_PLTGOT16_HA        R_PPC64 = 55
        R_PPC64_ADDR16_DS          R_PPC64 = 56
        R_PPC64_ADDR16_LO_DS       R_PPC64 = 57
        R_PPC64_GOT16_DS           R_PPC64 = 58
        R_PPC64_GOT16_LO_DS        R_PPC64 = 59
+       R_PPC64_PLT16_LO_DS        R_PPC64 = 60
+       R_PPC64_SECTOFF_DS         R_PPC64 = 61
+       R_PPC64_SECTOFF_LO_DS      R_PPC64 = 61
        R_PPC64_TOC16_DS           R_PPC64 = 63
        R_PPC64_TOC16_LO_DS        R_PPC64 = 64
-       R_PPC64_TLS                R_PPC64 = 67
-       R_PPC64_DTPMOD64           R_PPC64 = 68
-       R_PPC64_TPREL16            R_PPC64 = 69
-       R_PPC64_TPREL16_LO         R_PPC64 = 70
-       R_PPC64_TPREL16_HI         R_PPC64 = 71
-       R_PPC64_TPREL16_HA         R_PPC64 = 72
-       R_PPC64_TPREL64            R_PPC64 = 73
-       R_PPC64_DTPREL16           R_PPC64 = 74
-       R_PPC64_DTPREL16_LO        R_PPC64 = 75
-       R_PPC64_DTPREL16_HI        R_PPC64 = 76
-       R_PPC64_DTPREL16_HA        R_PPC64 = 77
-       R_PPC64_DTPREL64           R_PPC64 = 78
-       R_PPC64_GOT_TLSGD16        R_PPC64 = 79
-       R_PPC64_GOT_TLSGD16_LO     R_PPC64 = 80
-       R_PPC64_GOT_TLSGD16_HI     R_PPC64 = 81
-       R_PPC64_GOT_TLSGD16_HA     R_PPC64 = 82
-       R_PPC64_GOT_TLSLD16        R_PPC64 = 83
-       R_PPC64_GOT_TLSLD16_LO     R_PPC64 = 84
-       R_PPC64_GOT_TLSLD16_HI     R_PPC64 = 85
-       R_PPC64_GOT_TLSLD16_HA     R_PPC64 = 86
-       R_PPC64_GOT_TPREL16_DS     R_PPC64 = 87
-       R_PPC64_GOT_TPREL16_LO_DS  R_PPC64 = 88
-       R_PPC64_GOT_TPREL16_HI     R_PPC64 = 89
-       R_PPC64_GOT_TPREL16_HA     R_PPC64 = 90
-       R_PPC64_GOT_DTPREL16_DS    R_PPC64 = 91
-       R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 = 92
-       R_PPC64_GOT_DTPREL16_HI    R_PPC64 = 93
-       R_PPC64_GOT_DTPREL16_HA    R_PPC64 = 94
+       R_PPC64_PLTGOT16_DS        R_PPC64 = 65
+       R_PPC64_PLTGOT_LO_DS       R_PPC64 = 66
+       R_PPC64_TLS                R_PPC64 = 67 // R_POWERPC_TLS
+       R_PPC64_DTPMOD64           R_PPC64 = 68 // R_POWERPC_DTPMOD64
+       R_PPC64_TPREL16            R_PPC64 = 69 // R_POWERPC_TPREL16
+       R_PPC64_TPREL16_LO         R_PPC64 = 70 // R_POWERPC_TPREL16_LO
+       R_PPC64_TPREL16_HI         R_PPC64 = 71 // R_POWERPC_TPREL16_HI
+       R_PPC64_TPREL16_HA         R_PPC64 = 72 // R_POWERPC_TPREL16_HA
+       R_PPC64_TPREL64            R_PPC64 = 73 // R_POWERPC_TPREL64
+       R_PPC64_DTPREL16           R_PPC64 = 74 // R_POWERPC_DTPREL16
+       R_PPC64_DTPREL16_LO        R_PPC64 = 75 // R_POWERPC_DTPREL16_LO
+       R_PPC64_DTPREL16_HI        R_PPC64 = 76 // R_POWERPC_DTPREL16_HI
+       R_PPC64_DTPREL16_HA        R_PPC64 = 77 // R_POWERPC_DTPREL16_HA
+       R_PPC64_DTPREL64           R_PPC64 = 78 // R_POWERPC_DTPREL64
+       R_PPC64_GOT_TLSGD16        R_PPC64 = 79 // R_POWERPC_GOT_TLSGD16
+       R_PPC64_GOT_TLSGD16_LO     R_PPC64 = 80 // R_POWERPC_GOT_TLSGD16_LO
+       R_PPC64_GOT_TLSGD16_HI     R_PPC64 = 81 // R_POWERPC_GOT_TLSGD16_HI
+       R_PPC64_GOT_TLSGD16_HA     R_PPC64 = 82 // R_POWERPC_GOT_TLSGD16_HA
+       R_PPC64_GOT_TLSLD16        R_PPC64 = 83 // R_POWERPC_GOT_TLSLD16
+       R_PPC64_GOT_TLSLD16_LO     R_PPC64 = 84 // R_POWERPC_GOT_TLSLD16_LO
+       R_PPC64_GOT_TLSLD16_HI     R_PPC64 = 85 // R_POWERPC_GOT_TLSLD16_HI
+       R_PPC64_GOT_TLSLD16_HA     R_PPC64 = 86 // R_POWERPC_GOT_TLSLD16_HA
+       R_PPC64_GOT_TPREL16_DS     R_PPC64 = 87 // R_POWERPC_GOT_TPREL16_DS
+       R_PPC64_GOT_TPREL16_LO_DS  R_PPC64 = 88 // R_POWERPC_GOT_TPREL16_LO_DS
+       R_PPC64_GOT_TPREL16_HI     R_PPC64 = 89 // R_POWERPC_GOT_TPREL16_HI
+       R_PPC64_GOT_TPREL16_HA     R_PPC64 = 90 // R_POWERPC_GOT_TPREL16_HA
+       R_PPC64_GOT_DTPREL16_DS    R_PPC64 = 91 // R_POWERPC_GOT_DTPREL16_DS
+       R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 = 92 // R_POWERPC_GOT_DTPREL16_LO_DS
+       R_PPC64_GOT_DTPREL16_HI    R_PPC64 = 93 // R_POWERPC_GOT_DTPREL16_HI
+       R_PPC64_GOT_DTPREL16_HA    R_PPC64 = 94 // R_POWERPC_GOT_DTPREL16_HA
        R_PPC64_TPREL16_DS         R_PPC64 = 95
        R_PPC64_TPREL16_LO_DS      R_PPC64 = 96
        R_PPC64_TPREL16_HIGHER     R_PPC64 = 97
@@ -1630,10 +1951,23 @@ const (
        R_PPC64_DTPREL16_HIGHESTA  R_PPC64 = 106
        R_PPC64_TLSGD              R_PPC64 = 107
        R_PPC64_TLSLD              R_PPC64 = 108
-       R_PPC64_REL16              R_PPC64 = 249
-       R_PPC64_REL16_LO           R_PPC64 = 250
-       R_PPC64_REL16_HI           R_PPC64 = 251
-       R_PPC64_REL16_HA           R_PPC64 = 252
+       R_PPC64_TOCSAVE            R_PPC64 = 109
+       R_PPC64_ADDR16_HIGH        R_PPC64 = 110
+       R_PPC64_ADDR16_HIGHA       R_PPC64 = 111
+       R_PPC64_TPREL16_HIGH       R_PPC64 = 112
+       R_PPC64_TPREL16_HIGHA      R_PPC64 = 113
+       R_PPC64_DTPREL16_HIGH      R_PPC64 = 114
+       R_PPC64_DTPREL16_HIGHA     R_PPC64 = 115
+       R_PPC64_REL24_NOTOC        R_PPC64 = 116
+       R_PPC64_ADDR64_LOCAL       R_PPC64 = 117
+       R_PPC64_ENTRY              R_PPC64 = 118
+       R_PPC64_REL16DX_HA         R_PPC64 = 246 // R_POWERPC_REL16DX_HA
+       R_PPC64_JMP_IREL           R_PPC64 = 247
+       R_PPC64_IRELATIVE          R_PPC64 = 248 // R_POWERPC_IRELATIVE
+       R_PPC64_REL16              R_PPC64 = 249 // R_POWERPC_REL16
+       R_PPC64_REL16_LO           R_PPC64 = 250 // R_POWERPC_REL16_LO
+       R_PPC64_REL16_HI           R_PPC64 = 251 // R_POWERPC_REL16_HI
+       R_PPC64_REL16_HA           R_PPC64 = 252 // R_POWERPC_REL16_HA
 )
 
 var rppc64Strings = []intName{
@@ -1668,12 +2002,21 @@ var rppc64Strings = []intName{
        {49, "R_PPC64_TOC16_HI"},
        {50, "R_PPC64_TOC16_HA"},
        {51, "R_PPC64_TOC"},
+       {52, "R_PPC64_PLTGOT16"},
+       {53, "R_PPC64_PLTGOT16_LO"},
+       {54, "R_PPC64_PLTGOT16_HI"},
+       {55, "R_PPC64_PLTGOT16_HA"},
        {56, "R_PPC64_ADDR16_DS"},
        {57, "R_PPC64_ADDR16_LO_DS"},
        {58, "R_PPC64_GOT16_DS"},
        {59, "R_PPC64_GOT16_LO_DS"},
+       {60, "R_PPC64_PLT16_LO_DS"},
+       {61, "R_PPC64_SECTOFF_DS"},
+       {61, "R_PPC64_SECTOFF_LO_DS"},
        {63, "R_PPC64_TOC16_DS"},
        {64, "R_PPC64_TOC16_LO_DS"},
+       {65, "R_PPC64_PLTGOT16_DS"},
+       {66, "R_PPC64_PLTGOT_LO_DS"},
        {67, "R_PPC64_TLS"},
        {68, "R_PPC64_DTPMOD64"},
        {69, "R_PPC64_TPREL16"},
@@ -1716,6 +2059,19 @@ var rppc64Strings = []intName{
        {106, "R_PPC64_DTPREL16_HIGHESTA"},
        {107, "R_PPC64_TLSGD"},
        {108, "R_PPC64_TLSLD"},
+       {109, "R_PPC64_TOCSAVE"},
+       {110, "R_PPC64_ADDR16_HIGH"},
+       {111, "R_PPC64_ADDR16_HIGHA"},
+       {112, "R_PPC64_TPREL16_HIGH"},
+       {113, "R_PPC64_TPREL16_HIGHA"},
+       {114, "R_PPC64_DTPREL16_HIGH"},
+       {115, "R_PPC64_DTPREL16_HIGHA"},
+       {116, "R_PPC64_REL24_NOTOC"},
+       {117, "R_PPC64_ADDR64_LOCAL"},
+       {118, "R_PPC64_ENTRY"},
+       {246, "R_PPC64_REL16DX_HA"},
+       {247, "R_PPC64_JMP_IREL"},
+       {248, "R_PPC64_IRELATIVE"},
        {249, "R_PPC64_REL16"},
        {250, "R_PPC64_REL16_LO"},
        {251, "R_PPC64_REL16_HI"},