patches/dmalloc/5.5.2/130-mips.patch
author Bryan Hundven <bryanhundven@gmail.com>
Sun Jun 26 03:26:54 2011 -0700 (2011-06-26)
changeset 2515 364b06df9e3a
parent 103 b6e20abe9256
permissions -rw-r--r--
glibc: Refactor startfiles/headers into do_libc_backend()

Refactor the contents of 'do_libc_start_files()' and 'do_libc()' into a
parameterized 'do_libc_backend()'. 'do_libc_start_files()' and 'do_libc()'
call 'do_libc_backend()' with either 'libc_mode=startfiles' or
'libc_mode=final' (respectively) so that the startfiles/headers and
the final libc builds are configured and built with the same options.

One example of where this is needed is when building a mips toolchain.
Previously, if you were building an n32 toolchain, you wouldn't have
noticed an issue, because if '-mabi' is not in CFLAGS, n32 is the
default:

http://sourceware.org/git/?p=glibc-ports.git;a=blob;f=sysdeps/mips/preconfigure;hb=HEAD

But when trying to build an o32 or n64 toolchain the build would
have failed. This is because (e)glibc expects "-mabi={o32,n32,n64}" to be
in CFLAGS, but was not previously provided in 'do_libc_start_files()'.
The build failure would happen in the shared-core gcc when it tries to
configure an n64 or o32 gcc with an n32 libc.

A simpler solution would have been to just add TARGET_CFLAGS to configure
in 'do_libc_start_files()', but this way makes configure and make
consistent for both steps.

Signed-off-by: Bryan Hundven <bryanhundven@gmail.com>
     1 Patch to correctly handle the MIPS case.
     2 
     3 It was build up by Yann E. MORIN <yann.morin.1998@anciens.enib.fr> from some
     4 bits gathered from buildroot, which is LGPL v2.1
     5 License for dmalloc is:
     6  * Permission to use, copy, modify, and distribute this software for
     7  * any purpose and without fee is hereby granted, provided that the
     8  * above copyright notice and this permission notice appear in all
     9  * copies, and that the name of Gray Watson not be used in advertising
    10  * or publicity pertaining to distribution of the document or software
    11  * without specific, written prior permission.
    12  *
    13  * Gray Watson makes no representations about the suitability of the
    14  * software described herein for any purpose.  It is provided "as is"
    15  * without express or implied warranty.
    16 
    17 I personnaly believe that the resulting code should therefore be
    18 LGPL v2.1, but don't believe me, ask your lawyers!
    19 
    20 diff -dur dmalloc-5.5.2.orig/configure dmalloc-5.5.2/configure
    21 --- dmalloc-5.5.2.orig/configure	2007-05-18 12:15:39.000000000 +0200
    22 +++ dmalloc-5.5.2/configure	2007-05-18 12:15:48.000000000 +0200
    23 @@ -7107,7 +7107,7 @@
    24  echo $ECHO_N "checking return.h macros work... $ECHO_C" >&6
    25  if test "$cross_compiling" = yes; then
    26     cat >>confdefs.h <<\_ACEOF
    27 -#define RETURN_MACROS_WORK 0
    28 +#define RETURN_MACROS_WORK 1
    29  _ACEOF
    30   echo "$as_me:$LINENO: result: no" >&5
    31  echo "${ECHO_T}no" >&6
    32 diff -dur dmalloc-5.5.2.orig/return.h dmalloc-5.5.2/return.h
    33 --- dmalloc-5.5.2.orig/return.h	2007-05-14 19:26:14.000000000 +0200
    34 +++ dmalloc-5.5.2/return.h	2007-05-18 12:15:48.000000000 +0200
    35 @@ -106,26 +106,16 @@
    36  /*************************************/
    37  
    38  /*
    39 - * For DEC Mips machines running Ultrix
    40 + * For Mips machines running Linux
    41   */
    42  #if __mips
    43  
    44  /*
    45 - * I have no idea how to get inline assembly with the default cc.
    46 - * Anyone know how?
    47 - */
    48 -
    49 -#if 0
    50 -
    51 -/*
    52   * NOTE: we assume here that file is global.
    53   *
    54 - * $31 is the frame pointer.  $2 looks to be the return address but maybe
    55 - * not consistently.
    56 + * $31 is the return address.
    57   */
    58 -#define GET_RET_ADDR(file)	asm("sw $2, file")
    59 -
    60 -#endif
    61 +#define GET_RET_ADDR(file)	asm("sw $31, %0" : "=m" (file))
    62  
    63  #endif /* __mips */
    64