elf: Clean up the ELF header file
authorBin Meng <bmeng.cn@gmail.com>
Thu, 12 Apr 2018 05:02:12 +0000 (22:02 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 16 Apr 2018 08:54:51 +0000 (16:54 +0800)
Fix various style violations in elf.h
- use correct comment format if the comment fits in just one line
- remove the ending period for the one-line comment
- use tab for the indention instead of space
- put the opening brace at the same line of a typedef/union
- remove <name> in a 'typedef struct' for consistency

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
include/elf.h

index fe2128f3788e430d625ea5707c635d3b73e6c12b..4742597980799ee3b333d77208cf5231d540d040 100644 (file)
@@ -5,10 +5,7 @@
  * SPDX-License-Identifier:    BSD-3-Clause
  */
 
-/*
- * This is the ELF ABI header file
- * formerly known as "elf_abi.h".
- */
+/* This is the ELF ABI header file formerly known as "elf_abi.h" */
 
 #ifndef _ELF_H
 #define _ELF_H
 #ifndef __ASSEMBLER__
 #include "compiler.h"
 
-/*
- *  This version doesn't work for 64-bit ABIs - Erik.
- */
+/* This version doesn't work for 64-bit ABIs - Erik */
 
-/*
- * These typedefs need to be handled better.
- */
+/* These typedefs need to be handled better */
 typedef uint32_t       Elf32_Addr;     /* Unsigned program address */
 typedef uint32_t       Elf32_Off;      /* Unsigned file offset */
 typedef int32_t                Elf32_Sword;    /* Signed large integer */
 typedef uint32_t       Elf32_Word;     /* Unsigned large integer */
 typedef uint16_t       Elf32_Half;     /* Unsigned medium integer */
 
-/* 64-bit ELF base types. */
+/* 64-bit ELF base types */
 typedef uint64_t       Elf64_Addr;
 typedef uint16_t       Elf64_Half;
 typedef int16_t                Elf64_SHalf;
@@ -96,7 +89,7 @@ typedef int64_t               Elf64_Sxword;
                      (ehdr).e_ident[EI_MAG3] == ELFMAG3)
 
 /* ELF Header */
-typedef struct elfhdr{
+typedef struct {
        unsigned char   e_ident[EI_NIDENT]; /* ELF Identification */
        Elf32_Half      e_type;         /* object file type */
        Elf32_Half      e_machine;      /* machine */
@@ -122,9 +115,9 @@ typedef struct elfhdr{
 #define ET_CORE                4               /* core file */
 #define ET_NUM         5               /* number of types */
 #define ET_LOOS                0xfe00          /* reserved range for operating */
-#define ET_HIOS                0xfeff          /*  system specific e_type */
+#define ET_HIOS                0xfeff          /* system specific e_type */
 #define ET_LOPROC      0xff00          /* reserved range for processor */
-#define ET_HIPROC      0xffff          /*  specific e_type */
+#define ET_HIPROC      0xffff          /* specific e_type */
 
 /* e_machine */
 #define EM_NONE                0               /* No Machine */
@@ -235,9 +228,9 @@ typedef struct {
 #define SHN_UNDEF      0               /* undefined */
 #define SHN_LORESERVE  0xff00          /* lower bounds of reserved indexes */
 #define SHN_LOPROC     0xff00          /* reserved range for processor */
-#define SHN_HIPROC     0xff1f          /*   specific section indexes */
+#define SHN_HIPROC     0xff1f          /* specific section indexes */
 #define SHN_LOOS       0xff20          /* reserved range for operating */
-#define SHN_HIOS       0xff3f          /*   specific semantics */
+#define SHN_HIOS       0xff3f          /* specific semantics */
 #define SHN_ABS                0xfff1          /* absolute value */
 #define SHN_COMMON     0xfff2          /* common symbol */
 #define SHN_XINDEX     0xffff          /* Index is an extra table */
@@ -265,46 +258,46 @@ typedef struct {
 #define SHT_LOOS       0x60000000      /* Start OS-specific */
 #define SHT_HIOS       0x6fffffff      /* End OS-specific */
 #define SHT_LOPROC     0x70000000      /* reserved range for processor */
-#define SHT_HIPROC     0x7fffffff      /*  specific section header types */
+#define SHT_HIPROC     0x7fffffff      /* specific section header types */
 #define SHT_LOUSER     0x80000000      /* reserved range for application */
-#define SHT_HIUSER     0xffffffff      /*  specific indexes */
+#define SHT_HIUSER     0xffffffff      /* specific indexes */
 
 /* Section names */
-#define ELF_BSS         ".bss"         /* uninitialized data */
+#define ELF_BSS                ".bss"          /* uninitialized data */
 #define ELF_COMMENT    ".comment"      /* version control information */
-#define ELF_DATA        ".data"                /* initialized data */
-#define ELF_DATA1       ".data1"       /* initialized data */
-#define ELF_DEBUG       ".debug"       /* debug */
-#define ELF_DYNAMIC     ".dynamic"     /* dynamic linking information */
-#define ELF_DYNSTR      ".dynstr"      /* dynamic string table */
-#define ELF_DYNSYM      ".dynsym"      /* dynamic symbol table */
-#define ELF_FINI        ".fini"                /* termination code */
+#define ELF_DATA       ".data"         /* initialized data */
+#define ELF_DATA1      ".data1"        /* initialized data */
+#define ELF_DEBUG      ".debug"        /* debug */
+#define ELF_DYNAMIC    ".dynamic"      /* dynamic linking information */
+#define ELF_DYNSTR     ".dynstr"       /* dynamic string table */
+#define ELF_DYNSYM     ".dynsym"       /* dynamic symbol table */
+#define ELF_FINI       ".fini"         /* termination code */
 #define ELF_FINI_ARRAY ".fini_array"   /* Array of destructors */
-#define ELF_GOT         ".got"         /* global offset table */
-#define ELF_HASH        ".hash"                /* symbol hash table */
-#define ELF_INIT        ".init"                /* initialization code */
+#define ELF_GOT                ".got"          /* global offset table */
+#define ELF_HASH       ".hash"         /* symbol hash table */
+#define ELF_INIT       ".init"         /* initialization code */
 #define ELF_INIT_ARRAY ".init_array"   /* Array of constuctors */
 #define ELF_INTERP     ".interp"       /* Pathname of program interpreter */
 #define ELF_LINE       ".line"         /* Symbolic line numnber information */
 #define ELF_NOTE       ".note"         /* Contains note section */
 #define ELF_PLT                ".plt"          /* Procedure linkage table */
 #define ELF_PREINIT_ARRAY ".preinit_array" /* Array of pre-constructors */
-#define ELF_REL_DATA    ".rel.data"    /* relocation data */
-#define ELF_REL_FINI    ".rel.fini"    /* relocation termination code */
-#define ELF_REL_INIT    ".rel.init"    /* relocation initialization code */
-#define ELF_REL_DYN     ".rel.dyn"     /* relocaltion dynamic link info */
-#define ELF_REL_RODATA  ".rel.rodata"  /* relocation read-only data */
-#define ELF_REL_TEXT    ".rel.text"    /* relocation code */
-#define ELF_RODATA      ".rodata"      /* read-only data */
-#define ELF_RODATA1     ".rodata1"     /* read-only data */
-#define ELF_SHSTRTAB    ".shstrtab"    /* section header string table */
-#define ELF_STRTAB      ".strtab"      /* string table */
-#define ELF_SYMTAB      ".symtab"      /* symbol table */
+#define ELF_REL_DATA   ".rel.data"     /* relocation data */
+#define ELF_REL_FINI   ".rel.fini"     /* relocation termination code */
+#define ELF_REL_INIT   ".rel.init"     /* relocation initialization code */
+#define ELF_REL_DYN    ".rel.dyn"      /* relocaltion dynamic link info */
+#define ELF_REL_RODATA ".rel.rodata"   /* relocation read-only data */
+#define ELF_REL_TEXT   ".rel.text"     /* relocation code */
+#define ELF_RODATA     ".rodata"       /* read-only data */
+#define ELF_RODATA1    ".rodata1"      /* read-only data */
+#define ELF_SHSTRTAB   ".shstrtab"     /* section header string table */
+#define ELF_STRTAB     ".strtab"       /* string table */
+#define ELF_SYMTAB     ".symtab"       /* symbol table */
 #define ELF_SYMTAB_SHNDX ".symtab_shndx"/* symbol table section index */
 #define ELF_TBSS       ".tbss"         /* thread local uninit data */
 #define ELF_TDATA      ".tdata"        /* thread local init data */
 #define ELF_TDATA1     ".tdata1"       /* thread local init data */
-#define ELF_TEXT        ".text"                /* code */
+#define ELF_TEXT       ".text"         /* code */
 
 /* Section Attribute Flags - sh_flags */
 #define SHF_WRITE      0x1             /* Writable */
@@ -319,7 +312,7 @@ typedef struct {
 #define SHF_TLS                0x400           /* Thread local storage */
 #define SHF_MASKOS     0x0ff00000      /* OS specific */
 #define SHF_MASKPROC   0xf0000000      /* reserved bits for processor */
-                                       /*  specific section attributes */
+                                       /* specific section attributes */
 
 /* Section Group Flags */
 #define GRP_COMDAT     0x1             /* COMDAT group */
@@ -327,7 +320,7 @@ typedef struct {
 #define GRP_MASKPROC   0xf0000000      /* Mask processor specific flags */
 
 /* Symbol Table Entry */
-typedef struct elf32_sym {
+typedef struct {
        Elf32_Word      st_name;        /* name - index into string table */
        Elf32_Addr      st_value;       /* symbol value */
        Elf32_Word      st_size;        /* symbol size */
@@ -351,9 +344,9 @@ typedef struct elf32_sym {
 #define STB_WEAK       2               /* like global - lower precedence */
 #define STB_NUM                3               /* number of symbol bindings */
 #define STB_LOOS       10              /* reserved range for operating */
-#define STB_HIOS       12              /*   system specific symbol bindings */
+#define STB_HIOS       12              /* system specific symbol bindings */
 #define STB_LOPROC     13              /* reserved range for processor */
-#define STB_HIPROC     15              /*  specific symbol bindings */
+#define STB_HIPROC     15              /* specific symbol bindings */
 
 /* Symbol type - ELF32_ST_TYPE - st_info */
 #define STT_NOTYPE     0               /* not specified */
@@ -364,9 +357,9 @@ typedef struct elf32_sym {
 #define STT_NUM                5               /* number of symbol types */
 #define STT_TLS                6               /* Thread local storage symbol */
 #define STT_LOOS       10              /* reserved range for operating */
-#define STT_HIOS       12              /*  system specific symbol types */
+#define STT_HIOS       12              /* system specific symbol types */
 #define STT_LOPROC     13              /* reserved range for processor */
-#define STT_HIPROC     15              /*  specific symbol types */
+#define STT_HIPROC     15              /* specific symbol types */
 
 /* Symbol visibility - ELF32_ST_VISIBILITY - st_other */
 #define STV_DEFAULT    0               /* Normal visibility rules */
@@ -374,17 +367,14 @@ typedef struct elf32_sym {
 #define STV_HIDDEN     2               /* Symbol unavailable in other mods */
 #define STV_PROTECTED  3               /* Not preemptible, not exported */
 
-
 /* Relocation entry with implicit addend */
-typedef struct
-{
+typedef struct {
        Elf32_Addr      r_offset;       /* offset of relocation */
        Elf32_Word      r_info;         /* symbol table index and type */
 } Elf32_Rel;
 
 /* Relocation entry with explicit addend */
-typedef struct
-{
+typedef struct {
        Elf32_Addr      r_offset;       /* offset of relocation */
        Elf32_Word      r_info;         /* symbol table index and type */
        Elf32_Sword     r_addend;
@@ -396,9 +386,9 @@ typedef struct {
 } Elf64_Rel;
 
 typedef struct {
-       Elf64_Addr r_offset;    /* Location at which to apply the action */
-       Elf64_Xword r_info;     /* index and type of relocation */
-       Elf64_Sxword r_addend;  /* Constant addend used to compute value */
+       Elf64_Addr r_offset;    /* Location at which to apply the action */
+       Elf64_Xword r_info;     /* index and type of relocation */
+       Elf64_Sxword r_addend;  /* Constant addend used to compute value */
 } Elf64_Rela;
 
 /* Extract relocation info - r_info */
@@ -411,9 +401,9 @@ typedef struct {
        Elf32_Word      p_type;         /* segment type */
        Elf32_Off       p_offset;       /* segment offset */
        Elf32_Addr      p_vaddr;        /* virtual address of segment */
-       Elf32_Addr      p_paddr;        /* physical address - ignored? */
-       Elf32_Word      p_filesz;       /* number of bytes in file for seg. */
-       Elf32_Word      p_memsz;        /* number of bytes in mem. for seg. */
+       Elf32_Addr      p_paddr;        /* physical address of segment */
+       Elf32_Word      p_filesz;       /* number of bytes in file for seg */
+       Elf32_Word      p_memsz;        /* number of bytes in mem. for seg */
        Elf32_Word      p_flags;        /* flags */
        Elf32_Word      p_align;        /* memory alignment */
 } Elf32_Phdr;
@@ -429,9 +419,9 @@ typedef struct {
 #define PT_TLS         7               /* Thread local storage template */
 #define PT_NUM         8               /* Number of segment types */
 #define PT_LOOS                0x60000000      /* reserved range for operating */
-#define PT_HIOS                0x6fffffff      /*   system specific segment types */
+#define PT_HIOS                0x6fffffff      /* system specific segment types */
 #define PT_LOPROC      0x70000000      /* reserved range for processor */
-#define PT_HIPROC      0x7fffffff      /*  specific segment types */
+#define PT_HIPROC      0x7fffffff      /* specific segment types */
 
 /* Segment flags - p_flags */
 #define PF_X           0x1             /* Executable */
@@ -439,13 +429,11 @@ typedef struct {
 #define PF_R           0x4             /* Readable */
 #define PF_MASKOS      0x0ff00000      /* OS specific segment flags */
 #define PF_MASKPROC    0xf0000000      /* reserved bits for processor */
-                                       /*  specific segment flags */
+                                       /* specific segment flags */
 /* Dynamic structure */
-typedef struct
-{
+typedef struct {
        Elf32_Sword     d_tag;          /* controls meaning of d_val */
-       union
-       {
+       union {
                Elf32_Word      d_val;  /* Multiple meanings - see d_tag */
                Elf32_Addr      d_ptr;  /* program virtual address */
        } d_un;
@@ -477,12 +465,12 @@ typedef struct {
 #define DT_RELAENT     9               /* size of relocation entry */
 #define DT_STRSZ       10              /* size of string table */
 #define DT_SYMENT      11              /* size of symbol table entry */
-#define DT_INIT                12              /* address of initialization func. */
+#define DT_INIT                12              /* address of initialization func */
 #define DT_FINI                13              /* address of termination function */
 #define DT_SONAME      14              /* string table offset of shared obj */
 #define DT_RPATH       15              /* string table offset of library
                                           search path */
-#define DT_SYMBOLIC    16              /* start sym search in shared obj. */
+#define DT_SYMBOLIC    16              /* start sym search in shared obj */
 #define DT_REL         17              /* address of rel. tbl. w addends */
 #define DT_RELSZ       18              /* size of DT_REL relocation table */
 #define DT_RELENT      19              /* size of DT_REL relocation entry */
@@ -500,11 +488,11 @@ typedef struct {
 #define DT_ENCODING    32              /* Start of encoded range */
 #define DT_PREINIT_ARRAY 32            /* Array with addresses of preinit fct*/
 #define DT_PREINIT_ARRAYSZ 33          /* size in bytes of DT_PREINIT_ARRAY */
-#define DT_NUM         34              /* Number used. */
+#define DT_NUM         34              /* Number used */
 #define DT_LOOS                0x60000000      /* reserved range for OS */
-#define DT_HIOS                0x6fffffff      /*   specific dynamic array tags */
+#define DT_HIOS                0x6fffffff      /* specific dynamic array tags */
 #define DT_LOPROC      0x70000000      /* reserved range for processor */
-#define DT_HIPROC      0x7fffffff      /*  specific dynamic array tags */
+#define DT_HIPROC      0x7fffffff      /* specific dynamic array tags */
 
 /* Dynamic Tag Flags - d_un.d_val */
 #define DF_ORIGIN      0x01            /* Object may use DF_ORIGIN */
@@ -525,93 +513,97 @@ unsigned long elf_hash(const unsigned char *name);
  * but we'll put them in for simplicity.
  */
 
-/* Values for Elf32/64_Ehdr.e_flags */
-#define EF_PPC_EMB              0x80000000      /* PowerPC embedded flag */
+/* Values for Elf32/64_Ehdr.e_flags */
+#define EF_PPC_EMB             0x80000000      /* PowerPC embedded flag */
 
 /* Cygnus local bits below */
-#define EF_PPC_RELOCATABLE      0x00010000      /* PowerPC -mrelocatable flag*/
-#define EF_PPC_RELOCATABLE_LIB  0x00008000      /* PowerPC -mrelocatable-lib
+#define EF_PPC_RELOCATABLE     0x00010000      /* PowerPC -mrelocatable flag*/
+#define EF_PPC_RELOCATABLE_LIB 0x00008000      /* PowerPC -mrelocatable-lib
                                                   flag */
 
 /* PowerPC relocations defined by the ABIs */
-#define R_PPC_NONE              0
-#define R_PPC_ADDR32            1       /* 32bit absolute address */
-#define R_PPC_ADDR24            2       /* 26bit address, 2 bits ignored.  */
-#define R_PPC_ADDR16            3       /* 16bit absolute address */
-#define R_PPC_ADDR16_LO         4       /* lower 16bit of absolute address */
-#define R_PPC_ADDR16_HI         5       /* high 16bit of absolute address */
-#define R_PPC_ADDR16_HA         6       /* adjusted high 16bit */
-#define R_PPC_ADDR14            7       /* 16bit address, 2 bits ignored */
-#define R_PPC_ADDR14_BRTAKEN    8
-#define R_PPC_ADDR14_BRNTAKEN   9
-#define R_PPC_REL24             10      /* PC relative 26 bit */
-#define R_PPC_REL14             11      /* PC relative 16 bit */
-#define R_PPC_REL14_BRTAKEN     12
-#define R_PPC_REL14_BRNTAKEN    13
-#define R_PPC_GOT16             14
-#define R_PPC_GOT16_LO          15
-#define R_PPC_GOT16_HI          16
-#define R_PPC_GOT16_HA          17
-#define R_PPC_PLTREL24          18
-#define R_PPC_COPY              19
-#define R_PPC_GLOB_DAT          20
-#define R_PPC_JMP_SLOT          21
-#define R_PPC_RELATIVE          22
-#define R_PPC_LOCAL24PC         23
-#define R_PPC_UADDR32           24
-#define R_PPC_UADDR16           25
-#define R_PPC_REL32             26
-#define R_PPC_PLT32             27
-#define R_PPC_PLTREL32          28
-#define R_PPC_PLT16_LO          29
-#define R_PPC_PLT16_HI          30
-#define R_PPC_PLT16_HA          31
-#define R_PPC_SDAREL16          32
-#define R_PPC_SECTOFF           33
-#define R_PPC_SECTOFF_LO        34
-#define R_PPC_SECTOFF_HI        35
-#define R_PPC_SECTOFF_HA        36
-/* Keep this the last entry.  */
-#define R_PPC_NUM               37
-
-/* The remaining relocs are from the Embedded ELF ABI, and are not
-   in the SVR4 ELF ABI.  */
-#define R_PPC_EMB_NADDR32       101
-#define R_PPC_EMB_NADDR16       102
-#define R_PPC_EMB_NADDR16_LO    103
-#define R_PPC_EMB_NADDR16_HI    104
-#define R_PPC_EMB_NADDR16_HA    105
-#define R_PPC_EMB_SDAI16        106
-#define R_PPC_EMB_SDA2I16       107
-#define R_PPC_EMB_SDA2REL       108
-#define R_PPC_EMB_SDA21         109     /* 16 bit offset in SDA */
-#define R_PPC_EMB_MRKREF        110
-#define R_PPC_EMB_RELSEC16      111
-#define R_PPC_EMB_RELST_LO      112
-#define R_PPC_EMB_RELST_HI      113
-#define R_PPC_EMB_RELST_HA      114
-#define R_PPC_EMB_BIT_FLD       115
-#define R_PPC_EMB_RELSDA        116     /* 16 bit relative offset in SDA */
-
-/* Diab tool relocations.  */
-#define R_PPC_DIAB_SDA21_LO     180     /* like EMB_SDA21, but lower 16 bit */
-#define R_PPC_DIAB_SDA21_HI     181     /* like EMB_SDA21, but high 16 bit */
-#define R_PPC_DIAB_SDA21_HA     182     /* like EMB_SDA21, adjusted high 16 */
-#define R_PPC_DIAB_RELSDA_LO    183     /* like EMB_RELSDA, but lower 16 bit */
-#define R_PPC_DIAB_RELSDA_HI    184     /* like EMB_RELSDA, but high 16 bit */
-#define R_PPC_DIAB_RELSDA_HA    185     /* like EMB_RELSDA, adjusted high 16 */
-
-/* This is a phony reloc to handle any old fashioned TOC16 references
-   that may still be in object files.  */
-#define R_PPC_TOC16             255
+#define R_PPC_NONE             0
+#define R_PPC_ADDR32           1       /* 32bit absolute address */
+#define R_PPC_ADDR24           2       /* 26bit address, 2 bits ignored */
+#define R_PPC_ADDR16           3       /* 16bit absolute address */
+#define R_PPC_ADDR16_LO                4       /* lower 16bit of absolute address */
+#define R_PPC_ADDR16_HI                5       /* high 16bit of absolute address */
+#define R_PPC_ADDR16_HA                6       /* adjusted high 16bit */
+#define R_PPC_ADDR14           7       /* 16bit address, 2 bits ignored */
+#define R_PPC_ADDR14_BRTAKEN   8
+#define R_PPC_ADDR14_BRNTAKEN  9
+#define R_PPC_REL24            10      /* PC relative 26 bit */
+#define R_PPC_REL14            11      /* PC relative 16 bit */
+#define R_PPC_REL14_BRTAKEN    12
+#define R_PPC_REL14_BRNTAKEN   13
+#define R_PPC_GOT16            14
+#define R_PPC_GOT16_LO         15
+#define R_PPC_GOT16_HI         16
+#define R_PPC_GOT16_HA         17
+#define R_PPC_PLTREL24         18
+#define R_PPC_COPY             19
+#define R_PPC_GLOB_DAT         20
+#define R_PPC_JMP_SLOT         21
+#define R_PPC_RELATIVE         22
+#define R_PPC_LOCAL24PC                23
+#define R_PPC_UADDR32          24
+#define R_PPC_UADDR16          25
+#define R_PPC_REL32            26
+#define R_PPC_PLT32            27
+#define R_PPC_PLTREL32         28
+#define R_PPC_PLT16_LO         29
+#define R_PPC_PLT16_HI         30
+#define R_PPC_PLT16_HA         31
+#define R_PPC_SDAREL16         32
+#define R_PPC_SECTOFF          33
+#define R_PPC_SECTOFF_LO       34
+#define R_PPC_SECTOFF_HI       35
+#define R_PPC_SECTOFF_HA       36
+/* Keep this the last entry */
+#define R_PPC_NUM              37
+
+/*
+ * The remaining relocs are from the Embedded ELF ABI, and are not
+ * in the SVR4 ELF ABI.
+ */
+#define R_PPC_EMB_NADDR32      101
+#define R_PPC_EMB_NADDR16      102
+#define R_PPC_EMB_NADDR16_LO   103
+#define R_PPC_EMB_NADDR16_HI   104
+#define R_PPC_EMB_NADDR16_HA   105
+#define R_PPC_EMB_SDAI16       106
+#define R_PPC_EMB_SDA2I16      107
+#define R_PPC_EMB_SDA2REL      108
+#define R_PPC_EMB_SDA21                109     /* 16 bit offset in SDA */
+#define R_PPC_EMB_MRKREF       110
+#define R_PPC_EMB_RELSEC16     111
+#define R_PPC_EMB_RELST_LO     112
+#define R_PPC_EMB_RELST_HI     113
+#define R_PPC_EMB_RELST_HA     114
+#define R_PPC_EMB_BIT_FLD      115
+#define R_PPC_EMB_RELSDA       116     /* 16 bit relative offset in SDA */
+
+/* Diab tool relocations */
+#define R_PPC_DIAB_SDA21_LO    180     /* like EMB_SDA21, but lower 16 bit */
+#define R_PPC_DIAB_SDA21_HI    181     /* like EMB_SDA21, but high 16 bit */
+#define R_PPC_DIAB_SDA21_HA    182     /* like EMB_SDA21, adjusted high 16 */
+#define R_PPC_DIAB_RELSDA_LO   183     /* like EMB_RELSDA, but lower 16 bit */
+#define R_PPC_DIAB_RELSDA_HI   184     /* like EMB_RELSDA, but high 16 bit */
+#define R_PPC_DIAB_RELSDA_HA   185     /* like EMB_RELSDA, adjusted high 16 */
+
+/*
+ * This is a phony reloc to handle any old fashioned TOC16 references
+ * that may still be in object files.
+ */
+#define R_PPC_TOC16            255
 
  /* ARM relocs */
 #define R_ARM_NONE             0       /* No reloc */
 #define R_ARM_RELATIVE         23      /* Adjust by program base */
 
 /* AArch64 relocs */
-#define R_AARCH64_NONE         0       /* No relocation */
-#define R_AARCH64_RELATIVE     1027    /* Adjust by program base */
+#define R_AARCH64_NONE         0       /* No relocation */
+#define R_AARCH64_RELATIVE     1027    /* Adjust by program base */
 
 /* RISC-V relocations */
 #define R_RISCV_32             1