Subversion Repositories Kolibri OS

Rev

Rev 5191 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* HPPA ELF support for BFD.
  2.    Copyright (C) 1993-2015 Free Software Foundation, Inc.
  3.  
  4.    This file is part of BFD, the Binary File Descriptor library.
  5.  
  6.    This program is free software; you can redistribute it and/or modify
  7.    it under the terms of the GNU General Public License as published by
  8.    the Free Software Foundation; either version 3 of the License, or
  9.    (at your option) any later version.
  10.  
  11.    This program is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.    GNU General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU General Public License
  17.    along with this program; if not, write to the Free Software
  18.    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  19.    MA 02110-1301, USA.  */
  20.  
  21. /* This file holds definitions specific to the HPPA ELF ABI.  Note
  22.    that most of this is not actually implemented by BFD.  */
  23.  
  24. #ifndef _ELF_HPPA_H
  25. #define _ELF_HPPA_H
  26.  
  27. /* Processor specific flags for the ELF header e_flags field.  */
  28.  
  29. /* Trap null address dereferences.  */
  30. #define EF_PARISC_TRAPNIL       0x00010000
  31.  
  32. /* .PARISC.archext section is present.  */
  33. #define EF_PARISC_EXT           0x00020000
  34.  
  35. /* Program expects little-endian mode.  */
  36. #define EF_PARISC_LSB           0x00040000
  37.  
  38. /* Program expects wide mode.  */
  39. #define EF_PARISC_WIDE          0x00080000
  40.  
  41. /* Do not allow kernel-assisted branch prediction.  */
  42. #define EF_PARISC_NO_KABP       0x00100000
  43.  
  44. /* Allow lazy swap for dynamically allocated program segments.  */
  45. #define EF_PARISC_LAZYSWAP      0x00400000
  46.  
  47. /* Architecture version */
  48. #define EF_PARISC_ARCH          0x0000ffff
  49.  
  50. #define EFA_PARISC_1_0                  0x020b
  51. #define EFA_PARISC_1_1                  0x0210
  52. #define EFA_PARISC_2_0                  0x0214
  53.  
  54. /* Special section indices.  */
  55. /* A symbol that has been declared as a tentative definition in an ANSI C
  56.    compilation.  */
  57. #define SHN_PARISC_ANSI_COMMON  SHN_LORESERVE
  58.  
  59. /* A symbol that has been declared as a common block using the
  60.    huge memory model.  */
  61. #define SHN_PARISC_HUGE_COMMON  (SHN_LORESERVE + 1)
  62.  
  63. /* Processor specific section types.  */
  64.  
  65. /* Section contains product specific extension bits.  */
  66. #define SHT_PARISC_EXT          0x70000000
  67.  
  68. /* Section contains unwind table entries.  */
  69. #define SHT_PARISC_UNWIND       0x70000001
  70.  
  71. /* Section contains debug information for optimized code.  */
  72. #define SHT_PARISC_DOC          0x70000002
  73.  
  74. /* Section contains code annotations.  */
  75. #define SHT_PARISC_ANNOT        0x70000003
  76.  
  77. /* DLKM special section.  */
  78. #define SHT_PARISC_DLKM         0x70000004
  79.  
  80. /* These are strictly for compatibility with the older elf32-hppa
  81.    implementation.  Hopefully we can eliminate them in the future.  */
  82. /* Optional section holding argument location/relocation info.  */
  83. #define SHT_PARISC_SYMEXTN    SHT_LOPROC + 8
  84.  
  85. /* Option section for linker stubs.  */
  86. #define SHT_PARISC_STUBS      SHT_LOPROC + 9
  87.  
  88. /* Processor specific section flags.  */
  89.  
  90. /* Section contains code compiled for static branch prediction.  */
  91. #define SHF_PARISC_SBP          0x80000000
  92.  
  93. /* Section should be allocated from from GP.  */
  94. #define SHF_PARISC_HUGE         0x40000000
  95.  
  96. /* Section should go near GP.  */
  97. #define SHF_PARISC_SHORT        0x20000000
  98.  
  99. /* Section is weak ordered.  */
  100. #define SHF_PARISC_WEAKORDER    0x10000000
  101.  
  102. /* Identifies the entry point of a millicode routine.  */
  103. #define STT_PARISC_MILLI        13
  104.  
  105. /* ELF/HPPA relocation types */
  106.  
  107. /* Note: PA-ELF is defined to use only RELA relocations.  */
  108. #include "elf/reloc-macros.h"
  109.  
  110. START_RELOC_NUMBERS (elf_hppa_reloc_type)
  111. RELOC_NUMBER (R_PARISC_NONE,             0) /* No reloc */
  112.  
  113. /*              Data / Inst. Format        Relocation Expression          */
  114.  
  115. RELOC_NUMBER (R_PARISC_DIR32,            1)
  116. /*              32-bit word                symbol + addend                */
  117.  
  118. RELOC_NUMBER (R_PARISC_DIR21L,           2)
  119. /*              long immediate (7)         LR(symbol, addend)             */
  120.  
  121. RELOC_NUMBER (R_PARISC_DIR17R,           3)
  122. /*              branch external (19)       RR(symbol, addend)             */
  123.  
  124. RELOC_NUMBER (R_PARISC_DIR17F,           4)
  125. /*              branch external (19)       symbol + addend                */
  126.  
  127. RELOC_NUMBER (R_PARISC_DIR14R,           6)
  128. /*              load/store (1)             RR(symbol, addend)             */
  129.  
  130. RELOC_NUMBER (R_PARISC_DIR14F,           7)
  131. /*              load/store (1)             symbol, addend                 */
  132.  
  133. /* PC-relative relocation types
  134.    Typically used for calls.
  135.    Note PCREL17C and PCREL17F differ only in overflow handling.
  136.    PCREL17C never reports a relocation error.
  137.  
  138.    When supporting argument relocations, function calls must be
  139.    accompanied by parameter relocation information.  This information is
  140.    carried in the ten high-order bits of the addend field.  The remaining
  141.    22 bits of of the addend field are sign-extended to form the Addend.
  142.  
  143.    Note the code to build argument relocations depends on the
  144.    addend being zero.  A consequence of this limitation is GAS
  145.    can not perform relocation reductions for function symbols.  */
  146.  
  147. RELOC_NUMBER (R_PARISC_PCREL12F,         8)
  148. /*              op & branch (17)           symbol - PC - 8 + addend       */
  149.  
  150. RELOC_NUMBER (R_PARISC_PCREL32,          9)
  151. /*              32-bit word                symbol - PC - 8 + addend       */
  152.  
  153. RELOC_NUMBER (R_PARISC_PCREL21L,        10)
  154. /*              long immediate (7)         L(symbol - PC - 8 + addend)    */
  155.  
  156. RELOC_NUMBER (R_PARISC_PCREL17R,        11)
  157. /*              branch external (19)       R(symbol - PC - 8 + addend)    */
  158.  
  159. RELOC_NUMBER (R_PARISC_PCREL17F,        12)
  160. /*              branch (20)                symbol - PC - 8 + addend       */
  161.  
  162. RELOC_NUMBER (R_PARISC_PCREL17C,        13)
  163. /*              branch (20)                symbol - PC - 8 + addend       */
  164.  
  165. RELOC_NUMBER (R_PARISC_PCREL14R,        14)
  166. /*              load/store (1)             R(symbol - PC - 8 + addend)    */
  167.  
  168. RELOC_NUMBER (R_PARISC_PCREL14F,        15)
  169. /*              load/store (1)             symbol - PC - 8 + addend       */
  170.  
  171.  
  172. /* DP-relative relocation types.  */
  173. RELOC_NUMBER (R_PARISC_DPREL21L,        18)
  174. /*              long immediate (7)         LR(symbol - GP, addend)        */
  175.  
  176. RELOC_NUMBER (R_PARISC_DPREL14WR,       19)
  177. /*              load/store mod. comp. (2)  RR(symbol - GP, addend)        */
  178.  
  179. RELOC_NUMBER (R_PARISC_DPREL14DR,       20)
  180. /*              load/store doubleword (3)  RR(symbol - GP, addend)        */
  181.  
  182. RELOC_NUMBER (R_PARISC_DPREL14R,        22)
  183. /*              load/store (1)             RR(symbol - GP, addend)        */
  184.  
  185. RELOC_NUMBER (R_PARISC_DPREL14F,        23)
  186. /*              load/store (1)             symbol - GP + addend           */
  187.  
  188.  
  189. /* Data linkage table (DLT) relocation types
  190.  
  191.    SOM DLT_REL fixup requests are used to for static data references
  192.    from position-independent code within shared libraries.  They are
  193.    similar to the GOT relocation types in some SVR4 implementations.  */
  194.  
  195. RELOC_NUMBER (R_PARISC_DLTREL21L,       26)
  196. /*              long immediate (7)         LR(symbol - GP, addend)        */
  197.  
  198. RELOC_NUMBER (R_PARISC_DLTREL14R,       30)
  199. /*              load/store (1)             RR(symbol - GP, addend)        */
  200.  
  201. RELOC_NUMBER (R_PARISC_DLTREL14F,       31)
  202. /*              load/store (1)             symbol - GP + addend           */
  203.  
  204.  
  205. /* DLT indirect relocation types  */
  206. RELOC_NUMBER (R_PARISC_DLTIND21L,       34)
  207. /*              long immediate (7)         L(ltoff(symbol + addend))      */
  208.  
  209. RELOC_NUMBER (R_PARISC_DLTIND14R,       38)
  210. /*              load/store (1)             R(ltoff(symbol + addend))      */
  211.  
  212. RELOC_NUMBER (R_PARISC_DLTIND14F,       39)
  213. /*              load/store (1)             ltoff(symbol + addend)         */
  214.  
  215.  
  216. /* Base relative relocation types.  Ugh.  These imply lots of state */
  217. RELOC_NUMBER (R_PARISC_SETBASE,         40)
  218. /*              none                       no reloc; base := sym          */
  219.  
  220. RELOC_NUMBER (R_PARISC_SECREL32,        41)
  221. /*              32-bit word                symbol - SECT + addend         */
  222.  
  223. RELOC_NUMBER (R_PARISC_BASEREL21L,      42)
  224. /*              long immediate (7)         LR(symbol - base, addend)      */
  225.  
  226. RELOC_NUMBER (R_PARISC_BASEREL17R,      43)
  227. /*              branch external (19)       RR(symbol - base, addend)      */
  228.  
  229. RELOC_NUMBER (R_PARISC_BASEREL17F,      44)
  230. /*              branch external (19)       symbol - base + addend         */
  231.  
  232. RELOC_NUMBER (R_PARISC_BASEREL14R,      46)
  233. /*              load/store (1)             RR(symbol - base, addend)      */
  234.  
  235. RELOC_NUMBER (R_PARISC_BASEREL14F,      47)
  236. /*              load/store (1)             symbol - base, addend          */
  237.  
  238.  
  239. /* Segment relative relocation types.  */
  240. RELOC_NUMBER (R_PARISC_SEGBASE,         48)
  241. /*              none                       no relocation; SB := sym       */
  242.  
  243. RELOC_NUMBER (R_PARISC_SEGREL32,        49)
  244. /*              32-bit word                symbol - SB + addend           */
  245.  
  246.  
  247. /* Offsets from the PLT.  */  
  248. RELOC_NUMBER (R_PARISC_PLTOFF21L,       50)
  249. /*              long immediate (7)         LR(pltoff(symbol), addend)     */
  250.  
  251. RELOC_NUMBER (R_PARISC_PLTOFF14R,       54)
  252. /*              load/store (1)             RR(pltoff(symbol), addend)     */
  253.  
  254. RELOC_NUMBER (R_PARISC_PLTOFF14F,       55)
  255. /*              load/store (1)             pltoff(symbol) + addend        */
  256.  
  257.  
  258. RELOC_NUMBER (R_PARISC_LTOFF_FPTR32,    57)
  259. /*              32-bit word                ltoff(fptr(symbol+addend))     */
  260.  
  261. RELOC_NUMBER (R_PARISC_LTOFF_FPTR21L,   58)
  262. /*              long immediate (7)         L(ltoff(fptr(symbol+addend)))  */
  263.  
  264. RELOC_NUMBER (R_PARISC_LTOFF_FPTR14R,   62)
  265. /*              load/store (1)             R(ltoff(fptr(symbol+addend)))  */
  266.  
  267.  
  268. RELOC_NUMBER (R_PARISC_FPTR64,          64)
  269. /*              64-bit doubleword          fptr(symbol+addend)            */
  270.  
  271.  
  272. /* Plabel relocation types.  */  
  273. RELOC_NUMBER (R_PARISC_PLABEL32,        65)
  274. /*              32-bit word                fptr(symbol)                   */
  275.  
  276. RELOC_NUMBER (R_PARISC_PLABEL21L,       66)
  277. /*              long immediate (7)         L(fptr(symbol))                */
  278.  
  279. RELOC_NUMBER (R_PARISC_PLABEL14R,       70)
  280. /*              load/store (1)             R(fptr(symbol))                */
  281.  
  282.  
  283. /* PCREL relocations.  */  
  284. RELOC_NUMBER (R_PARISC_PCREL64,         72)
  285. /*              64-bit doubleword          symbol - PC - 8 + addend       */
  286.  
  287. RELOC_NUMBER (R_PARISC_PCREL22C,        73)
  288. /*              branch & link (21)         symbol - PC - 8 + addend       */
  289.  
  290. RELOC_NUMBER (R_PARISC_PCREL22F,        74)
  291. /*              branch & link (21)         symbol - PC - 8 + addend       */
  292.  
  293. RELOC_NUMBER (R_PARISC_PCREL14WR,       75)
  294. /*              load/store mod. comp. (2)  R(symbol - PC - 8 + addend)    */
  295.  
  296. RELOC_NUMBER (R_PARISC_PCREL14DR,       76)
  297. /*              load/store doubleword (3)  R(symbol - PC - 8 + addend)    */
  298.  
  299. RELOC_NUMBER (R_PARISC_PCREL16F,        77)
  300. /*              load/store (1)             symbol - PC - 8 + addend       */
  301.  
  302. RELOC_NUMBER (R_PARISC_PCREL16WF,       78)
  303. /*              load/store mod. comp. (2)  symbol - PC - 8 + addend       */
  304.  
  305. RELOC_NUMBER (R_PARISC_PCREL16DF,       79)
  306. /*              load/store doubleword (3)  symbol - PC - 8 + addend       */
  307.  
  308.  
  309. RELOC_NUMBER (R_PARISC_DIR64,           80)
  310. /*              64-bit doubleword          symbol + addend                */
  311.  
  312. RELOC_NUMBER (R_PARISC_DIR14WR,         83)
  313. /*              load/store mod. comp. (2)  RR(symbol, addend)             */
  314.  
  315. RELOC_NUMBER (R_PARISC_DIR14DR,         84)
  316. /*              load/store doubleword (3)  RR(symbol, addend)             */
  317.  
  318. RELOC_NUMBER (R_PARISC_DIR16F,          85)
  319. /*              load/store (1)             symbol + addend                */
  320.  
  321. RELOC_NUMBER (R_PARISC_DIR16WF,         86)
  322. /*              load/store mod. comp. (2)  symbol + addend                */
  323.  
  324. RELOC_NUMBER (R_PARISC_DIR16DF,         87)
  325. /*              load/store doubleword (3)  symbol + addend                */
  326.  
  327. RELOC_NUMBER (R_PARISC_GPREL64,         88)
  328. /*              64-bit doubleword          symbol - GP + addend           */
  329.  
  330. RELOC_NUMBER (R_PARISC_DLTREL14WR,      91)
  331. /*              load/store mod. comp. (2)  RR(symbol - GP, addend)        */
  332.  
  333. RELOC_NUMBER (R_PARISC_DLTREL14DR,      92)
  334. /*              load/store doubleword (3)  RR(symbol - GP, addend)        */
  335.  
  336. RELOC_NUMBER (R_PARISC_GPREL16F,        93)
  337. /*              load/store (1)             symbol - GP + addend           */
  338.  
  339. RELOC_NUMBER (R_PARISC_GPREL16WF,       94)
  340. /*              load/store mod. comp. (2)  symbol - GP + addend           */
  341.  
  342. RELOC_NUMBER (R_PARISC_GPREL16DF,       95)
  343. /*              load/store doubleword (3)  symbol - GP + addend           */
  344.  
  345.  
  346. RELOC_NUMBER (R_PARISC_LTOFF64,         96)
  347. /*              64-bit doubleword          ltoff(symbol + addend)         */
  348.  
  349. RELOC_NUMBER (R_PARISC_DLTIND14WR,      99)
  350. /*              load/store mod. comp. (2)  R(ltoff(symbol + addend))      */
  351.  
  352. RELOC_NUMBER (R_PARISC_DLTIND14DR,     100)
  353. /*              load/store doubleword (3)  R(ltoff(symbol + addend))      */
  354.  
  355. RELOC_NUMBER (R_PARISC_LTOFF16F,       101)
  356. /*              load/store (1)             ltoff(symbol + addend)         */
  357.  
  358. RELOC_NUMBER (R_PARISC_LTOFF16WF,      102)
  359. /*              load/store mod. comp. (2)  ltoff(symbol + addend)         */
  360.  
  361. RELOC_NUMBER (R_PARISC_LTOFF16DF,      103)
  362. /*              load/store doubleword (3)  ltoff(symbol + addend)         */
  363.  
  364.  
  365. RELOC_NUMBER (R_PARISC_SECREL64,       104)
  366. /*              64-bit doubleword          symbol - SECT + addend         */
  367.  
  368. RELOC_NUMBER (R_PARISC_BASEREL14WR,    107)
  369. /*              load/store mod. comp. (2)  RR(symbol - base, addend)      */
  370.  
  371. RELOC_NUMBER (R_PARISC_BASEREL14DR,    108)
  372. /*              load/store doubleword (3)  RR(symbol - base, addend)      */
  373.  
  374.  
  375. RELOC_NUMBER (R_PARISC_SEGREL64,       112)
  376. /*              64-bit doubleword          symbol - SB + addend           */
  377.  
  378. RELOC_NUMBER (R_PARISC_PLTOFF14WR,     115)
  379. /*              load/store mod. comp. (2)  RR(pltoff(symbol), addend)     */
  380.  
  381. RELOC_NUMBER (R_PARISC_PLTOFF14DR,     116)    
  382. /*              load/store doubleword (3)  RR(pltoff(symbol), addend)     */
  383.  
  384. RELOC_NUMBER (R_PARISC_PLTOFF16F,      117)    
  385. /*              load/store (1)             pltoff(symbol) + addend        */
  386.  
  387. RELOC_NUMBER (R_PARISC_PLTOFF16WF,     118)    
  388. /*              load/store mod. comp. (2)  pltoff(symbol) + addend        */
  389.  
  390. RELOC_NUMBER (R_PARISC_PLTOFF16DF,     119)    
  391. /*              load/store doubleword (3)  pltoff(symbol) + addend        */
  392.  
  393.  
  394. RELOC_NUMBER (R_PARISC_LTOFF_FPTR64,   120)
  395. /*              64-bit doubleword          ltoff(fptr(symbol+addend))     */
  396.  
  397. RELOC_NUMBER (R_PARISC_LTOFF_FPTR14WR, 123)
  398. /*              load/store mod. comp. (2)  R(ltoff(fptr(symbol+addend)))  */
  399.  
  400. RELOC_NUMBER (R_PARISC_LTOFF_FPTR14DR, 124)
  401. /*              load/store doubleword (3)  R(ltoff(fptr(symbol+addend)))  */
  402.  
  403. RELOC_NUMBER (R_PARISC_LTOFF_FPTR16F,  125)
  404. /*              load/store (1)             ltoff(fptr(symbol+addend))     */
  405.  
  406. RELOC_NUMBER (R_PARISC_LTOFF_FPTR16WF, 126)
  407. /*              load/store mod. comp. (2)  ltoff(fptr(symbol+addend))     */
  408.  
  409. RELOC_NUMBER (R_PARISC_LTOFF_FPTR16DF, 127)
  410. /*              load/store doubleword (3)  ltoff(fptr(symbol+addend))     */
  411.  
  412.  
  413. RELOC_NUMBER (R_PARISC_COPY,           128)
  414. /*              data                       Dynamic relocations only       */
  415.  
  416. RELOC_NUMBER (R_PARISC_IPLT,           129)
  417. /*              plt                                                       */
  418.  
  419. RELOC_NUMBER (R_PARISC_EPLT,           130)
  420. /*              plt                                                       */
  421.  
  422.  
  423. RELOC_NUMBER (R_PARISC_TPREL32,        153)
  424. /*              32-bit word                symbol - TP + addend           */
  425.  
  426. RELOC_NUMBER (R_PARISC_TPREL21L,       154)
  427. /*              long immediate (7)         LR(symbol - TP, addend)        */
  428.  
  429. RELOC_NUMBER (R_PARISC_TPREL14R,       158)
  430. /*              load/store (1)             RR(symbol - TP, addend)        */
  431.  
  432.  
  433. RELOC_NUMBER (R_PARISC_LTOFF_TP21L,    162)
  434. /*              long immediate (7)         L(ltoff(symbol - TP + addend)) */
  435.  
  436. RELOC_NUMBER (R_PARISC_LTOFF_TP14R,    166)
  437. /*              load/store (1)             R(ltoff(symbol - TP + addend)) */
  438.  
  439. RELOC_NUMBER (R_PARISC_LTOFF_TP14F,    167)
  440. /*              load/store (1)             ltoff(symbol - TP + addend)    */
  441.  
  442.  
  443. RELOC_NUMBER (R_PARISC_TPREL64,        216)
  444. /*              64-bit word                symbol - TP + addend           */
  445.  
  446. RELOC_NUMBER (R_PARISC_TPREL14WR,      219)      
  447. /*              load/store mod. comp. (2)  RR(symbol - TP, addend)        */
  448.  
  449. RELOC_NUMBER (R_PARISC_TPREL14DR,      220)      
  450. /*              load/store doubleword (3)  RR(symbol - TP, addend)        */
  451.  
  452. RELOC_NUMBER (R_PARISC_TPREL16F,       221)      
  453. /*              load/store (1)             symbol - TP + addend           */
  454.  
  455. RELOC_NUMBER (R_PARISC_TPREL16WF,      222)      
  456. /*              load/store mod. comp. (2)  symbol - TP + addend           */
  457.  
  458. RELOC_NUMBER (R_PARISC_TPREL16DF,      223)      
  459. /*              load/store doubleword (3)  symbol - TP + addend           */
  460.  
  461.  
  462. RELOC_NUMBER (R_PARISC_LTOFF_TP64,     224)
  463. /*              64-bit doubleword          ltoff(symbol - TP + addend)    */
  464.  
  465. RELOC_NUMBER (R_PARISC_LTOFF_TP14WR,   227)
  466. /*              load/store mod. comp. (2)  R(ltoff(symbol - TP + addend)) */
  467.  
  468. RELOC_NUMBER (R_PARISC_LTOFF_TP14DR,   228)
  469. /*              load/store doubleword (3)  R(ltoff(symbol - TP + addend)) */
  470.  
  471. RELOC_NUMBER (R_PARISC_LTOFF_TP16F,    229)
  472. /*              load/store (1)             ltoff(symbol - TP + addend)    */
  473.  
  474. RELOC_NUMBER (R_PARISC_LTOFF_TP16WF,   230)
  475. /*              load/store mod. comp. (2)  ltoff(symbol - TP + addend)    */
  476.  
  477. RELOC_NUMBER (R_PARISC_LTOFF_TP16DF,   231)
  478. /*              load/store doubleword (3)  ltoff(symbol - TP + addend)    */
  479.  
  480. RELOC_NUMBER (R_PARISC_GNU_VTENTRY,    232)
  481. RELOC_NUMBER (R_PARISC_GNU_VTINHERIT,  233)
  482.  
  483. RELOC_NUMBER (R_PARISC_TLS_GD21L,      234)
  484. RELOC_NUMBER (R_PARISC_TLS_GD14R,      235)
  485. RELOC_NUMBER (R_PARISC_TLS_GDCALL,     236)
  486. RELOC_NUMBER (R_PARISC_TLS_LDM21L,     237)
  487. RELOC_NUMBER (R_PARISC_TLS_LDM14R,     238)
  488. RELOC_NUMBER (R_PARISC_TLS_LDMCALL,    239)
  489. RELOC_NUMBER (R_PARISC_TLS_LDO21L,     240)
  490. RELOC_NUMBER (R_PARISC_TLS_LDO14R,     241)
  491. RELOC_NUMBER (R_PARISC_TLS_DTPMOD32,   242)
  492. RELOC_NUMBER (R_PARISC_TLS_DTPMOD64,   243)
  493. RELOC_NUMBER (R_PARISC_TLS_DTPOFF32,   244)
  494. RELOC_NUMBER (R_PARISC_TLS_DTPOFF64,   245)
  495.  
  496. END_RELOC_NUMBERS (R_PARISC_UNIMPLEMENTED)
  497.  
  498. #define R_PARISC_TLS_LE21L     R_PARISC_TPREL21L
  499. #define R_PARISC_TLS_LE14R     R_PARISC_TPREL14R
  500. #define R_PARISC_TLS_IE21L     R_PARISC_LTOFF_TP21L
  501. #define R_PARISC_TLS_IE14R     R_PARISC_LTOFF_TP14R
  502. #define R_PARISC_TLS_TPREL32   R_PARISC_TPREL32
  503. #define R_PARISC_TLS_TPREL64   R_PARISC_TPREL64
  504.  
  505. #ifndef RELOC_MACROS_GEN_FUNC
  506. typedef enum elf_hppa_reloc_type elf_hppa_reloc_type;
  507. #endif
  508.  
  509. #define PT_PARISC_ARCHEXT       0x70000000
  510. #define PT_PARISC_UNWIND        0x70000001
  511. #define PT_PARISC_WEAKORDER     0x70000002
  512.  
  513. /* Flag bits in sh_flags of ElfXX_Shdr.  */
  514. #define SHF_HP_TLS              0x01000000
  515. #define SHF_HP_NEAR_SHARED      0x02000000
  516. #define SHF_HP_FAR_SHARED       0x04000000
  517. #define SHF_HP_COMDAT           0x08000000
  518. #define SHF_HP_CONST            0x00800000
  519.  
  520. /* Reserved section header indices.  */
  521. #define SHN_TLS_COMMON          (SHN_LOOS + 0x0)
  522. #define SHN_NS_COMMON           (SHN_LOOS + 0x1)
  523. #define SHN_FS_COMMON           (SHN_LOOS + 0x2)
  524. #define SHN_NS_UNDEF            (SHN_LOOS + 0x3)
  525. #define SHN_FS_UNDEF            (SHN_LOOS + 0x4)
  526. #define SHN_HP_EXTERN           (SHN_LOOS + 0x5)
  527. #define SHN_HP_EXTHINT          (SHN_LOOS + 0x6)
  528. #define SHN_HP_UNDEF_BIND_IMM   (SHN_LOOS + 0x7)
  529.  
  530. /* Values of sh_type in ElfXX_Shdr.  */
  531. #define SHT_HP_OVLBITS  (SHT_LOOS + 0x0)
  532. #define SHT_HP_DLKM     (SHT_LOOS + 0x1)
  533. #define SHT_HP_COMDAT   (SHT_LOOS + 0x2)
  534. #define SHT_HP_OBJDICT  (SHT_LOOS + 0x3)
  535. #define SHT_HP_ANNOT    (SHT_LOOS + 0x4)
  536.  
  537. /* Flag bits in p_flags of ElfXX_Phdr.  */
  538. #define PF_HP_CODE              0x00040000
  539. #define PF_HP_MODIFY            0x00080000
  540. #define PF_HP_PAGE_SIZE         0x00100000
  541. #define PF_HP_FAR_SHARED        0x00200000
  542. #define PF_HP_NEAR_SHARED       0x00400000
  543. #define PF_HP_LAZYSWAP          0x00800000
  544. #define PF_HP_CODE_DEPR         0x01000000
  545. #define PF_HP_MODIFY_DEPR       0x02000000
  546. #define PF_HP_LAZYSWAP_DEPR     0x04000000
  547. #define PF_PARISC_SBP           0x08000000
  548. #define PF_HP_SBP               0x08000000
  549.  
  550. /* Processor specific dynamic array tags.  */
  551.  
  552. /* Arggh.  HP's tools define these symbols based on the
  553.    old value of DT_LOOS.  So we must do the same to be
  554.    compatible.  */
  555. #define DT_HP_LOAD_MAP          (OLD_DT_LOOS + 0x0)
  556. #define DT_HP_DLD_FLAGS         (OLD_DT_LOOS + 0x1)
  557. #define DT_HP_DLD_HOOK          (OLD_DT_LOOS + 0x2)
  558. #define DT_HP_UX10_INIT         (OLD_DT_LOOS + 0x3)
  559. #define DT_HP_UX10_INITSZ       (OLD_DT_LOOS + 0x4)
  560. #define DT_HP_PREINIT           (OLD_DT_LOOS + 0x5)
  561. #define DT_HP_PREINITSZ         (OLD_DT_LOOS + 0x6)
  562. #define DT_HP_NEEDED            (OLD_DT_LOOS + 0x7)
  563. #define DT_HP_TIME_STAMP        (OLD_DT_LOOS + 0x8)
  564. #define DT_HP_CHECKSUM          (OLD_DT_LOOS + 0x9)
  565. #define DT_HP_GST_SIZE          (OLD_DT_LOOS + 0xa)
  566. #define DT_HP_GST_VERSION       (OLD_DT_LOOS + 0xb)
  567. #define DT_HP_GST_HASHVAL       (OLD_DT_LOOS + 0xc)
  568. #define DT_HP_EPLTREL           (OLD_DT_LOOS + 0xd)
  569. #define DT_HP_EPLTRELSZ         (OLD_DT_LOOS + 0xe)
  570. #define DT_HP_FILTERED          (OLD_DT_LOOS + 0xf)
  571. #define DT_HP_FILTER_TLS        (OLD_DT_LOOS + 0x10)
  572. #define DT_HP_COMPAT_FILTERED   (OLD_DT_LOOS + 0x11)
  573. #define DT_HP_LAZYLOAD          (OLD_DT_LOOS + 0x12)
  574. #define DT_HP_BIND_NOW_COUNT    (OLD_DT_LOOS + 0x13)
  575. #define DT_PLT                  (OLD_DT_LOOS + 0x14)
  576. #define DT_PLT_SIZE             (OLD_DT_LOOS + 0x15)
  577. #define DT_DLT                  (OLD_DT_LOOS + 0x16)
  578. #define DT_DLT_SIZE             (OLD_DT_LOOS + 0x17)
  579.  
  580. /* Values for DT_HP_DLD_FLAGS.  */
  581. #define DT_HP_DEBUG_PRIVATE             0x00001 /* Map text private */
  582. #define DT_HP_DEBUG_CALLBACK            0x00002 /* Callback */
  583. #define DT_HP_DEBUG_CALLBACK_BOR        0x00004 /* BOR callback */
  584. #define DT_HP_NO_ENVVAR                 0x00008 /* No env var */
  585. #define DT_HP_BIND_NOW                  0x00010 /* Bind now */
  586. #define DT_HP_BIND_NONFATAL             0x00020 /* Bind non-fatal */
  587. #define DT_HP_BIND_VERBOSE              0x00040 /* Bind verbose */
  588. #define DT_HP_BIND_RESTRICTED           0x00080 /* Bind restricted */
  589. #define DT_HP_BIND_SYMBOLIC             0x00100 /* Bind symbolic */
  590. #define DT_HP_RPATH_FIRST               0x00200 /* RPATH first */
  591. #define DT_HP_BIND_DEPTH_FIRST          0x00400 /* Bind depth-first */
  592. #define DT_HP_GST                       0x00800 /* Dld global sym table */
  593. #define DT_HP_SHLIB_FIXED               0x01000 /* shared vtable support */
  594. #define DT_HP_MERGE_SHLIB_SEG           0x02000 /* merge shlib data segs */
  595. #define DT_HP_NODELETE                  0x04000 /* never unload */
  596. #define DT_HP_GROUP                     0x08000 /* bind only within group */
  597. #define DT_HP_PROTECT_LINKAGE_TABLE     0x10000 /* protected linkage table */
  598.  
  599. /* Program header extensions.  */
  600. #define PT_HP_TLS               (PT_LOOS + 0x0)
  601. #define PT_HP_CORE_NONE         (PT_LOOS + 0x1)
  602. #define PT_HP_CORE_VERSION      (PT_LOOS + 0x2)
  603. #define PT_HP_CORE_KERNEL       (PT_LOOS + 0x3)
  604. #define PT_HP_CORE_COMM         (PT_LOOS + 0x4)
  605. #define PT_HP_CORE_PROC         (PT_LOOS + 0x5)
  606. #define PT_HP_CORE_LOADABLE     (PT_LOOS + 0x6)
  607. #define PT_HP_CORE_STACK        (PT_LOOS + 0x7)
  608. #define PT_HP_CORE_SHM          (PT_LOOS + 0x8)
  609. #define PT_HP_CORE_MMF          (PT_LOOS + 0x9)
  610. #define PT_HP_PARALLEL          (PT_LOOS + 0x10)
  611. #define PT_HP_FASTBIND          (PT_LOOS + 0x11)
  612. #define PT_HP_OPT_ANNOT         (PT_LOOS + 0x12)
  613. #define PT_HP_HSL_ANNOT         (PT_LOOS + 0x13)
  614. #define PT_HP_STACK             (PT_LOOS + 0x14)
  615. #define PT_HP_CORE_UTSNAME      (PT_LOOS + 0x15)
  616.  
  617. /* Binding information.  */
  618. #define STB_HP_ALIAS            (STB_LOOS + 0x0)
  619.  
  620. /* Additional symbol types.  */
  621. #define STT_HP_OPAQUE           (STT_LOOS + 0x1)
  622. #define STT_HP_STUB             (STT_LOOS + 0x2)
  623.  
  624. /* Note types.  */
  625. #define NT_HP_COMPILER          1
  626. #define NT_HP_COPYRIGHT         2
  627. #define NT_HP_VERSION           3
  628. #define NT_HP_SRCFILE_INFO      4
  629. #define NT_HP_LINKER            5
  630. #define NT_HP_INSTRUMENTED      6
  631. #define NT_HP_UX_OPTIONS        7
  632.  
  633. #endif /* _ELF_HPPA_H */
  634.