From 4e080ed8d64e73465ffe9f79d95b56ff184cf01a Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Mon, 9 Jul 2018 21:18:07 -0500 Subject: [PATCH] PowerPC: Support ELFv2 ABI The ELFv2 ABI does not use function descriptors. This change has been tested on Power Mac G5, IBM POWER6, and Raptor Talos II, all using the musl libc on Linux kernel 4.14. --- orc/orcpowerpc.c | 2 +- orc/orcprogram-altivec.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/orc/orcpowerpc.c b/orc/orcpowerpc.c index a6835ba..8eeb4e5 100644 --- a/orc/orcpowerpc.c +++ b/orc/orcpowerpc.c @@ -418,7 +418,7 @@ orc_powerpc_flush_cache (OrcCode *code) int size = code->code_size; ptr = code->code; -#ifdef __powerpc64__ +#if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1) *(unsigned char **) ptr = (unsigned char *) code->exec + 24; #endif for (i=0;iprogram->name); if (compiler->is_64bit) { +#if !defined(_CALL_ELF) || _CALL_ELF == 1 ORC_ASM_CODE (compiler, " .quad .%s,.TOC.@tocbase,0\n", compiler->program->name); ORC_ASM_CODE (compiler, ".%s:\n", compiler->program->name); powerpc_emit (compiler, 0); powerpc_emit (compiler, 0); powerpc_emit (compiler, 0); powerpc_emit (compiler, 0); powerpc_emit (compiler, 0); powerpc_emit (compiler, 0); +#endif powerpc_emit_stdu (compiler, POWERPC_R1, POWERPC_R1, -16); } else { powerpc_emit_stwu (compiler, POWERPC_R1, POWERPC_R1, -16); -- 2.7.4