diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-02-02 09:38:38 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-02-02 21:13:22 +0300 |
commit | abc119cc604046c3d007f4364c5be19c2a1c639e (patch) | |
tree | 8ee2da9e6dcfa3af9b9dc42b7e1b2e5f9d83c591 /dyn_load.c | |
parent | 2fb8c6371ba29e8dd457e090edd5274efc8bed5a (diff) | |
download | bdwgc-abc119cc604046c3d007f4364c5be19c2a1c639e.tar.gz |
Fix SIGSEGV while marking some special proc mapping (E2K)
Issue #413 (bdwgc).
* dyn_load.c [(SCO_ELF || DGUX || HURD || NACL || __ELF__ && (LINUX
|| FREEBSD || NETBSD || OPENBSD)) && USE_PROC_FOR_LIBRARIES && E2K
&& __ptr64__] (GC_register_map_entries): Skip c2fffffff000-c30000000000
anonymous writable section; add TODO.
Diffstat (limited to 'dyn_load.c')
-rw-r--r-- | dyn_load.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -334,6 +334,12 @@ STATIC void GC_register_map_entries(const char *maps) /* Stack mapping; discard */ continue; } +# if defined(E2K) && defined(__ptr64__) + /* TODO: avoid hard-coded addresses */ + if ((word)start == 0xc2fffffff000UL + && (word)end == 0xc30000000000UL && path[0] == '\n') + continue; /* discard some special mapping */ +# endif if (path[0] == '[' && strncmp(path+1, "heap]", 5) != 0) continue; /* discard if a pseudo-path unless "[heap]" */ |