Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libhugetlbfs for openSUSE:Factory checked in at 2026-02-20 17:42:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libhugetlbfs (Old) and /work/SRC/openSUSE:Factory/.libhugetlbfs.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libhugetlbfs" Fri Feb 20 17:42:42 2026 rev:54 rq:1334017 version:2.24.9.ga83fbb2 Changes: -------- --- /work/SRC/openSUSE:Factory/libhugetlbfs/libhugetlbfs.changes 2024-03-11 15:43:13.966972287 +0100 +++ /work/SRC/openSUSE:Factory/.libhugetlbfs.new.1977/libhugetlbfs.changes 2026-02-20 17:50:46.219880713 +0100 @@ -1,0 +2,14 @@ +Thu Feb 19 15:10:04 UTC 2026 - [email protected] + +- Update to version 2.24.9.ga83fbb2: + * support reproducible builds + * The issue of not determining whether the memory request was successful. + * fix: allocating large page memory using libhugetlbfs in the loongarch architecture failed. + * build: Update HOWTO to reflect changes made in #86 + * elflink.c: Fix HUGETLB_FORCE_ELFMAP partial segment remapping + * tests/icache-hygiene: Add LoongArch64 support for SIGILL handling + * tests: fixed check for __loongarch64 define + * Add support for loongarch64 architecture in ld.hugetlbfs + * keep_symbol: keep STB_GNU_UNIQUE symbols + +------------------------------------------------------------------- Old: ---- libhugetlbfs-2.24.0.g1322884.obscpio New: ---- libhugetlbfs-2.24.9.ga83fbb2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libhugetlbfs.spec ++++++ --- /var/tmp/diff_new_pack.vgGCyV/_old 2026-02-20 17:50:48.927993928 +0100 +++ /var/tmp/diff_new_pack.vgGCyV/_new 2026-02-20 17:50:48.939994430 +0100 @@ -1,7 +1,7 @@ # # spec file for package libhugetlbfs # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2026 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define my_make_flags V=1 CFLAGS="%{optflags} -fPIC" LDFLAGS="-pie" BUILDTYPE=NATIVEONLY PREFIX=%{_prefix} LIBDIR32=%{_libdir} DESTDIR=%{buildroot} Name: libhugetlbfs -Version: 2.24.0.g1322884 +Version: 2.24.9.ga83fbb2 Release: 0 Summary: Helper library for the Huge Translation Lookaside Buffer Filesystem License: LGPL-2.1-or-later ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.vgGCyV/_old 2026-02-20 17:50:49.216005969 +0100 +++ /var/tmp/diff_new_pack.vgGCyV/_new 2026-02-20 17:50:49.220006136 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/libhugetlbfs/libhugetlbfs.git</param> - <param name="changesrevision">1322884fb0d55dc55f53563c1aa6328d118997e7</param></service></servicedata> + <param name="changesrevision">a83fbb243a656df14cb74c213640b274861d9ce7</param></service></servicedata> (No newline at EOF) ++++++ libhugetlbfs-2.24.0.g1322884.obscpio -> libhugetlbfs-2.24.9.ga83fbb2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/HOWTO new/libhugetlbfs-2.24.9.ga83fbb2/HOWTO --- old/libhugetlbfs-2.24.0.g1322884/HOWTO 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/HOWTO 2025-11-18 07:50:21.000000000 +0100 @@ -178,7 +178,11 @@ Installation ============ -1. Type "make" to build the library +1. Use autotools to build the library: + + ./autogen.sh + ./configure + make This will create "obj32" and/or "obj64" under the top level libhugetlbfs directory, and build, respectively, 32-bit and 64-bit @@ -187,7 +191,8 @@ On i386 systems, only the 32-bit library will be built. On PowerPC and AMD64 systems, both 32-bit and 64-bit versions will be built (the -32-bit AMD64 version is identical to the i386 version). +32-bit AMD64 version is identical to the i386 version) unless the +BUILDTYPE=NATIVEONLY variable is set when running "make". 2. Run the testsuite with "make check" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/Makefile.in new/libhugetlbfs-2.24.9.ga83fbb2/Makefile.in --- old/libhugetlbfs-2.24.0.g1322884/Makefile.in 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/Makefile.in 2025-11-18 07:50:21.000000000 +0100 @@ -447,11 +447,11 @@ $(INSTALL) -d $(DESTDIR)$(MANDIR8) for x in $(INSTALL_MAN1); do \ $(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR1); \ - gzip -f $(DESTDIR)$(MANDIR1)/$$x; \ + gzip -fn $(DESTDIR)$(MANDIR1)/$$x; \ done for x in $(INSTALL_MAN3); do \ $(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR3); \ - gzip -f $(DESTDIR)$(MANDIR3)/$$x; \ + gzip -fn $(DESTDIR)$(MANDIR3)/$$x; \ done rm -f $(DESTDIR)$(MANDIR3)/free_huge_pages.3.gz rm -f $(DESTDIR)$(MANDIR3)/free_hugepage_region.3.gz @@ -463,11 +463,11 @@ ln -s hugetlbfs_find_path.3.gz $(DESTDIR)$(MANDIR3)/hugetlbfs_find_path_for_size.3.gz for x in $(INSTALL_MAN7); do \ $(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR7); \ - gzip -f $(DESTDIR)$(MANDIR7)/$$x; \ + gzip -fn $(DESTDIR)$(MANDIR7)/$$x; \ done for x in $(INSTALL_MAN8); do \ $(INSTALL) -m 444 man/$$x $(DESTDIR)$(MANDIR8); \ - gzip -f $(DESTDIR)$(MANDIR8)/$$x; \ + gzip -fn $(DESTDIR)$(MANDIR8)/$$x; \ done install-bin: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/alloc.c new/libhugetlbfs-2.24.9.ga83fbb2/alloc.c --- old/libhugetlbfs-2.24.0.g1322884/alloc.c 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/alloc.c 2025-11-18 07:50:21.000000000 +0100 @@ -244,7 +244,28 @@ { __free_huge_pages(ptr, 1); } +static size_t get_l2_cacheline_size(void) +{ + FILE *fp; + char path[128] = "\0"; + char buf[32] = "\0"; + size_t line_size = 0; + + snprintf(path, sizeof(path), + "/sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size"); + + fp = fopen(path, "r"); + if (!fp) { + return 0; + } + if (fgets(buf, sizeof(buf), fp)) { + line_size = (size_t)atoi(buf); + } + + fclose(fp); + return line_size; +} /* * Offset the buffer using bytes wasted due to alignment to avoid using the * same cache lines for the start of every buffer returned by @@ -262,6 +283,11 @@ /* Lookup our cacheline size once */ if (cacheline_size == 0) { cacheline_size = sysconf(_SC_LEVEL2_CACHE_LINESIZE); + if (cacheline_size == 0) { + cacheline_size = get_l2_cacheline_size(); + if (cacheline_size == 0) + cacheline_size = 64; + } linemod = time(NULL); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/elflink.c new/libhugetlbfs-2.24.9.ga83fbb2/elflink.c --- old/libhugetlbfs-2.24.0.g1322884/elflink.c 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/elflink.c 2025-11-18 07:50:21.000000000 +0100 @@ -436,7 +436,7 @@ * symbols based on information in the dynamic section. The following * characteristics apply to symbols which may require copying: * - Within the BSS - * - Global or Weak binding + * - Global, Weak, or GNU Unique binding * - Object type (variable) * - Non-zero size (zero size means the symbol is just a marker with no data) */ @@ -447,7 +447,8 @@ if ((void *)s->st_value > end) return 0; if ((ELF_ST_BIND(s->st_info) != STB_GLOBAL) && - (ELF_ST_BIND(s->st_info) != STB_WEAK)) + (ELF_ST_BIND(s->st_info) != STB_WEAK) && + (ELF_ST_BIND(s->st_info) != STB_GNU_UNIQUE)) return 0; if (ELF_ST_TYPE(s->st_info) != STT_OBJECT) return 0; @@ -784,7 +785,7 @@ vaddr = hugetlb_next_slice_start(info->dlpi_addr + info->dlpi_phdr[i].p_vaddr); gap = vaddr - (info->dlpi_addr + info->dlpi_phdr[i].p_vaddr); - slice_end = hugetlb_slice_end(vaddr); + slice_end = hugetlb_slice_end(vaddr + 1); /* * we should stop remapping just before the slice * containing the end of the memsz portion (taking away @@ -804,7 +805,7 @@ i, memsz, slice_end - vaddr); continue; } - memsz = hugetlb_prev_slice_end(vaddr + memsz) - vaddr; + memsz = hugetlb_prev_slice_end(vaddr + memsz) - vaddr + 1; if (save_phdr(htlb_num_segs, i, info->dlpi_addr, &info->dlpi_phdr[i])) @@ -821,6 +822,7 @@ htlb_seg_table[htlb_num_segs].vaddr = (void *)vaddr; htlb_seg_table[htlb_num_segs].filesz = memsz; htlb_seg_table[htlb_num_segs].memsz = memsz; + htlb_seg_table[htlb_num_segs].page_size = segment_requested_page_size(&info->dlpi_phdr[i]); htlb_num_segs++; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/hugeadm.c new/libhugetlbfs-2.24.9.ga83fbb2/hugeadm.c --- old/libhugetlbfs-2.24.0.g1322884/hugeadm.c 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/hugeadm.c 2025-11-18 07:50:21.000000000 +0100 @@ -1013,6 +1013,11 @@ } buf = malloc(swap_size); + if (!buf) { + ERROR("out of memory"); + exit(EXIT_FAILURE); + } + memset(buf, 0, swap_size); fwrite(buf, sizeof(char), swap_size, f); free(buf); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/ld.hugetlbfs new/libhugetlbfs-2.24.9.ga83fbb2/ld.hugetlbfs --- old/libhugetlbfs-2.24.0.g1322884/ld.hugetlbfs 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/ld.hugetlbfs 2025-11-18 07:50:21.000000000 +0100 @@ -117,6 +117,7 @@ fi ;; 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 ;; +elf64loongarch) HPAGE_SIZE=$((32*$MB)) SLICE_SIZE=$HPAGE_SIZE ;; armelf*_linux_eabi|aarch64elf*|aarch64linux*) hpage_kb=$(cat /proc/meminfo | grep Hugepagesize: | awk '{print $2}') HPAGE_SIZE=$((hpage_kb * 1024)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libhugetlbfs-2.24.0.g1322884/tests/icache-hygiene.c new/libhugetlbfs-2.24.9.ga83fbb2/tests/icache-hygiene.c --- old/libhugetlbfs-2.24.0.g1322884/tests/icache-hygiene.c 2024-03-11 09:21:36.000000000 +0100 +++ new/libhugetlbfs-2.24.9.ga83fbb2/tests/icache-hygiene.c 2025-11-18 07:50:21.000000000 +0100 @@ -88,14 +88,21 @@ { #if defined(__powerpc__) || defined(__powerpc64__) || defined(__ia64__) || \ defined(__s390__) || defined(__s390x__) || defined(__sparc__) || \ - defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64 || __loongarch64) + defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64) || \ + defined(__loongarch64) /* On powerpc, ia64, s390 and Aarch64, 0 bytes are an illegal * instruction, so, if the icache is cleared properly, we SIGILL * as soon as we jump into the cleared page */ if (signum == SIGILL) { - verbose_printf("SIGILL at %p (sig_expected=%p)\n", si->si_addr, - sig_expected); - if (si->si_addr == sig_expected) { + void *pc; +#if defined(__loongarch64) + ucontext_t *uc = (ucontext_t *)ucontext; + pc = (void *)uc->uc_mcontext.__pc; +#else + pc = si->si_addr; +#endif + verbose_printf("SIGILL at %p (sig_expected=%p)\n", pc, sig_expected); + if (pc == sig_expected) { siglongjmp(sig_escape, 1); } FAIL("SIGILL somewhere unexpected"); ++++++ libhugetlbfs.obsinfo ++++++ --- /var/tmp/diff_new_pack.vgGCyV/_old 2026-02-20 17:50:49.816031054 +0100 +++ /var/tmp/diff_new_pack.vgGCyV/_new 2026-02-20 17:50:49.828031556 +0100 @@ -1,5 +1,5 @@ name: libhugetlbfs -version: 2.24.0.g1322884 -mtime: 1710145296 -commit: 1322884fb0d55dc55f53563c1aa6328d118997e7 +version: 2.24.9.ga83fbb2 +mtime: 1763448621 +commit: a83fbb243a656df14cb74c213640b274861d9ce7
