]> git.pld-linux.org Git - packages/glog.git/blob - avoid-inline-asm.patch
b6fa9cdb7374f98a843c6db8b403522545f09215
[packages/glog.git] / avoid-inline-asm.patch
1 http://code.google.com/p/google-glog/issues/detail?id=130
2
3 make the code work with all gcc targets
4
5 --- a/src/symbolize_unittest.cc
6 +++ b/src/symbolize_unittest.cc
7 @@ -60,9 +60,7 @@ using namespace GOOGLE_NAMESPACE;
8  #    endif  // __i386__
9  #  else
10  #  endif  // __GNUC__ >= 4
11 -#  if defined(__i386__) || defined(__x86_64__)
12 -#    define TEST_X86_32_AND_64 1
13 -#  endif  // defined(__i386__) || defined(__x86_64__)
14 +#  define TEST_WITH_LABEL_ADDRESSES
15  #endif
16  
17  // A wrapper function for Symbolize() to make the unit test simple.
18 @@ -289,22 +287,24 @@ TEST(Symbolize, SymbolizeWithDemanglingStackConsumption) {
19  extern "C" {
20  inline void* always_inline inline_func() {
21    register void *pc = NULL;
22 -#ifdef TEST_X86_32_AND_64
23 -  __asm__ __volatile__("call 1f; 1: pop %0" : "=r"(pc));
24 +#ifdef TEST_WITH_LABEL_ADDRESSES
25 +  pc = &&curr_pc;
26 +  curr_pc:
27  #endif
28    return pc;
29  }
30  
31  void* ATTRIBUTE_NOINLINE non_inline_func() {
32    register void *pc = NULL;
33 -#ifdef TEST_X86_32_AND_64
34 -  __asm__ __volatile__("call 1f; 1: pop %0" : "=r"(pc));
35 +#ifdef TEST_WITH_LABEL_ADDRESSES
36 +  pc = &&curr_pc;
37 +  curr_pc:
38  #endif
39    return pc;
40  }
41  
42  void ATTRIBUTE_NOINLINE TestWithPCInsideNonInlineFunction() {
43 -#if defined(TEST_X86_32_AND_64) && defined(HAVE_ATTRIBUTE_NOINLINE)
44 +#if defined(TEST_WITH_LABEL_ADDRESSES) && defined(HAVE_ATTRIBUTE_NOINLINE)
45    void *pc = non_inline_func();
46    const char *symbol = TrySymbolize(pc);
47    CHECK(symbol != NULL);
48 @@ -314,7 +314,7 @@ void ATTRIBUTE_NOINLINE TestWithPCInsideNonInlineFunction() {
49  }
50  
51  void ATTRIBUTE_NOINLINE TestWithPCInsideInlineFunction() {
52 -#if defined(TEST_X86_32_AND_64) && defined(HAVE_ALWAYS_INLINE)
53 +#if defined(TEST_WITH_LABEL_ADDRESSES) && defined(HAVE_ALWAYS_INLINE)
54    void *pc = inline_func();  // Must be inlined.
55    const char *symbol = TrySymbolize(pc);
56    CHECK(symbol != NULL);
This page took 0.063035 seconds and 2 git commands to generate.