Related articles |
---|
Executing from dynamically allocated memory news@fx32.iad.highwinds-media.com (news) (2013-10-12) |
Re: Executing from dynamically allocated memory james.harris.1@gmail.com (James Harris) (2013-10-12) |
Re: Executing from dynamically allocated memory sebastien.fricker@gmail.com (=?UTF-8?B?U8OpYmFzdGllbiBGcmlja2Vy?=) (2013-10-12) |
Re: Executing from dynamically allocated memory chakaram@auth.gr (2013-10-12) |
Re: Executing from dynamically allocated memory blog@rivadpm.com (Alex McDonald) (2013-10-12) |
Re: Executing from dynamically allocated memory sandmann@cs.au.dk (2013-10-12) |
Re: Executing from dynamically allocated memory jkallup@web.de (Jens Kallup) (2013-10-13) |
From: | "James Harris" <james.harris.1@gmail.com> |
Newsgroups: | comp.compilers |
Date: | Sat, 12 Oct 2013 10:10:51 +0100 |
Organization: | A noiseless patient Spider |
References: | 13-10-004 |
Keywords: | architecture, code |
Posted-Date: | 12 Oct 2013 14:52:01 EDT |
"news" <news@fx32.iad.highwinds-media.com> wrote in message
> In the past, I've malloc'd memory, written machine instructions into it,
> and called the function I built there.
>
> All this on a 32-bit intel instruction set, on a Debian system.
>
> This appears no longer too work. My program gives a segmentation fault.
> The debugger tells me that the segmentation fault occurs on the first
> instruction of the called function, a
> push %ebp
> residing in malloced memory.
>
> Now it was a year or three ago that this worked. Has Linux changed in
> this respect? Is there something new I have to do to allocate executable
> writable memory for this purpose?
Possibly. As John says, this could be caused by current Linux setting the NX
bit for malloced pages. The dump may/should show if that is the case, if you
can decipher the dump.
Instead of malloc you may need to use mmap. It allows permissions to be
specified.
James
Return to the
comp.compilers page.
Search the
comp.compilers archives again.