diff options
author | Ian Lance Taylor <iant@golang.org> | 2018-04-17 17:58:05 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-04-17 17:58:05 +0000 |
commit | 21070494d80ebf9586ecf2fe9a3c24d34329e4db (patch) | |
tree | f60b3de730ae33dcb541cc3b57e9983738b331e5 /libbacktrace/backtrace.c | |
parent | c36af1b4da7efda503da001274ec514b06324a78 (diff) | |
download | gcc-21070494d80ebf9586ecf2fe9a3c24d34329e4db.zip gcc-21070494d80ebf9586ecf2fe9a3c24d34329e4db.tar.gz gcc-21070494d80ebf9586ecf2fe9a3c24d34329e4db.tar.bz2 |
backtrace.c: Revert last two changes.
* backtrace.c: Revert last two changes. Don't call mmap
directly.
From-SVN: r259440
Diffstat (limited to 'libbacktrace/backtrace.c')
-rw-r--r-- | libbacktrace/backtrace.c | 45 |
1 files changed, 11 insertions, 34 deletions
diff --git a/libbacktrace/backtrace.c b/libbacktrace/backtrace.c index 5bcd370..f8e3dc5 100644 --- a/libbacktrace/backtrace.c +++ b/libbacktrace/backtrace.c @@ -32,27 +32,12 @@ POSSIBILITY OF SUCH DAMAGE. */ #include "config.h" -#include <unistd.h> #include <sys/types.h> -#include "backtrace-supported.h" - -#if !BACKTRACE_USES_MALLOC -#include <sys/mman.h> -#endif - #include "unwind.h" #include "backtrace.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. */ @@ -119,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; @@ -127,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; |