diff options
Diffstat (limited to 'dev-cpp/glog/files/glog-0.3.2-avoid-inline-asm.patch')
| -rw-r--r-- | dev-cpp/glog/files/glog-0.3.2-avoid-inline-asm.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/dev-cpp/glog/files/glog-0.3.2-avoid-inline-asm.patch b/dev-cpp/glog/files/glog-0.3.2-avoid-inline-asm.patch new file mode 100644 index 000000000000..b6fa9cdb7374 --- /dev/null +++ b/dev-cpp/glog/files/glog-0.3.2-avoid-inline-asm.patch @@ -0,0 +1,56 @@ +http://code.google.com/p/google-glog/issues/detail?id=130 + +make the code work with all gcc targets + +--- a/src/symbolize_unittest.cc ++++ b/src/symbolize_unittest.cc +@@ -60,9 +60,7 @@ using namespace GOOGLE_NAMESPACE; + # endif // __i386__ + # else + # endif // __GNUC__ >= 4 +-# if defined(__i386__) || defined(__x86_64__) +-# define TEST_X86_32_AND_64 1 +-# endif // defined(__i386__) || defined(__x86_64__) ++# define TEST_WITH_LABEL_ADDRESSES + #endif + + // A wrapper function for Symbolize() to make the unit test simple. +@@ -289,22 +287,24 @@ TEST(Symbolize, SymbolizeWithDemanglingStackConsumption) { + extern "C" { + inline void* always_inline inline_func() { + register void *pc = NULL; +-#ifdef TEST_X86_32_AND_64 +- __asm__ __volatile__("call 1f; 1: pop %0" : "=r"(pc)); ++#ifdef TEST_WITH_LABEL_ADDRESSES ++ pc = &&curr_pc; ++ curr_pc: + #endif + return pc; + } + + void* ATTRIBUTE_NOINLINE non_inline_func() { + register void *pc = NULL; +-#ifdef TEST_X86_32_AND_64 +- __asm__ __volatile__("call 1f; 1: pop %0" : "=r"(pc)); ++#ifdef TEST_WITH_LABEL_ADDRESSES ++ pc = &&curr_pc; ++ curr_pc: + #endif + return pc; + } + + void ATTRIBUTE_NOINLINE TestWithPCInsideNonInlineFunction() { +-#if defined(TEST_X86_32_AND_64) && defined(HAVE_ATTRIBUTE_NOINLINE) ++#if defined(TEST_WITH_LABEL_ADDRESSES) && defined(HAVE_ATTRIBUTE_NOINLINE) + void *pc = non_inline_func(); + const char *symbol = TrySymbolize(pc); + CHECK(symbol != NULL); +@@ -314,7 +314,7 @@ void ATTRIBUTE_NOINLINE TestWithPCInsideNonInlineFunction() { + } + + void ATTRIBUTE_NOINLINE TestWithPCInsideInlineFunction() { +-#if defined(TEST_X86_32_AND_64) && defined(HAVE_ALWAYS_INLINE) ++#if defined(TEST_WITH_LABEL_ADDRESSES) && defined(HAVE_ALWAYS_INLINE) + void *pc = inline_func(); // Must be inlined. + const char *symbol = TrySymbolize(pc); + CHECK(symbol != NULL); |
