mirror of
https://github.com/davea42/libdwarf-code.git
synced 2025-10-23 10:27:48 +08:00
243 lines
11 KiB
C
243 lines
11 KiB
C
/*
|
|
Copyright (C) 2007-2012 David Anderson. All Rights Reserved.
|
|
Portions Copyright (C) 2012 SN Systems Ltd. All rights reserved.
|
|
|
|
This program is free software; you can redistribute it and/or modify it
|
|
under the terms of version 2.1 of the GNU Lesser General Public License
|
|
published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it would be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
Further, this software is distributed without any warranty that it is
|
|
free of the rightful claim of any third person regarding infringement
|
|
or the like. Any license provided herein, whether implied or
|
|
otherwise, applies only to this software file. Patent licenses, if
|
|
any, provided herein do not apply to combinations of this program with
|
|
other software, or any other product whatsoever.
|
|
|
|
You should have received a copy of the GNU Lesser General Public License along
|
|
with this program; if not, write the Free Software Foundation, Inc., 51
|
|
Franklin Street - Fifth Floor, Boston MA 02110-1301, USA.
|
|
*/
|
|
/* The address of the Free Software Foundation is
|
|
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef DWARF_RELOC_PPC_H
|
|
#define DWARF_RELOC_PPC_H
|
|
|
|
/* Definitions for PPC */
|
|
#define DWARF_RELOC_PPC
|
|
|
|
/* Include the definitions only in the case of Windows */
|
|
#ifdef _WIN32
|
|
/* 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
|
|
|
|
/* Unused types */
|
|
#define R_PPC_37 37
|
|
#define R_PPC_38 38
|
|
#define R_PPC_39 39
|
|
#define R_PPC_40 40
|
|
#define R_PPC_41 41
|
|
#define R_PPC_42 42
|
|
#define R_PPC_43 43
|
|
#define R_PPC_44 44
|
|
#define R_PPC_45 45
|
|
#define R_PPC_46 46
|
|
#define R_PPC_47 47
|
|
#define R_PPC_48 48
|
|
#define R_PPC_49 49
|
|
#define R_PPC_50 50
|
|
#define R_PPC_51 51
|
|
#define R_PPC_52 52
|
|
#define R_PPC_53 53
|
|
#define R_PPC_54 54
|
|
#define R_PPC_55 55
|
|
|
|
/* Unused types */
|
|
#define R_PPC_56 56
|
|
#define R_PPC_57 57
|
|
#define R_PPC_58 58
|
|
#define R_PPC_59 59
|
|
#define R_PPC_60 60
|
|
#define R_PPC_61 61
|
|
#define R_PPC_62 62
|
|
#define R_PPC_63 63
|
|
#define R_PPC_64 64
|
|
#define R_PPC_65 65
|
|
#define R_PPC_66 66
|
|
|
|
/* PowerPC relocations defined for the TLS access ABI. */
|
|
#define R_PPC_TLS 67 /* none (sym+add)@tls */
|
|
#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
|
|
#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
|
|
#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
|
|
#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
|
|
#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
|
|
#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
|
|
#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
|
|
#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
|
|
#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
|
|
#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
|
|
#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
|
|
#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
|
|
#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
|
|
#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
|
|
#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
|
|
#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
|
|
#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
|
|
#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
|
|
#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
|
|
#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */
|
|
#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */
|
|
#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
|
|
#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
|
|
#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */
|
|
#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */
|
|
#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */
|
|
#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */
|
|
|
|
/* Keep this the last entry. */
|
|
#define R_PPC_NUM 95
|
|
#endif /* _WIN32 */
|
|
|
|
/* PowerPC relocations defined by the ABIs */
|
|
static const char *reloc_type_names_PPC[] = {
|
|
"R_PPC_NONE", /* 00 */
|
|
"R_PPC_ADDR32", /* 01 */
|
|
"R_PPC_ADDR24", /* 02 */
|
|
"R_PPC_ADDR16", /* 03 */
|
|
"R_PPC_ADDR16_LO", /* 04 */
|
|
"R_PPC_ADDR16_HI", /* 05 */
|
|
"R_PPC_ADDR16_HA", /* 06 */
|
|
"R_PPC_ADDR14", /* 07 */
|
|
"R_PPC_ADDR14_BRTAKEN", /* 08 */
|
|
"R_PPC_ADDR14_BRNTAKEN", /* 09 */
|
|
"R_PPC_REL24", /* 10 */
|
|
"R_PPC_REL14", /* 11 */
|
|
"R_PPC_REL14_BRTAKEN", /* 12 */
|
|
"R_PPC_REL14_BRNTAKEN", /* 13 */
|
|
"R_PPC_GOT16", /* 14 */
|
|
"R_PPC_GOT16_LO", /* 15 */
|
|
"R_PPC_GOT16_HI", /* 16 */
|
|
"R_PPC_GOT16_HA", /* 17 */
|
|
"R_PPC_PLTREL24", /* 18 */
|
|
"R_PPC_COPY", /* 19 */
|
|
"R_PPC_GLOB_DAT", /* 20 */
|
|
"R_PPC_JMP_SLOT", /* 21 */
|
|
"R_PPC_RELATIVE", /* 22 */
|
|
"R_PPC_LOCAL24PC", /* 23 */
|
|
"R_PPC_UADDR32", /* 24 */
|
|
"R_PPC_UADDR16", /* 25 */
|
|
"R_PPC_REL32", /* 26 */
|
|
"R_PPC_PLT32", /* 27 */
|
|
"R_PPC_PLTREL32", /* 28 */
|
|
"R_PPC_PLT16_LO", /* 29 */
|
|
"R_PPC_PLT16_HI", /* 30 */
|
|
"R_PPC_PLT16_HA", /* 31 */
|
|
"R_PPC_SDAREL16", /* 32 */
|
|
"R_PPC_SECTOFF", /* 33 */
|
|
"R_PPC_SECTOFF_LO", /* 34 */
|
|
"R_PPC_SECTOFF_HI", /* 35 */
|
|
"R_PPC_SECTOFF_HA", /* 36 */
|
|
"R_PPC_37", /* 37 */
|
|
"R_PPC_38", /* 38 */
|
|
"R_PPC_39", /* 39 */
|
|
"R_PPC_40", /* 40 */
|
|
"R_PPC_41", /* 41 */
|
|
"R_PPC_42", /* 42 */
|
|
"R_PPC_43", /* 43 */
|
|
"R_PPC_44", /* 44 */
|
|
"R_PPC_45", /* 45 */
|
|
"R_PPC_46", /* 46 */
|
|
"R_PPC_47", /* 47 */
|
|
"R_PPC_48", /* 48 */
|
|
"R_PPC_49", /* 49 */
|
|
"R_PPC_50", /* 50 */
|
|
"R_PPC_51", /* 51 */
|
|
"R_PPC_52", /* 52 */
|
|
"R_PPC_53", /* 53 */
|
|
"R_PPC_54", /* 54 */
|
|
"R_PPC_55", /* 55 */
|
|
"R_PPC_56", /* 56 */
|
|
"R_PPC_57", /* 57 */
|
|
"R_PPC_58", /* 58 */
|
|
"R_PPC_59", /* 59 */
|
|
"R_PPC_60", /* 60 */
|
|
"R_PPC_61", /* 61 */
|
|
"R_PPC_62", /* 62 */
|
|
"R_PPC_63", /* 63 */
|
|
"R_PPC_64", /* 64 */
|
|
"R_PPC_65", /* 65 */
|
|
"R_PPC_66", /* 66 */
|
|
"R_PPC_TLS", /* 67 */
|
|
"R_PPC_DTPMOD32", /* 68 */
|
|
"R_PPC_TPREL16", /* 69 */
|
|
"R_PPC_TPREL16_LO", /* 70 */
|
|
"R_PPC_TPREL16_HI", /* 71 */
|
|
"R_PPC_TPREL16_HA", /* 72 */
|
|
"R_PPC_TPREL32", /* 73 */
|
|
"R_PPC_DTPREL16", /* 74 */
|
|
"R_PPC_DTPREL16_LO", /* 75 */
|
|
"R_PPC_DTPREL16_HI", /* 76 */
|
|
"R_PPC_DTPREL16_HA", /* 77 */
|
|
"R_PPC_DTPREL64", /* 78 */
|
|
"R_PPC_GOT_TLSGD16", /* 79 */
|
|
"R_PPC_GOT_TLSGD16_LO", /* 80 */
|
|
"R_PPC_GOT_TLSGD16_HI", /* 81 */
|
|
"R_PPC_GOT_TLSGD16_HA", /* 82 */
|
|
"R_PPC_GOT_TLSLD16", /* 83 */
|
|
"R_PPC_GOT_TLSLD16_LO", /* 84 */
|
|
"R_PPC_GOT_TLSLD16_HI", /* 85 */
|
|
"R_PPC_GOT_TLSLD16_HA", /* 86 */
|
|
"R_PPC_GOT_TPREL16_DS", /* 87 */
|
|
"R_PPC_GOT_TPREL16_LO", /* 88 */
|
|
"R_PPC_GOT_TPREL16_HI", /* 89 */
|
|
"R_PPC_GOT_TPREL16_HA", /* 90 */
|
|
"R_PPC_GOT_DTPREL16", /* 91 */
|
|
"R_PPC_GOT_DTPREL16_LO", /* 92 */
|
|
"R_PPC_GOT_DTPREL16_HI", /* 93 */
|
|
"R_PPC_GOT_DTPREL16_HA", /* 94 */
|
|
};
|
|
#endif /* DWARF_RELOC_PPC_H */
|