From 6fef8cafbd0f6f185897bc87feb1ff66e2e204e1 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 14 Oct 2015 17:08:34 -0400 Subject: remove hand-written crt1.s and Scrt1.s files for all archs since commit c5e34dabbb47d8e97a4deccbb421e0cd93c0094b, crt1.c has provided a "mostly-C" implementation of the crt1 start file that avoids the need for arch-specific symbol referencing, PIC/PIE-specific code variants, etc. but for archs that had existing hand-written versions, the new code was initially unused, and later only used as the dynamic linker entry point. this commit switches all archs to using the new code. the code being removed was a recurring source of subtle errors, and was still broken at least on arm, where it failed to properly align the stack pointer before calling into C code. --- crt/mips/crt1.s | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 crt/mips/crt1.s (limited to 'crt/mips/crt1.s') diff --git a/crt/mips/crt1.s b/crt/mips/crt1.s deleted file mode 100644 index 794b6f71..00000000 --- a/crt/mips/crt1.s +++ /dev/null @@ -1,28 +0,0 @@ -.set noreorder - -.weak _init -.weak _fini -.global __start -.global _start -.type __start,@function -.type _start,@function -__start: -_start: - subu $fp, $fp, $fp # Zero the frame pointer. - lui $gp, %hi(_gp) - addi $gp, %lo(_gp) - #la $gp, _gp - lw $4, %call16(main)($gp) # Get main() ... - lw $5, ($sp) # Get argc... - addu $6, $sp, 4 # and argv ... - lw $7, %call16(_init)($gp) # and _init() ... - and $sp, $sp, -8 # Align the stack pointer to 8 bytes - addi $sp, $sp, -4*6 # Leave space for arguments 0..3, arg4, and arg5. - lw $12, %call16(_fini)($gp) # and _fini() ... - sw $12, 4*4($sp) # Save arg4. - sw $0, 4*5($sp) # ldso_fini == NULL - lw $25, %call16(__libc_start_main)($gp) - jalr $25 # Let's go! - nop - b . # Never gets here. - nop -- cgit v1.2.1