diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45f6357 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/mozjs17.0.0.tar.gz diff --git a/.mozjs17.metadata b/.mozjs17.metadata new file mode 100644 index 0000000..9638fb1 --- /dev/null +++ b/.mozjs17.metadata @@ -0,0 +1 @@ +7805174898c34e5d3c3b256117af9944ba825c89 SOURCES/mozjs17.0.0.tar.gz diff --git a/SOURCES/0001-Move-JS_BYTES_PER_WORD-out-of-config.h.patch b/SOURCES/0001-Move-JS_BYTES_PER_WORD-out-of-config.h.patch new file mode 100644 index 0000000..e7c8a83 --- /dev/null +++ b/SOURCES/0001-Move-JS_BYTES_PER_WORD-out-of-config.h.patch @@ -0,0 +1,72 @@ +From 5b2bfe99c7ef70ea75731c88b43d9036be11d236 Mon Sep 17 00:00:00 2001 +From: Colin Walters +Date: Tue, 18 Mar 2014 11:46:05 -0400 +Subject: [PATCH] Move JS_BYTES_PER_WORD out of config.h + +Instead define it in terms of the already extant GNU C extension +__SIZEOF_POINTER__. This avoids multiarch conflicts when 32 and 64 +bit packages of js are co-installed. +--- + js/src/configure.in | 9 --------- + js/src/js-config.h.in | 1 - + js/src/jstypes.h | 12 ++++++++++++ + 3 files changed, 12 insertions(+), 10 deletions(-) + +diff --git a/js/src/configure.in b/js/src/configure.in +index 19fd704..0673aca 100644 +--- a/js/src/configure.in ++++ b/js/src/configure.in +@@ -2349,15 +2349,6 @@ else + AC_MSG_RESULT(no) + fi + +-MOZ_SIZE_OF_TYPE(JS_BYTES_PER_WORD, void*, 4 8) +-if test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "4"; then +- AC_DEFINE(JS_BITS_PER_WORD_LOG2, 5) +-elif test "$moz_cv_size_of_JS_BYTES_PER_WORD" -eq "8"; then +- AC_DEFINE(JS_BITS_PER_WORD_LOG2, 6) +-else +- AC_MSG_ERROR([Unexpected JS_BYTES_PER_WORD]) +-fi +- + MOZ_ALIGN_OF_TYPE(JS_ALIGN_OF_POINTER, void*, 2 4 8 16) + MOZ_SIZE_OF_TYPE(JS_BYTES_PER_DOUBLE, double, 6 8 10 12 14) + +diff --git a/js/src/js-config.h.in b/js/src/js-config.h.in +index 6889e00..4775420 100644 +--- a/js/src/js-config.h.in ++++ b/js/src/js-config.h.in +@@ -56,7 +56,6 @@ + #undef JS_INT32_TYPE + #undef JS_INT64_TYPE + #undef JS_INTPTR_TYPE +-#undef JS_BYTES_PER_WORD + + /* Some mozilla code uses JS-friend APIs that depend on JS_METHODJIT being + correct. */ +diff --git a/js/src/jstypes.h b/js/src/jstypes.h +index d0cf183..3e7928f 100644 +--- a/js/src/jstypes.h ++++ b/js/src/jstypes.h +@@ -24,6 +24,18 @@ + #include "mozilla/Util.h" + + #include "js-config.h" ++#ifndef JS_BYTES_PER_WORD ++#define JS_BYTES_PER_WORD __SIZEOF_POINTER__ ++#endif ++#ifndef JS_BITS_PER_WORD_LOG2 ++#if JS_BYTES_PER_WORD == 8 ++#define JS_BITS_PER_WORD_LOG2 6 ++#elif JS_BYTES_PER_WORD == 4 ++#define JS_BITS_PER_WORD_LOG2 5 ++#else ++#error Unhandled JS_BYTES_PER_WORD ++#endif ++#endif + + /*********************************************************************** + ** MACROS: JS_EXTERN_API +-- +1.8.3.1 + diff --git a/SOURCES/js17-build-fixes.patch b/SOURCES/js17-build-fixes.patch new file mode 100644 index 0000000..4ef5123 --- /dev/null +++ b/SOURCES/js17-build-fixes.patch @@ -0,0 +1,38 @@ +From 0e27b45a3409e0a5c23e63af9e86048e1e7661da Mon Sep 17 00:00:00 2001 +From: Colin Walters +Date: Wed, 18 Jan 2012 22:25:47 -0500 +Subject: [PATCH] build: Add toplevel trampoline configure/Makefile + +These just invoke the ones in js/src. +--- + Makefile | 5 +++++ + configure | 5 +++++ + 2 files changed, 10 insertions(+), 0 deletions(-) + create mode 100644 Makefile + create mode 100755 configure + +diff --git a/Makefile b/Makefile +new file mode 100644 +index 0000000..98de844 +--- /dev/null ++++ b/Makefile +@@ -0,0 +1,5 @@ ++all: ++ cd js/src && $(MAKE) ++ ++install: ++ cd js/src && $(MAKE) install DESTDIR=$(DESTDIR) +diff --git a/configure b/configure +new file mode 100755 +index 0000000..93ef339 +--- /dev/null ++++ b/configure +@@ -0,0 +1,5 @@ ++#!/bin/sh ++# http://people.gnome.org/~walters/docs/build-api.txt ++echo \#buildapi-variable-no-builddir >/dev/null ++cd js/src ++exec ./configure "$@" +-- +1.7.1 + diff --git a/SOURCES/js17-jsval.patch b/SOURCES/js17-jsval.patch new file mode 100644 index 0000000..149ea86 --- /dev/null +++ b/SOURCES/js17-jsval.patch @@ -0,0 +1,11 @@ +diff -up mozjs17.0.0/js/src/jsval.h.jsval mozjs17.0.0/js/src/jsval.h +--- mozjs17.0.0/js/src/jsval.h.jsval 2013-05-17 16:31:03.000000000 +0200 ++++ mozjs17.0.0/js/src/jsval.h 2013-05-17 16:31:13.000000000 +0200 +@@ -304,7 +304,6 @@ typedef union jsval_layout + int32_t i32; + uint32_t u32; + JSWhyMagic why; +- jsuword word; + } payload; + } s; + double asDouble; diff --git a/SOURCES/mozbug746112-no-decommit-on-large-pages.patch b/SOURCES/mozbug746112-no-decommit-on-large-pages.patch new file mode 100644 index 0000000..0e859d8 --- /dev/null +++ b/SOURCES/mozbug746112-no-decommit-on-large-pages.patch @@ -0,0 +1,98 @@ +# See https://bugzilla.redhat.com/show_bug.cgi?id=971519 +# HG changeset patch +# User Terrence Cole +# Date 1346874025 25200 +# Node ID 0558ede9693e57663e4836c7e678b55465ddc2ab +# Parent d28e07f4bec6c16b32ae4743eaeeae2a9e2f6381 +Bug 746112 - Don't decommit if page size is too large; r=billm + +The powerpc architecture has 64KiB pages, which is too large to represent in the +free list. This patch splits the page size from the arena size and disabled +decommit logic in that case. + +diff -up xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h.746112 xulrunner-17.0/mozilla-beta/js/src/gc/Heap.h +--- a/js/src/gc/Heap.h.746112 2012-10-17 16:32:43.000000000 +0200 ++++ b/js/src/gc/Heap.h 2012-10-24 14:48:12.186640489 +0200 +@@ -103,26 +103,31 @@ struct Cell + }; + + /* +- * Page size is 4096 by default, except for SPARC, where it is 8192. ++ * Page size must be static to support our arena pointer optimizations, so we ++ * are forced to support each platform with non-4096 pages as a special case. ++ * Note: The freelist supports a maximum arena shift of 15. + * Note: Do not use JS_CPU_SPARC here, this header is used outside JS. + * Bug 692267: Move page size definition to gc/Memory.h and include it + * directly once jsgc.h is no longer an installed header. + */ + #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9)) + const size_t PageShift = 13; ++const size_t ArenaShift = PageShift; ++#elif defined(__powerpc__) ++const size_t PageShift = 16; ++const size_t ArenaShift = 12; + #else + const size_t PageShift = 12; ++const size_t ArenaShift = PageShift; + #endif + const size_t PageSize = size_t(1) << PageShift; ++const size_t ArenaSize = size_t(1) << ArenaShift; ++const size_t ArenaMask = ArenaSize - 1; + + const size_t ChunkShift = 20; + const size_t ChunkSize = size_t(1) << ChunkShift; + const size_t ChunkMask = ChunkSize - 1; + +-const size_t ArenaShift = PageShift; +-const size_t ArenaSize = PageSize; +-const size_t ArenaMask = ArenaSize - 1; +- + /* + * This is the maximum number of arenas we allow in the FreeCommitted state + * before we trigger a GC_SHRINK to release free arenas to the OS. +diff -up xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp.746112 xulrunner-17.0/mozilla-beta/js/src/jsgc.cpp +--- a/js/src/jsgc.cpp.746112 2012-10-17 16:32:44.000000000 +0200 ++++ b/js/src/jsgc.cpp 2012-10-24 14:46:28.253638095 +0200 +@@ -251,6 +251,13 @@ static const int BackgroundPhaseLength[] + sizeof(BackgroundPhaseStrings) / sizeof(AllocKind) + }; + ++/* Unused memory decommiting requires the arena size match the page size. */ ++static bool ++DecommitEnabled() ++{ ++ return PageSize == ArenaSize; ++} ++ + #ifdef DEBUG + void + ArenaHeader::checkSynchronizedWithFreeList() const +@@ -742,7 +749,8 @@ Chunk::fetchNextDecommittedArena() + decommittedArenas.unset(offset); + + Arena *arena = &arenas[offset]; +- MarkPagesInUse(arena, ArenaSize); ++ if (DecommitEnabled()) ++ MarkPagesInUse(arena, ArenaSize); + arena->aheader.setAsNotAllocated(); + + return &arena->aheader; +@@ -2731,7 +2739,7 @@ DecommitArenasFromAvailableList(JSRuntim + chunk->removeFromAvailableList(); + + size_t arenaIndex = Chunk::arenaIndex(aheader->arenaAddress()); +- bool ok; ++ bool ok = true; + { + /* + * If the main thread waits for the decommit to finish, skip +@@ -2741,7 +2749,8 @@ DecommitArenasFromAvailableList(JSRuntim + Maybe maybeUnlock; + if (!rt->isHeapBusy()) + maybeUnlock.construct(rt); +- ok = MarkPagesUnused(aheader->getArena(), ArenaSize); ++ if (DecommitEnabled()) ++ ok = MarkPagesUnused(aheader->getArena(), ArenaSize); + } + + if (ok) { diff --git a/SOURCES/mozjs17-48-bit-VA-fix.patch b/SOURCES/mozjs17-48-bit-VA-fix.patch new file mode 100644 index 0000000..8258a46 --- /dev/null +++ b/SOURCES/mozjs17-48-bit-VA-fix.patch @@ -0,0 +1,106 @@ +From a0c0f32299419359b44ac0f880c1ea9073ae51e1 Mon Sep 17 00:00:00 2001 +From: Zheng Xu +Date: Fri, 02 Sep 2016 17:40:05 +0800 +Subject: [PATCH] Bug 1143022 - Manually mmap on arm64 to ensure high 17 bits are clear. r=ehoogeveen + +There might be 48-bit VA on arm64 depending on kernel configuration. +Manually mmap heap memory to align with the assumption made by JS engine. + +Change-Id: Ic5d2b2fe4b758b3c87cc0688348af7e71a991146 +--- + +diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp +index 5b386a2..38101cf 100644 +--- a/js/src/gc/Memory.cpp ++++ b/js/src/gc/Memory.cpp +@@ -309,6 +309,75 @@ + #endif + } + ++static inline void * ++MapMemory(size_t length, int prot, int flags, int fd, off_t offset) ++{ ++#if defined(__ia64__) ++ /* ++ * The JS engine assumes that all allocated pointers have their high 17 bits clear, ++ * which ia64's mmap doesn't support directly. However, we can emulate it by passing ++ * mmap an "addr" parameter with those bits clear. The mmap will return that address, ++ * or the nearest available memory above that address, providing a near-guarantee ++ * that those bits are clear. If they are not, we return NULL below to indicate ++ * out-of-memory. ++ * ++ * The addr is chosen as 0x0000070000000000, which still allows about 120TB of virtual ++ * address space. ++ * ++ * See Bug 589735 for more information. ++ */ ++ void *region = mmap((void*)0x0000070000000000, length, prot, flags, fd, offset); ++ if (region == MAP_FAILED) ++ return MAP_FAILED; ++ /* ++ * If the allocated memory doesn't have its upper 17 bits clear, consider it ++ * as out of memory. ++ */ ++ if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) { ++ JS_ALWAYS_TRUE(0 == munmap(region, length)); ++ return MAP_FAILED; ++ } ++ return region; ++#elif defined(__aarch64__) ++ /* ++ * There might be similar virtual address issue on arm64 which depends on ++ * hardware and kernel configurations. But the work around is slightly ++ * different due to the different mmap behavior. ++ * ++ * TODO: Merge with the above code block if this implementation works for ++ * ia64 and sparc64. ++ */ ++ const uintptr_t start = (uintptr_t)(0x0000070000000000UL); ++ const uintptr_t end = (uintptr_t)(0x0000800000000000UL); ++ const uintptr_t step = ChunkSize; ++ /* ++ * Optimization options if there are too many retries in practice: ++ * 1. Examine /proc/self/maps to find an available address. This file is ++ * not always available, however. In addition, even if we examine ++ * /proc/self/maps, we may still need to retry several times due to ++ * racing with other threads. ++ * 2. Use a global/static variable with lock to track the addresses we have ++ * allocated or tried. ++ */ ++ uintptr_t hint; ++ void* region = MAP_FAILED; ++ for (hint = start; region == MAP_FAILED && hint + length <= end; hint += step) { ++ region = mmap((void*)hint, length, prot, flags, fd, offset); ++ if (region != MAP_FAILED) { ++ if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) { ++ if (munmap(region, length)) { ++ MOZ_ASSERT(errno == ENOMEM); ++ } ++ region = MAP_FAILED; ++ } ++ } ++ } ++ return region == MAP_FAILED ? NULL : region; ++#else ++ return mmap(NULL, length, prot, flags, fd, offset); ++#endif ++} ++ + void * + MapAlignedPages(size_t size, size_t alignment) + { +@@ -322,12 +391,12 @@ + + /* Special case: If we want page alignment, no further work is needed. */ + if (alignment == PageSize) { +- return mmap(NULL, size, prot, flags, -1, 0); ++ return MapMemory(size, prot, flags, -1, 0); + } + + /* Overallocate and unmap the region's edges. */ + size_t reqSize = Min(size + 2 * alignment, 2 * size); +- void *region = mmap(NULL, reqSize, prot, flags, -1, 0); ++ void *region = MapMemory(reqSize, prot, flags, -1, 0); + if (region == MAP_FAILED) + return NULL; + diff --git a/SOURCES/mozjs17-aarch64-support-64K-pages.patch b/SOURCES/mozjs17-aarch64-support-64K-pages.patch new file mode 100644 index 0000000..13b512e --- /dev/null +++ b/SOURCES/mozjs17-aarch64-support-64K-pages.patch @@ -0,0 +1,62 @@ +From f17bc0302100c885c84ebd06cd003aad9774cbb4 Mon Sep 17 00:00:00 2001 +From: Mark Salter +Date: Thu, 13 Mar 2014 13:16:27 -0400 +Subject: [PATCH] Fix aarch64 support for 64K pagesize + +A given AArch64 kernel may be using 4K or 64K pagesizes. When running +on a kernel with 64K pagesize, this check causes an intentionally +generated segfault: + + js/src/gc/Memory.cpp: + + void + InitMemorySubsystem() + { + if (size_t(sysconf(_SC_PAGESIZE)) != PageSize) + MOZ_CRASH(); + } + +This happens because PageSize is fixed to 4K at build time. This mess +has been cleaned up in mozjs-24 by eliminating the build-time PageSize +definition. That is too intrusive for mosjs17, so just set PageSize +to 64K at build time and eliminate the check. This will work with both +4K and 64K aarch64 kernels. + +Signed-off-by: Mark Salter +--- + js/src/gc/Heap.h | 2 +- + js/src/gc/Memory.cpp | 3 +++ + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/js/src/gc/Heap.h b/js/src/gc/Heap.h +index 1cfd269..f4dbcda 100644 +--- a/js/src/gc/Heap.h ++++ b/js/src/gc/Heap.h +@@ -113,7 +113,7 @@ struct Cell + #if defined(SOLARIS) && (defined(__sparc) || defined(__sparcv9)) + const size_t PageShift = 13; + const size_t ArenaShift = PageShift; +-#elif defined(__powerpc__) ++#elif defined(__powerpc__) || defined(__aarch64__) + const size_t PageShift = 16; + const size_t ArenaShift = 12; + #else +diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp +index 5b386a2..e5ad018 100644 +--- a/js/src/gc/Memory.cpp ++++ b/js/src/gc/Memory.cpp +@@ -302,8 +302,11 @@ GetPageFaultCount() + void + InitMemorySubsystem() + { ++ /* aarch64 may have 64KB or 4KB pages */ ++#ifndef __aarch64__ + if (size_t(sysconf(_SC_PAGESIZE)) != PageSize) + MOZ_CRASH(); ++#endif + } + + void * +-- +1.8.5.3 + diff --git a/SOURCES/mozjs17-aarch64.patch b/SOURCES/mozjs17-aarch64.patch new file mode 100644 index 0000000..1965ff6 --- /dev/null +++ b/SOURCES/mozjs17-aarch64.patch @@ -0,0 +1,59 @@ +diff --git a/js/src/assembler/jit/ExecutableAllocator.h b/js/src/assembler/jit/ExecutableAllocator.h +index c071c33..90764c3 100644 +--- a/js/src/assembler/jit/ExecutableAllocator.h ++++ b/js/src/assembler/jit/ExecutableAllocator.h +@@ -382,6 +382,12 @@ public: + { + reprotectRegion(start, size, Executable); + } ++#elif WTF_CPU_AARCH64 && WTF_PLATFORM_LINUX ++ static void cacheFlush(void* code, size_t size) ++ { ++ intptr_t end = reinterpret_cast(code) + size; ++ __builtin___clear_cache(reinterpret_cast(code), reinterpret_cast(end)); ++ } + #else + static void makeWritable(void*, size_t) {} + static void makeExecutable(void*, size_t) {} +diff --git a/js/src/assembler/wtf/Platform.h b/js/src/assembler/wtf/Platform.h +index 0c84896..e8763a7 100644 +--- a/js/src/assembler/wtf/Platform.h ++++ b/js/src/assembler/wtf/Platform.h +@@ -325,6 +325,10 @@ + #define WTF_THUMB_ARCH_VERSION 0 + #endif + ++/* CPU(AArch64) - 64-bit ARM */ ++#if defined(__aarch64__) ++#define WTF_CPU_AARCH64 1 ++#endif + + /* WTF_CPU_ARMV5_OR_LOWER - ARM instruction set v5 or earlier */ + /* On ARMv5 and below the natural alignment is required. +diff --git a/js/src/configure.in b/js/src/configure.in +index 15605b2..19fd704 100644 +--- a/js/src/configure.in ++++ b/js/src/configure.in +@@ -1121,6 +1121,10 @@ arm*) + CPU_ARCH=arm + ;; + ++aarch64) ++ CPU_ARCH=aarch64 ++ ;; ++ + mips|mipsel) + CPU_ARCH="mips" + ;; +diff --git a/mfbt/double-conversion/utils.h b/mfbt/double-conversion/utils.h +index 0eec2d9..fe26dab 100644 +--- a/mfbt/double-conversion/utils.h ++++ b/mfbt/double-conversion/utils.h +@@ -58,6 +58,7 @@ + defined(__mips__) || defined(__powerpc__) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ + defined(__SH4__) || defined(__alpha__) || \ ++ defined(__aarch64__) || \ + defined(_MIPS_ARCH_MIPS32R2) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) || defined(__i386) diff --git a/SPECS/mozjs17.spec b/SPECS/mozjs17.spec new file mode 100644 index 0000000..78c5341 --- /dev/null +++ b/SPECS/mozjs17.spec @@ -0,0 +1,141 @@ +Summary: JavaScript interpreter and libraries +Name: mozjs17 +Version: 17.0.0 +Release: 20%{?dist} +License: GPLv2+ or LGPLv2+ or MPLv1.1 +Group: Development/Languages +URL: http://www.mozilla.org/js/ +Source0: http://ftp.mozilla.org/pub/mozilla.org/js/mozjs%{version}.tar.gz +BuildRequires: pkgconfig(nspr) +BuildRequires: readline-devel +BuildRequires: /usr/bin/zip +BuildRequires: /usr/bin/python +BuildRequires: /usr/bin/autoconf-2.13 + +Patch0: js17-build-fixes.patch +# makes mozjs to match js from xul 21 +Patch1: js17-jsval.patch +Patch2: mozbug746112-no-decommit-on-large-pages.patch +Patch3: 0001-Move-JS_BYTES_PER_WORD-out-of-config.h.patch +Patch4: mozjs17-aarch64.patch +Patch5: mozjs17-aarch64-support-64K-pages.patch +Patch6: mozjs17-48-bit-VA-fix.patch + +%description +JavaScript is the Netscape-developed object scripting language used in millions +of web pages and server applications worldwide. Netscape's JavaScript is a +superset of the ECMA-262 Edition 3 (ECMAScript) standard scripting language, +with only mild differences from the published standard. + +%package devel +Summary: Header files, libraries and development documentation for %{name} +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +This package contains the header files, static libraries and development +documentation for %{name}. If you like to develop programs using %{name}, +you will need to install %{name}-devel. + +%prep +%setup -q -n mozjs%{version} +# Delete bundled sources +rm js/src/editline -rf +rm js/src/ctypes/libffi -rf +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 + +%build +chmod a+x configure +(cd js/src && autoconf-2.13) +%configure --disable-static --with-system-nspr --enable-threadsafe --enable-readline +make %{?_smp_mflags} + +%check +cat > js/src/config/find_vanilla_new_calls << EOF +#!/bin/bash +exit 0 +EOF +make -C js/src check + +%install +make install DESTDIR=%{buildroot} +# For some reason the headers and pkg-config file are executable +find %{buildroot}%{_includedir} -type f -exec chmod a-x {} \; +chmod a-x %{buildroot}%{_libdir}/pkgconfig/*.pc +# Upstream does not honor --disable-static yet +rm -f %{buildroot}%{_libdir}/*.a +# This is also statically linked; once that is fixed that we could +# consider shipping it. +rm -f %{buildroot}%{_bindir}/js17 + +# However, delete js-config since everything should use +# the pkg-config file. +rm -f %{buildroot}%{_bindir}/js17-config + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%doc LICENSE README +%{_libdir}/*.so + +%files devel +%{_libdir}/pkgconfig/*.pc +%{_includedir}/js-17.0 + +%changelog +* Tue Mar 28 2017 Yaakov Selkowitz - 17.0.0-20 +- Switch to upstream aarch64 48bit VA patch + This reverts the previous API/ABI break on aarch64, so dependencies + must be rebuilt again. +- Resolves: #1393548 + +* Thu May 26 2016 Colin Walters - 17.0.0-16 +- Add patch for aarch64 48bit VA limits + This changes the API/ABI only on aarch64, and hence we also bump + the soname solely on those architectures. We do retain the same pkg-config + file name though, so dependencies should only need a rebuild. +- Resolves: #1324216 + +* Fri Jul 11 2014 Colin Walters - 17.0.0-12 +- Add patch for aarch64 +- Fix for aarch64 64k pagesize. BZ#1076181 (Mark Salter ) +- Resolves: #1027067 + +* Tue Mar 18 2014 Colin Walters - 17.0.0-10 +- Add patch to fix multilib conflict with -devel packages +- Resolves: #1076420 + +* Fri Jan 24 2014 Daniel Mach - 17.0.0-9 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 17.0.0-8 +- Mass rebuild 2013-12-27 + +* Mon Jun 17 2013 Dennis Gilmore 17.0.0-7 +- disable failing find_vanilla_new_calls test + +* Fri Jun 07 2013 Colin Walters 17.0.0-6 +- Add patch for ppc/ppc64: https://bugzilla.redhat.com/show_bug.cgi?id=971519 + +* Fri Jun 07 2013 Colin Walters 17.0.0-5 +- Enable check: https://bugzilla.redhat.com/show_bug.cgi?id=971519 + +* Fri May 17 2013 Dan HorĂ¡k - 17.0.0-4 +- fix build on 64-bit big-endians + +* Mon Apr 15 2013 Colin Walters 17.0.0-3 +- Delete js17, it is not used + +* Sun Apr 14 2013 Peter Robinson 17.0.0-2 +- Add disttag + +* Mon Apr 01 2013 Colin Walters - 17.0.0-1 +- Spec file inherited from js.spec