aboutsummaryrefslogtreecommitdiff
path: root/src/client/linux/minidump_writer
diff options
context:
space:
mode:
authormark@chromium.org <mark@chromium.org>2015-04-15 19:28:11 +0000
committermark@chromium.org <mark@chromium.org>2015-04-15 19:28:11 +0000
commitd88401cca9ff7640387a0d88d75de1e7d8fff294 (patch)
treeb47c776a127bb465572e382e752d5d63ca9b544c /src/client/linux/minidump_writer
parentUse __NR_rt_sigaction instead of __NR_sigaction (diff)
downloadbreakpad-d88401cca9ff7640387a0d88d75de1e7d8fff294.tar.xz
MIPS64: Initial MIPS64 related change.
With this change Breakpad can be compiled for MIPS64, but it is not yet functional. Patch by Gordana Cmiljanovic <Gordana.Cmiljanovic@imgtec.com> Review URL: https://breakpad.appspot.com/6824002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1446 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/linux/minidump_writer')
-rw-r--r--src/client/linux/minidump_writer/linux_dumper.h6
-rw-r--r--src/client/linux/minidump_writer/minidump_writer.cc10
2 files changed, 13 insertions, 3 deletions
diff --git a/src/client/linux/minidump_writer/linux_dumper.h b/src/client/linux/minidump_writer/linux_dumper.h
index 2fc88486..87dfadb4 100644
--- a/src/client/linux/minidump_writer/linux_dumper.h
+++ b/src/client/linux/minidump_writer/linux_dumper.h
@@ -52,9 +52,11 @@
namespace google_breakpad {
// Typedef for our parsing of the auxv variables in /proc/pid/auxv.
-#if defined(__i386) || defined(__ARM_EABI__) || defined(__mips__)
+#if defined(__i386) || defined(__ARM_EABI__) || \
+ (defined(__mips__) && _MIPS_SIM == _ABIO32)
typedef Elf32_auxv_t elf_aux_entry;
-#elif defined(__x86_64) || defined(__aarch64__)
+#elif defined(__x86_64) || defined(__aarch64__) || \
+ (defined(__mips__) && _MIPS_SIM != _ABIO32)
typedef Elf64_auxv_t elf_aux_entry;
#endif
diff --git a/src/client/linux/minidump_writer/minidump_writer.cc b/src/client/linux/minidump_writer/minidump_writer.cc
index edc7e47d..0414bb72 100644
--- a/src/client/linux/minidump_writer/minidump_writer.cc
+++ b/src/client/linux/minidump_writer/minidump_writer.cc
@@ -689,10 +689,18 @@ class MinidumpWriter {
return false;
}
+#ifdef __mips__
+ if (dyn.d_tag == DT_MIPS_RLD_MAP) {
+ r_debug = reinterpret_cast<struct r_debug*>(dyn.d_un.d_ptr);
+ continue;
+ }
+#else
if (dyn.d_tag == DT_DEBUG) {
r_debug = reinterpret_cast<struct r_debug*>(dyn.d_un.d_ptr);
continue;
- } else if (dyn.d_tag == DT_NULL) {
+ }
+#endif
+ else if (dyn.d_tag == DT_NULL) {
break;
}
}