diff options
| -rw-r--r-- | compiler/elf_writer_quick.cc | 2 | ||||
| -rw-r--r-- | disassembler/disassembler_x86.cc | 4 | ||||
| -rw-r--r-- | runtime/base/macros.h | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/compiler/elf_writer_quick.cc b/compiler/elf_writer_quick.cc index 25cf086696..d651c0fb84 100644 --- a/compiler/elf_writer_quick.cc +++ b/compiler/elf_writer_quick.cc @@ -669,6 +669,8 @@ static void FillInCFIInformation(OatWriter* oat_writer, template <typename Elf_Word, typename Elf_Sword, typename Elf_Addr, typename Elf_Dyn, typename Elf_Sym, typename Elf_Ehdr, typename Elf_Phdr, typename Elf_Shdr> +// Do not inline to avoid Clang stack frame problems. b/18738594 +NO_INLINE static void WriteDebugSymbols(const CompilerDriver* compiler_driver, ElfBuilder<Elf_Word, Elf_Sword, Elf_Addr, Elf_Dyn, Elf_Sym, Elf_Ehdr, Elf_Phdr, Elf_Shdr>* builder, diff --git a/disassembler/disassembler_x86.cc b/disassembler/disassembler_x86.cc index ba72707dc4..b58f5fa3c5 100644 --- a/disassembler/disassembler_x86.cc +++ b/disassembler/disassembler_x86.cc @@ -154,8 +154,8 @@ static void DumpSegmentOverride(std::ostream& os, uint8_t segment_prefix) { } // Do not inline to avoid Clang stack frame problems. b/18733806 -static std::string __attribute__((noinline)) DumpCodeHex(const uint8_t* begin, - const uint8_t* end) { +NO_INLINE +static std::string DumpCodeHex(const uint8_t* begin, const uint8_t* end) { std::stringstream hex; for (size_t i = 0; begin + i < end; ++i) { hex << StringPrintf("%02X", begin[i]); diff --git a/runtime/base/macros.h b/runtime/base/macros.h index 66d6fabbcd..f705469c89 100644 --- a/runtime/base/macros.h +++ b/runtime/base/macros.h @@ -158,6 +158,8 @@ char (&ArraySizeHelper(T (&array)[N]))[N]; #define ALWAYS_INLINE_LAMBDA ALWAYS_INLINE #endif +#define NO_INLINE __attribute__ ((noinline)) + #if defined (__APPLE__) #define HOT_ATTR #define COLD_ATTR |