From e7dd0a0cf4f439f444f4a15d8ea4e1ab8185acbf Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sat, 5 Jul 2025 13:29:53 +0200 Subject: [PATCH] [gdb/tdep] Fix selftest scoped_mmap on freebsd On x86_64-freebsd, I run into: ... $ gdb -q -batch -ex "maint selftest scoped_mmap" Running selftest scoped_mmap. Self test failed: self-test failed at scoped_mmap-selftests.c:50 Failures: scoped_mmap Ran 1 unit tests, 1 failed ... The problem is that this call: ... ::scoped_mmap smmap (nullptr, sysconf (_SC_PAGESIZE), PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); ... returns MAP_FAILED and sets errno to EINVAL because the argument fd == 0. If MAP_ANONYMOUS is used, fd == -1 should be used on freebsd. On linux, fd is ignored but -1 is recommended for portability. Fix this by using fd == -1 instead. Tested x86_64-freebsd and x86_64-linux. --- gdb/unittests/scoped_mmap-selftests.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gdb/unittests/scoped_mmap-selftests.c b/gdb/unittests/scoped_mmap-selftests.c index 72568fe19b7..f752b9aa33c 100644 --- a/gdb/unittests/scoped_mmap-selftests.c +++ b/gdb/unittests/scoped_mmap-selftests.c @@ -41,7 +41,7 @@ test_destroy () errno = 0; { ::scoped_mmap smmap (nullptr, sysconf (_SC_PAGESIZE), PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); + MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); mem = smmap.get (); SELF_CHECK (mem != nullptr); @@ -59,7 +59,7 @@ test_release () errno = 0; { ::scoped_mmap smmap (nullptr, sysconf (_SC_PAGESIZE), PROT_WRITE, - MAP_ANONYMOUS | MAP_PRIVATE, 0, 0); + MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); mem = smmap.release (); SELF_CHECK (mem != nullptr); -- 2.47.2