Build with musl
Building rr with musl is not possible right now, there are two main problems:
- In musl, lots of *64 and *64_t are macros, e.g.
#define stat64 stat. This breakskernel_abi.hhard. thread_dbis not implemented by musl
Other problems:
src/preload/overrides.ccalls__sysconf, __pthread_mutex_lock, __pthread_mutex_trylockwhich are unavailable on musl.
__sysconf is gone now from rr.
Don't __pthread_mutex_lock and __pthread_mutex_trylock already exist in musl?
https://git.musl-libc.org/cgit/musl/tree/src/thread/pthread_mutex_lock.c
https://git.musl-libc.org/cgit/musl/tree/src/thread/pthread_mutex_trylock.c
The double underscore versions aren't required since https://github.com/rr-debugger/rr/commit/d8b1db03360df84c4e369b2858a21dc6feee3213
fwiw, it still fails to build with multiple errors:
rr-master/src/preload/overrides.c: In function 'fix_mutex_kind':
rr-master/src/preload/overrides.c:46:8: error: 'pthread_mutex_t' has no member named '__data'
46 | mutex->__data.__kind &= ~PTHREAD_MUTEX_PRIO_INHERIT_NP;
| ^~
rr-master/src/preload/syscallbuf.c: In function 'sys_recvfrom':
rr-master/src/preload/syscallbuf.c:2927:3: error: unknown type name 'socklen_t'
2927 | socklen_t* addrlen = (socklen_t*)call->args[5];
| ^~~~~~~~~
rr-master/src/test/privileged_net_ioctl.c: In function 'main':
rr-master/src/test/privileged_net_ioctl.c:29:18: warning: implicit declaration of function '__bswap_32'; did you mean '__bswap32'? [-Wimplicit-function-declaration]
29 | #define htonl(x) __bswap_32(x)
| ^~~~~~~~~~
rr-master/src/test/privileged_net_ioctl.c:145:21: note: in expansion of macro 'htonl'
145 | uint32_t host = htonl((uint32_t)10 << 24 | 0x2);
| ^~~~~
(i'm using gcc 12.1.1 and musl 1.2.3 on Alpine edge)
- In musl, lots of *64 and *64_t are macros, e.g.
#define stat64 stat. This breakskernel_abi.hhard.
This seems to still be a big issuem resulting in lots of redefinition errors:
** Building CXX object CMakeFiles/rr.dir/src/CPUFeaturesCommand.cc.o
In file included from /home/build/rr/src/ScopedFd.h:9,
from /home/build/rr/src/CompressedWriter.h:13,
from /home/build/rr/src/CompressedWriter.cc:5:
/home/build/rr/src/kernel_abi.h:429:19: error: redeclaration of 'typedef int64_t rr::BaseArch<arch_, wordsize>::off_t'
429 | typedef int64_t off64_t;
| ^~~~~~~
In file included from /home/build/rr/src/Registers.h:15,
from /home/build/rr/src/Event.h:12,
from /home/build/rr/src/TraceFrame.h:10,
from /home/build/rr/src/util.h:21,
from /home/build/rr/src/CompressedWriter.cc:17:
/home/build/rr/src/kernel_abi.h:420:27: note: previous declaration 'typedef rr::BaseArch<arch_, wordsize>::syscall_slong_t rr::BaseArch<arch_, wordsize>::off_t'
420 | typedef syscall_slong_t off_t;
| ^~~~~
In file included from /home/build/rr/src/ScopedFd.h:6:
/home/build/rr/src/kernel_abi.h:430:19: error: redeclaration of 'typedef int64_t rr::BaseArch<arch_, wordsize>::off_t'
430 | typedef int64_t loff_t;
| ^~~~~~
/home/build/rr/src/kernel_abi.h:420:27: note: previous declaration 'typedef rr::BaseArch<arch_, wordsize>::syscall_slong_t rr::BaseArch<arch_, wordsize>::off_t'
420 | typedef syscall_slong_t off_t;
| ^~~~~
In file included from /home/build/rr/src/ScopedFd.h:8:
/home/build/rr/src/kernel_abi.h:432:20: error: redeclaration of 'typedef uint64_t rr::BaseArch<arch_, wordsize>::ino_t'
432 | typedef uint64_t ino64_t;
| ^~~~~~~
/home/build/rr/src/kernel_abi.h:426:27: note: previous declaration 'typedef rr::BaseArch<arch_, wordsize>::syscall_ulong_t rr::BaseArch<arch_, wordsize>::ino_t'
426 | typedef syscall_ulong_t ino_t;
| ^~~~~
/home/build/rr/src/kernel_abi.h:433:19: error: redeclaration of 'typedef int64_t rr::BaseArch<arch_, wordsize>::blkcnt_
'
433 | typedef int64_t blkcnt64_t;
| ^~~~~~~~~~
/home/build/rr/src/kernel_abi.h:421:27: note: previous declaration 'typedef rr::BaseArch<arch_, wordsize>::syscall_slong_t rr::BaseArch<arch_, wordsize>::blkcnt_t'
421 | typedef syscall_slong_t blkcnt_t;
| ^~~~~~~~
In file included from /home/build/rr/src/kernel_abi.h:1967:
/home/build/obj/SyscallEnumsX64.generated:93:10: error: redeclaration of 'stat'
93 | stat = 4,
| ^
In file included from /home/build/rr/src/ScopedFd.h:7:
/home/build/obj/SyscallEnumsX64.generated:41:3: note: previous declaration 'stat'
41 | stat64 = -40,
| ^~~~~~
/home/build/obj/SyscallEnumsX64.generated:94:11: error: redeclaration of 'fstat'
94 | fstat = 5,
| ^
/home/build/obj/SyscallEnumsX64.generated:43:3: note: previous declaration 'fstat'
43 | fstat64 = -42,
| ^~~~~~~
/home/build/obj/SyscallEnumsX64.generated:95:11: error: redeclaration of 'lstat'
95 | lstat = 6,
| ^
/home/build/obj/SyscallEnumsX64.generated:42:3: note: previous declaration 'lstat'
42 | lstat64 = -41,
| ^~~~~~~
/home/build/obj/SyscallEnumsX64.generated:165:14: error: redeclaration of 'truncate'
165 | truncate = 76,
| ^~
/home/build/obj/SyscallEnumsX64.generated:39:3: note: previous declaration 'truncate'
39 | truncate64 = -38,
| ^~~~~~~~~~
/home/build/obj/SyscallEnumsX64.generated:166:15: error: redeclaration of 'ftruncate'
166 | ftruncate = 77,
| ^~
/home/build/obj/SyscallEnumsX64.generated:40:3: note: previous declaration 'ftruncate'
40 | ftruncate64 = -39,
| ^~~~~~~~~~~
/home/build/obj/SyscallEnumsX64.generated:351:13: error: redeclaration of 'fstatat'
351 | fstatat = 262,
| ^~~
/home/build/obj/SyscallEnumsX64.generated:68:3: note: previous declaration 'fstatat'
68 | fstatat64 = -67,
| ^~~~~~~~~
In file included from /home/build/rr/src/kernel_abi.h:2178:
/home/build/obj/SyscallEnumsX86.generated:203:16: error: redeclaration of 'truncate'
203 | truncate64 = 193,
| ^~~
/home/build/obj/SyscallEnumsX86.generated:102:3: note: previous declaration 'truncate'
102 | truncate = 92,
| ^~~~~~~~
/home/build/obj/SyscallEnumsX86.generated:204:17: error: redeclaration of 'ftruncate'
204 | ftruncate64 = 194,
| ^~~
/home/build/obj/SyscallEnumsX86.generated:103:3: note: previous declaration 'ftruncate'
103 | ftruncate = 93,
| ^~~~~~~~~
/home/build/obj/SyscallEnumsX86.generated:205:12: error: redeclaration of 'stat'
205 | stat64 = 195,
| ^~~
/home/build/obj/SyscallEnumsX86.generated:116:3: note: previous declaration 'stat'
116 | stat = 106,
| ^~~~
/home/build/obj/SyscallEnumsX86.generated:206:13: error: redeclaration of 'lstat'
206 | lstat64 = 196,
| ^~~
/home/build/obj/SyscallEnumsX86.generated:117:3: note: previous declaration 'lstat'
117 | lstat = 107,
| ^~~~~
/home/build/obj/SyscallEnumsX86.generated:207:13: error: redeclaration of 'fstat'
207 | fstat64 = 197,
| ^~~
/home/build/obj/SyscallEnumsX86.generated:118:3: note: previous declaration 'fstat'
118 | fstat = 108,
| ^~~~~
/home/build/obj/SyscallEnumsX86.generated:306:15: error: redeclaration of 'fstatat'
306 | fstatat64 = 300,
| ^~~
/home/build/obj/SyscallEnumsX86.generated:2:3: note: previous declaration 'fstatat'
2 | fstatat = -1,
| ^~~~~~~
In file included from /home/build/rr/src/kernel_abi.h:2424:
/home/build/obj/SyscallEnumsGeneric.generated:82:13: error: redeclaration of 'stat'
82 | stat64 = -81,
| ^~
/home/build/obj/SyscallEnumsGeneric.generated:52:3: note: previous declaration 'stat'
52 | stat = -51,
| ^~~~
/home/build/obj/SyscallEnumsGeneric.generated:83:14: error: redeclaration of 'lstat'
83 | lstat64 = -82,
| ^~
/home/build/obj/SyscallEnumsGeneric.generated:53:3: note: previous declaration 'lstat'
53 | lstat = -52,
| ^~~~~
/home/build/obj/SyscallEnumsGeneric.generated:190:14: error: redeclaration of 'truncate'
190 | truncate = 45,
| ^~
/home/build/obj/SyscallEnumsGeneric.generated:80:3: note: previous declaration 'truncate'
80 | truncate64 = -79,
| ^~~~~~~~~~
/home/build/obj/SyscallEnumsGeneric.generated:191:15: error: redeclaration of 'ftruncate'
191 | ftruncate = 46,
| ^~
/home/build/obj/SyscallEnumsGeneric.generated:81:3: note: previous declaration 'ftruncate'
81 | ftruncate64 = -80,
| ^~~~~~~~~~~
/home/build/obj/SyscallEnumsGeneric.generated:224:13: error: redeclaration of 'fstatat'
224 | fstatat = 79,
| ^~
/home/build/obj/SyscallEnumsGeneric.generated:118:3: note: previous declaration 'fstatat'
118 | fstatat64 = -117,
| ^~~~~~~~~
/home/build/obj/SyscallEnumsGeneric.generated:225:11: error: redeclaration of 'fstat'
225 | fstat = 80,
| ^~
/home/build/obj/SyscallEnumsGeneric.generated:84:3: note: previous declaration 'fstat'
84 | fstat64 = -83,
| ^~~~~~~**
Should this issue be closed as duplicate of the (later, but with more content) issue #2363 [note: similar issues are also on Alpine stable]?