aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-02-23 09:28:29 +0000
committernealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e>2009-02-23 09:28:29 +0000
commit4af5fe0b593f5d79aee8c54f6bc1542b1deed87e (patch)
tree86f57a6b88d3d730d3f0b06a9214d7e0dfbaf495
parentSee https://bugzilla.mozilla.org/show_bug.cgi?id=397200 (diff)
downloadbreakpad-4af5fe0b593f5d79aee8c54f6bc1542b1deed87e.tar.xz
Fix build breaks on Solaris using Sun Studio.
Written by Ginn Chen & Eagle.Lu@ R=nealsid (although I don't have a Solaris machine to build on, & these changes look localized to Sun-only builds) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@314 4c0a9323-5329-0410-9bdc-e9ce6186880e
-rw-r--r--src/common/solaris/dump_symbols.cc7
-rw-r--r--src/google_breakpad/common/minidump_cpu_ppc.h8
2 files changed, 12 insertions, 3 deletions
diff --git a/src/common/solaris/dump_symbols.cc b/src/common/solaris/dump_symbols.cc
index a0697ff9..816d744c 100644
--- a/src/common/solaris/dump_symbols.cc
+++ b/src/common/solaris/dump_symbols.cc
@@ -176,7 +176,9 @@ inline void RecalculateOffset(struct slist* cur_list, char *stabstr) {
// Demangle using demangle library on Solaris.
std::string Demangle(const char *mangled) {
int status = 0;
+ std::string str(mangled);
char *demangled = (char *)malloc(demangleLen);
+
if (!demangled) {
fprintf(stderr, "no enough memory.\n");
goto out;
@@ -188,12 +190,11 @@ std::string Demangle(const char *mangled) {
goto out;
}
- std::string str(demangled);
+ str = demangled;
free(demangled);
- return str;
out:
- return std::string(mangled);
+ return str;
}
bool WriteFormat(int fd, const char *fmt, ...) {
diff --git a/src/google_breakpad/common/minidump_cpu_ppc.h b/src/google_breakpad/common/minidump_cpu_ppc.h
index 40a64931..038e921a 100644
--- a/src/google_breakpad/common/minidump_cpu_ppc.h
+++ b/src/google_breakpad/common/minidump_cpu_ppc.h
@@ -107,7 +107,11 @@ typedef struct {
/* Use the same 32-bit alignment when accessing this structure from 64-bit code
* as is used natively in 32-bit code. #pragma pack is a MSVC extension
* supported by gcc. */
+#if defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#pragma pack(4)
+#else
#pragma pack(push, 4)
+#endif
typedef struct {
/* context_flags is not present in ppc_thread_state, but it aids
@@ -136,7 +140,11 @@ typedef struct {
MDVectorSaveAreaPPC vector_save;
} MDRawContextPPC; /* Based on ppc_thread_state */
+#if defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+#pragma pack(0)
+#else
#pragma pack(pop)
+#endif
/* For (MDRawContextPPC).context_flags. These values indicate the type of
* context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its