Module Name: src Committed By: matt Date: Tue Jun 25 16:51:14 UTC 2013
Modified Files: src/lib/csu/arch/mips: crtbegin.h Log Message: Deal with O32 callling sequences. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/lib/csu/arch/mips/crtbegin.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/csu/arch/mips/crtbegin.h diff -u src/lib/csu/arch/mips/crtbegin.h:1.1 src/lib/csu/arch/mips/crtbegin.h:1.2 --- src/lib/csu/arch/mips/crtbegin.h:1.1 Sat Jun 22 02:37:09 2013 +++ src/lib/csu/arch/mips/crtbegin.h Tue Jun 25 16:51:14 2013 @@ -28,10 +28,41 @@ */ __asm( "\n\t" - ".pushsection .init, \"ax\", @progbits" "\n\t" - "jal __do_global_ctors_aux" "\n\t" + ".pushsection .init, \"ax\", @progbits" "\n\t" +#ifdef __mips_o32 + ".set noreorder" "\n\t" + ".set nomacro" "\n\t" + "lw $28,16($sp)" "\n\t" + "nop" "\n\t" + "lw $25,%got(__do_global_ctors_aux)($28)" "\n\t" + "nop" "\n\t" + "addiu $25,$25,%lo(__do_global_ctors_aux)" "\n\t" + ".reloc 1f,R_MIPS_JALR,__do_global_ctors_aux" "\n\t" + "1: jalr $25" "\n\t" + "nop" "\n\t" + ".set macro" "\n\t" + ".set reorder" "\n\t" +#else + "jal __do_global_ctors_aux" "\n\t" +#endif ".popsection"); + __asm( "\n\t" ".pushsection .fini, \"ax\", @progbits" "\n\t" - "jal __do_global_dtors_aux" "\n\t" +#ifdef __mips_o32 + ".set noreorder" "\n\t" + ".set nomacro" "\n\t" + "lw $28,16($sp)" "\n\t" + "nop" "\n\t" + "lw $25,%got(__do_global_dtors_aux)($28)" "\n\t" + "nop" "\n\t" + "addiu $25,$25,%lo(__do_global_dtors_aux)" "\n\t" + ".reloc 1f,R_MIPS_JALR,__do_global_dtors_aux" "\n\t" + "1: jalr $25" "\n\t" + "nop" "\n\t" + ".set macro" "\n\t" + ".set reorder" "\n\t" +#else + "jal __do_global_dtors_aux" "\n\t" +#endif ".popsection");