[PATCH] D11897: [libunwind] Make it possible to use libunwind without heap.
whitequark via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 10 01:25:50 PDT 2015
whitequark updated this revision to Diff 31641.
whitequark added a comment.
Whitespace.
http://reviews.llvm.org/D11897
Files:
src/DwarfParser.hpp
src/UnwindCursor.hpp
src/libunwind.cpp
Index: src/libunwind.cpp
===================================================================
--- src/libunwind.cpp
+++ src/libunwind.cpp
@@ -304,7 +304,7 @@
#endif
-#if _LIBUNWIND_SUPPORT_DWARF_UNWIND
+#if !defined(_LIBUNWIND_NO_HEAP) && _LIBUNWIND_SUPPORT_DWARF_UNWIND
/// SPI: walks cached dwarf entries
_LIBUNWIND_EXPORT void unw_iterate_dwarf_unwind_cache(void (*func)(
unw_word_t ip_start, unw_word_t ip_end, unw_word_t fde, unw_word_t mh)) {
@@ -338,7 +338,7 @@
// fde is own mh_group
DwarfFDECache<LocalAddressSpace>::removeAllIn((LocalAddressSpace::pint_t)fde);
}
-#endif // _LIBUNWIND_SUPPORT_DWARF_UNWIND
+#endif // !defined(_LIBUNWIND_NO_HEAP) && _LIBUNWIND_SUPPORT_DWARF_UNWIND
Index: src/UnwindCursor.hpp
===================================================================
--- src/UnwindCursor.hpp
+++ src/UnwindCursor.hpp
@@ -895,8 +895,12 @@
#if _LIBUNWIND_SUPPORT_DWARF_INDEX
if (sects.dwarf_index_section == 0)
#endif
+ #ifdef _LIBUNWIND_NO_HEAP
+ ;
+ #else
DwarfFDECache<A>::add(sects.dso_base, fdeInfo.pcStart, fdeInfo.pcEnd,
fdeInfo.fdeStart);
+ #endif
}
return true;
}
Index: src/DwarfParser.hpp
===================================================================
--- src/DwarfParser.hpp
+++ src/DwarfParser.hpp
@@ -380,7 +380,9 @@
uint64_t length;
uint8_t opcode = addressSpace.get8(p);
uint8_t operand;
+#ifndef _LIBUNWIND_NO_HEAP
PrologInfoStackEntry *entry;
+#endif
++p;
switch (opcode) {
case DW_CFA_nop:
@@ -492,6 +494,7 @@
fprintf(stderr, "DW_CFA_register(reg=%" PRIu64 ", reg2=%" PRIu64 ")\n",
reg, reg2);
break;
+#ifndef _LIBUNWIND_NO_HEAP
case DW_CFA_remember_state:
// avoid operator new, because that would be an upward dependency
entry = (PrologInfoStackEntry *)malloc(sizeof(PrologInfoStackEntry));
@@ -517,6 +520,7 @@
if (logDwarf)
fprintf(stderr, "DW_CFA_restore_state\n");
break;
+#endif
case DW_CFA_def_cfa:
reg = addressSpace.getULEB128(p, instructionsEnd);
offset = (int64_t)addressSpace.getULEB128(p, instructionsEnd);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11897.31641.patch
Type: text/x-patch
Size: 2201 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150810/7cc308e2/attachment.bin>
More information about the llvm-commits
mailing list