Sync from SUSE:SLFO:Main libhugetlbfs revision e9085cb794119fab7a9527b9c58ce541

This commit is contained in:
Adrian Schröter 2024-05-03 15:04:55 +02:00
commit 33daf0b3c4
12 changed files with 997 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

16
_service Normal file
View File

@ -0,0 +1,16 @@
<services>
<service name="obs_scm" mode="localonly">
<param name="url">https://github.com/libhugetlbfs/libhugetlbfs.git</param>
<param name="scm">git</param>
<param name="revision">HEAD</param>
<param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.g%h</param>
<param name="changesgenerate">enable</param>
</service>
<service name="set_version" mode="localonly"/>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">gz</param>
</service>
</services>

2
baselibs.conf Normal file
View File

@ -0,0 +1,2 @@
libhugetlbfs
+/usr/lib(64)?/libhugetlbfs

View File

@ -0,0 +1,22 @@
Index: tests/Makefile
===================================================================
--- a/tests/Makefile.orig
+++ b/tests/Makefile
@@ -48,7 +48,7 @@ ifeq ($(CUSTOM_LDSCRIPTS),yes)
TESTS += $(LDSCRIPT_TESTS) $(HUGELINK_TESTS) $(HUGELINK_TESTS:%=xB.%) \
$(HUGELINK_TESTS:%=xBDT.%) $(HUGELINK_RW_TESTS)
else
-TESTS += $(LDSCRIPT_TESTS) $(HUGELINK_TESTS) $(HUGELINK_RW_TESTS)
+TESTS += $(LDSCRIPT_TESTS) $(HUGELINK_TESTS)
endif
else
@@ -57,7 +57,7 @@ ifeq ($(CUSTOM_LDSCRIPTS),yes)
TESTS += $(LDSCRIPT_TESTS) $(HUGELINK_TESTS) $(HUGELINK_TESTS:%=xB.%) \
$(HUGELINK_TESTS:%=xBDT.%) $(HUGELINK_RW_TESTS)
else
-TESTS += $(LDSCRIPT_TESTS) $(HUGELINK_TESTS) $(HUGELINK_RW_TESTS)
+TESTS += $(LDSCRIPT_TESTS) $(HUGELINK_TESTS)
endif
endif

258
glibc-2.34-fix.patch Normal file
View File

@ -0,0 +1,258 @@
From 959d74fd0fbbff310943096e15024a84e8f5cba4 Mon Sep 17 00:00:00 2001
From: Matheus Castanho <msc@linux.ibm.com>
Date: Thu, 12 Aug 2021 16:38:46 -0300
Subject: [PATCH] Disable hugepage-backed malloc if __morecore is not available
Starting with glibc 2.32, __morecore hook has been marked as deprecated, and was
completely removed on glibc 2.34, which causes an undefined symbol error during
the build of libhugetlbfs.
Greater changes are needed in order to keep providing the same functionality
with future versions of glibc (see issue #52). Meanwhile, we can disable
hugepage-backed malloc setup if __morecore is not available so users can at
least keep using the other features provided by the library. Related tests are
also conditionally disabled, and will show as SKIPPED if __morecore is not
available.
Tested on powerpc64le and x86_64 with glibc 2.34 and olders.
Signed-off-by: Matheus Castanho <msc@linux.ibm.com>
---
Makefile | 6 +++++
morecore.c | 8 ++++++
tests/run_tests.py | 67 +++++++++++++++++++++++++++++++++++++++-------
3 files changed, 71 insertions(+), 10 deletions(-)
diff --git a/Makefile b/Makefile
index 8b73523..35e53e7 100644
--- a/Makefile
+++ b/Makefile
@@ -192,6 +192,12 @@ endif
endif
endif
+# glibc 2.34 removed __morecore, so it may not be available with recent versions
+HAS_MORECORE := $(shell /bin/echo -e '\#include <malloc.h>\nvoid * morecore_exists() { return &__morecore; }' | $(CC) -c -xc -o /dev/null - &> /dev/null && /bin/echo yes || /bin/echo no)
+ifeq ($(HAS_MORECORE),yes)
+CFLAGS += -DHAS_MORECORE
+endif
+
HEADERDIR = $(PREFIX)/include
LIBDIR32 = $(PREFIX)/$(LIB32)
LIBDIR64 = $(PREFIX)/$(LIB64)
diff --git a/morecore.c b/morecore.c
index 6563bbd..405c566 100644
--- a/morecore.c
+++ b/morecore.c
@@ -33,6 +33,13 @@
#include "libhugetlbfs_internal.h"
+#ifndef HAS_MORECORE
+void hugetlbfs_setup_morecore(void)
+{
+ INFO("Not setting up morecore because it's not available (see issue #52).\n");
+}
+#else
+
static int heap_fd;
static void *heapbase;
@@ -381,3 +388,4 @@ void hugetlbfs_setup_morecore(void)
* to mmap() if we run out of hugepages. */
mallopt(M_MMAP_MAX, 0);
}
+#endif /* HAS_MORECORE */
diff --git a/tests/run_tests.py b/tests/run_tests.py
index 018264d..871d04d 100755
--- a/tests/run_tests.py
+++ b/tests/run_tests.py
@@ -60,7 +60,7 @@ def snapshot_pool_state():
l.append((d, tuple(substate)))
return tuple(l)
-def run_test_prog(bits, pagesize, cmd, **env):
+def run_test_prog(bits, pagesize, cmd, output='stdout', **env):
if paranoid_pool_check:
beforepool = snapshot_pool_state()
print("Pool state: %s" % str(beforepool))
@@ -73,15 +73,17 @@ def run_test_prog(bits, pagesize, cmd, **env):
% (bits, bits, local_env.get("LD_LIBRARY_PATH", ""))
local_env["HUGETLB_DEFAULT_PAGE_SIZE"] = repr(pagesize)
+ popen_args = {'env' : local_env, output : subprocess.PIPE}
+
try:
- p = subprocess.Popen(cmd, env=local_env, stdout=subprocess.PIPE)
+ p = subprocess.Popen(cmd, **popen_args)
rc = p.wait()
except KeyboardInterrupt:
# Abort and mark this a strange test result
return (None, "")
except OSError as e:
return (-e.errno, "")
- out = p.stdout.read().decode().strip()
+ out = getattr(p, output).read().decode().strip()
if paranoid_pool_check:
afterpool = snapshot_pool_state()
@@ -309,6 +311,33 @@ def check_linkhuge_tests():
okbits.add(bits)
return okbits
+def check_morecore_disabled():
+ """
+ Check if support for morecore is available.
+
+ Newer glibc versions (>= 2.34) removed the __morecore malloc hook, so tests
+ relying on that functionality will not work as expected, and should be
+ disabled.
+ """
+ global morecore_disabled, wordsizes, pagesizes
+
+ # Quick and dirty way to get a word and page size. Which one doesn't really
+ # matter in this case.
+ for wsz in wordsizes:
+ b = wsz
+ break
+ for psz in pagesizes:
+ p = psz
+ break
+
+ # Run an arbitrary program and check stderr for the "morecore disabled"
+ # message
+ (rc, out) = run_test_prog(b, p, "gethugepagesize", output='stderr',
+ HUGETLB_MORECORE="yes",
+ HUGETLB_VERBOSE="3")
+
+ morecore_disabled = "Not setting up morecore" in out
+
def print_cmd(pagesize, bits, cmd, env):
if env:
print(' '.join(['%s=%s' % (k, v) for k, v in env.items()]), end=" ")
@@ -357,14 +386,17 @@ def skip_test(pagesize, bits, cmd, **env):
print_cmd(pagesize, bits, cmd, env)
print("SKIPPED")
-def do_test(cmd, bits=None, **env):
+def do_test(cmd, bits=None, skip=False, **env):
"""
Run a test case, testing each page size and each indicated word size.
"""
if bits == None: bits = wordsizes
for p in pagesizes:
for b in (set(bits) & wordsizes_by_pagesize[p]):
- run_test(p, b, cmd, **env)
+ if skip:
+ skip_test(p, b, cmd, **env)
+ else:
+ run_test(p, b, cmd, **env)
def do_test_with_rlimit(rtype, limit, cmd, bits=None, **env):
"""
@@ -375,7 +407,7 @@ def do_test_with_rlimit(rtype, limit, cmd, bits=None, **env):
do_test(cmd, bits, **env)
resource.setrlimit(rtype, oldlimit)
-def do_test_with_pagesize(pagesize, cmd, bits=None, **env):
+def do_test_with_pagesize(pagesize, cmd, bits=None, skip=False, **env):
"""
Run a test case, testing with a specified huge page size and
each indicated word size.
@@ -383,7 +415,10 @@ def do_test_with_pagesize(pagesize, cmd, bits=None, **env):
if bits == None:
bits = wordsizes
for b in (set(bits) & wordsizes_by_pagesize[pagesize]):
- run_test(pagesize, b, cmd, **env)
+ if skip:
+ skip_test(pagesize, b, cmd, **env)
+ else:
+ run_test(pagesize, b, cmd, **env)
def do_elflink_test(cmd, **env):
"""
@@ -533,7 +568,7 @@ def functional_tests():
"""
Run the set of functional tests.
"""
- global linkhuge_wordsizes
+ global linkhuge_wordsizes, morecore_disabled
# Kernel background tests not requiring hugepage support
do_test("zero_filesize_segment")
@@ -598,19 +633,24 @@ def functional_tests():
do_test("fork-cow")
do_test("direct")
do_test_with_pagesize(system_default_hpage_size, "malloc")
+
do_test_with_pagesize(system_default_hpage_size, "malloc",
+ skip=morecore_disabled,
LD_PRELOAD="libhugetlbfs.so",
HUGETLB_MORECORE="yes")
do_test_with_pagesize(system_default_hpage_size, "malloc",
+ skip=morecore_disabled,
LD_PRELOAD="libhugetlbfs.so",
HUGETLB_MORECORE="yes",
HUGETLB_RESTRICT_EXE="unknown:none")
do_test_with_pagesize(system_default_hpage_size, "malloc",
+ skip=morecore_disabled,
LD_PRELOAD="libhugetlbfs.so",
HUGETLB_MORECORE="yes",
HUGETLB_RESTRICT_EXE="unknown:malloc")
do_test_with_pagesize(system_default_hpage_size, "malloc_manysmall")
do_test_with_pagesize(system_default_hpage_size, "malloc_manysmall",
+ skip=morecore_disabled,
LD_PRELOAD="libhugetlbfs.so",
HUGETLB_MORECORE="yes")
@@ -630,26 +670,32 @@ def functional_tests():
do_test_with_pagesize(system_default_hpage_size, "heapshrink",
GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
LD_PRELOAD="libheapshrink.so")
+
do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+ skip=morecore_disabled,
GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
LD_PRELOAD="libhugetlbfs.so",
HUGETLB_MORECORE="yes")
do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+ skip=morecore_disabled,
GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
LD_PRELOAD="libhugetlbfs.so libheapshrink.so",
HUGETLB_MORECORE="yes")
do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+ skip=morecore_disabled,
GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
LD_PRELOAD="libheapshrink.so",
HUGETLB_MORECORE="yes",
HUGETLB_MORECORE_SHRINK="yes")
do_test_with_pagesize(system_default_hpage_size, "heapshrink",
+ skip=morecore_disabled,
GLIBC_TUNABLES="glibc.malloc.tcache_count=0",
LD_PRELOAD="libhugetlbfs.so libheapshrink.so",
HUGETLB_MORECORE="yes",
HUGETLB_MORECORE_SHRINK="yes")
- do_test("heap-overflow", HUGETLB_VERBOSE="1", HUGETLB_MORECORE="yes")
+ do_test("heap-overflow", skip=morecore_disabled, HUGETLB_VERBOSE="1",
+ HUGETLB_MORECORE="yes")
# Run the remapping tests' up-front checks
linkhuge_wordsizes = check_linkhuge_tests()
@@ -747,7 +793,7 @@ def print_help():
def main():
global wordsizes, pagesizes, dangerous, paranoid_pool_check, system_default_hpage_size
- global custom_ldscripts
+ global custom_ldscripts, morecore_disabled
testsets = set()
env_override = {"QUIET_TEST": "1", "HUGETLBFS_MOUNTS": "",
"HUGETLB_ELFMAP": None, "HUGETLB_MORECORE": None}
@@ -802,6 +848,7 @@ def main():
return 1
check_hugetlbfs_path()
+ check_morecore_disabled()
if "func" in testsets: functional_tests()
if "stress" in testsets: stress_tests()

BIN
libhugetlbfs-2.23.0.g6b126a4.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

490
libhugetlbfs.changes Normal file
View File

@ -0,0 +1,490 @@
-------------------------------------------------------------------
Wed Mar 1 03:18:42 UTC 2023 - Bernhard Wiedemann <bwiedemann@suse.com>
- Drop tests from rpm (boo#1159558)
-------------------------------------------------------------------
Thu Sep 9 07:42:34 UTC 2021 - Martin Liška <mliska@suse.cz>
- Add glibc-2.34-fix.patch as a fix for upstream issue gh#52:
https://github.com/libhugetlbfs/libhugetlbfs/pull/63/commits
(boo#1189094).
-------------------------------------------------------------------
Thu Sep 09 07:38:10 UTC 2021 - mliska@suse.cz
- Update to version 2.23.0.g6b126a4:
* Update NEWS for 2.23 release
* Wait child with os.wait()
* Makefile: add MANDIR variable
* Makefile: skip LIB resolve check if NATIVEONLY
* Introduce basic riscv64 support
* ld.hugetlbfs: fix -Ttext-segment argument on AArch64
* tests: add explicit permissions to open() call
* Update NEWS for 2.22 release
* Convert setup script to python3
* Clean up error checking in dump_proc_pid_maps()
-------------------------------------------------------------------
Fri Jul 16 21:21:31 UTC 2021 - trenn@suse.de
- Update to version 2.23.0.g6b126a4:
* Update NEWS for 2.23 release
* Wait child with os.wait()
* Makefile: add MANDIR variable
* Makefile: skip LIB resolve check if NATIVEONLY
* Introduce basic riscv64 support
* ld.hugetlbfs: fix -Ttext-segment argument on AArch64
* tests: add explicit permissions to open() call
* Update NEWS for 2.22 release
* Convert setup script to python3
* Clean up error checking in dump_proc_pid_maps()
-------------------------------------------------------------------
Fri Jul 09 13:18:00 UTC 2021 - trenn@suse.de
- Enhance _service magic
- Update to version 2.23.0.g6b126a4:
* Wait child with os.wait()
* Makefile: add MANDIR variable
* Makefile: skip LIB resolve check if NATIVEONLY
* Introduce basic riscv64 support
* ld.hugetlbfs: fix -Ttext-segment argument on AArch64
- Remove unsupported arch patch (does not patch clean anymore):
D libhugetlbfs.s390.patch
-------------------------------------------------------------------
Wed Apr 21 12:36:14 UTC 2021 - Wolfgang Frisch <wolfgang.frisch@suse.com>
- Hardening: Link as PIE (bsc#1184123).
-------------------------------------------------------------------
Mon Aug 17 13:48:04 UTC 2020 - Dirk Mueller <dmueller@suse.com>
- update to 2.22:
* Library now verifies if slices are supported on PPC
* ld.hugetlbfs now supports multiple page sizes on PPC64
* Various GCC warning cleanups
* setup script converted to Python 3
* Tests are only run on online CPUs and only if a sufficient number are
available
* task-size-overrun now searches empty address space more efficiently
* Tests that do not link the library are run for default page sizes only
* Test runner now uses Python 3
- remove libhugetlbfs_fix_tests.patch (upstream)
-------------------------------------------------------------------
Mon Oct 1 13:52:36 UTC 2018 - egotthold@suse.com
- Removed make target "install-perlmod" and filecheck from packaging process.
-------------------------------------------------------------------
Fri Sep 28 11:30:08 UTC 2018 - egotthold@suse.com
- Update to 2.21
- Bug Fixes
* The noexec stack markers are set directly
* We no longer lie to glibc about shrinking the heap by less than HPAGE_SIZE
- Test Suite
* No existent tests are no longer marked Killed By Signal
* Disable malloc per-thread cache for heap shrinking tests
- Remove patch "ignore-perl-modules.diff"
-------------------------------------------------------------------
Mon Sep 11 07:47:31 UTC 2017 - jengelh@inai.de
- Run `make install-perlmod` to install/satisfy Perl modules
required by /usr/bin/cpupcstat, itself installed by just
`make install` [boo#1057963]
-------------------------------------------------------------------
Thu Apr 20 10:40:04 UTC 2017 - jengelh@inai.de
- Update summary and descriptions a bit
- Move development manpages (*.3) to development subpackage
- Avoid ||/&& in %install because it can leave $? at non-zero
(unlike if..fi), and %install is run with sh -x.
-------------------------------------------------------------------
Thu Mar 9 09:10:07 UTC 2017 - fschnizlein@suse.com
- Update to 2.20
- Bug Fixes:
* Fix keyword collisions and warnings from GCC 5
* hugeadm output is parsed for default size in huge_page_setup_helper
* Testsuite: fallocate tests
-------------------------------------------------------------------
Fri Nov 6 13:10:03 UTC 2015 - fvogt@suse.com
- Add zero_filesize_segment.patch to fix testcase on s390x
- Fixes bnc#919680
- Patches already included mainline and now deleted:
D libhugetlbfs-2.18-restrict-is-a-reserved-word.patch
D fix_plt_extrasz_always_returning_0_on_ppc64le.patch
-------------------------------------------------------------------
Fri Nov 6 12:01:55 UTC 2015 - fvogt@suse.com
- Latest version from git next branch
-------------------------------------------------------------------
Tue Jun 23 22:35:32 UTC 2015 - antoine.belvire@laposte.net
- Add libhugelbfs-2.18-restrict-is-a-reserved-word.patch which
fixes compilation with GCC 5 (and C99/C11 in general).
* Add libhugetlbfs-2.18-restrict-is-a-reserved-word.patch
-------------------------------------------------------------------
Fri Feb 20 12:11:44 UTC 2015 - normand@linux.vnet.ibm.com
- update to 2.18
to solve build failures for ppc/ppc64.
remove following patches now included in 2.18:
libhugetlbfs-ppc64le.patch
libhugetlbfs.ppc64le.step2.patch
libhugetlbfs.ppc64le.step3.patch
libhugetlbfs.ppc64le.step4.patch
- Add fix_plt_extrasz_always_returning_0_on_ppc64le.patch
already upstream.
-------------------------------------------------------------------
Wed Mar 26 12:37:06 UTC 2014 - dmueller@suse.com
- update to 2.17:
* PPC segement alignment restrictions can be disabled
* Added Aarch64 support
* Allow compiler overrides for 64 and 32 bit builds
* hugeadm now handles /etc/mtab being a simlink properly
* ppc64 fixes
- remove libhugetlbfs.ia64-libdir.patch:
ia64 is no longer supported by openSUSE
- add ignore-perl-modules.diff: do not install perl modules, unused
and are installed in the wrong place to be found anyway
- add ARM support
- add disable-rw-on-non-ldscripts.diff: Skip rw tests
- Do not install tests anymore
-------------------------------------------------------------------
Tue Feb 11 08:09:11 UTC 2014 - trenn@suse.de
- Tests compile fine for s390(x), also include them in the package, the same
way it is done for other archs as well.
-------------------------------------------------------------------
Mon Feb 10 15:56:31 UTC 2014 - trenn@suse.de
- There are no tests installed in s390(x) case, therefore there are no
files in %{_libdir}/libhugetlbfs
Remove the directory from the file list to fix package build for s390(x)
-------------------------------------------------------------------
Sat Jan 11 05:56:47 UTC 2014 - normand@linux.vnet.ibm.com
- Add support of ppc64le with 4 patches
libhugetlbfs-ppc64le.patch
libhugetlbfs.ppc64le.step2.patch
libhugetlbfs.ppc64le.step3.patch
libhugetlbfs.ppc64le.step4.patch
-------------------------------------------------------------------
Mon Mar 11 09:02:48 UTC 2013 - trenn@suse.de
- Update to version 2.16:
Features:
* ARM Support
* s390x Dynamic TASK_SIZE support
Bug Fixes:
* find_mounts() now properly NULL terminates mount point names
-------------------------------------------------------------------
Wed Jan 23 10:34:58 UTC 2013 - trenn@suse.de
- Update to version 2.15
Features:
* Some System z functionality went into 2.15
* Updated man pages
* Added basic events for core_i7 to oprofile_map_events
Fixes:
* Disable Unable to verify address range warning when offset < page_size
* Remove sscanf in library setup to avoid heap allocation before _morecore
override
* Revert heap exhaustion patch
* hugectl no longer clips LD_LIBRARY_PATH variable
* Fix clean on failure code to avoid closing stdout
-------------------------------------------------------------------
Wed Jul 11 06:24:07 UTC 2012 - adrian@suse.de
- Add excludearch for arm due to lacking support
-------------------------------------------------------------------
Tue Apr 10 19:51:51 UTC 2012 - tabraham@novell.com
- Update to version 2.13
* hugeadm can now be used to control Transparent Huge Page tunables
* New morecore mode to better support THP
* Check permissions on hugetlbfs mount point before marking it as
available
* Fix shm tests to use random address instead of fixed, old address
failed on ARM
-------------------------------------------------------------------
Wed Oct 12 20:04:52 UTC 2011 - tabraham@novell.com
- Update to version 2.12
* libhugetlbfs usages can now be restricted to certain binary names
* libhugetlbfs now supports static linking
* hugeadm uses more human readable directory names for mount points
* Fix segfault if specified user was not in passwd, failuer in
getpwuid() is now checked
* Added tests for static linking to testcase
* Added missing tests to driver script
-------------------------------------------------------------------
Sun May 29 21:42:52 UTC 2011 - meissner@novell.com
- Do not include the 268MB testcase /usr/lib/libhugetlbfs/tests/obj32/linkhuge_rw.
-------------------------------------------------------------------
Fri Dec 17 11:45:36 UTC 2010 - trenn@novell.com
- Update to version 2.11
Bugfixes and new features are listed in the NEWS file in
/usr/share/doc/packages/libhugetlbfs/NEWS
-------------------------------------------------------------------
Wed Oct 6 16:52:30 UTC 2010 - aj@suse.de
- Update to version 2.9:
* Add --no-reseve to hugectl to request mmap'd pages are not reserved
for kernels newer than 2.6.34
* Add --obey-numa-mempol to hugeadm to request static pool pages are
allocated following the process NUMA memory policy
* Add switch to let administrator limit new mount points by size or inodes
* cpupcstat now caches the value returned by tlmiss_cost.sh to avoid
rerunning the script
* When specifying huge page pool sizes with hugeadm, memory sizes can
be used as well as the number of huge pages
* DEFAULT is now a valid huge page pool for resizing, it will adjust
the pool for the default huge page size
* tlbmiss_cost.sh in the contrib/ sub directory will estimate the cost
in CPU cycles of a TLB miss on the arch where it is run
* Add python script which automates huge page pool setup with minimal
input required from user
* cpupcstat now supports data collection using the perf tool as well as
oprofile
* --explain reports if min_free_kbytes is too small
* add --set-min_free_kbytes to hugeadm
-------------------------------------------------------------------
Fri Jun 18 14:41:41 UTC 2010 - coolo@novell.com
- strip test binaries to fix build
-------------------------------------------------------------------
Tue Feb 9 09:29:27 UTC 2010 - trenn@novell.com
- Removed unused files
-------------------------------------------------------------------
Mon Feb 8 22:48:44 UTC 2010 - jengelh@medozas.de
- add workarounds for broken Makefile logic to detect arch
-------------------------------------------------------------------
Mon Feb 1 11:35:48 UTC 2010 - jengelh@medozas.de
- Package baselibs.conf
-------------------------------------------------------------------
Mon Oct 12 19:12:48 UTC 2009 - aj@suse.de
- Fix typo in requires.
-------------------------------------------------------------------
Wed Jul 29 15:46:42 CEST 2009 - trenn@suse.de
- Update from version 2.0 to 2.5
-------------------------------------------------------------------
Mon Feb 2 10:51:07 CET 2009 - olh@suse.de
- document workaround for NX configurations on x86 (bnc#470234 - LTC50261)
-------------------------------------------------------------------
Wed Jan 7 15:11:22 CET 2009 - olh@suse.de
- Update SECTIONS from linker scripts for binutils 2.19 compatibility
(bnc#445372 - LTC50129)
-------------------------------------------------------------------
Wed Jan 7 12:34:56 CET 2009 - olh@suse.de
- obsolete old -XXbit packages (bnc#437293)
-------------------------------------------------------------------
Thu Nov 6 14:59:22 CET 2008 - olh@suse.de
- fix libhugetlbfs 32bit test case xB.linkhuge failure (bnc#442209 - LTC49702)
-------------------------------------------------------------------
Tue Oct 21 14:24:22 CEST 2008 - olh@suse.de
- handle older binutils versions in elf32ppclinux.xBDT (bnc#436451 - LTC49076)
-------------------------------------------------------------------
Wed Aug 27 18:33:12 CEST 2008 - olh@suse.de
- update to version 2.0 (fate#304340)
New Features
* New scriptless relinking for binutils >= 2.17
* Added direct allocator API for huge pages
Bug Fixes
* /proc/mounts is parsed line at a time to handle file larger than 4kb
* Read-only mappings use MAP_NORESERVE
-------------------------------------------------------------------
Wed Jun 25 11:31:01 CEST 2008 - olh@suse.de
- update to version 1.3
New features
* Add HUGETLB_NO_PREFAULT to control prefaulting of huge pages via mlock
* Add "[hostname:pid]" to output messages
* Setup for handling larger huge page sizes e.g. 16G huge pages
* Update for new upstream sysctl
* Add support for hugetlbfs_morecore to shrink the heap
Bug fixes
* Disable heap shrinking by default to avoid bug in glibc malloc
* Skip elflink calls in setup_libhugetlbfs for IA64 and sparc64
* Replace gethugepagesize with check_hugepagesize for error checking
* Make morecore argument a long to handle larger page sizes
Tets suite fixes
* Check uid/gid in tests where it matters
* tests: verify there are enough huge pages
* Change tests to read /proc/meminfo
* tests: verify that huge page size isn't too big for the test
-------------------------------------------------------------------
Thu Apr 10 12:54:45 CEST 2008 - ro@suse.de
- added baselibs.conf file to build xxbit packages
for multilib support
-------------------------------------------------------------------
Mon Jan 14 17:19:02 CET 2008 - olh@suse.de
- update to version 1.2
New features
* Partial segment remapping. This allows non-relinked binaries to try
to take advantage of libhugetlbfs' segment remapping code. Large
segments are required, especially on Power. This feature is useful
for estimating huge page performance, however full relinking will
still perform better.
* Add extra debugging for binaries that may run out of address space.
* Log library version when HUGETLB_VERBOSE is enabled.
* New test to check handling of misaligned mmap() parameters.
Bug fixes
* Fix EH_FRAME segment. Fixes some C++ applications.
* Rework PLT detection to work better on Power.
* Add per-target-arch syscall stubs to the library. These provide
reliable error messages from elflink.c if they occur while the
program segments are unmapped.
* Add proper SONAME to shared libs.
* Makefile respects CFLAGS/LDFLAGS/CPPFLAGS environment variables.
* Make mlock() failure non-fatal.
-------------------------------------------------------------------
Sun Jul 8 09:34:13 CEST 2007 - olh@suse.de
- disable zero_filesize_segment test
-------------------------------------------------------------------
Sun Apr 15 18:31:53 CEST 2007 - olh@suse.de
- update to version 1.1 (262564 - LTC33711)
-------------------------------------------------------------------
Mon Feb 5 11:49:14 CET 2007 - olh@suse.de
- update to 20070129 devel snapshot
drop hugetlbd
-------------------------------------------------------------------
Mon Feb 5 11:21:45 CET 2007 - olh@suse.de
- build -m64/-m32 if required
-------------------------------------------------------------------
Sat Dec 9 09:08:53 CET 2006 - olh@suse.de
- build with -g
make install should not depend on all
-------------------------------------------------------------------
Fri Dec 8 16:20:25 CET 2006 - olh@suse.de
- package testsuite, fix make check
-------------------------------------------------------------------
Tue Dec 5 14:48:13 CET 2006 - olh@suse.de
- add the hugetlbd (214426)
-------------------------------------------------------------------
Sun Oct 29 10:02:15 CET 2006 - olh@suse.de
- update to bugfix release 1.0.1 (214426)
* Always install linker scripts for all targets
* Error message updates
* Add documentation on HUGETLB_DEBUG
* Testcase updates
-------------------------------------------------------------------
Thu Oct 5 13:40:17 CEST 2006 - olh@suse.de
- update to final 1.0
-------------------------------------------------------------------
Tue Sep 19 12:57:06 CEST 2006 - olh@suse.de
- update to 20060913 git state
docu updates
use library versioning
-------------------------------------------------------------------
Wed Jul 19 18:01:55 CEST 2006 - olh@suse.de
- update to 1.0-pre3
-------------------------------------------------------------------
Tue Apr 18 13:45:56 CEST 2006 - olh@suse.de
- drop unneeded -packages from Buildrequires
-------------------------------------------------------------------
Sat Apr 8 11:44:06 CEST 2006 - olh@suse.de
- update to 1.0-pre2 (#142046 - LTC20562)
-------------------------------------------------------------------
Tue Feb 21 21:09:06 CET 2006 - olh@suse.de
- remove backup files
-------------------------------------------------------------------
Tue Feb 21 18:34:41 CET 2006 - olh@suse.de
- add linker scripts on ppc, ppc64, i386 and x86_64
-------------------------------------------------------------------
Thu Feb 9 13:33:32 CET 2006 - olh@suse.de
- create package, version 1.0-pre1 (#142046 - LTC20562)

4
libhugetlbfs.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: libhugetlbfs
version: 2.23.0.g6b126a4
mtime: 1599498497
commit: 6b126a4d7da9490fa40fe7e1b962edcb939feddc

99
libhugetlbfs.spec Normal file
View File

@ -0,0 +1,99 @@
#
# spec file for package libhugetlbfs
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define my_make_flags V=1 CFLAGS="%{optflags} -fPIC" LDFLAGS="-pie" BUILDTYPE=NATIVEONLY PREFIX=%{_prefix} LIBDIR32=%{_libdir} DESTDIR=%{buildroot}
Name: libhugetlbfs
Version: 2.23.0.g6b126a4
Release: 0
Summary: Helper library for the Huge Translation Lookaside Buffer Filesystem
License: LGPL-2.1-or-later
Group: System/Libraries
URL: https://github.com/libhugetlbfs/libhugetlbfs
Source0: libhugetlbfs-%{version}.tar.gz
Source1: baselibs.conf
Patch0: libhugetlbfs.tests-malloc.patch
Patch1: libhugetlbfs_ia64_fix_missing_test.patch
Patch2: disable-rw-on-non-ldscripts.diff
Patch3: zero_filesize_segment.patch
Patch4: glibc-2.34-fix.patch
BuildRequires: doxygen
BuildRequires: glibc-devel-static
BuildRoot: %{_tmppath}/%{name}-%{version}-build
# bug437293
%ifarch ppc64
Obsoletes: libhugetlbfs-64bit
%endif
%description
The libhugetlbfs package interacts with the Linux hugetlbfs to
make large pages available to applications in a transparent manner.
%package devel
Summary: Development files for libhugetlbfs
Group: Development/Libraries/C and C++
Requires: libhugetlbfs
%description devel
Devel package, header and static library, of libhugetlbfs.
%package tests
Summary: Tests for package libhugetlbfs
Group: Development/Tools/Other
%description tests
The testsuite for libhugetlbfs. Binaries can be found in
%{_libdir}/libhugetlbfs/tests.
%prep
%autosetup -p1
%build
echo %{version} > version
make %{my_make_flags}
%install
make %{my_make_flags} PMDIR="%{perl_vendorlib}/TLBC" \
install install-tests
mkdir -p %{buildroot}%{_prefix}/include
cp -avL hugetlbfs.h %{buildroot}%{_prefix}/include
chmod 644 %{buildroot}%{_libdir}/*.a
if [ -f %{buildroot}%{_libdir}/libhugetlbfs/tests/obj64/dummy.ldscript ]; then
chmod -f a-x %{buildroot}%{_libdir}/libhugetlbfs/tests/obj64/dummy.ldscript
fi
rm -r %{buildroot}%{_libdir}/libhugetlbfs/tests
%files
%defattr(-, root, root)
%doc LGPL-2.1 HOWTO README NEWS
%{_datadir}/libhugetlbfs
%{_bindir}/*
%{_mandir}/man[178]/*%{?ext_man}
%{_libdir}/libhugetlbfs_privutils.so
%{_libdir}/libhugetlbfs.so
%files devel
%defattr(-, root, root)
%{_includedir}/hugetlbfs.h
%{_libdir}/libhugetlbfs.a
%{_mandir}/man3/*%{?ext_man}
%files tests
%defattr(-,root,root)
%{_libdir}/libhugetlbfs/
%changelog

View File

@ -0,0 +1,17 @@
Test malloc, set unused to NULL if it fails
---
tests/heapshrink-helper.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/tests/heapshrink-helper.c
+++ b/tests/heapshrink-helper.c
@@ -21,5 +21,7 @@
static void __attribute__((constructor)) setup_heapshrink_helper(void)
{
- (void) malloc(1);
+ void *unused = malloc(1);
+ if (unused)
+ unused = NULL;
}

View File

@ -0,0 +1,25 @@
libhugetlbfs: TESTS_64 is not defined for ia64, check when trying to install it
That was for libhugetlbfs version 2.12 (TEST_64 is not defined for ia64),
same seem to be the case for x86_64 in version 2.15.
-> Revert the installation of this test totally.
Signed-off-by: Thomas Renninger <trenn@suse.de>
---
tests/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: libhugetlbfs-2.21/tests/Makefile
===================================================================
--- libhugetlbfs-2.21.orig/tests/Makefile
+++ libhugetlbfs-2.21/tests/Makefile
@@ -295,7 +295,7 @@ obj64/install:
$(INSTALL) -m 755 wrapper-utils.sh $(DESTDIR)$(INST_TESTSDIR64)/obj64
$(INSTALL) -m 755 $(HELPERS:%=obj64/%) $(DESTDIR)$(INST_TESTSDIR64)/obj64
$(INSTALL) -m 755 $(HELPER_LIBS:%=obj64/%) $(DESTDIR)$(INST_TESTSDIR64)/obj64
- $(INSTALL) -m 755 $(TESTS_64:%=obj64/%) $(DESTDIR)$(INST_TESTSDIR64)/obj64
+
$(INSTALL) -m 755 run_tests.py $(DESTDIR)$(INST_TESTSDIR64)
install: $(OBJDIRS:%=%/install)

View File

@ -0,0 +1,38 @@
diff --git a/tests/Makefile b/tests/Makefile
index e2e1156..4daa5d1 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -39,6 +39,11 @@ LDLIBS = $(STATIC_LDLIBS) -ldl -lhugetlbfs_privutils
LDFLAGS32 = -L../obj32
LDFLAGS64 = -L../obj64
INSTALL = install
+ifeq ($(ARCH),s390x)
+ARCH_SUFFIX = .s390x
+else
+ARCH_SUFFIX =
+endif
TESTS = $(LIB_TESTS) $(NOLIB_TESTS) $(STRESS_TESTS) dummy.ldscript
ifdef ELF32
@@ -181,7 +186,7 @@ $(LDSCRIPT_TESTS:%=obj32/%): obj32/%: %.ld obj32/%.o obj32/testutils.o
@$(VECHO) LD32 "(preload test)" $@
$(CC32) $(LDFLAGS) $(LDFLAGS32) -o $@ -Lobj32 $^ $(LDLIBS) || cp $(BADTOOLCHAIN) $@
-$(LDSCRIPT_TESTS:%=obj64/%): obj64/%: %.ld obj64/%.o obj64/testutils.o
+$(LDSCRIPT_TESTS:%=obj64/%): obj64/%: %$(ARCH_SUFFIX).ld obj64/%.o obj64/testutils.o
@$(VECHO) LD64 "(preload test)" $@
$(CC64) $(LDFLAGS) $(LDFLAGS64) -o $@ -Lobj64 $^ $(LDLIBS) || cp $(BADTOOLCHAIN) $@
diff --git a/tests/zero_filesize_segment.s390x.ld b/tests/zero_filesize_segment.s390x.ld
new file mode 100644
index 0000000..813a92f
--- /dev/null
+++ b/tests/zero_filesize_segment.s390x.ld
@@ -0,0 +1,7 @@
+SECTIONS
+{
+ .empty (0x90000000) : {
+ __empty_segment = .;
+ . = . + 4;
+ }
+}