Patchwork [3/3] Use mmap() within code_gen_alloc() for OpenBSD.

login
register
mail settings
Submitter Brad
Date Dec. 21, 2010, 2:25 a.m.
Message ID <20101221022540.GC9844@rox.home.comstyle.com>
Download mbox | patch
Permalink /patch/76255/
State New
Headers show

Comments

Brad - Dec. 21, 2010, 2:25 a.m.
Signed-off-by: Brad Smith <brad@comstyle.com>

---
 exec.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Andreas Färber - Dec. 21, 2010, 1:05 p.m.
Am 21.12.2010 um 03:25 schrieb Brad:

> Signed-off-by: Brad Smith <brad@comstyle.com>
>
> ---
> exec.c |    3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/exec.c b/exec.c
> index 42a35e0..e513d16 100644
> --- a/exec.c
> +++ b/exec.c
> @@ -517,7 +517,8 @@ static void code_gen_alloc(unsigned long tb_size)
>             exit(1);
>         }
>     }
> -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ||  
> defined(__DragonFly__)
> +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
> +    || defined(__DragonFly__) || defined(__OpenBSD__)

Brad, thanks for making me aware of this part of code! Haiku is not  
handled here either, falling back to malloc(), which breaks there.

When using mmap() on Haiku, weird qemu_malloc() workarounds with BeOS  
areas are no longer necessary.

As for a fix, shouldn't we do this the autoconf way and do feature  
tests rather than testing for known platforms? I.e. #elif  
defined(HAVE_MMAP) with HAVE_MMAP getting defined by configure?

Andreas

>     {
>         int flags;
>         void *addr = NULL;
> -- 
> 1.7.3.2
Brad - Dec. 21, 2010, 2:09 p.m.
----- Original message -----
> Am 21.12.2010 um 03:25 schrieb Brad:
> 
> > Signed-off-by: Brad Smith <brad@comstyle.com>
> > 
> > ---
> > exec.c |       3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> > 
> > diff --git a/exec.c b/exec.c
> > index 42a35e0..e513d16 100644
> > --- a/exec.c
> > +++ b/exec.c
> > @@ -517,7 +517,8 @@ static void code_gen_alloc(unsigned long tb_size)
> > exit(1);
> > }
> > }
> > -#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) ||   
> > defined(__DragonFly__)
> > +#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
> > +       || defined(__DragonFly__) || defined(__OpenBSD__)
> 
> Brad, thanks for making me aware of this part of code! Haiku is not   
> handled here either, falling back to malloc(), which breaks there.
> 
> When using mmap() on Haiku, weird qemu_malloc() workarounds with BeOS   
> areas are no longer necessary.
> 
> As for a fix, shouldn't we do this the autoconf way and do feature   
> tests rather than testing for known platforms? I.e. #elif   
> defined(HAVE_MMAP) with HAVE_MMAP getting defined by configure?

Well I think it would be nice if possible to try and eliminate such hardcoded lists of Operating Systems via ifdefs and try to test for the features instead.

Patch

diff --git a/exec.c b/exec.c
index 42a35e0..e513d16 100644
--- a/exec.c
+++ b/exec.c
@@ -517,7 +517,8 @@  static void code_gen_alloc(unsigned long tb_size)
             exit(1);
         }
     }
-#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
+#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) \
+    || defined(__DragonFly__) || defined(__OpenBSD__)
     {
         int flags;
         void *addr = NULL;