Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 093ba259 authored by Nick Kralevich's avatar Nick Kralevich
Browse files

make libacc run with execute stack protections enabled.

libacc was allocating memory using malloc for executable pages.
When running on a system where the stack and heap are not
executable, using malloc for executable pages will result in
a segfault.

This change modifies libacc to allow the code to run, even
if the system is running with executable stack and heap disabled.

Change-Id: Ia74e3d83750c09b7eefd865ff059db920093040d
parent 33680b10
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -23,10 +23,7 @@

#include <cutils/hashmap.h>

#if defined(__i386__)
#include <sys/mman.h>
#endif


#if defined(__arm__)
#define DEFAULT_ARM_CODEGEN
@@ -230,7 +227,7 @@ class Compiler : public ErrorSink {

        void release() {
            if (pProgramBase != 0) {
                free(pProgramBase);
                munmap(pProgramBase, mSize);
                pProgramBase = 0;
            }
        }
@@ -263,7 +260,9 @@ class Compiler : public ErrorSink {
        virtual void init(int size) {
            release();
            mSize = size;
            pProgramBase = (char*) calloc(1, size);
            pProgramBase = (char*) mmap(NULL, size, 
                PROT_EXEC | PROT_READ | PROT_WRITE, 
                MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
            ind = pProgramBase;
        }