Patch to correctly handle the MIPS case. It was build up by Yann E. MORIN from some bits gathered from buildroot, which is LGPL v2.1 License for dmalloc is: * Permission to use, copy, modify, and distribute this software for * any purpose and without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies, and that the name of Gray Watson not be used in advertising * or publicity pertaining to distribution of the document or software * without specific, written prior permission. * * Gray Watson makes no representations about the suitability of the * software described herein for any purpose. It is provided "as is" * without express or implied warranty. I personnaly believe that the resulting code should therefore be LGPL v2.1, but don't believe me, ask your lawyers! Index: dmalloc-5.5.2/return.h =================================================================== --- dmalloc-5.5.2.orig/return.h +++ dmalloc-5.5.2/return.h @@ -106,26 +106,16 @@ /*************************************/ /* - * For DEC Mips machines running Ultrix + * For Mips machines running Linux */ #if __mips /* - * I have no idea how to get inline assembly with the default cc. - * Anyone know how? - */ - -#if 0 - -/* * NOTE: we assume here that file is global. * - * $31 is the frame pointer. $2 looks to be the return address but maybe - * not consistently. + * $31 is the return address. */ -#define GET_RET_ADDR(file) asm("sw $2, file") - -#endif +#define GET_RET_ADDR(file) asm("sw $31, %0" : "=m" (file)) #endif /* __mips */ Index: dmalloc-5.5.2/configure.ac =================================================================== --- dmalloc-5.5.2.orig/configure.ac +++ dmalloc-5.5.2/configure.ac @@ -585,31 +585,7 @@ int main() { return 1; } # check if the return.h macros work # AC_MSG_CHECKING([return.h macros work]) -AC_RUN_IFELSE([ - -#define __CONF_H__ -#define USE_RETURN_MACROS 1 -#define RETURN_MACROS_WORK 1 - -#include "return.h" - -static void foo (void) -{ - char *ret_addr; - GET_RET_ADDR(ret_addr); -} - -main() -{ - foo(); - exit(0); -} -], -[ AC_DEFINE(RETURN_MACROS_WORK, 1) AC_MSG_RESULT([yes]) ], -[ AC_DEFINE(RETURN_MACROS_WORK, 0) AC_MSG_RESULT([no]) ], -[ AC_DEFINE(RETURN_MACROS_WORK, 0) AC_MSG_RESULT([no]) ] -) - +AC_DEFINE(RETURN_MACROS_WORK, 1) ############################################################################## #