selftests/nolibc: add sbrk_0 to test current brk getting
authorZhangjin Wu <falcon@tinylab.org>
Fri, 7 Jul 2023 15:04:38 +0000 (23:04 +0800)
committerWilly Tarreau <w@1wt.eu>
Wed, 23 Aug 2023 02:38:02 +0000 (04:38 +0200)
>From musl 0.9.14 (to the latest version 1.2.3), both sbrk() and brk()
have almost been disabled for they conflict with malloc, only sbrk(0) is
still permitted as a way to get the current location of the program
break, let's support such case.

EXPECT_PTRNE() is used to expect sbrk() always successfully getting the
current break.

Signed-off-by: Zhangjin Wu <falcon@tinylab.org>
Signed-off-by: Willy Tarreau <w@1wt.eu>
tools/testing/selftests/nolibc/nolibc-test.c

index ea22359..5e17e79 100644 (file)
@@ -633,6 +633,7 @@ int run_syscall(int min, int max)
                CASE_TEST(kill_0);            EXPECT_SYSZR(1, kill(getpid(), 0)); break;
                CASE_TEST(kill_CONT);         EXPECT_SYSZR(1, kill(getpid(), 0)); break;
                CASE_TEST(kill_BADPID);       EXPECT_SYSER(1, kill(INT_MAX, 0), -1, ESRCH); break;
+               CASE_TEST(sbrk_0);            EXPECT_PTRNE(1, sbrk(0), (void *)-1); break;
                CASE_TEST(sbrk);              if ((p1 = p2 = sbrk(4096)) != (void *)-1) p2 = sbrk(-4096); EXPECT_SYSZR(1, (p2 == (void *)-1) || p2 == p1); break;
                CASE_TEST(brk);               EXPECT_SYSZR(1, brk(sbrk(0))); break;
                CASE_TEST(chdir_root);        EXPECT_SYSZR(1, chdir("/")); break;