pkgsrc-WIP-changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
llvm-netbsd: Drop local patches
Module Name: pkgsrc-wip
Committed By: Kamil Rytarowski <n54%gmx.com@localhost>
Pushed By: kamil
Date: Thu Aug 3 19:26:06 2017 +0200
Changeset: 156824a707a8e29e268210be3895f73738289d9d
Modified Files:
llvm-netbsd/distinfo
Removed Files:
llvm-netbsd/patches/patch-include_llvm_Support_Memory.h
llvm-netbsd/patches/patch-lib_Support_Unix_Memory.inc
Log Message:
llvm-netbsd: Drop local patches
LLVM JIT is waiting for upstream feedback/review.
Temporarily remove it locally.
Sponsored by <The NetBSD Foundation>
To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=156824a707a8e29e268210be3895f73738289d9d
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
diffstat:
llvm-netbsd/distinfo | 2 -
.../patches/patch-include_llvm_Support_Memory.h | 88 ---------------
.../patches/patch-lib_Support_Unix_Memory.inc | 121 ---------------------
3 files changed, 211 deletions(-)
diffs:
diff --git a/llvm-netbsd/distinfo b/llvm-netbsd/distinfo
index 623e1142e6..7931384fd5 100644
--- a/llvm-netbsd/distinfo
+++ b/llvm-netbsd/distinfo
@@ -12,5 +12,3 @@ Size (libcxx-3.6.2.src.tar.xz) = 944020 bytes
SHA1 (llvm-3.6.2.src.tar.xz) = 7a00257eb2bc9431e4c77c3a36b033072c54bc7e
RMD160 (llvm-3.6.2.src.tar.xz) = 521cbc5fe2925ea3c6e90c7a31f752a04045c972
Size (llvm-3.6.2.src.tar.xz) = 12802380 bytes
-SHA1 (patch-include_llvm_Support_Memory.h) = eb54dbd4068b686115bd775892754f6f96e49e4d
-SHA1 (patch-lib_Support_Unix_Memory.inc) = 692fbd706767efc6675163ca714f8d2d89ea0d68
diff --git a/llvm-netbsd/patches/patch-include_llvm_Support_Memory.h b/llvm-netbsd/patches/patch-include_llvm_Support_Memory.h
deleted file mode 100644
index d17b5dc355..0000000000
--- a/llvm-netbsd/patches/patch-include_llvm_Support_Memory.h
+++ /dev/null
@@ -1,88 +0,0 @@
-$NetBSD$
-
---- include/llvm/Support/Memory.h.orig 2017-07-05 18:41:26.000000000 +0000
-+++ include/llvm/Support/Memory.h
-@@ -28,14 +28,16 @@ namespace sys {
- /// @brief Memory block abstraction.
- class MemoryBlock {
- public:
-- MemoryBlock() : Address(nullptr), Size(0) { }
-- MemoryBlock(void *addr, size_t size) : Address(addr), Size(size) { }
-+ MemoryBlock() : Address(nullptr), AuxAddress(nullptr), Size(0) { }
-+ MemoryBlock(void *addr, size_t size) : Address(addr), AuxAddress(nullptr), Size(size) { }
- void *base() const { return Address; }
- size_t size() const { return Size; }
-
- private:
- void *Address; ///< Address of first byte of memory area
-+ void *AuxAddress; ///< Auxilary Address of first byte of memory area, this is required implementation detail on some platforms
- size_t Size; ///< Size, in bytes of the memory area
-+ int MaxProtection;///< Maximum allowable Protection, of memory area
- friend class Memory;
- };
-
-@@ -61,13 +63,15 @@ namespace sys {
- /// \p Flags is used to set the initial protection flags for the block
- /// of the memory.
- /// \p EC [out] returns an object describing any error that occurs.
-+ /// \p MaxFlags is used to set the maximal protection flags for the block
-+ /// of the memory. This value is OR'ed with \p Flags.
- ///
- /// This method may allocate more than the number of bytes requested. The
- /// actual number of bytes allocated is indicated in the returned
- /// MemoryBlock.
- ///
- /// The start of the allocated block must be aligned with the
-- /// system allocation granularity (64K on Windows, page size on Linux).
-+ /// system allocation granularity (64K on Windows, page size on Linux, etc).
- /// If the address following \p NearBlock is not so aligned, it will be
- /// rounded up to the next allocation granularity boundary.
- ///
-@@ -78,7 +82,8 @@ namespace sys {
- static MemoryBlock allocateMappedMemory(size_t NumBytes,
- const MemoryBlock *const NearBlock,
- unsigned Flags,
-- std::error_code &EC);
-+ std::error_code &EC,
-+ unsigned MaxFlags = 0);
-
- /// This method releases a block of memory that was allocated with the
- /// allocateMappedMemory method. It should not be used to release any
-@@ -102,6 +107,9 @@ namespace sys {
- /// with the operating system (i.e. MF_READ | MF_WRITE on Windows) and the
- /// target architecture (i.e. MF_WRITE -> MF_READ | MF_WRITE on i386).
- ///
-+ /// The specified \p Flags parameter must by allowed by the maximal
-+ /// protection block of the memory.
-+ ///
- /// \r error_success if the function was successful, or an error_code
- /// describing the failure if an error occurred.
- ///
-@@ -132,6 +140,27 @@ namespace sys {
- /// @brief Release Read/Write/Execute memory.
- static bool ReleaseRWX(MemoryBlock &block, std::string *ErrMsg = nullptr);
-
-+ /// This method allocates a block of Read/Write and future option for
-+ /// Executable memory that is
-+ /// suitable for executing dynamically generated code (e.g. JIT). An
-+ /// attempt to allocate \p NumBytes bytes of virtual memory is made.
-+ /// \p NearBlock may point to an existing allocation in which case
-+ /// an attempt is made to allocate more memory near the existing block.
-+ ///
-+ /// This function should be combined with makeExecutable.
-+ ///
-+ /// \r a non-null MemoryBlock if the function was successful,
-+ /// otherwise a null MemoryBlock is with \p EC describing the error.
-+ ///
-+ /// @brief Allocate Read/Write with future option for Execute memory.
-+ static MemoryBlock allocateJITExecutableMemory(size_t NumBytes,
-+ const MemoryBlock *NearBlock,
-+ std::error_code &EC);
-+
-+ /// makeExecutable - Mark the page containing a range of addresses
-+ /// as executable.
-+ static std::error_code makeExecutable(const MemoryBlock &Block);
-+
- /// InvalidateInstructionCache - Before the JIT can run a block of code
- /// that has been emitted it must invalidate the instruction cache on some
- /// platforms.
diff --git a/llvm-netbsd/patches/patch-lib_Support_Unix_Memory.inc b/llvm-netbsd/patches/patch-lib_Support_Unix_Memory.inc
deleted file mode 100644
index 9a44bdc431..0000000000
--- a/llvm-netbsd/patches/patch-lib_Support_Unix_Memory.inc
+++ /dev/null
@@ -1,121 +0,0 @@
-$NetBSD$
-
---- lib/Support/Unix/Memory.inc.orig 2017-07-05 18:38:14.000000000 +0000
-+++ lib/Support/Unix/Memory.inc
-@@ -82,7 +82,8 @@ MemoryBlock
- Memory::allocateMappedMemory(size_t NumBytes,
- const MemoryBlock *const NearBlock,
- unsigned PFlags,
-- std::error_code &EC) {
-+ std::error_code &EC,
-+ unsigned MaxPFlags) {
- EC = std::error_code();
- if (NumBytes == 0)
- return MemoryBlock();
-@@ -102,25 +103,103 @@ Memory::allocateMappedMemory(size_t NumB
-
- int Protect = getPosixProtectionFlags(PFlags);
-
-+ MaxPFlags |= PFlags;
-+
-+ // NetBSD with PaX MPROTECT must reserve additional allowable protection bits
-+#if defined(__NetBSD__) && defined(PROT_MPROTECT)
-+ Protect |= PROT_MPROTECT(getPosixProtectionFlags(MaxPFlags & (~PFlags)));
-+#endif
-+
- // Use any near hint and the page size to set a page-aligned starting address
- uintptr_t Start = NearBlock ? reinterpret_cast<uintptr_t>(NearBlock->base()) +
- NearBlock->size() : 0;
- if (Start && Start % PageSize)
- Start += PageSize - Start % PageSize;
-
-- void *Addr = ::mmap(reinterpret_cast<void*>(Start), PageSize*NumPages,
-- Protect, MMFlags, fd, 0);
-+ const bool WXmapping = ((PFlags & (MF_WRITE | MF_EXEC)) == (MF_WRITE | MF_EXEC));
-+
-+ void *Addr;
-+
-+ if (WXmapping) {
-+#if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
-+ Addr = ::mmap(reinterpret_cast<void*>(Start), PageSize*NumPages,
-+ Protect & ~PROT_WRITE, MMFlags, fd, 0);
-+#elif defined(__NetBSD__) && defined(PROT_MPROTECT)
-+ Addr = ::mmap(reinterpret_cast<void*>(Start), PageSize*NumPages,
-+ Protect & ~PROT_EXEC, MMFlags, fd, 0);
-+#else
-+ Addr = ::mmap(reinterpret_cast<void*>(Start), PageSize*NumPages,
-+ Protect, MMFlags, fd, 0);
-+#endif
-+ } else {
-+ Addr = ::mmap(reinterpret_cast<void*>(Start), PageSize*NumPages,
-+ Protect, MMFlags, fd, 0);
-+ }
-+
- if (Addr == MAP_FAILED) {
- if (NearBlock) //Try again without a near hint
-- return allocateMappedMemory(NumBytes, nullptr, PFlags, EC);
-+ return allocateMappedMemory(NumBytes, nullptr, PFlags, EC, MaxPFlags);
-
- EC = std::error_code(errno, std::generic_category());
- return MemoryBlock();
- }
-
-+#if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
-+ if (WXmapping) {
-+ kern_return_t kr = vm_protect(mach_task_self(), (vm_address_t)Addr,
-+ (vm_size_t)(PageSize*NumPages), 0,
-+ VM_PROT_READ | VM_PROT_EXECUTE | VM_PROT_COPY);
-+ if (KERN_SUCCESS != kr) {
-+ // is errno set?
-+ EC = std::error_code(errno, std::generic_category());
-+ return MemoryBlock();
-+ }
-+
-+ kr = vm_protect(mach_task_self(), (vm_address_t)pa,
-+ (vm_size_t)(PageSize*NumPages), 0,
-+ VM_PROT_READ | VM_PROT_WRITE);
-+ if (KERN_SUCCESS != kr) {
-+ // is errno set?
-+ EC = std::error_code(errno, std::generic_category());
-+ return MemoryBlock();
-+ }
-+ }
-+#elif defined(__NetBSD__) && defined(PROT_MPROTECT)
-+ void *codeseg = nullptr;
-+ if (WXmapping) {
-+ codeseg =
-+ ::mremap(Addr, PageSize * NumPages, NULL, PageSize * NumPages,
-+ MAP_REMAPDUP);
-+ if (codeseg == MAP_FAILED) {
-+ ::munmap(Addr, PageSize * NumPages);
-+
-+ if (NearBlock) // Try again without a near hint
-+ return allocateMappedMemory(NumBytes, nullptr, PFlags, EC, MaxPFlags);
-+
-+ EC = std::error_code(errno, std::generic_category());
-+ return MemoryBlock();
-+ }
-+ if (::mprotect(codeseg, PageSize * NumPages, PROT_READ | PROT_EXEC) == -1) {
-+ ::munmap(Addr, PageSize * NumPages);
-+ ::munmap(codeseg, PageSize * NumPages);
-+ if (NearBlock) // Try again without a near hint
-+ return allocateMappedMemory(NumBytes, nullptr, PFlags, EC, MaxPFlags);
-+
-+ EC = std::error_code(errno, std::generic_category());
-+ return MemoryBlock();
-+ }
-+ }
-+#endif
-+
- MemoryBlock Result;
- Result.Address = Addr;
-+#if defined(__NetBSD__) && defined(PROT_MPROTECT)
-+ Result.AuxAddress = codeseg;
-+#else
-+ Result.AuxAddress = nullptr;
-+#endif
- Result.Size = NumPages*PageSize;
-+ Result.MaxProtection = MaxPFlags;
-
- if (PFlags & MF_EXEC)
- Memory::InvalidateInstructionCache(Result.Address, Result.Size);
Home |
Main Index |
Thread Index |
Old Index