* ppc.h: Split out ppc64 definitions to..

* pcc64.h: ..here.  New file.
	(R_PPC64_REL30): Rename from R_PPC64_ADDR30.
This commit is contained in:
Alan Modra 2003-01-16 04:08:47 +00:00
parent df9b825c9f
commit 0036d6bdaa
3 changed files with 119 additions and 79 deletions

View file

@ -1,3 +1,9 @@
2003-01-16 Alan Modra <amodra@bigpond.net.au>
* ppc.h: Split out ppc64 definitions to..
* pcc64.h: ..here. New file.
(R_PPC64_REL30): Rename from R_PPC64_ADDR30.
2003-01-13 Dmitry Diky <diwil@mail.ru>
* elf/common.h (EM_MSP430): Change e_machine value to officially

View file

@ -1,5 +1,6 @@
/* PPC ELF support for BFD.
Copyright 1995, 1996, 1998, 2000, 2001 Free Software Foundation, Inc.
Copyright 1995, 1996, 1998, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
By Michael Meissner, Cygnus Support, <meissner@cygnus.com>, from information
in the System V Application Binary Interface, PowerPC Processor Supplement
@ -70,39 +71,6 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
RELOC_NUMBER (R_PPC_SECTOFF_HA, 36)
RELOC_NUMBER (R_PPC_ADDR30, 37)
/* The following relocs are from the 64-bit PowerPC ELF ABI. */
RELOC_NUMBER (R_PPC64_ADDR64, 38)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHER, 39)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHERA, 40)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHEST, 41)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHESTA, 42)
RELOC_NUMBER (R_PPC64_UADDR64, 43)
RELOC_NUMBER (R_PPC64_REL64, 44)
RELOC_NUMBER (R_PPC64_PLT64, 45)
RELOC_NUMBER (R_PPC64_PLTREL64, 46)
RELOC_NUMBER (R_PPC64_TOC16, 47)
RELOC_NUMBER (R_PPC64_TOC16_LO, 48)
RELOC_NUMBER (R_PPC64_TOC16_HI, 49)
RELOC_NUMBER (R_PPC64_TOC16_HA, 50)
RELOC_NUMBER (R_PPC64_TOC, 51)
RELOC_NUMBER (R_PPC64_PLTGOT16, 52)
RELOC_NUMBER (R_PPC64_PLTGOT16_LO, 53)
RELOC_NUMBER (R_PPC64_PLTGOT16_HI, 54)
RELOC_NUMBER (R_PPC64_PLTGOT16_HA, 55)
/* The following relocs were added in the 64-bit PowerPC ELF ABI revision 1.2. */
RELOC_NUMBER (R_PPC64_ADDR16_DS, 56)
RELOC_NUMBER (R_PPC64_ADDR16_LO_DS, 57)
RELOC_NUMBER (R_PPC64_GOT16_DS, 58)
RELOC_NUMBER (R_PPC64_GOT16_LO_DS, 59)
RELOC_NUMBER (R_PPC64_PLT16_LO_DS, 60)
RELOC_NUMBER (R_PPC64_SECTOFF_DS, 61)
RELOC_NUMBER (R_PPC64_SECTOFF_LO_DS, 62)
RELOC_NUMBER (R_PPC64_TOC16_DS, 63)
RELOC_NUMBER (R_PPC64_TOC16_LO_DS, 64)
RELOC_NUMBER (R_PPC64_PLTGOT16_DS, 65)
RELOC_NUMBER (R_PPC64_PLTGOT16_LO_DS, 66)
/* The remaining relocs are from the Embedded ELF ABI, and are not
in the SVR4 ELF ABI. */
RELOC_NUMBER (R_PPC_EMB_NADDR32, 101)
@ -132,51 +100,6 @@ START_RELOC_NUMBERS (elf_ppc_reloc_type)
END_RELOC_NUMBERS (R_PPC_max)
/* Aliases for R_PPC64-relocs. */
#define R_PPC64_NONE R_PPC_NONE
#define R_PPC64_ADDR32 R_PPC_ADDR32
#define R_PPC64_ADDR24 R_PPC_ADDR24
#define R_PPC64_ADDR16 R_PPC_ADDR16
#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
#define R_PPC64_ADDR14 R_PPC_ADDR14
#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
#define R_PPC64_REL24 R_PPC_REL24
#define R_PPC64_REL14 R_PPC_REL14
#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
#define R_PPC64_GOT16 R_PPC_GOT16
#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
#define R_PPC64_COPY R_PPC_COPY
#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
#define R_PPC64_RELATIVE R_PPC_RELATIVE
#define R_PPC64_UADDR32 R_PPC_UADDR32
#define R_PPC64_UADDR16 R_PPC_UADDR16
#define R_PPC64_REL32 R_PPC_REL32
#define R_PPC64_PLT32 R_PPC_PLT32
#define R_PPC64_PLTREL32 R_PPC_PLTREL32
#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
#define R_PPC64_SECTOFF R_PPC_SECTOFF
#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
#define R_PPC64_ADDR30 R_PPC_ADDR30
#define R_PPC64_GNU_VTINHERIT R_PPC_GNU_VTINHERIT
#define R_PPC64_GNU_VTENTRY R_PPC_GNU_VTENTRY
/* Specify the start of the .glink section. */
#define DT_PPC64_GLINK DT_LOPROC
/* Specify the start and size of the .opd section. */
#define DT_PPC64_OPD (DT_LOPROC + 1)
#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
/* Processor specific flags for the ELF header e_flags field. */

111
include/elf/ppc64.h Normal file
View file

@ -0,0 +1,111 @@
/* PPC64 ELF support for BFD.
Copyright 2003 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _ELF_PPC64_H
#define _ELF_PPC64_H
#include "elf/reloc-macros.h"
/* Relocations. */
START_RELOC_NUMBERS (elf_ppc64_reloc_type)
RELOC_NUMBER (R_PPC64_NONE, 0)
RELOC_NUMBER (R_PPC64_ADDR32, 1)
RELOC_NUMBER (R_PPC64_ADDR24, 2)
RELOC_NUMBER (R_PPC64_ADDR16, 3)
RELOC_NUMBER (R_PPC64_ADDR16_LO, 4)
RELOC_NUMBER (R_PPC64_ADDR16_HI, 5)
RELOC_NUMBER (R_PPC64_ADDR16_HA, 6)
RELOC_NUMBER (R_PPC64_ADDR14, 7)
RELOC_NUMBER (R_PPC64_ADDR14_BRTAKEN, 8)
RELOC_NUMBER (R_PPC64_ADDR14_BRNTAKEN, 9)
RELOC_NUMBER (R_PPC64_REL24, 10)
RELOC_NUMBER (R_PPC64_REL14, 11)
RELOC_NUMBER (R_PPC64_REL14_BRTAKEN, 12)
RELOC_NUMBER (R_PPC64_REL14_BRNTAKEN, 13)
RELOC_NUMBER (R_PPC64_GOT16, 14)
RELOC_NUMBER (R_PPC64_GOT16_LO, 15)
RELOC_NUMBER (R_PPC64_GOT16_HI, 16)
RELOC_NUMBER (R_PPC64_GOT16_HA, 17)
/* 18 unused. 32-bit reloc is R_PPC_PLTREL24. */
RELOC_NUMBER (R_PPC64_COPY, 19)
RELOC_NUMBER (R_PPC64_GLOB_DAT, 20)
RELOC_NUMBER (R_PPC64_JMP_SLOT, 21)
RELOC_NUMBER (R_PPC64_RELATIVE, 22)
/* 23 unused. 32-bit reloc is R_PPC_LOCAL24PC. */
RELOC_NUMBER (R_PPC64_UADDR32, 24)
RELOC_NUMBER (R_PPC64_UADDR16, 25)
RELOC_NUMBER (R_PPC64_REL32, 26)
RELOC_NUMBER (R_PPC64_PLT32, 27)
RELOC_NUMBER (R_PPC64_PLTREL32, 28)
RELOC_NUMBER (R_PPC64_PLT16_LO, 29)
RELOC_NUMBER (R_PPC64_PLT16_HI, 30)
RELOC_NUMBER (R_PPC64_PLT16_HA, 31)
/* 32 unused. 32-bit reloc is R_PPC_SDAREL16. */
RELOC_NUMBER (R_PPC64_SECTOFF, 33)
RELOC_NUMBER (R_PPC64_SECTOFF_LO, 34)
RELOC_NUMBER (R_PPC64_SECTOFF_HI, 35)
RELOC_NUMBER (R_PPC64_SECTOFF_HA, 36)
RELOC_NUMBER (R_PPC64_REL30, 37)
RELOC_NUMBER (R_PPC64_ADDR64, 38)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHER, 39)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHERA, 40)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHEST, 41)
RELOC_NUMBER (R_PPC64_ADDR16_HIGHESTA, 42)
RELOC_NUMBER (R_PPC64_UADDR64, 43)
RELOC_NUMBER (R_PPC64_REL64, 44)
RELOC_NUMBER (R_PPC64_PLT64, 45)
RELOC_NUMBER (R_PPC64_PLTREL64, 46)
RELOC_NUMBER (R_PPC64_TOC16, 47)
RELOC_NUMBER (R_PPC64_TOC16_LO, 48)
RELOC_NUMBER (R_PPC64_TOC16_HI, 49)
RELOC_NUMBER (R_PPC64_TOC16_HA, 50)
RELOC_NUMBER (R_PPC64_TOC, 51)
RELOC_NUMBER (R_PPC64_PLTGOT16, 52)
RELOC_NUMBER (R_PPC64_PLTGOT16_LO, 53)
RELOC_NUMBER (R_PPC64_PLTGOT16_HI, 54)
RELOC_NUMBER (R_PPC64_PLTGOT16_HA, 55)
/* The following relocs were added in the 64-bit PowerPC ELF ABI
revision 1.2. */
RELOC_NUMBER (R_PPC64_ADDR16_DS, 56)
RELOC_NUMBER (R_PPC64_ADDR16_LO_DS, 57)
RELOC_NUMBER (R_PPC64_GOT16_DS, 58)
RELOC_NUMBER (R_PPC64_GOT16_LO_DS, 59)
RELOC_NUMBER (R_PPC64_PLT16_LO_DS, 60)
RELOC_NUMBER (R_PPC64_SECTOFF_DS, 61)
RELOC_NUMBER (R_PPC64_SECTOFF_LO_DS, 62)
RELOC_NUMBER (R_PPC64_TOC16_DS, 63)
RELOC_NUMBER (R_PPC64_TOC16_LO_DS, 64)
RELOC_NUMBER (R_PPC64_PLTGOT16_DS, 65)
RELOC_NUMBER (R_PPC64_PLTGOT16_LO_DS, 66)
/* These are GNU extensions to enable C++ vtable garbage collection. */
RELOC_NUMBER (R_PPC64_GNU_VTINHERIT, 253)
RELOC_NUMBER (R_PPC64_GNU_VTENTRY, 254)
END_RELOC_NUMBERS (R_PPC64_max)
/* Specify the start of the .glink section. */
#define DT_PPC64_GLINK DT_LOPROC
/* Specify the start and size of the .opd section. */
#define DT_PPC64_OPD (DT_LOPROC + 1)
#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
#endif /* _ELF_PPC64_H */