From: Pascal Packaging Team Date: Sat, 10 Jun 2017 17:13:48 +0000 (+0100) Subject: fix_ppc64s_prt0.as_as_shown_by_cge X-Git-Tag: archive/raspbian/3.0.0+dfsg-11+rpi1+deb9u1^2~18 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4bd4045cfc7ed9607ab6a16206cc25b114a24337;p=fpc.git fix_ppc64s_prt0.as_as_shown_by_cge =================================================================== Gbp-Pq: Name fix_ppc64s_prt0.as_as_shown_by_cge.patch --- diff --git a/fpcsrc/rtl/linux/powerpc64/prt0.as b/fpcsrc/rtl/linux/powerpc64/prt0.as index e2b569d2..1734e376 100644 --- a/fpcsrc/rtl/linux/powerpc64/prt0.as +++ b/fpcsrc/rtl/linux/powerpc64/prt0.as @@ -324,17 +324,34 @@ _restvr_31: addi r12,r0,-16 * Main program entry point for dynamic executables. * * r7 contains the function pointer that needs to be registered for calling at exit. + * r3/r4/r5 contain argc/argv/envp */ FUNCTION_PROLOG _dynamic_start LOAD_64BIT_VAL 11, __dl_fini std 7,0(11) - LOAD_64BIT_VAL 11, _start - /* do not bother loading the actual function address of _start. We can directly jump to it */ - /* set up GOT pointer from original start function */ + LOAD_64BIT_VAL 11, PASCALMAIN + /* set up GOT pointer from PASCALMAIN */ ld 2,8(11) /* and environment pointer */ ld 11,16(11) - b _start + /* store argument count */ + LOAD_64BIT_VAL 10,operatingsystem_parameter_argc + stw 3,0(10) + /* store argument address */ + LOAD_64BIT_VAL 10,operatingsystem_parameter_argv + std 4,0(10) + /* store environment pointer */ + LOAD_64BIT_VAL 10,operatingsystem_parameter_envp + std 5,0(10) + + LOAD_64BIT_VAL 8,__stkptr + std 1,0(8) + + bl PASCALMAIN + nop + + /* we should not reach here. Crash horribly */ + trap .long 0 .byte 0, 12, 64, 0, 0, 0, 0, 0