[PATCH] Wrong page protection flags on FreeBSD/PPC
Krzysztof Parzyszek
kparzysz at codeaurora.org
Wed Feb 20 09:27:55 PST 2013
Hi Hal,
Do you work on Linux? I'm guessing you don't see any problems related
to this.
What do you think about this patch?
-Krzysztof
On 2/18/2013 12:17 PM, Roman Divacky wrote:
> This is also a problem on Mac OS, or quite possibly everywhere except Linux.
> There was a bug about this, you can search the bugzilla. I suggested pretty
> much the same patch.
>
> On Mon, Feb 18, 2013 at 09:02:52AM -0600, Krzysztof Parzyszek wrote:
>> The LLVM unit tests (Support) fail on FreeBSD/PPC with a segmentation
>> fault. The problem is in this part:
>> if (PFlags & MF_EXEC)
>> Memory::InvalidateInstructionCache(Result.Address, Result.Size);
>>
>> In order to use the instructions in the Invalidate... function, the
>> memory needs to be readable.
>>
>> The proposed fix is to always add PROT_READ to PROT_EXEC on FreeBSD.
>>
>> -Krzysztof
>>
>> --
>> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
>> hosted by The Linux Foundation
>
>> >From a78e54805687ad090bf8d9ec017e70a383d8320f Mon Sep 17 00:00:00 2001
>> From: Krzysztof Parzyszek <kparzysz at codeaurora.org>
>> Date: Fri, 15 Feb 2013 09:01:15 -0600
>> Subject: [PATCH] On PowerPC, the cache-flush instructions dcbf and icbi are
>> treated as loads. On FreeBSD, add PROT_READ page protection
>> flag before flushing cache.
>>
>> ---
>> lib/Support/Unix/Memory.inc | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/lib/Support/Unix/Memory.inc b/lib/Support/Unix/Memory.inc
>> index 40d6b3f..a66e3c7 100644
>> --- a/lib/Support/Unix/Memory.inc
>> +++ b/lib/Support/Unix/Memory.inc
>> @@ -51,7 +51,11 @@ int getPosixProtectionFlags(unsigned Flags) {
>> llvm::sys::Memory::MF_EXEC:
>> return PROT_READ | PROT_WRITE | PROT_EXEC;
>> case llvm::sys::Memory::MF_EXEC:
>> +#if defined(__FreeBSD__)
>> + return PROT_READ | PROT_EXEC;
>> +#else
>> return PROT_EXEC;
>> +#endif
>> default:
>> llvm_unreachable("Illegal memory protection flag specified!");
>> }
>> --
>> 1.7.6.4
>>
>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
More information about the llvm-commits
mailing list