From ff9190b1850720a3f4cf72a038b28bcd4c9487cf Mon Sep 17 00:00:00 2001 From: Doug Nazar Date: Sun, 25 Aug 2019 14:27:23 -0400 Subject: [PATCH] orccodemem: Mark exec mapping writable if debugging gdb needs the mapping to be writable to set breakpoints. --- orc/orccodemem.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/orc/orccodemem.c b/orc/orccodemem.c index 58bc6d1..14aadbd 100644 --- a/orc/orccodemem.c +++ b/orc/orccodemem.c @@ -200,6 +200,10 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region, int n; char *filename; mode_t mask; + int exec_prot = PROT_READ | PROT_EXEC; + + if (_orc_compiler_flag_debug) + exec_prot |= PROT_WRITE; filename = malloc (strlen ("/orcexec..") + strlen (dir) + 6 + 1); @@ -224,8 +228,7 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region, return FALSE; } - region->exec_ptr = mmap (NULL, SIZE, PROT_READ|PROT_EXEC, - MAP_SHARED, fd, 0); + region->exec_ptr = mmap (NULL, SIZE, exec_prot, MAP_SHARED, fd, 0); if (region->exec_ptr == MAP_FAILED) { ORC_WARNING("failed to create exec map"); close (fd); -- 2.7.4