elf.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /*
  2. * Copyright (C) 2003 Matjaz Breskvar <[email protected]>
  3. * Copyright (C) 2010-2011 Jonas Bonn <[email protected]>
  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_RISCV_ELF_H
  12. #define _UAPI_ASM_RISCV_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. /* We don't support f without d, or q. */
  19. typedef __u64 elf_fpreg_t;
  20. typedef union __riscv_fp_state elf_fpregset_t;
  21. #define ELF_NFPREG (sizeof(struct __riscv_d_ext_state) / sizeof(elf_fpreg_t))
  22. #if __riscv_xlen == 64
  23. #define ELF_RISCV_R_SYM(r_info) ELF64_R_SYM(r_info)
  24. #define ELF_RISCV_R_TYPE(r_info) ELF64_R_TYPE(r_info)
  25. #else
  26. #define ELF_RISCV_R_SYM(r_info) ELF32_R_SYM(r_info)
  27. #define ELF_RISCV_R_TYPE(r_info) ELF32_R_TYPE(r_info)
  28. #endif
  29. /*
  30. * RISC-V relocation types
  31. */
  32. /* Relocation types used by the dynamic linker */
  33. #define R_RISCV_NONE 0
  34. #define R_RISCV_32 1
  35. #define R_RISCV_64 2
  36. #define R_RISCV_RELATIVE 3
  37. #define R_RISCV_COPY 4
  38. #define R_RISCV_JUMP_SLOT 5
  39. #define R_RISCV_TLS_DTPMOD32 6
  40. #define R_RISCV_TLS_DTPMOD64 7
  41. #define R_RISCV_TLS_DTPREL32 8
  42. #define R_RISCV_TLS_DTPREL64 9
  43. #define R_RISCV_TLS_TPREL32 10
  44. #define R_RISCV_TLS_TPREL64 11
  45. /* Relocation types not used by the dynamic linker */
  46. #define R_RISCV_BRANCH 16
  47. #define R_RISCV_JAL 17
  48. #define R_RISCV_CALL 18
  49. #define R_RISCV_CALL_PLT 19
  50. #define R_RISCV_GOT_HI20 20
  51. #define R_RISCV_TLS_GOT_HI20 21
  52. #define R_RISCV_TLS_GD_HI20 22
  53. #define R_RISCV_PCREL_HI20 23
  54. #define R_RISCV_PCREL_LO12_I 24
  55. #define R_RISCV_PCREL_LO12_S 25
  56. #define R_RISCV_HI20 26
  57. #define R_RISCV_LO12_I 27
  58. #define R_RISCV_LO12_S 28
  59. #define R_RISCV_TPREL_HI20 29
  60. #define R_RISCV_TPREL_LO12_I 30
  61. #define R_RISCV_TPREL_LO12_S 31
  62. #define R_RISCV_TPREL_ADD 32
  63. #define R_RISCV_ADD8 33
  64. #define R_RISCV_ADD16 34
  65. #define R_RISCV_ADD32 35
  66. #define R_RISCV_ADD64 36
  67. #define R_RISCV_SUB8 37
  68. #define R_RISCV_SUB16 38
  69. #define R_RISCV_SUB32 39
  70. #define R_RISCV_SUB64 40
  71. #define R_RISCV_GNU_VTINHERIT 41
  72. #define R_RISCV_GNU_VTENTRY 42
  73. #define R_RISCV_ALIGN 43
  74. #define R_RISCV_RVC_BRANCH 44
  75. #define R_RISCV_RVC_JUMP 45
  76. #define R_RISCV_LUI 46
  77. #define R_RISCV_GPREL_I 47
  78. #define R_RISCV_GPREL_S 48
  79. #define R_RISCV_TPREL_I 49
  80. #define R_RISCV_TPREL_S 50
  81. #define R_RISCV_RELAX 51
  82. #define R_RISCV_SUB6 52
  83. #define R_RISCV_SET6 53
  84. #define R_RISCV_SET8 54
  85. #define R_RISCV_SET16 55
  86. #define R_RISCV_SET32 56
  87. #define R_RISCV_32_PCREL 57
  88. #endif /* _UAPI_ASM_RISCV_ELF_H */