Hello community, here is the log from the commit of package libhugetlbfs for openSUSE:Factory checked in at 2013-03-20 09:53:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libhugetlbfs (Old) and /work/SRC/openSUSE:Factory/.libhugetlbfs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libhugetlbfs", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/libhugetlbfs/libhugetlbfs.changes 2013-01-29 10:48:12.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.libhugetlbfs.new/libhugetlbfs.changes 2013-03-20 09:53:22.000000000 +0100 @@ -1,0 +2,11 @@ +Mon Mar 11 09:02:48 UTC 2013 - [email protected] + +- Update to version 2.16: + Features: + * ARM Support + * s390x Dynamic TASK_SIZE support + + Bug Fixes: + * find_mounts() now properly NULL terminates mount point names + +------------------------------------------------------------------- Old: ---- libhugetlbfs-2.15.tar.gz New: ---- libhugetlbfs-2.16.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libhugetlbfs.spec ++++++ --- /var/tmp/diff_new_pack.X4xXXY/_old 2013-03-20 09:53:24.000000000 +0100 +++ /var/tmp/diff_new_pack.X4xXXY/_new 2013-03-20 09:53:24.000000000 +0100 @@ -32,7 +32,7 @@ Obsoletes: libhugetlbfs-64bit %endif # -Version: 2.15 +Version: 2.16 Release: 0 Url: http://libhugetlbfs.sourceforge.net/ BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ libhugetlbfs-2.15.tar.gz -> libhugetlbfs-2.16.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/Makefile new/libhugetlbfs-2.16/Makefile --- old/libhugetlbfs-2.15/Makefile 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/Makefile 2013-03-10 03:59:52.000000000 +0100 @@ -51,6 +51,12 @@ ELF32 = elf32ppclinux TMPLIB32 = lib else +ifeq ($(ARCH),armv7l) +CC32 = gcc +TMPLIB32 = lib +ELF32 += armelf_linux_eabi +CUSTOM_LDSCRIPTS = no +else ifeq ($(ARCH),i386) CC32 = gcc ELF32 = elf_i386 @@ -89,6 +95,7 @@ endif endif endif +endif endif endif endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/NEWS new/libhugetlbfs-2.16/NEWS --- old/libhugetlbfs-2.15/NEWS 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/NEWS 2013-03-10 03:59:52.000000000 +0100 @@ -1,3 +1,16 @@ +libhugetlbfs 2.16 "Joe E. Parker" +====================================================================== +New Features +* ARM Support +* s390x Dynamic TASK_SIZE support + +Bug Fixes +* find_mounts() now properly NULL terminates mount point names + +Test Suite +* ARM Support +* mremap-fixed-huge-near-normal no longer calls munmap with 0 length + libhugetlbfs 2.15 "Minature Panda" ====================================================================== New Features diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/hugeutils.c new/libhugetlbfs-2.16/hugeutils.c --- old/libhugetlbfs-2.15/hugeutils.c 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/hugeutils.c 2013-03-10 03:59:52.000000000 +0100 @@ -665,6 +665,7 @@ continue; strncpy(path, match, end - match); + path[end - match] = '\0'; if ((hugetlbfs_test_path(path) == 1) && !(access(path, R_OK | W_OK | X_OK))) add_hugetlbfs_mount(path, 0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/ld.hugetlbfs new/libhugetlbfs-2.16/ld.hugetlbfs --- old/libhugetlbfs-2.15/ld.hugetlbfs 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/ld.hugetlbfs 2013-03-10 03:59:52.000000000 +0100 @@ -79,6 +79,11 @@ HTLB_ALIGN="" # --hugetlbfs-link overrides --hugetlbfs-align LDSCRIPT="$EMU.x$HTLB_LINK" HTLBOPTS="-T${HUGETLB_LDSCRIPT_PATH}/${LDSCRIPT}" + + if [ "$EMU" == "armelf_linux_eabi" ]; then + echo "Please use --hugetlbfs-align when targeting ARM." + exit -1 + fi fi MB=$((1024*1024)) @@ -86,11 +91,18 @@ elf32ppclinux|elf64ppc) HPAGE_SIZE=$((16*$MB)) SLICE_SIZE=$((256*$MB)) ;; elf_i386|elf_x86_64) HPAGE_SIZE=$((4*$MB)) SLICE_SIZE=$HPAGE_SIZE ;; elf_s390|elf64_s390) HPAGE_SIZE=$((1*$MB)) SLICE_SIZE=$HPAGE_SIZE ;; +armelf_linux_eabi) HPAGE_SIZE=$((2*$MB)) SLICE_SIZE=$HPAGE_SIZE ;; esac if [ "$HTLB_ALIGN" == "slice" ]; then HTLBOPTS="-zcommon-page-size=$SLICE_SIZE -zmax-page-size=$SLICE_SIZE" HTLBOPTS="$HTLBOPTS -lhugetlbfs" + + # targeting the ARM platform one needs to explicitly set the text segment offset + # otherwise it will be NULL. + if [ "$EMU" == "armelf_linux_eabi" ]; then + HTLBOPTS="$HTLBOPTS -Ttext-segment=$SLICE_SIZE" + fi fi ${LD} "${args[@]}" ${HTLBOPTS} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/sys-armelf_linux_eabi.S new/libhugetlbfs-2.16/sys-armelf_linux_eabi.S --- old/libhugetlbfs-2.15/sys-armelf_linux_eabi.S 1970-01-01 01:00:00.000000000 +0100 +++ new/libhugetlbfs-2.16/sys-armelf_linux_eabi.S 2013-03-10 03:59:52.000000000 +0100 @@ -0,0 +1,32 @@ +/* + * libhugetlbfs - Easy use of Linux hugepages + * Copyright (C) 2012 ARM Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + + .text + + .globl direct_syscall +direct_syscall: + mov ip, sp + stmfd sp!, {r4, r5, r6, r7} + mov r7, r0 + mov r0, r1 + mov r1, r2 + mov r2, r3 + ldmfd ip, {r3, r4, r5, r6} + swi 0x0 + ldmfd sp!, {r4, r5, r6, r7} + bx lr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/tests/icache-hygiene.c new/libhugetlbfs-2.16/tests/icache-hygiene.c --- old/libhugetlbfs-2.15/tests/icache-hygiene.c 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/tests/icache-hygiene.c 2013-03-10 03:59:52.000000000 +0100 @@ -52,8 +52,10 @@ static void cacheflush(void *p) { -#ifdef __powerpc__ +#if defined(__powerpc__) asm volatile("dcbst 0,%0; sync; icbi 0,%0; isync" : : "r"(p)); +#elif defined(__arm__) + __clear_cache(p, p + COPY_SIZE); #endif } @@ -97,7 +99,7 @@ } FAIL("SIGILL somewhere unexpected"); } -#elif defined(__i386__) || defined(__x86_64__) +#elif defined(__i386__) || defined(__x86_64__) || defined(__arm__) /* On x86, zero bytes form a valid instruction: * add %al,(%eax) (i386) * or add %al,(%rax) (x86_64) @@ -109,7 +111,14 @@ * on the second, truncated page. If [ER]AX does not contain * a valid pointer, we will SEGV on the first instruction in * the cleared page. We check for both possibilities - * below. */ + * below. + * + * On 32 bit ARM, zero bytes are interpreted as follows: + * andeq r0, r0, r0 (ARM state, 4 bytes) + * movs r0, r0 (Thumb state, 2 bytes) + * + * So, we only expect to run off the end of the huge page and + * generate a SIGBUS. */ if (signum == SIGBUS) { verbose_printf("SIGBUS at %p (sig_expected=%p)\n", si->si_addr, sig_expected); @@ -120,6 +129,7 @@ } FAIL("SIGBUS somewhere unexpected"); } +#if defined(__x86_64__) || defined(__i386__) if (signum == SIGSEGV) { #ifdef __x86_64__ void *pc = (void *)((ucontext_t *)uc)->uc_mcontext.gregs[REG_RIP]; @@ -134,6 +144,7 @@ } FAIL("SIGSEGV somewhere unexpected"); } +#endif #else #error Need to setup signal conditions for this arch #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/tests/mremap-fixed-huge-near-normal.c new/libhugetlbfs-2.16/tests/mremap-fixed-huge-near-normal.c --- old/libhugetlbfs-2.15/tests/mremap-fixed-huge-near-normal.c 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/tests/mremap-fixed-huge-near-normal.c 2013-03-10 03:59:52.000000000 +0100 @@ -87,6 +87,7 @@ void *map_align(size_t size, size_t align) { unsigned long xsize = size + align - getpagesize(); + size_t t; void *p, *q; int rc; @@ -97,14 +98,19 @@ q = PALIGN(p, align); - rc = munmap(p, q-p); - if (rc != 0) - FAIL("munmap(lower aligning): %s", strerror(errno)); - - rc = munmap(q + size, p + xsize - (q + size)); - if (rc != 0) - FAIL("munmap(upper aligning): %s", strerror(errno)); - + t = q - p; + if (t) { + rc = munmap(p, t); + if (rc != 0) + FAIL("munmap(lower aligning): %s", strerror(errno)); + } + + t = p + xsize - (q + size); + if (t) { + rc = munmap(q + size, t); + if (rc != 0) + FAIL("munmap(upper aligning): %s", strerror(errno)); + } return q; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/tests/task-size-overrun.c new/libhugetlbfs-2.16/tests/task-size-overrun.c --- old/libhugetlbfs-2.15/tests/task-size-overrun.c 2012-12-08 18:15:26.000000000 +0100 +++ new/libhugetlbfs-2.16/tests/task-size-overrun.c 2013-03-10 03:59:52.000000000 +0100 @@ -82,6 +82,10 @@ } munmap(p, getpagesize()); addr += getpagesize(); +#if defined(__s390x__) + if (addr > (1UL << 42) && addr < (1UL << 53)) + addr = 1UL << 53; +#endif } /* addr wrapped around */ return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.15/version new/libhugetlbfs-2.16/version --- old/libhugetlbfs-2.15/version 2012-12-08 18:18:06.000000000 +0100 +++ new/libhugetlbfs-2.16/version 2013-03-10 04:02:17.000000000 +0100 @@ -1 +1 @@ -2.15 +2.16 -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
