diff options
Diffstat (limited to 'packages/glibc/glibc-cvs/eabi-patch-3')
-rw-r--r-- | packages/glibc/glibc-cvs/eabi-patch-3 | 430 |
1 files changed, 0 insertions, 430 deletions
diff --git a/packages/glibc/glibc-cvs/eabi-patch-3 b/packages/glibc/glibc-cvs/eabi-patch-3 deleted file mode 100644 index 9bd549ec2b..0000000000 --- a/packages/glibc/glibc-cvs/eabi-patch-3 +++ /dev/null @@ -1,430 +0,0 @@ -From libc-alpha-return-17228-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Tue Mar 22 16:08:31 2005 -Return-Path: <libc-alpha-return-17228-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com> -Delivered-To: listarch-libc-alpha at sources dot redhat dot com -Received: (qmail 20972 invoked by alias); 22 Mar 2005 16:08:29 -0000 -Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm -Precedence: bulk -List-Subscribe: <mailto:libc-alpha-subscribe at sources dot redhat dot com> -List-Archive: <http://sources.redhat.com/ml/libc-alpha/> -List-Post: <mailto:libc-alpha at sources dot redhat dot com> -List-Help: <mailto:libc-alpha-help at sources dot redhat dot com>, <http://sources dot redhat dot com/ml/#faqs> -Sender: libc-alpha-owner at sources dot redhat dot com -Delivered-To: mailing list libc-alpha at sources dot redhat dot com -Received: (qmail 20165 invoked from network); 22 Mar 2005 16:08:06 -0000 -Received: from unknown (HELO nevyn.them.org) (66.93.172.17) - by sourceware dot org with SMTP; 22 Mar 2005 16:08:06 -0000 -Received: from drow by nevyn.them.org with local (Exim 4.50 #1 (Debian)) - id 1DDlvX-0006tE-Bh; Tue, 22 Mar 2005 11:08:19 -0500 -Date: Tue, 22 Mar 2005 11:08:19 -0500 -From: Daniel Jacobowitz <drow at false dot org> -To: libc-alpha at sources dot redhat dot com -Cc: Phil Blundell <pb at reciva dot com> -Subject: ARM EABI support - changes to existing ARM code -Message-ID: <20050322160819.GA26216@nevyn.them.org> -Mail-Followup-To: libc-alpha at sources dot redhat dot com, - Phil Blundell <pb at reciva dot com> -Mime-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Disposition: inline -User-Agent: Mutt/1.5.6+20040907i - -This patch updates the common ARM files for EABI support. The changes are: - - Old ARM ABI targets always use FPA (mixed-endian) byte ordering. EABI - targets always use VFP byte ordering for doubles, which is standard - ieee754 layout. Removing the arm-specific ieee754.h doesn't break FPA; - it was a specialized version of the common header, which handles FPA - but also handles VFP. - - The stack needs to be aligned to eight bytes instead of just four, - including in mmap2 and when shifting _dl_argv. - - We need some markers around _start to indicate end-of-stack for the - unwinder - ARM EABI does not use either SJLJ exceptions or DWARF-2 - exceptions. It uses a table based format which seems to be not - quite completely unlike DWARF-2. - -Do these changes look OK? - --- -Daniel Jacobowitz -CodeSourcery, LLC - -2005-03-22 Daniel Jacobowitz <dan@codesourcery.com> - - * sysdeps/arm/bits/endian.h (__FLOAT_WORD_ORDER): Handle VFP. - * sysdeps/arm/gmp-mparam.h (IEEE_DOUBLE_BIG_ENDIAN, - IEEE_DOUBLE_MIXED_ENDIAN): Handle big-endian and VFP. - * sysdeps/arm/ieee754.h: Remove. - - * sysdeps/arm/dl-machine.h (_dl_start_user): Align the stack to eight - bytes even when shifting arguments. - * sysdeps/arm/dl-sysdep.h: New file. - - * sysdeps/arm/elf/start.S (_start): If not using SJLJ exceptions, include - EABI unwind markers to terminate unwinding. - - * sysdeps/unix/sysv/linux/arm/mmap64.S: Handle big-endian byte ordering - and EABI stack layout. - -Index: glibc/sysdeps/arm/bits/endian.h -=================================================================== ---- glibc.orig/sysdeps/arm/bits/endian.h 2005-03-22 10:26:27.092978200 -0500 -+++ glibc/sysdeps/arm/bits/endian.h 2005-03-22 10:27:39.457490903 -0500 -@@ -9,4 +9,9 @@ - #else - #define __BYTE_ORDER __LITTLE_ENDIAN - #endif -+ -+#ifdef __VFP_FP__ -+#define __FLOAT_WORD_ORDER __BYTE_ORDER -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#endif -Index: glibc/sysdeps/arm/dl-machine.h -=================================================================== ---- glibc.orig/sysdeps/arm/dl-machine.h 2005-03-22 10:26:27.092978200 -0500 -+++ glibc/sysdeps/arm/dl-machine.h 2005-03-22 10:27:39.457490903 -0500 -@@ -156,22 +156,19 @@ _dl_start_user:\n\ - add sl, pc, sl\n\ - .L_GOT_GOT:\n\ - ldr r4, [sl, r4]\n\ -- @ get the original arg count\n\ -- ldr r1, [sp]\n\ - @ save the entry point in another register\n\ - mov r6, r0\n\ -- @ adjust the stack pointer to skip the extra args\n\ -- add sp, sp, r4, lsl #2\n\ -- @ subtract _dl_skip_args from original arg count\n\ -- sub r1, r1, r4\n\ -+ @ get the original arg count\n\ -+ ldr r1, [sp]\n\ - @ get the argv address\n\ - add r2, sp, #4\n\ -- @ store the new argc in the new stack location\n\ -- str r1, [sp]\n\ -+ @ Fix up the stack if necessary.\n\ -+ cmp r4, #0\n\ -+ bne .L_fixup_stack\n\ -+.L_done_fixup:\n\ - @ compute envp\n\ - add r3, r2, r1, lsl #2\n\ - add r3, r3, #4\n\ --\n\ - @ now we call _dl_init\n\ - ldr r0, .L_LOADED\n\ - ldr r0, [sl, r0]\n\ -@@ -182,12 +179,45 @@ _dl_start_user:\n\ - add r0, sl, r0\n\ - @ jump to the user_s entry point\n\ - " BX(r6) "\n\ -+\n\ -+ @ iWMMXt and EABI targets require the stack to be eight byte\n\ -+ @ aligned - shuffle arguments etc.\n\ -+.L_fixup_stack:\n\ -+ @ subtract _dl_skip_args from original arg count\n\ -+ sub r1, r1, r4\n\ -+ @ store the new argc in the new stack location\n\ -+ str r1, [sp]\n\ -+ @ find the first unskipped argument\n\ -+ mov r3, r2\n\ -+ add r4, r2, r4, lsl #2\n\ -+ @ shuffle argv down\n\ -+1: ldr r5, [r4], #4\n\ -+ str r5, [r3], #4\n\ -+ cmp r5, #0\n\ -+ bne 1b\n\ -+ @ shuffle envp down\n\ -+1: ldr r5, [r4], #4\n\ -+ str r5, [r3], #4\n\ -+ cmp r5, #0\n\ -+ bne 1b\n\ -+ @ shuffle auxv down\n\ -+1: ldmia r4!, {r0, r5}\n\ -+ stmia r3!, {r0, r5}\n\ -+ cmp r0, #0\n\ -+ bne 1b\n\ -+ @ Update _dl_argv\n\ -+ ldr r3, .L_ARGV\n\ -+ str r2, [sl, r3]\n\ -+ b .L_done_fixup\n\ -+\n\ - .L_GET_GOT:\n\ - .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4\n\ - .L_SKIP_ARGS:\n\ - .word _dl_skip_args(GOTOFF)\n\ - .L_FINI_PROC:\n\ - .word _dl_fini(GOTOFF)\n\ -+.L_ARGV:\n\ -+ .word _dl_argv(GOTOFF)\n\ - .L_LOADED:\n\ - .word _rtld_local(GOTOFF)\n\ - .previous\n\ -Index: glibc/sysdeps/arm/dl-sysdep.h -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ glibc/sysdeps/arm/dl-sysdep.h 2005-03-22 10:27:39.458490675 -0500 -@@ -0,0 +1,41 @@ -+/* System-specific settings for dynamic linker code. ARM version. -+ Copyright (C) 2004, 2005 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _DL_SYSDEP_H -+#define _DL_SYSDEP_H 1 -+ -+/* This macro must be defined to either 0 or 1. -+ -+ If 1, then an errno global variable hidden in ld.so will work right with -+ all the errno-using libc code compiled for ld.so, and there is never a -+ need to share the errno location with libc. This is appropriate only if -+ all the libc functions that ld.so uses are called without PLT and always -+ get the versions linked into ld.so rather than the libc ones. */ -+ -+#ifdef IS_IN_rtld -+# define RTLD_PRIVATE_ERRNO 1 -+#else -+# define RTLD_PRIVATE_ERRNO 0 -+#endif -+ -+/* _dl_argv cannot be attribute_relro, because _dl_start_user -+ might write into it after _dl_start returns. */ -+#define DL_ARGV_NOT_RELRO 1 -+ -+#endif /* dl-sysdep.h */ -Index: glibc/sysdeps/arm/elf/start.S -=================================================================== ---- glibc.orig/sysdeps/arm/elf/start.S 2005-03-22 10:26:27.096977288 -0500 -+++ glibc/sysdeps/arm/elf/start.S 2005-03-22 11:00:35.178522707 -0500 -@@ -1,5 +1,6 @@ - /* Startup code for ARM & ELF -- Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc. -+ Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002, 2005 -+ Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -62,6 +63,10 @@ - .globl _start - .type _start,#function - _start: -+#if !defined(__USING_SJLJ_EXCEPTIONS__) -+ /* Protect against unhandled exceptions. */ -+ .fnstart -+#endif - /* Fetch address of fini */ - ldr ip, =__libc_csu_fini - -@@ -93,6 +98,11 @@ _start: - /* should never get here....*/ - bl abort - -+#if !defined(__USING_SJLJ_EXCEPTIONS__) -+ .cantunwind -+ .fnend -+#endif -+ - /* Define a symbol for the first piece of initialized data. */ - .data - .globl __data_start -Index: glibc/sysdeps/arm/gmp-mparam.h -=================================================================== ---- glibc.orig/sysdeps/arm/gmp-mparam.h 2005-03-22 10:26:27.092978200 -0500 -+++ glibc/sysdeps/arm/gmp-mparam.h 2005-03-22 11:00:42.795683773 -0500 -@@ -1,6 +1,6 @@ - /* gmp-mparam.h -- Compiler/machine parameter header file. - --Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc. -+Copyright (C) 1991, 1993, 1994, 1995, 2005 Free Software Foundation, Inc. - - This file is part of the GNU MP Library. - -@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ - #define BITS_PER_SHORTINT 16 - #define BITS_PER_CHAR 8 - --#define IEEE_DOUBLE_BIG_ENDIAN 0 --#define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#if defined(__ARMEB__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__VFP_FP__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+#else -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+# define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#endif -Index: glibc/sysdeps/arm/ieee754.h -=================================================================== ---- glibc.orig/sysdeps/arm/ieee754.h 2005-03-22 10:26:27.092978200 -0500 -+++ /dev/null 1970-01-01 00:00:00.000000000 +0000 -@@ -1,115 +0,0 @@ --/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IEEE754_H -- --#define _IEEE754_H 1 --#include <features.h> -- --#include <endian.h> -- --__BEGIN_DECLS -- --union ieee754_float -- { -- float f; -- -- /* This is the IEEE 754 single-precision format. */ -- struct -- { -- unsigned int mantissa:23; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa:22; -- unsigned int quiet_nan:1; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee_nan; -- }; -- --#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ -- -- --union ieee754_double -- { -- double d; -- -- /* This is the IEEE 754 double-precision format. */ -- struct -- { -- unsigned int mantissa0:20; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa0:19; -- unsigned int quiet_nan:1; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee_nan; -- }; -- --#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ -- -- --/* The following two structures are correct for `new' floating point systems but -- wrong for the old FPPC. The only solution seems to be to avoid their use on -- old hardware. */ -- --union ieee854_long_double -- { -- long double d; -- -- /* This is the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:32; -- } ieee; -- -- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:30; -- unsigned int quiet_nan:1; -- unsigned int one:1; -- } ieee_nan; -- }; -- --#define IEEE854_LONG_DOUBLE_BIAS 0x3fff -- --__END_DECLS -- --#endif /* ieee754.h */ -Index: glibc/sysdeps/unix/sysv/linux/arm/mmap64.S -=================================================================== ---- glibc.orig/sysdeps/unix/sysv/linux/arm/mmap64.S 2005-03-22 10:26:27.097977060 -0500 -+++ glibc/sysdeps/unix/sysv/linux/arm/mmap64.S 2005-03-22 11:00:53.051209928 -0500 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2000, 2003 Free Software Foundation, Inc. -+/* Copyright (C) 2000, 2003, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -23,13 +23,28 @@ - - #include "kernel-features.h" - -+#ifdef __ARM_EABI__ -+# define INITIAL_OFFSET 8 -+#else -+# define INITIAL_OFFSET 4 -+#endif -+ -+#ifdef __ARMEB__ -+# define LOW_OFFSET INITIAL_OFFSET + 4 -+/* The initial + 4 is for the stack postdecrement. */ -+# define HIGH_OFFSET 4 + INITIAL_OFFSET + 0 -+#else -+# define LOW_OFFSET INITIAL_OFFSET + 0 -+# define HIGH_OFFSET 4 + INITIAL_OFFSET + 4 -+#endif -+ - /* The mmap2 system call takes six arguments, all in registers. */ - .text - ENTRY (__mmap64) - #ifdef __NR_mmap2 -- ldr ip, [sp, $4] @ offset low part -+ ldr ip, [sp, $LOW_OFFSET] @ offset low part - str r5, [sp, #-4]! -- ldr r5, [sp, $12] @ offset high part -+ ldr r5, [sp, $HIGH_OFFSET] @ offset high part - str r4, [sp, #-4]! - movs r4, ip, lsl $20 @ check that offset is page-aligned - mov ip, ip, lsr $12 - |