X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fconfig%2Fscore%2Fcrti.asm;h=2408596b213b0819316e4297e495ec333179a2f7;hp=65ffb159919731daee8b86d334156be498c9f70a;hb=de79ba9f345763849a4fd285bc6c9508e4b209b5;hpb=22ae655fb35b5428154b87f8e7ce2f4f39ecd041 diff --git a/gcc/config/score/crti.asm b/gcc/config/score/crti.asm index 65ffb159919..2408596b213 100644 --- a/gcc/config/score/crti.asm +++ b/gcc/config/score/crti.asm @@ -35,7 +35,8 @@ # This file makes a stack frame for the contents of the .init and # .fini sections. -.section .init,"ax", @progbits +#ifndef __pic__ +.section .init, "ax", @progbits .weak _start .ent _start .frame r0, 0, r3, 0 @@ -81,5 +82,62 @@ _init: _fini: addi r0, -32 sw r3, [r0, 20] +#else +.section .init, "ax", @progbits + .set pic + .weak _start + .ent _start + .frame r0, 0, r3, 0 + .mask 0x00000000,0 +_start: + la r28, _gp + la r8, __bss_start + la r9, __bss_end__ + sub! r9, r8 + srli! r9, 2 + addi r9, -1 + mtsr r9, sr0 + li r9, 0 +1: + sw r9, [r8]+, 4 + bcnz 1b + la r0, _stack +# jl _init +# la r4, _end +# jl _init_argv + ldiu! r4, 0 + ldiu! r5, 0 +# jl main + la r29, main + brl r29 +# jl exit + la r29, exit + brl r29 + .end _start + + .weak _init_argv + .ent + .frame r0, 0, r3, 0 + .mask 0x00000000, 0 +_init_argv: + ldiu! r4, 0 + ldiu! r5, 0 + j main + .end _init_argv + + .globl _init + .type _init, %function +_init: + addi r0, -32 + sw r3, [r0, 20] + +.section .fini, "ax", @progbits + .globl _fini + .type _fini, %function +_fini: + addi r0, -32 + sw r3, [r0, 20] + +#endif