Skip to content
This repository was archived by the owner on Apr 2, 2024. It is now read-only.

Commit 1b8128c

Browse files
* backtrace.c: Revert last change. Don't call mmap
directly. Updates ianlancetaylor#13
1 parent 012b950 commit 1b8128c

File tree

1 file changed

+11
-33
lines changed

1 file changed

+11
-33
lines changed

backtrace.c

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,12 @@ POSSIBILITY OF SUCH DAMAGE. */
3232

3333
#include "config.h"
3434

35-
#include <unistd.h>
3635
#include <sys/types.h>
3736

38-
#if !BACKTRACE_USES_MALLOC
39-
#include <sys/mman.h>
40-
#endif
41-
4237
#include "unwind.h"
4338
#include "backtrace.h"
44-
#include "backtrace-supported.h"
4539
#include "internal.h"
4640

47-
#ifndef MAP_ANONYMOUS
48-
#define MAP_ANONYMOUS MAP_ANON
49-
#endif
50-
51-
#ifndef MAP_FAILED
52-
#define MAP_FAILED ((void *)-1)
53-
#endif
54-
5541
/* The main backtrace_full routine. */
5642

5743
/* Data passed through _Unwind_Backtrace. */
@@ -118,6 +104,7 @@ backtrace_full (struct backtrace_state *state, int skip,
118104
backtrace_error_callback error_callback, void *data)
119105
{
120106
struct backtrace_data bdata;
107+
void *p;
121108

122109
bdata.skip = skip + 1;
123110
bdata.state = state;
@@ -126,25 +113,16 @@ backtrace_full (struct backtrace_state *state, int skip,
126113
bdata.data = data;
127114
bdata.ret = 0;
128115

129-
#if !BACKTRACE_USES_MALLOC
130-
{
131-
size_t pagesize;
132-
void *page;
133-
134-
/* If we can't allocate any memory at all, don't try to produce
135-
file/line information. */
136-
pagesize = getpagesize ();
137-
page = mmap (NULL, pagesize, PROT_READ | PROT_WRITE,
138-
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
139-
if (page == MAP_FAILED)
140-
bdata.can_alloc = 0;
141-
else
142-
{
143-
munmap (page, pagesize);
144-
bdata.can_alloc = 1;
145-
}
146-
}
147-
#endif
116+
/* If we can't allocate any memory at all, don't try to produce
117+
file/line information. */
118+
p = backtrace_alloc (state, 4096, NULL, NULL);
119+
if (p == NULL)
120+
bdata.can_alloc = 0;
121+
else
122+
{
123+
backtrace_free (state, p, 4096, NULL, NULL);
124+
bdata.can_alloc = 1;
125+
}
148126

149127
_Unwind_Backtrace (unwind, &bdata);
150128
return bdata.ret;

0 commit comments

Comments
 (0)