Date: Tuesday, January 7, 2014 @ 22:29:33 Author: heftig Revision: 103552
archrelease: copy trunk to community-staging-i686, community-staging-x86_64 Added: rubinius/repos/community-staging-i686/ rubinius/repos/community-staging-i686/PKGBUILD (from rev 103551, rubinius/trunk/PKGBUILD) rubinius/repos/community-staging-i686/gemrc (from rev 103551, rubinius/trunk/gemrc) rubinius/repos/community-staging-i686/llvm34.patch (from rev 103551, rubinius/trunk/llvm34.patch) rubinius/repos/community-staging-x86_64/ rubinius/repos/community-staging-x86_64/PKGBUILD (from rev 103551, rubinius/trunk/PKGBUILD) rubinius/repos/community-staging-x86_64/gemrc (from rev 103551, rubinius/trunk/gemrc) rubinius/repos/community-staging-x86_64/llvm34.patch (from rev 103551, rubinius/trunk/llvm34.patch) ---------------------------------------+ community-staging-i686/PKGBUILD | 89 +++++++++++++++ community-staging-i686/gemrc | 5 community-staging-i686/llvm34.patch | 182 ++++++++++++++++++++++++++++++++ community-staging-x86_64/PKGBUILD | 89 +++++++++++++++ community-staging-x86_64/gemrc | 5 community-staging-x86_64/llvm34.patch | 182 ++++++++++++++++++++++++++++++++ 6 files changed, 552 insertions(+) Copied: rubinius/repos/community-staging-i686/PKGBUILD (from rev 103551, rubinius/trunk/PKGBUILD) =================================================================== --- community-staging-i686/PKGBUILD (rev 0) +++ community-staging-i686/PKGBUILD 2014-01-07 21:29:33 UTC (rev 103552) @@ -0,0 +1,89 @@ +# $Id$ +# Maintainer: Jan Alexander Steffens (heftig) <jan.steff...@gmail.com> + +pkgbase=rubinius +pkgname=(rubinius rubinius-ruby) +pkgver=2.2.3 +pkgrel=2 +pkgdesc="Ruby runtime written in Ruby, designed for concurrency" +arch=(i686 x86_64) +url="http://rubini.us" +license=(custom) +depends=(llvm-libs libffi openssl libyaml) +makedepends=(llvm rubinius-ruby) +options=(!emptydirs) +source=(http://releases.rubini.us/${pkgbase}-${pkgver}.tar.bz2 + gemrc dirs.patch llvm34.patch) +sha256sums=('b3426aa6996420f1d9d8a7926a94160b84d8bdf725793c64462b27b74f2f2acf' + '4bb7eb2fe66e396ed16b589cdb656831407b39ad4e138d88536754c0448ac614' + '93f3918dc2a5679e281e724f9b3cb712ffa784c1e52e6fa7ce75f74ce6655a66' + 'a24850f34a8a308ce4a4e1da12d75a669095a38b6b5da5082eb4d3bd41770095') + +prepare() { + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + patch -Np1 -i ../dirs.patch + patch -Np1 -i ../llvm34.patch + + mkdir -p "$GEM_HOME" + gem install --no-user-install -N vendor/cache/bundler-*.gem + + "$GEM_HOME/bin/bundle" install --local +} + +build() { + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + ./configure --prefix=/usr \ + --mandir=/usr/share/man \ + --includedir=/usr/include/rubinius \ + --appdir=/usr/lib/rubinius \ + --gemsdir=/usr/lib/rubinius/gems \ + --preserve-prefix \ + --llvm-shared \ + --without-rpath + rake build +} + +check() { + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + rake vm:test || : +} + +package_rubinius() { + optdepends=('ruby-docs: Ruby documentation') + + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + DESTDIR="$pkgdir" rake install + + mkdir -p "$pkgdir/usr/share/ri" + ln -s 2.0.0 "$pkgdir/usr/share/ri/2.1" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/rubinius/LICENSE" + +### Split rubinius-ruby + mkdir -p "$srcdir/ruby/usr/bin" + for _f in "$pkgdir"/usr/bin/*; do + [[ $_f == */rbx ]] && continue + mv $_f "$srcdir/ruby/usr/bin" + done +} + +package_rubinius-ruby() { + pkgdesc="Ruby compat for Rubinius" + depends=(rubinius) + provides=(ruby) + conflicts=(ruby) + backup=(etc/gemrc) + + mv ruby/* "$pkgdir" + install -Dm644 gemrc "$pkgdir/etc/gemrc" + install -d "$pkgdir/usr/share/licenses/rubinius-ruby" + ln -s ../rubinius/LICENSE "$pkgdir/usr/share/licenses/rubinius-ruby/LICENSE" +} Copied: rubinius/repos/community-staging-i686/gemrc (from rev 103551, rubinius/trunk/gemrc) =================================================================== --- community-staging-i686/gemrc (rev 0) +++ community-staging-i686/gemrc 2014-01-07 21:29:33 UTC (rev 103552) @@ -0,0 +1,5 @@ +# Read about the gemrc format at http://docs.rubygems.org/read/chapter/11 + +# --user-install is used to install to $HOME/.gem/ by default since we want to separate +# pacman installed gems and gem installed gems +gem: --user-install Copied: rubinius/repos/community-staging-i686/llvm34.patch (from rev 103551, rubinius/trunk/llvm34.patch) =================================================================== --- community-staging-i686/llvm34.patch (rev 0) +++ community-staging-i686/llvm34.patch 2014-01-07 21:29:33 UTC (rev 103552) @@ -0,0 +1,182 @@ +diff --git i/vm/llvm/disassembler.cpp w/vm/llvm/disassembler.cpp +index 79c74ff..b3ea424 100644 +--- i/vm/llvm/disassembler.cpp ++++ w/vm/llvm/disassembler.cpp +@@ -46,20 +46,27 @@ namespace rubinius { + #if RBX_LLVM_API_VER > 300 + llvm::TargetOptions options; + options.NoFramePointerElim = true; ++#if RBX_LLVM_API_VER < 304 + options.NoFramePointerElimNonLeaf = true; ++#endif + target_machine = target->createTargetMachine(host, llvm::sys::getHostCPUName(), "", options); + #else + target_machine = target->createTargetMachine(host, llvm::sys::getHostCPUName(), ""); + #endif + + sub_target = target->createMCSubtargetInfo(host, llvm::sys::getHostCPUName(), ""); +- asm_info = target->createMCAsmInfo(host); + + #if RBX_LLVM_API_VER > 300 + instr_info = target->createMCInstrInfo(); + reg_info = target->createMCRegInfo(host); + #endif + ++#if RBX_LLVM_API_VER > 303 ++ asm_info = target->createMCAsmInfo(*reg_info, host); ++#else ++ asm_info = target->createMCAsmInfo(host); ++#endif ++ + if(asm_info) { + disassembler = target->createMCDisassembler(*sub_target); + memory_object = new JITMemoryObject((const uint8_t*)buffer, (uint64_t) size); +diff --git i/vm/llvm/jit_builder.cpp w/vm/llvm/jit_builder.cpp +index 652350f..c479aab 100644 +--- i/vm/llvm/jit_builder.cpp ++++ w/vm/llvm/jit_builder.cpp +@@ -56,12 +56,21 @@ namespace jit { + "", "rubinius", true, "", 0); + DIFile file = debug_builder().createFile(file_str, ""); + ++#if RBX_LLVM_API_VER > 303 ++ DIType dummy_return_type = debug_builder().createNullPtrType(); ++ Value* dummy_signature[] = { ++ &*dummy_return_type, ++ }; ++ DICompositeType dummy_subroutine_type = debug_builder().createSubroutineType(file, ++ debug_builder().getOrCreateArray(dummy_signature)); ++#else + DIType dummy_return_type = debug_builder().createNullPtrType("dummy type"); + Value* dummy_signature[] = { + &*dummy_return_type, + }; + DIType dummy_subroutine_type = debug_builder().createSubroutineType(file, + debug_builder().getOrCreateArray(dummy_signature)); ++#endif + + #if RBX_LLVM_API_VER > 300 + DISubprogram subprogram = debug_builder().createFunction(file, "", "", +diff --git i/vm/llvm/jit_context.cpp w/vm/llvm/jit_context.cpp +index e555adb..594a63a 100644 +--- i/vm/llvm/jit_context.cpp ++++ w/vm/llvm/jit_context.cpp +@@ -84,7 +84,9 @@ namespace rubinius { + #if RBX_LLVM_API_VER > 300 + llvm::TargetOptions opts; + opts.NoFramePointerElim = true; ++#if RBX_LLVM_API_VER < 304 + opts.NoFramePointerElimNonLeaf = true; ++#endif + opts.JITEmitDebugInfo = true; + + factory.setTargetOptions(opts); +diff --git i/vm/llvm/jit_memory_manager.hpp w/vm/llvm/jit_memory_manager.hpp +index 8a58a09..7205f89 100644 +--- i/vm/llvm/jit_memory_manager.hpp ++++ w/vm/llvm/jit_memory_manager.hpp +@@ -202,7 +202,7 @@ namespace jit { + + public: + RubiniusJITMemoryManager(); +- ~RubiniusJITMemoryManager(); ++ virtual ~RubiniusJITMemoryManager(); + + /// allocateNewSlab - Allocates a new MemoryBlock and remembers it as the + /// last slab it allocated, so that subsequent allocations follow it. +@@ -356,8 +356,13 @@ namespace jit { + } + + /// allocateCodeSection - Allocate memory for a code section. ++#if RBX_LLVM_API_VER > 303 ++ virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName) { ++#else + uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, + unsigned SectionID) { ++#endif + utilities::thread::SpinLock::LockGuard guard(lock_); + // Grow the required block size to account for the block header + Size += sizeof(*CurBlock); +@@ -397,11 +402,21 @@ namespace jit { + } + + /// allocateDataSection - Allocate memory for a data section. +- uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, +- unsigned SectionID) { ++ /// TODO: currently IsReadOnly is ignored. ++#if RBX_LLVM_API_VER > 303 ++ virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName, ++ bool IsReadOnly) { + utilities::thread::SpinLock::LockGuard guard(lock_); + return (uint8_t*)DataAllocator.Allocate(Size, Alignment); + } ++#else ++ uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, bool IsReadOnly) { ++ utilities::thread::SpinLock::LockGuard guard(lock_); ++ return (uint8_t*)DataAllocator.Allocate(Size, Alignment); ++ } ++#endif + + /// startExceptionTable - Use startFunctionBody to allocate memory for the + /// function's exception table. +@@ -495,7 +510,7 @@ namespace jit { + , GOTBase(NULL) + {} + +- ~RubiniusRequestJITMemoryManager() { ++ virtual ~RubiniusRequestJITMemoryManager() { + if(GOTBase) delete[] GOTBase; + } + +@@ -504,17 +519,32 @@ namespace jit { + return mgr_->getPointerToNamedFunction(Name, AbortOnFailure); + } + ++#if RBX_LLVM_API_VER >= 304 ++ virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName) { ++ return mgr_->allocateCodeSection(Size, Alignment, SectionID, ++ SectionName); ++ } ++#else + uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, + unsigned SectionID) { + return mgr_->allocateCodeSection(Size, Alignment, SectionID); + } ++#endif + + /// allocateDataSection - Allocate memory for a data section. +-#if RBX_LLVM_API_VER >= 303 ++#if RBX_LLVM_API_VER >= 304 ++ virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName, ++ bool IsReadOnly) { ++ return mgr_->allocateDataSection(Size, Alignment, SectionID, ++ SectionName, IsReadOnly); ++ } ++#elif RBX_LLVM_API_VER >= 303 + uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, + unsigned SectionID, bool IsReadOnly) { +- // TODO: currently IsReadOnly is ignored. +- return mgr_->allocateDataSection(Size, Alignment, SectionID); ++ return mgr_->allocateDataSection(Size, Alignment, SectionID, ++ IsReadOnly); + } + #else + uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, +@@ -601,6 +631,12 @@ namespace jit { + void resetGeneratedFunction() { + GeneratedFunction = NULL; + } ++ ++#if RBX_LLVM_API_VER > 303 ++ virtual bool finalizeMemory(std::string* ErrMsg = 0) { ++ return false; ++ } ++#endif + }; + + Copied: rubinius/repos/community-staging-x86_64/PKGBUILD (from rev 103551, rubinius/trunk/PKGBUILD) =================================================================== --- community-staging-x86_64/PKGBUILD (rev 0) +++ community-staging-x86_64/PKGBUILD 2014-01-07 21:29:33 UTC (rev 103552) @@ -0,0 +1,89 @@ +# $Id$ +# Maintainer: Jan Alexander Steffens (heftig) <jan.steff...@gmail.com> + +pkgbase=rubinius +pkgname=(rubinius rubinius-ruby) +pkgver=2.2.3 +pkgrel=2 +pkgdesc="Ruby runtime written in Ruby, designed for concurrency" +arch=(i686 x86_64) +url="http://rubini.us" +license=(custom) +depends=(llvm-libs libffi openssl libyaml) +makedepends=(llvm rubinius-ruby) +options=(!emptydirs) +source=(http://releases.rubini.us/${pkgbase}-${pkgver}.tar.bz2 + gemrc dirs.patch llvm34.patch) +sha256sums=('b3426aa6996420f1d9d8a7926a94160b84d8bdf725793c64462b27b74f2f2acf' + '4bb7eb2fe66e396ed16b589cdb656831407b39ad4e138d88536754c0448ac614' + '93f3918dc2a5679e281e724f9b3cb712ffa784c1e52e6fa7ce75f74ce6655a66' + 'a24850f34a8a308ce4a4e1da12d75a669095a38b6b5da5082eb4d3bd41770095') + +prepare() { + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + patch -Np1 -i ../dirs.patch + patch -Np1 -i ../llvm34.patch + + mkdir -p "$GEM_HOME" + gem install --no-user-install -N vendor/cache/bundler-*.gem + + "$GEM_HOME/bin/bundle" install --local +} + +build() { + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + ./configure --prefix=/usr \ + --mandir=/usr/share/man \ + --includedir=/usr/include/rubinius \ + --appdir=/usr/lib/rubinius \ + --gemsdir=/usr/lib/rubinius/gems \ + --preserve-prefix \ + --llvm-shared \ + --without-rpath + rake build +} + +check() { + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + rake vm:test || : +} + +package_rubinius() { + optdepends=('ruby-docs: Ruby documentation') + + export GEM_HOME="$srcdir/gemdir" LANG="en_US.UTF-8" + cd $pkgbase-$pkgver + + DESTDIR="$pkgdir" rake install + + mkdir -p "$pkgdir/usr/share/ri" + ln -s 2.0.0 "$pkgdir/usr/share/ri/2.1" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/rubinius/LICENSE" + +### Split rubinius-ruby + mkdir -p "$srcdir/ruby/usr/bin" + for _f in "$pkgdir"/usr/bin/*; do + [[ $_f == */rbx ]] && continue + mv $_f "$srcdir/ruby/usr/bin" + done +} + +package_rubinius-ruby() { + pkgdesc="Ruby compat for Rubinius" + depends=(rubinius) + provides=(ruby) + conflicts=(ruby) + backup=(etc/gemrc) + + mv ruby/* "$pkgdir" + install -Dm644 gemrc "$pkgdir/etc/gemrc" + install -d "$pkgdir/usr/share/licenses/rubinius-ruby" + ln -s ../rubinius/LICENSE "$pkgdir/usr/share/licenses/rubinius-ruby/LICENSE" +} Copied: rubinius/repos/community-staging-x86_64/gemrc (from rev 103551, rubinius/trunk/gemrc) =================================================================== --- community-staging-x86_64/gemrc (rev 0) +++ community-staging-x86_64/gemrc 2014-01-07 21:29:33 UTC (rev 103552) @@ -0,0 +1,5 @@ +# Read about the gemrc format at http://docs.rubygems.org/read/chapter/11 + +# --user-install is used to install to $HOME/.gem/ by default since we want to separate +# pacman installed gems and gem installed gems +gem: --user-install Copied: rubinius/repos/community-staging-x86_64/llvm34.patch (from rev 103551, rubinius/trunk/llvm34.patch) =================================================================== --- community-staging-x86_64/llvm34.patch (rev 0) +++ community-staging-x86_64/llvm34.patch 2014-01-07 21:29:33 UTC (rev 103552) @@ -0,0 +1,182 @@ +diff --git i/vm/llvm/disassembler.cpp w/vm/llvm/disassembler.cpp +index 79c74ff..b3ea424 100644 +--- i/vm/llvm/disassembler.cpp ++++ w/vm/llvm/disassembler.cpp +@@ -46,20 +46,27 @@ namespace rubinius { + #if RBX_LLVM_API_VER > 300 + llvm::TargetOptions options; + options.NoFramePointerElim = true; ++#if RBX_LLVM_API_VER < 304 + options.NoFramePointerElimNonLeaf = true; ++#endif + target_machine = target->createTargetMachine(host, llvm::sys::getHostCPUName(), "", options); + #else + target_machine = target->createTargetMachine(host, llvm::sys::getHostCPUName(), ""); + #endif + + sub_target = target->createMCSubtargetInfo(host, llvm::sys::getHostCPUName(), ""); +- asm_info = target->createMCAsmInfo(host); + + #if RBX_LLVM_API_VER > 300 + instr_info = target->createMCInstrInfo(); + reg_info = target->createMCRegInfo(host); + #endif + ++#if RBX_LLVM_API_VER > 303 ++ asm_info = target->createMCAsmInfo(*reg_info, host); ++#else ++ asm_info = target->createMCAsmInfo(host); ++#endif ++ + if(asm_info) { + disassembler = target->createMCDisassembler(*sub_target); + memory_object = new JITMemoryObject((const uint8_t*)buffer, (uint64_t) size); +diff --git i/vm/llvm/jit_builder.cpp w/vm/llvm/jit_builder.cpp +index 652350f..c479aab 100644 +--- i/vm/llvm/jit_builder.cpp ++++ w/vm/llvm/jit_builder.cpp +@@ -56,12 +56,21 @@ namespace jit { + "", "rubinius", true, "", 0); + DIFile file = debug_builder().createFile(file_str, ""); + ++#if RBX_LLVM_API_VER > 303 ++ DIType dummy_return_type = debug_builder().createNullPtrType(); ++ Value* dummy_signature[] = { ++ &*dummy_return_type, ++ }; ++ DICompositeType dummy_subroutine_type = debug_builder().createSubroutineType(file, ++ debug_builder().getOrCreateArray(dummy_signature)); ++#else + DIType dummy_return_type = debug_builder().createNullPtrType("dummy type"); + Value* dummy_signature[] = { + &*dummy_return_type, + }; + DIType dummy_subroutine_type = debug_builder().createSubroutineType(file, + debug_builder().getOrCreateArray(dummy_signature)); ++#endif + + #if RBX_LLVM_API_VER > 300 + DISubprogram subprogram = debug_builder().createFunction(file, "", "", +diff --git i/vm/llvm/jit_context.cpp w/vm/llvm/jit_context.cpp +index e555adb..594a63a 100644 +--- i/vm/llvm/jit_context.cpp ++++ w/vm/llvm/jit_context.cpp +@@ -84,7 +84,9 @@ namespace rubinius { + #if RBX_LLVM_API_VER > 300 + llvm::TargetOptions opts; + opts.NoFramePointerElim = true; ++#if RBX_LLVM_API_VER < 304 + opts.NoFramePointerElimNonLeaf = true; ++#endif + opts.JITEmitDebugInfo = true; + + factory.setTargetOptions(opts); +diff --git i/vm/llvm/jit_memory_manager.hpp w/vm/llvm/jit_memory_manager.hpp +index 8a58a09..7205f89 100644 +--- i/vm/llvm/jit_memory_manager.hpp ++++ w/vm/llvm/jit_memory_manager.hpp +@@ -202,7 +202,7 @@ namespace jit { + + public: + RubiniusJITMemoryManager(); +- ~RubiniusJITMemoryManager(); ++ virtual ~RubiniusJITMemoryManager(); + + /// allocateNewSlab - Allocates a new MemoryBlock and remembers it as the + /// last slab it allocated, so that subsequent allocations follow it. +@@ -356,8 +356,13 @@ namespace jit { + } + + /// allocateCodeSection - Allocate memory for a code section. ++#if RBX_LLVM_API_VER > 303 ++ virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName) { ++#else + uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, + unsigned SectionID) { ++#endif + utilities::thread::SpinLock::LockGuard guard(lock_); + // Grow the required block size to account for the block header + Size += sizeof(*CurBlock); +@@ -397,11 +402,21 @@ namespace jit { + } + + /// allocateDataSection - Allocate memory for a data section. +- uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, +- unsigned SectionID) { ++ /// TODO: currently IsReadOnly is ignored. ++#if RBX_LLVM_API_VER > 303 ++ virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName, ++ bool IsReadOnly) { + utilities::thread::SpinLock::LockGuard guard(lock_); + return (uint8_t*)DataAllocator.Allocate(Size, Alignment); + } ++#else ++ uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, bool IsReadOnly) { ++ utilities::thread::SpinLock::LockGuard guard(lock_); ++ return (uint8_t*)DataAllocator.Allocate(Size, Alignment); ++ } ++#endif + + /// startExceptionTable - Use startFunctionBody to allocate memory for the + /// function's exception table. +@@ -495,7 +510,7 @@ namespace jit { + , GOTBase(NULL) + {} + +- ~RubiniusRequestJITMemoryManager() { ++ virtual ~RubiniusRequestJITMemoryManager() { + if(GOTBase) delete[] GOTBase; + } + +@@ -504,17 +519,32 @@ namespace jit { + return mgr_->getPointerToNamedFunction(Name, AbortOnFailure); + } + ++#if RBX_LLVM_API_VER >= 304 ++ virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName) { ++ return mgr_->allocateCodeSection(Size, Alignment, SectionID, ++ SectionName); ++ } ++#else + uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, + unsigned SectionID) { + return mgr_->allocateCodeSection(Size, Alignment, SectionID); + } ++#endif + + /// allocateDataSection - Allocate memory for a data section. +-#if RBX_LLVM_API_VER >= 303 ++#if RBX_LLVM_API_VER >= 304 ++ virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, ++ unsigned SectionID, StringRef SectionName, ++ bool IsReadOnly) { ++ return mgr_->allocateDataSection(Size, Alignment, SectionID, ++ SectionName, IsReadOnly); ++ } ++#elif RBX_LLVM_API_VER >= 303 + uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, + unsigned SectionID, bool IsReadOnly) { +- // TODO: currently IsReadOnly is ignored. +- return mgr_->allocateDataSection(Size, Alignment, SectionID); ++ return mgr_->allocateDataSection(Size, Alignment, SectionID, ++ IsReadOnly); + } + #else + uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, +@@ -601,6 +631,12 @@ namespace jit { + void resetGeneratedFunction() { + GeneratedFunction = NULL; + } ++ ++#if RBX_LLVM_API_VER > 303 ++ virtual bool finalizeMemory(std::string* ErrMsg = 0) { ++ return false; ++ } ++#endif + }; + +