[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] translate-all: wrapped map_exec() in #ifdef
From: |
Michael Tokarev |
Subject: |
Re: [Qemu-devel] [PATCH] translate-all: wrapped map_exec() in #ifdef |
Date: |
Mon, 03 Nov 2014 12:16:34 +0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.2.0 |
03.11.2014 11:18, SeokYeon Hwang wrote:
>> -----Original Message-----
>> From: Peter Maydell [mailto:address@hidden
>> Sent: Saturday, November 01, 2014 3:30 AM
>> To: SeokYeon Hwang
>> Cc: QEMU Developers
>> Subject: Re: [Qemu-devel] [PATCH] translate-all: wrapped map_exec() in
>> #ifdef
>>
>> On 31 October 2014 04:59, SeokYeon Hwang <address@hidden> wrote:
>>> Moved map_exec() and wrapped it in #ifdef to avoid "-Wunused-function"
>> on clang 3.4 or later.
>>>
>>> Signed-off-by: SeokYeon Hwang <address@hidden>
>>
>> I had this kind of on my todo list too, but I didn't much like the nested
>> ifdefs which are really only because of what the different implementations
>> of alloc_code_gen_buffer() happen to do. I think it would be more robust
>> to just mark the functions with the 'unused' attribute instead of relying
>> on 'inline' to implicitly do this for us:
>>
>> --- a/translate-all.c
>> +++ b/translate-all.c
>> @@ -270,14 +270,14 @@ bool cpu_restore_state(CPUState *cpu, uintptr_t
>> retaddr) }
>>
>> #ifdef _WIN32
>> -static inline void map_exec(void *addr, long size)
>> +static __attribute__((unused)) void map_exec(void *addr, long size)
>> {
>> DWORD old_protect;
>> VirtualProtect(addr, size,
>> PAGE_EXECUTE_READWRITE, &old_protect); }
In which case this function isn't used on windows? I mean, is it really
necessary to mark it as unused for win32 case?
>> #else
>> -static inline void map_exec(void *addr, long size)
>> +static __attribute__((unused)) void map_exec(void *addr, long size)
>> {
>> unsigned long start, end, page_size;
How about this instead:
--- a/translate-all.c
+++ b/translate-all.c
@@ -276,7 +276,7 @@ static inline void map_exec(void *addr, long size)
VirtualProtect(addr, size,
PAGE_EXECUTE_READWRITE, &old_protect);
}
-#else
+#elif !defined(USE_MMAP)
static inline void map_exec(void *addr, long size)
{
unsigned long start, end, page_size;
? (Untested, but just to show an idea)... ;)
Thanks,
/mjt