ADS860_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = fads" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
AMX860_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = amx860" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
CCM_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = CCM" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
cogent_mpc8xx_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = cogent" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
ESTEEM192E_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = esteem192e" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
ETX094_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = etx094" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
FADS850SAR_config \
FADS860T_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = fads" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
FLAGADM_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = flagadm" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
GENIETV_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = genietv" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
GTH_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = gth" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
hermes_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = hermes" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
ICU862_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = icu862" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
IP860_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = ip860" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
IVML24_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = ivms8" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
IVMS8_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = ivms8" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
LANTEC_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = lantec" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
lwmon_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = lwmon" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
MBX_config \
MBX860T_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = mbx8xx" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
NX823_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = nx823" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
pcu_e_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = pcu_e" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
RPXlite_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = RPXlite" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
SM850_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = tqm8xx" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
SPD823TS_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = spd8xx" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
SXNI855T_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = sixnet" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
TQM855L_config \
TQM860L_config : unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = tqm8xx" >>config.mk ; \
echo "CPU = mpc8xx" >>config.mk ; \
ADCIOP_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = adciop" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
AR405_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = ar405" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
CANBT_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = canbt" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
CPCI405_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = cpci405" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
CPCIISER4_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = cpciiser4">>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
CRAYL1_config:unconfig
@echo "Configuring for $(@:_config=) Board..(SV2 L1)." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = L1" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
DASA_SIM_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = dasa_sim" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
ERIC_config:unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = eric" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
OCRTC_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = ocrtc">>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
PIP405_config:unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = pip405" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
echo "#include <config_$(@:_config=).h>" >config.h
+W7OLMC_config \
W7OLMG_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
- echo "ARCH = ppc" > config.mk ; \
- echo "BOARD = w7o" >>config.mk ; \
- echo "CPU = ppc4xx" >>config.mk ; \
- echo "#include <config_$(@:_config=).h>" >config.h
-
-W7OLMC_config: unconfig
- @echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = w7o" >>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
WALNUT405_config:unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = walnut405">>config.mk ; \
echo "CPU = ppc4xx" >>config.mk ; \
CU824_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = cu824" >>config.mk ; \
echo "CPU = mpc8240" >>config.mk ; \
MOUSSE_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = mousse" >>config.mk ; \
echo "CPU = mpc8240" >>config.mk ; \
Sandpoint8240_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = sandpoint" >>config.mk ; \
echo "CPU = mpc8240" >>config.mk ; \
cogent_mpc8260_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = cogent" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
hymod_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = hymod" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
MPC8260ADS_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = mpc8260ads" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
PM826_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = pm826" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
RPXsuper_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = rpxsuper" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
rsdproto_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = rsdproto" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
sbc8260_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = sbc8260" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
TQM8260_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = tqm8260" >>config.mk ; \
echo "CPU = mpc8260" >>config.mk ; \
EVB64260_config: unconfig
@echo "Configuring for $(@:_config=) Board..." ; \
- cd include ; \
+ cd ./include ; \
echo "ARCH = ppc" > config.mk ; \
echo "BOARD = evb64260" >>config.mk ; \
echo "CPU = mpc74xx" >>config.mk ; \
rm -f ppcboot ppcboot.bin ppcboot.elf ppcboot.srec ppcboot.map
rm -f tools/crc32.c tools/environment.S
+mrproper \
distclean: clobber unconfig
backup:
-/* $OpenBSD: exec_elf.h,v 1.27 2001/01/23 16:58:06 drahn Exp $ */
/*
- * Copyright (c) 1995, 1996 Erik Theisen. All rights reserved.
+ * Copyright (c) 1995, 1996, 2001 Erik Theisen. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* formerly known as "elf_abi.h".
*/
-#ifndef _SYS_EXEC_ELF_H_
-#define _SYS_EXEC_ELF_H_
+#ifndef _ELF_H
+#define _ELF_H
-/* #include <machine/types.h> */
-/* #include <machine/exec.h> */
+#if defined(__BEOS__) || \
+ defined(__NetBSD__) || \
+ defined(__sun__) || \
+ defined(__APPLE__)
+#include <inttypes.h>
+#elif defined(__linux__) && defined(USE_HOSTCC)
+#include <stdint.h>
+#endif
-typedef u_int8_t Elf_Byte;
+/*
+ * This version doesn't work for 64-bit ABIs - Erik.
+ */
-typedef u_int32_t Elf32_Addr; /* Unsigned program address */
-typedef u_int32_t Elf32_Off; /* Unsigned file offset */
+/*
+ * 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 u_int32_t Elf32_Word; /* Unsigned large integer */
-typedef u_int16_t Elf32_Half; /* Unsigned medium integer */
-
-typedef u_int64_t Elf64_Addr;
-typedef u_int64_t Elf64_Off;
-typedef int64_t Elf64_Sword;
-typedef int32_t Elf64_Shalf;
-typedef u_int64_t Elf64_Word;
-typedef u_int32_t Elf64_Half;
-typedef u_int16_t Elf64_Quarter;
+typedef uint32_t Elf32_Word; /* Unsigned large integer */
+typedef uint16_t Elf32_Half; /* Unsigned medium integer */
/* e_ident[] identification indexes */
#define EI_MAG0 0 /* file ID */
#define EI_CLASS 4 /* file class */
#define EI_DATA 5 /* data encoding */
#define EI_VERSION 6 /* ELF header version */
-#define EI_PAD 7 /* start of pad bytes */
-#define EI_BRAND 8 /* brand */
+#define EI_OSABI 7 /* OS/ABI specific ELF extensions */
+#define EI_ABIVERSION 8 /* ABI target version */
+#define EI_PAD 9 /* start of pad bytes */
#define EI_NIDENT 16 /* Size of e_ident[] */
/* e_ident[] magic number */
#define ELFDATA2MSB 2 /* Big-Endian */
#define ELFDATANUM 3 /* number of data encode defines */
+/* e_ident[] OS/ABI specific ELF extensions */
+#define ELFOSABI_NONE 0 /* No extension specified */
+#define ELFOSABI_HPUX 1 /* Hewlett-Packard HP-UX */
+#define ELFOSABI_NETBSD 2 /* NetBSD */
+#define ELFOSABI_LINUX 3 /* Linux */
+#define ELFOSABI_SOLARIS 6 /* Sun Solaris */
+#define ELFOSABI_AIX 7 /* AIX */
+#define ELFOSABI_IRIX 8 /* IRIX */
+#define ELFOSABI_FREEBSD 9 /* FreeBSD */
+#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX */
+#define ELFOSABI_MODESTO 11 /* Novell Modesto */
+#define ELFOSABI_OPENBSD 12 /* OpenBSD */
+/* 64-255 Architecture-specific value range */
+
+/* e_ident[] ABI Version */
+#define ELFABIVERSION 0
+
/* e_ident */
#define IS_ELF(ehdr) ((ehdr).e_ident[EI_MAG0] == ELFMAG0 && \
(ehdr).e_ident[EI_MAG1] == ELFMAG1 && \
header string table" entry offset */
} Elf32_Ehdr;
-typedef struct {
- unsigned char e_ident[EI_NIDENT]; /* Id bytes */
- Elf64_Quarter e_type; /* file type */
- Elf64_Quarter e_machine; /* machine type */
- Elf64_Half e_version; /* version number */
- Elf64_Addr e_entry; /* entry point */
- Elf64_Off e_phoff; /* Program hdr offset */
- Elf64_Off e_shoff; /* Section hdr offset */
- Elf64_Half e_flags; /* Processor flags */
- Elf64_Quarter e_ehsize; /* sizeof ehdr */
- Elf64_Quarter e_phentsize; /* Program header entry size */
- Elf64_Quarter e_phnum; /* Number of program headers */
- Elf64_Quarter e_shentsize; /* Section header entry size */
- Elf64_Quarter e_shnum; /* Number of section headers */
- Elf64_Quarter e_shstrndx; /* String table index */
-} Elf64_Ehdr;
-
/* e_type */
#define ET_NONE 0 /* No file type */
#define ET_REL 1 /* relocatable file */
#define ET_DYN 3 /* shared object file */
#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_LOPROC 0xff00 /* reserved range for processor */
#define ET_HIPROC 0xffff /* specific e_type */
#define EM_386 3 /* Intel 80386 */
#define EM_68K 4 /* Motorola 68000 */
#define EM_88K 5 /* Motorola 88000 */
-#define EM_486 6 /* Intel 80486 - unused? */
+#if 0
+#define EM_486 6 /* RESERVED - was Intel 80486 */
+#endif
#define EM_860 7 /* Intel 80860 */
#define EM_MIPS 8 /* MIPS R3000 Big-Endian only */
-
-/*
- * Don't know if EM_MIPS_RS4_BE,
- * EM_SPARC64, EM_PARISC,
- * or EM_PPC are ABI compliant
- */
+#define EM_S370 9 /* IBM System/370 Processor */
#define EM_MIPS_RS4_BE 10 /* MIPS R4000 Big-Endian */
-#define EM_SPARC64 11 /* SPARC v9 64-bit unoffical */
+#if 0
+#define EM_SPARC64 11 /* RESERVED - was SPARC v9
+ 64-bit unoffical */
+#endif
+/* RESERVED 11-14 for future use */
#define EM_PARISC 15 /* HPPA */
+/* RESERVED 16 for future use */
+#define EM_VPP500 17 /* Fujitsu VPP500 */
+#define EM_SPARC32PLUS 18 /* Enhanced instruction set SPARC */
+#define EM_960 19 /* Intel 80960 */
#define EM_PPC 20 /* PowerPC */
-#define EM_ALPHA 41 /* DEC ALPHA */
-#define EM_ALPHA_EXP 0x9026 /* DEC ALPHA */
-#define EM_NUM 15 /* number of machine types */
+#define EM_PPC64 21 /* 64-bit PowerPC */
+#define EM_S390 22 /* IBM System/390 Processor */
+/* RESERVED 23-35 for future use */
+#define EM_V800 36 /* NEC V800 */
+#define EM_FR20 37 /* Fujitsu FR20 */
+#define EM_RH32 38 /* TRW RH-32 */
+#define EM_RCE 39 /* Motorola RCE */
+#define EM_ARM 40 /* Advanced Risc Machines ARM */
+#define EM_ALPHA 41 /* Digital Alpha */
+#define EM_SH 42 /* Hitachi SH */
+#define EM_SPARCV9 43 /* SPARC Version 9 */
+#define EM_TRICORE 44 /* Siemens TriCore embedded processor */
+#define EM_ARC 45 /* Argonaut RISC Core */
+#define EM_H8_300 46 /* Hitachi H8/300 */
+#define EM_H8_300H 47 /* Hitachi H8/300H */
+#define EM_H8S 48 /* Hitachi H8S */
+#define EM_H8_500 49 /* Hitachi H8/500 */
+#define EM_IA_64 50 /* Intel Merced */
+#define EM_MIPS_X 51 /* Stanford MIPS-X */
+#define EM_COLDFIRE 52 /* Motorola Coldfire */
+#define EM_68HC12 53 /* Motorola M68HC12 */
+#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator*/
+#define EM_PCP 55 /* Siemens PCP */
+#define EM_NCPU 56 /* Sony nCPU embeeded RISC */
+#define EM_NDR1 57 /* Denso NDR1 microprocessor */
+#define EM_STARCORE 58 /* Motorola Start*Core processor */
+#define EM_ME16 59 /* Toyota ME16 processor */
+#define EM_ST100 60 /* STMicroelectronic ST100 processor */
+#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam*/
+#define EM_X86_64 62 /* AMD x86-64 */
+#define EM_PDSP 63 /* Sony DSP Processor */
+/* RESERVED 64,65 for future use */
+#define EM_FX66 66 /* Siemens FX66 microcontroller */
+#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */
+#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */
+#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */
+#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */
+#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */
+#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */
+#define EM_SVX 73 /* Silicon Graphics SVx */
+#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */
+#define EM_VAX 75 /* Digital VAX */
+#define EM_CHRIS 76 /* Axis Communications embedded proc. */
+#define EM_JAVELIN 77 /* Infineon Technologies emb. proc. */
+#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */
+#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */
+#define EM_MMIX 80 /* Donald Knuth's edu 64-bit proc. */
+#define EM_HUANY 81 /* Harvard University mach-indep objs */
+#define EM_PRISM 82 /* SiTera Prism */
+#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */
+#define EM_FR30 84 /* Fujitsu FR30 */
+#define EM_D10V 85 /* Mitsubishi DV10V */
+#define EM_D30V 86 /* Mitsubishi DV30V */
+#define EM_V850 87 /* NEC v850 */
+#define EM_M32R 88 /* Mitsubishi M32R */
+#define EM_MN10300 89 /* Matsushita MN10200 */
+#define EM_MN10200 90 /* Matsushita MN10200 */
+#define EM_PJ 91 /* picoJava */
+#define EM_NUM 92 /* number of machine types */
/* Version */
#define EV_NONE 0 /* Invalid */
Elf32_Word sh_entsize; /* section entry size */
} Elf32_Shdr;
-typedef struct {
- Elf64_Half sh_name; /* section name */
- Elf64_Half sh_type; /* section type */
- Elf64_Word sh_flags; /* section flags */
- Elf64_Addr sh_addr; /* virtual address */
- Elf64_Off sh_offset; /* file offset */
- Elf64_Word sh_size; /* section size */
- Elf64_Half sh_link; /* link to another */
- Elf64_Half sh_info; /* misc info */
- Elf64_Word sh_addralign; /* memory alignment */
- Elf64_Word sh_entsize; /* table entry size */
-} Elf64_Shdr;
-
/* Special Section Indexes */
#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_LOOS 0xff20 /* reserved range for operating */
+#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 */
#define SHN_HIRESERVE 0xffff /* upper bounds of reserved indexes */
/* sh_type */
#define SHT_REL 9 /* relation section without addends */
#define SHT_SHLIB 10 /* reserved - purpose unknown */
#define SHT_DYNSYM 11 /* dynamic symbol table section */
-#define SHT_NUM 12 /* number of section types */
+#define SHT_INIT_ARRAY 14 /* Array of constructors */
+#define SHT_FINI_ARRAY 15 /* Array of destructors */
+#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
+#define SHT_GROUP 17 /* Section group */
+#define SHT_SYMTAB_SHNDX 18 /* Extended section indeces */
+#define SHT_NUM 19 /* number of section types */
+#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_LOUSER 0x80000000 /* reserved range for application */
/* Section names */
#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_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_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_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 */
-
/* Section Attribute Flags - sh_flags */
#define SHF_WRITE 0x1 /* Writable */
#define SHF_ALLOC 0x2 /* occupies memory */
#define SHF_EXECINSTR 0x4 /* executable */
+#define SHF_MERGE 0x10 /* Might be merged */
+#define SHF_STRINGS 0x20 /* Contains NULL terminated strings */
+#define SHF_INFO_LINK 0x40 /* sh_info contains SHT index */
+#define SHF_LINK_ORDER 0x80 /* Preserve order after combining*/
+#define SHF_OS_NONCONFORMING 0x100 /* Non-standard OS specific handling */
+#define SHF_GROUP 0x200 /* Member of section group */
+#define SHF_TLS 0x400 /* Thread local storage */
+#define SHF_MASKOS 0x0ff00000 /* OS specific */
#define SHF_MASKPROC 0xf0000000 /* reserved bits for processor */
/* specific section attributes */
+/* Section Group Flags */
+#define GRP_COMDAT 0x1 /* COMDAT group */
+#define GRP_MASKOS 0x0ff00000 /* Mask OS specific flags */
+#define GRP_MASKPROC 0xf0000000 /* Mask processor specific flags */
+
/* Symbol Table Entry */
typedef struct elf32_sym {
Elf32_Word st_name; /* name - index into string table */
Elf32_Half st_shndx; /* section header index */
} Elf32_Sym;
-typedef struct {
- Elf64_Half st_name; /* Symbol name index in str table */
- Elf_Byte st_info; /* type / binding attrs */
- Elf_Byte st_other; /* unused */
- Elf64_Quarter st_shndx; /* section index of symbol */
- Elf64_Word st_value; /* value of symbol */
- Elf64_Word st_size; /* size of symbol */
-} Elf64_Sym;
-
/* Symbol table index */
#define STN_UNDEF 0 /* undefined */
#define ELF32_ST_BIND(x) ((x) >> 4)
#define ELF32_ST_TYPE(x) (((unsigned int) x) & 0xf)
#define ELF32_ST_INFO(b,t) (((b) << 4) + ((t) & 0xf))
-
-#define ELF64_ST_BIND(x) ((x) >> 4)
-#define ELF64_ST_TYPE(x) (((unsigned int) x) & 0xf)
-#define ELF64_ST_INFO(b,t) (((b) << 4) + ((t) & 0xf))
+#define ELF32_ST_VISIBILITY(x) ((x) & 0x3)
/* Symbol Binding - ELF32_ST_BIND - st_info */
#define STB_LOCAL 0 /* Local symbol */
#define STB_GLOBAL 1 /* Global symbol */
#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_LOPROC 13 /* reserved range for processor */
#define STB_HIPROC 15 /* specific symbol bindings */
#define STT_SECTION 3 /* section */
#define STT_FILE 4 /* file */
#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_LOPROC 13 /* reserved range for processor */
#define STT_HIPROC 15 /* specific symbol types */
+/* Symbol visibility - ELF32_ST_VISIBILITY - st_other */
+#define STV_DEFAULT 0 /* Normal visibility rules */
+#define STV_INTERNAL 1 /* Processor specific hidden class */
+#define STV_HIDDEN 2 /* Symbol unavailable in other mods */
+#define STV_PROTECTED 3 /* Not preemptible, not exported */
+
+
/* Relocation entry with implicit addend */
typedef struct
{
#define ELF32_R_TYPE(i) ((unsigned char) (i))
#define ELF32_R_INFO(s,t) (((s) << 8) + (unsigned char)(t))
-typedef struct {
- Elf64_Word r_offset; /* where to do it */
- Elf64_Word r_info; /* index & type of relocation */
-} Elf64_Rel;
-
-typedef struct {
- Elf64_Word r_offset; /* where to do it */
- Elf64_Word r_info; /* index & type of relocation */
- Elf64_Word r_addend; /* adjustment value */
-} Elf64_Rela;
-
-#define ELF64_R_SYM(info) ((info) >> 32)
-#define ELF64_R_TYPE(info) ((info) & 0xFFFFFFFF)
-#define ELF64_R_INFO(s,t) (((s) << 32) + (u_int32_t)(t))
-
/* Program Header */
typedef struct {
Elf32_Word p_type; /* segment type */
Elf32_Word p_align; /* memory alignment */
} Elf32_Phdr;
-typedef struct {
- Elf64_Half p_type; /* entry type */
- Elf64_Half p_flags; /* flags */
- Elf64_Off p_offset; /* offset */
- Elf64_Addr p_vaddr; /* virtual address */
- Elf64_Addr p_paddr; /* physical address */
- Elf64_Word p_filesz; /* file size */
- Elf64_Word p_memsz; /* memory size */
- Elf64_Word p_align; /* memory & file alignment */
-} Elf64_Phdr;
-
/* Segment types - p_type */
#define PT_NULL 0 /* unused */
#define PT_LOAD 1 /* loadable segment */
#define PT_NOTE 4 /* auxiliary information */
#define PT_SHLIB 5 /* reserved - purpose undefined */
#define PT_PHDR 6 /* program header */
-#define PT_NUM 7 /* Number of segment types */
+#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_LOPROC 0x70000000 /* reserved range for processor */
#define PT_HIPROC 0x7fffffff /* specific segment types */
#define PF_X 0x1 /* Executable */
#define PF_W 0x2 /* Writable */
#define PF_R 0x4 /* Readable */
+#define PF_MASKOS 0x0ff00000 /* OS specific segment flags */
#define PF_MASKPROC 0xf0000000 /* reserved bits for processor */
/* 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;
} Elf32_Dyn;
-extern Elf32_Dyn _DYNAMIC[]; /* XXX not 64-bit clean */
-
-typedef struct {
- Elf64_Word d_tag; /* controls meaning of d_val */
- union {
- Elf64_Addr d_ptr;
- Elf64_Word d_val;
- } d_un;
-} Elf64_Dyn;
+extern Elf32_Dyn _DYNAMIC[];
/* Dynamic Array Tags - d_tag */
#define DT_NULL 0 /* marks end of _DYNAMIC array */
#define DT_DEBUG 21 /* bugger */
#define DT_TEXTREL 22 /* Allow rel. mod. to unwritable seg */
#define DT_JMPREL 23 /* add. of PLT's relocation entries */
-#define DT_BIND_NOW 24 /* Bind now regardless of env setting */
-#define DT_NUM 25 /* Number used. */
+#define DT_BIND_NOW 24 /* Process relocations of object */
+#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */
+#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */
+#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */
+#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */
+#define DT_RUNPATH 29 /* Library search path */
+#define DT_FLAGS 30 /* Flags for the object being loaded */
+#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_LOOS 0x60000000 /* reserved range for OS */
+#define DT_HIOS 0x6fffffff /* specific dynamic array tags */
#define DT_LOPROC 0x70000000 /* reserved range for processor */
#define DT_HIPROC 0x7fffffff /* specific dynamic array tags */
+
+/* Dynamic Tag Flags - d_un.d_val */
+#define DF_ORIGIN 0x01 /* Object may use DF_ORIGIN */
+#define DF_SYMBOLIC 0x02 /* Symbol resolutions starts here */
+#define DF_TEXTREL 0x04 /* Object contains text relocations */
+#define DF_BIND_NOW 0x08 /* No lazy binding for this object */
+#define DF_STATIC_TLS 0x10 /* Static thread local storage */
/* Standard ELF hashing function */
-unsigned int elf_hash(const unsigned char *name);
-
-/*
- * Note Definitions
- */
-typedef struct {
- Elf32_Word namesz;
- Elf32_Word descsz;
- Elf32_Word type;
-} Elf32_Note;
+unsigned long elf_hash(const unsigned char *name);
-typedef struct {
- Elf64_Half namesz;
- Elf64_Half descsz;
- Elf64_Half type;
-} Elf64_Note;
+#define ELF_TARG_VER 1 /* The ver for which this code is intended */
/*
- * XXX - these _KERNEL items aren't part of the ABI!
+ * XXX - PowerPC defines really don't belong in here,
+ * but we'll put them in for simplicity.
*/
-#if defined(_KERNEL) || defined(_DYN_LOADER)
-
-#define ELF32_NO_ADDR ((u_long) ~0) /* Indicates addr. not yet filled in */
-#define ELF_AUX_ENTRIES 8 /* Size of aux array passed to loader */
-
-typedef struct {
- Elf32_Sword au_id; /* 32-bit id */
- Elf32_Word au_v; /* 32-bit value */
-} Aux32Info;
-
-#define ELF64_NO_ADDR ((u_int64_t) ~0)/* Indicates addr. not yet filled in */
-#define ELF64_AUX_ENTRIES 8 /* Size of aux array passed to loader */
-typedef struct {
- Elf64_Shalf au_id; /* 32-bit id */
- Elf64_Word au_v; /* 64-bit id */
-} Aux64Info;
-
-enum AuxID {
- AUX_null = 0,
- AUX_ignore = 1,
- AUX_execfd = 2,
- AUX_phdr = 3, /* &phdr[0] */
- AUX_phent = 4, /* sizeof(phdr[0]) */
- AUX_phnum = 5, /* # phdr entries */
- AUX_pagesz = 6, /* PAGESIZE */
- AUX_base = 7, /* ld.so base addr */
- AUX_flags = 8, /* processor flags */
- AUX_entry = 9, /* a.out entry */
- AUX_sun_uid = 2000, /* euid */
- AUX_sun_ruid = 2001, /* ruid */
- AUX_sun_gid = 2002, /* egid */
- AUX_sun_rgid = 2003 /* rgid */
-};
-
-struct elf_args {
- u_long arg_entry; /* progran entry point */
- u_long arg_interp; /* Interpreter load address */
- u_long arg_phaddr; /* program header address */
- u_long arg_phentsize; /* Size of program header */
- u_long arg_phnum; /* Number of program headers */
- u_long arg_os; /* OS tag */
-};
-
-#endif
-
-#if !defined(ELFSIZE) && defined(ARCH_ELFSIZE)
-#define ELFSIZE ARCH_ELFSIZE
-#endif
-
-#if defined(ELFSIZE)
-#define CONCAT(x,y) __CONCAT(x,y)
-#define ELFNAME(x) CONCAT(elf,CONCAT(ELFSIZE,CONCAT(_,x)))
-#define ELFNAME2(x,y) CONCAT(x,CONCAT(_elf,CONCAT(ELFSIZE,CONCAT(_,y))))
-#define ELFNAMEEND(x) CONCAT(x,CONCAT(_elf,ELFSIZE))
-#define ELFDEFNNAME(x) CONCAT(ELF,CONCAT(ELFSIZE,CONCAT(_,x)))
-#endif
-
-#if defined(ELFSIZE) && (ELFSIZE == 32)
-#define Elf_Ehdr Elf32_Ehdr
-#define Elf_Phdr Elf32_Phdr
-#define Elf_Shdr Elf32_Shdr
-#define Elf_Sym Elf32_Sym
-#define Elf_Rel Elf32_Rel
-#define Elf_RelA Elf32_Rela
-#define Elf_Dyn Elf32_Dyn
-#define Elf_Word Elf32_Word
-#define Elf_Sword Elf32_Sword
-#define Elf_Addr Elf32_Addr
-#define Elf_Off Elf32_Off
-#define Elf_Nhdr Elf32_Nhdr
-
-#define ELF_R_SYM ELF32_R_SYM
-#define ELF_R_TYPE ELF32_R_TYPE
-#define ELF_R_INFO ELF32_R_INFO
-#define ELFCLASS ELFCLASS32
-
-#define ELF_ST_BIND ELF32_ST_BIND
-#define ELF_ST_TYPE ELF32_ST_TYPE
-#define ELF_ST_INFO ELF32_ST_INFO
-
-#define AuxInfo Aux32Info
-#elif defined(ELFSIZE) && (ELFSIZE == 64)
-#define Elf_Ehdr Elf64_Ehdr
-#define Elf_Phdr Elf64_Phdr
-#define Elf_Shdr Elf64_Shdr
-#define Elf_Sym Elf64_Sym
-#define Elf_Rel Elf64_Rel
-#define Elf_RelA Elf64_Rela
-#define Elf_Dyn Elf64_Dyn
-#define Elf_Word Elf64_Word
-#define Elf_Sword Elf64_Sword
-#define Elf_Addr Elf64_Addr
-#define Elf_Off Elf64_Off
-#define Elf_Nhdr Elf64_Nhdr
-
-#define ELF_R_SYM ELF64_R_SYM
-#define ELF_R_TYPE ELF64_R_TYPE
-#define ELF_R_INFO ELF64_R_INFO
-#define ELFCLASS ELFCLASS64
-
-#define ELF_ST_BIND ELF64_ST_BIND
-#define ELF_ST_TYPE ELF64_ST_TYPE
-#define ELF_ST_INFO ELF64_ST_INFO
-
-#define AuxInfo Aux64Info
-#endif
-
-#ifdef _KERNEL
-#ifdef _KERN_DO_ELF64
-int exec_elf64_makecmds __P((struct proc *, struct exec_package *));
-void *elf64_copyargs __P((struct exec_package *, struct ps_strings *,
- void *, void *));
-int exec_elf64_fixup __P((struct proc *, struct exec_package *));
-char *elf64_check_brand __P((Elf64_Ehdr *));
-int elf64_os_pt_note __P((struct proc *, struct exec_package *, Elf64_Ehdr *,
- char *, size_t, size_t));
-#endif
-#ifdef _KERN_DO_ELF
-int exec_elf_makecmds __P((struct proc *, struct exec_package *));
-void *elf_copyargs __P((struct exec_package *, struct ps_strings *,
- void *, void *));
-int exec_elf_fixup __P((struct proc *, struct exec_package *));
-char *elf_check_brand __P((Elf32_Ehdr *));
-#endif
-
-#endif /* _KERNEL */
-
-#define ELF_TARG_VER 1 /* The ver for which this code is intended */
+/* 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
+ 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
+
+#endif /* _ELF_H */
-#endif /* _SYS_EXEC_ELF_H_ */