From 1b8128cf56f005fce2dee155f7ec0c10132be8b6 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 17 Apr 2018 10:59:18 -0700 Subject: [PATCH] * backtrace.c: Revert last change. Don't call mmap directly. Updates #13 --- backtrace.c | 44 +++++++++++--------------------------------- 1 file changed, 11 insertions(+), 33 deletions(-) diff --git a/backtrace.c b/backtrace.c index 319edcf..f8e3dc5 100644 --- a/backtrace.c +++ b/backtrace.c @@ -32,26 +32,12 @@ POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" -#include #include -#if !BACKTRACE_USES_MALLOC -#include -#endif - #include "unwind.h" #include "backtrace.h" -#include "backtrace-supported.h" #include "internal.h" -#ifndef MAP_ANONYMOUS -#define MAP_ANONYMOUS MAP_ANON -#endif - -#ifndef MAP_FAILED -#define MAP_FAILED ((void *)-1) -#endif - /* The main backtrace_full routine. */ /* Data passed through _Unwind_Backtrace. */ @@ -118,6 +104,7 @@ backtrace_full (struct backtrace_state *state, int skip, backtrace_error_callback error_callback, void *data) { struct backtrace_data bdata; + void *p; bdata.skip = skip + 1; bdata.state = state; @@ -126,25 +113,16 @@ backtrace_full (struct backtrace_state *state, int skip, bdata.data = data; bdata.ret = 0; -#if !BACKTRACE_USES_MALLOC - { - size_t pagesize; - void *page; - - /* If we can't allocate any memory at all, don't try to produce - file/line information. */ - pagesize = getpagesize (); - page = mmap (NULL, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (page == MAP_FAILED) - bdata.can_alloc = 0; - else - { - munmap (page, pagesize); - bdata.can_alloc = 1; - } - } -#endif + /* If we can't allocate any memory at all, don't try to produce + file/line information. */ + p = backtrace_alloc (state, 4096, NULL, NULL); + if (p == NULL) + bdata.can_alloc = 0; + else + { + backtrace_free (state, p, 4096, NULL, NULL); + bdata.can_alloc = 1; + } _Unwind_Backtrace (unwind, &bdata); return bdata.ret;