elf.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /*
  2. * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
  3. * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
  4. * Copyright (C) 2012 Regents of the University of California
  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 2 of the License, or
  9. * (at your option) any later version.
  10. */
  11. #ifndef _UAPI_ASM_ELF_H
  12. #define _UAPI_ASM_ELF_H
  13. #include <asm/ptrace.h>
  14. /* ELF register definitions */
  15. typedef unsigned long elf_greg_t;
  16. typedef struct user_regs_struct elf_gregset_t;
  17. #define ELF_NGREG (sizeof(elf_gregset_t) / sizeof(elf_greg_t))
  18. typedef union __riscv_fp_state elf_fpregset_t;
  19. #if __riscv_xlen == 64
  20. #define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
  21. #define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
  22. #else
  23. #define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
  24. #define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
  25. #endif
  26. /*
  27. * RISC-V relocation types
  28. */
  29. /* Relocation types used by the dynamic linker */
  30. #define R_RISCV_NONE 0
  31. #define R_RISCV_32 1
  32. #define R_RISCV_64 2
  33. #define R_RISCV_RELATIVE 3
  34. #define R_RISCV_COPY 4
  35. #define R_RISCV_JUMP_SLOT 5
  36. #define R_RISCV_TLS_DTPMOD32 6
  37. #define R_RISCV_TLS_DTPMOD64 7
  38. #define R_RISCV_TLS_DTPREL32 8
  39. #define R_RISCV_TLS_DTPREL64 9
  40. #define R_RISCV_TLS_TPREL32 10
  41. #define R_RISCV_TLS_TPREL64 11
  42. /* Relocation types not used by the dynamic linker */
  43. #define R_RISCV_BRANCH 16
  44. #define R_RISCV_JAL 17
  45. #define R_RISCV_CALL 18
  46. #define R_RISCV_CALL_PLT 19
  47. #define R_RISCV_GOT_HI20 20
  48. #define R_RISCV_TLS_GOT_HI20 21
  49. #define R_RISCV_TLS_GD_HI20 22
  50. #define R_RISCV_PCREL_HI20 23
  51. #define R_RISCV_PCREL_LO12_I 24
  52. #define R_RISCV_PCREL_LO12_S 25
  53. #define R_RISCV_HI20 26
  54. #define R_RISCV_LO12_I 27
  55. #define R_RISCV_LO12_S 28
  56. #define R_RISCV_TPREL_HI20 29
  57. #define R_RISCV_TPREL_LO12_I 30
  58. #define R_RISCV_TPREL_LO12_S 31
  59. #define R_RISCV_TPREL_ADD 32
  60. #define R_RISCV_ADD8 33
  61. #define R_RISCV_ADD16 34
  62. #define R_RISCV_ADD32 35
  63. #define R_RISCV_ADD64 36
  64. #define R_RISCV_SUB8 37
  65. #define R_RISCV_SUB16 38
  66. #define R_RISCV_SUB32 39
  67. #define R_RISCV_SUB64 40
  68. #define R_RISCV_GNU_VTINHERIT 41
  69. #define R_RISCV_GNU_VTENTRY 42
  70. #define R_RISCV_ALIGN 43
  71. #define R_RISCV_RVC_BRANCH 44
  72. #define R_RISCV_RVC_JUMP 45
  73. #define R_RISCV_LUI 46
  74. #define R_RISCV_GPREL_I 47
  75. #define R_RISCV_GPREL_S 48
  76. #define R_RISCV_TPREL_I 49
  77. #define R_RISCV_TPREL_S 50
  78. #define R_RISCV_RELAX 51
  79. #define R_RISCV_SUB6 52
  80. #define R_RISCV_SET6 53
  81. #define R_RISCV_SET8 54
  82. #define R_RISCV_SET16 55
  83. #define R_RISCV_SET32 56
  84. #define R_RISCV_32_PCREL 57
  85. #endif /* _UAPI_ASM_ELF_H */