@@ -942,6 +942,7 @@ int run_syscall(int min, int max)
942
942
int ret = 0 ;
943
943
void * p1 , * p2 ;
944
944
int has_gettid = 1 ;
945
+ int has_brk ;
945
946
946
947
/* <proc> indicates whether or not /proc is mounted */
947
948
proc = stat ("/proc" , & stat_buf ) == 0 ;
@@ -954,6 +955,9 @@ int run_syscall(int min, int max)
954
955
has_gettid = __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 30 );
955
956
#endif
956
957
958
+ /* on musl setting brk()/sbrk() always fails */
959
+ has_brk = brk (0 ) == 0 ;
960
+
957
961
for (test = min ; test >= 0 && test <= max ; test ++ ) {
958
962
int llen = 0 ; /* line length */
959
963
@@ -969,9 +973,9 @@ int run_syscall(int min, int max)
969
973
CASE_TEST (kill_0 ); EXPECT_SYSZR (1 , kill (getpid (), 0 )); break ;
970
974
CASE_TEST (kill_CONT ); EXPECT_SYSZR (1 , kill (getpid (), 0 )); break ;
971
975
CASE_TEST (kill_BADPID ); EXPECT_SYSER (1 , kill (INT_MAX , 0 ), -1 , ESRCH ); break ;
972
- CASE_TEST (sbrk_0 ); EXPECT_PTRNE (1 , sbrk (0 ), (void * )-1 ); break ;
973
- CASE_TEST (sbrk ); if ((p1 = p2 = sbrk (4096 )) != (void * )-1 ) p2 = sbrk (-4096 ); EXPECT_SYSZR (1 , (p2 == (void * )-1 ) || p2 == p1 ); break ;
974
- CASE_TEST (brk ); EXPECT_SYSZR (1 , brk (sbrk (0 ))); break ;
976
+ CASE_TEST (sbrk_0 ); EXPECT_PTRNE (has_brk , sbrk (0 ), (void * )-1 ); break ;
977
+ CASE_TEST (sbrk ); if ((p1 = p2 = sbrk (4096 )) != (void * )-1 ) p2 = sbrk (-4096 ); EXPECT_SYSZR (has_brk , (p2 == (void * )-1 ) || p2 == p1 ); break ;
978
+ CASE_TEST (brk ); EXPECT_SYSZR (has_brk , brk (sbrk (0 ))); break ;
975
979
CASE_TEST (chdir_root ); EXPECT_SYSZR (1 , chdir ("/" )); chdir (getenv ("PWD" )); break ;
976
980
CASE_TEST (chdir_dot ); EXPECT_SYSZR (1 , chdir ("." )); break ;
977
981
CASE_TEST (chdir_blah ); EXPECT_SYSER (1 , chdir ("/blah" ), -1 , ENOENT ); break ;
0 commit comments