This patch is courtesy of OpenEmbedded, by Khem Raj <raj.khem@gmail.com>

http://cgit.openembedded.org/cgit.cgi/openembedded/commit/?id=b85b779688f0abc389e3c25d06b54de8b86385c1

Index: ltrace-0.5.3/sysdeps/linux-gnu/mipsel/plt.c
===================================================================
--- ltrace-0.5.3.orig/sysdeps/linux-gnu/mipsel/plt.c	2009-10-23 23:25:59.292780574 -0700
+++ ltrace-0.5.3/sysdeps/linux-gnu/mipsel/plt.c	2009-10-23 23:26:22.671522220 -0700
@@ -1,4 +1,4 @@
-#include <debug.h>
+#include "debug.h"
 #include <gelf.h>
 #include <sys/ptrace.h>
 #include "common.h"
Index: ltrace-0.5.3/sysdeps/linux-gnu/mipsel/regs.c
===================================================================
--- ltrace-0.5.3.orig/sysdeps/linux-gnu/mipsel/regs.c	2009-10-23 23:25:59.312777529 -0700
+++ ltrace-0.5.3/sysdeps/linux-gnu/mipsel/regs.c	2009-10-23 23:26:08.190311896 -0700
@@ -4,7 +4,6 @@
 #include <sys/types.h>
 #include <sys/ptrace.h>
 #include <asm/ptrace.h>
-#include <linux/user.h>
 
 #include "common.h"
 #include "mipsel.h"
Index: ltrace-0.5.3/handle_event.c
===================================================================
--- ltrace-0.5.3.orig/handle_event.c	2009-10-23 23:29:48.780274445 -0700
+++ ltrace-0.5.3/handle_event.c	2009-10-23 23:37:32.260284055 -0700
@@ -573,7 +573,8 @@ handle_breakpoint(Event *event) {
 			void *old_addr;
 			struct library_symbol *sym= event->proc->callstack[i].c_un.libfunc;
 			assert(sym);
-			old_addr = dict_find_entry(event->proc->breakpoints, sym2addr(event->proc, sym))->addr;
+			struct Breakpoint *tbp = dict_find_entry(event->proc->breakpoints, sym2addr(event->proc, sym));
+			old_addr = tbp->addr;
 			addr=sym2addr(event->proc,sym);
 			assert(old_addr !=0 && addr !=0);
 			if(addr != old_addr){
