[2/2] backends: Add new relocation type handling for LoongArch

Message ID 1680331424-9721-2-git-send-email-tangyouling@loongson.cn
State Committed
Headers
Series [1/2] libelf: Sync elf.h from glibc. |

Commit Message

Youling Tang April 1, 2023, 6:43 a.m. UTC
  Add new relocation type handling.

Signed-off-by: Youling Tang <tangyouling@loongson.cn>
---
 backends/ChangeLog           |  4 ++++
 backends/loongarch_reloc.def | 40 ++++++++++++++++++++++++++++++++++++
 2 files changed, 44 insertions(+)
  

Comments

Mark Wielaard April 6, 2023, 10:44 p.m. UTC | #1
On Sat, Apr 01, 2023 at 02:43:44PM +0800, Youling Tang wrote:
> Add new relocation type handling.

Thanks, looks good. Pushed.

Cheers,

Mark
  

Patch

diff --git a/backends/ChangeLog b/backends/ChangeLog
index 41071953..cff82b01 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,7 @@ 
+2023-04-01  Youling Tang  <tangyouling@loongson.cn>
+
+	* loongarch_reloc.def: Add RELOC_TYPE B16 to RELAX.
+
 2023-04-01  Youling Tang <tangyouling@loongson.cn>
 	* loongarch_init.c (loongarch_init): Hook check_special_symbol.
 	* loongarch_symbol.c (loongarch_check_special_symbol): New function.
diff --git a/backends/loongarch_reloc.def b/backends/loongarch_reloc.def
index dd4a6b6d..fd204924 100644
--- a/backends/loongarch_reloc.def
+++ b/backends/loongarch_reloc.def
@@ -79,3 +79,43 @@  RELOC_TYPE (SUB32,			REL)
 RELOC_TYPE (SUB64,			REL)
 RELOC_TYPE (GNU_VTINHERIT,		REL)
 RELOC_TYPE (GNU_VTENTRY,		REL)
+
+/* reserved 59-63 */
+
+RELOC_TYPE (B16,			REL)
+RELOC_TYPE (B21,			REL)
+RELOC_TYPE (B26,			REL)
+RELOC_TYPE (ABS_HI20,			REL)
+RELOC_TYPE (ABS_LO12,			REL)
+RELOC_TYPE (ABS64_LO20,			REL)
+RELOC_TYPE (ABS64_HI12,			REL)
+RELOC_TYPE (PCALA_HI20,			REL)
+RELOC_TYPE (PCALA_LO12,			REL)
+RELOC_TYPE (PCALA64_LO20,		REL)
+RELOC_TYPE (PCALA64_HI12,		REL)
+RELOC_TYPE (GOT_PC_HI20,		REL)
+RELOC_TYPE (GOT_PC_LO12,		REL)
+RELOC_TYPE (GOT64_PC_LO20,		REL)
+RELOC_TYPE (GOT64_PC_HI12,		REL)
+RELOC_TYPE (GOT_HI20,			REL)
+RELOC_TYPE (GOT_LO12,			REL)
+RELOC_TYPE (GOT64_LO20,			REL)
+RELOC_TYPE (GOT64_HI12,			REL)
+RELOC_TYPE (TLS_LE_HI20,		REL)
+RELOC_TYPE (TLS_LE_LO12,		REL)
+RELOC_TYPE (TLS_LE64_LO20,		REL)
+RELOC_TYPE (TLS_LE64_HI12,		REL)
+RELOC_TYPE (TLS_IE_PC_HI20,		REL)
+RELOC_TYPE (TLS_IE_PC_LO12,		REL)
+RELOC_TYPE (TLS_IE64_PC_LO20,		REL)
+RELOC_TYPE (TLS_IE64_PC_HI12,		REL)
+RELOC_TYPE (TLS_IE_HI20,		REL)
+RELOC_TYPE (TLS_IE_LO12,		REL)
+RELOC_TYPE (TLS_IE64_LO20,		REL)
+RELOC_TYPE (TLS_IE64_HI12,		REL)
+RELOC_TYPE (TLS_LD_PC_HI20,		REL)
+RELOC_TYPE (TLS_LD_HI20,		REL)
+RELOC_TYPE (TLS_GD_PC_HI20,		REL)
+RELOC_TYPE (TLS_GD_HI20,		REL)
+RELOC_TYPE (32_PCREL,			REL)
+RELOC_TYPE (RELAX,			REL)