From 0b72c2c6a000b53d9cda8cf9e7475eae8f859df0 Mon Sep 17 00:00:00 2001 From: q66 Date: Thu, 3 Sep 2020 05:35:22 +0200 Subject: [PATCH] kore: fix build on ppc64*, properly use archs --- srcpkgs/kore/patches/ppc64.patch | 463 +++++++++++++++++++++++++++++++ srcpkgs/kore/template | 6 +- 2 files changed, 465 insertions(+), 4 deletions(-) create mode 100644 srcpkgs/kore/patches/ppc64.patch diff --git a/srcpkgs/kore/patches/ppc64.patch b/srcpkgs/kore/patches/ppc64.patch new file mode 100644 index 00000000000..1e06a1927e0 --- /dev/null +++ b/srcpkgs/kore/patches/ppc64.patch @@ -0,0 +1,463 @@ +From 983998134384d06aeb49a33a97400d573210e852 Mon Sep 17 00:00:00 2001 +From: q66 +Date: Thu, 3 Sep 2020 05:33:48 +0200 +Subject: [PATCH] add ppc64* support + +--- + misc/linux-platform.sh | 8 + + misc/linux/ppc64_syscall.h.in | 390 ++++++++++++++++++++++++++++++++++ + src/seccomp.c | 10 + + 3 files changed, 408 insertions(+) + create mode 100644 misc/linux/ppc64_syscall.h.in + +diff --git misc/linux-platform.sh misc/linux-platform.sh +index 2acde97..0d949d2 100755 +--- misc/linux-platform.sh ++++ misc/linux-platform.sh +@@ -22,6 +22,14 @@ case "$PLATFORM" in + seccomp_audit_arch=AUDIT_ARCH_AARCH64 + syscall_file=$BASE/linux/aarch64_syscall.h.in + ;; ++ ppc64le*) ++ seccomp_audit_arch=AUDIT_ARCH_PPC64LE ++ syscall_file=$BASE/linux/ppc64_syscall.h.in ++ ;; ++ ppc64*) ++ seccomp_audit_arch=AUDIT_ARCH_PPC64 ++ syscall_file=$BASE/linux/ppc64_syscall.h.in ++ ;; + esac + + cat << __EOF +diff --git misc/linux/ppc64_syscall.h.in misc/linux/ppc64_syscall.h.in +new file mode 100644 +index 0000000..b935864 +--- /dev/null ++++ misc/linux/ppc64_syscall.h.in +@@ -0,0 +1,390 @@ ++#define __NR_restart_syscall 0 ++#define __NR_exit 1 ++#define __NR_fork 2 ++#define __NR_read 3 ++#define __NR_write 4 ++#define __NR_open 5 ++#define __NR_close 6 ++#define __NR_waitpid 7 ++#define __NR_creat 8 ++#define __NR_link 9 ++#define __NR_unlink 10 ++#define __NR_execve 11 ++#define __NR_chdir 12 ++#define __NR_time 13 ++#define __NR_mknod 14 ++#define __NR_chmod 15 ++#define __NR_lchown 16 ++#define __NR_break 17 ++#define __NR_oldstat 18 ++#define __NR_lseek 19 ++#define __NR_getpid 20 ++#define __NR_mount 21 ++#define __NR_umount 22 ++#define __NR_setuid 23 ++#define __NR_getuid 24 ++#define __NR_stime 25 ++#define __NR_ptrace 26 ++#define __NR_alarm 27 ++#define __NR_oldfstat 28 ++#define __NR_pause 29 ++#define __NR_utime 30 ++#define __NR_stty 31 ++#define __NR_gtty 32 ++#define __NR_access 33 ++#define __NR_nice 34 ++#define __NR_ftime 35 ++#define __NR_sync 36 ++#define __NR_kill 37 ++#define __NR_rename 38 ++#define __NR_mkdir 39 ++#define __NR_rmdir 40 ++#define __NR_dup 41 ++#define __NR_pipe 42 ++#define __NR_times 43 ++#define __NR_prof 44 ++#define __NR_brk 45 ++#define __NR_setgid 46 ++#define __NR_getgid 47 ++#define __NR_signal 48 ++#define __NR_geteuid 49 ++#define __NR_getegid 50 ++#define __NR_acct 51 ++#define __NR_umount2 52 ++#define __NR_lock 53 ++#define __NR_ioctl 54 ++#define __NR_fcntl 55 ++#define __NR_mpx 56 ++#define __NR_setpgid 57 ++#define __NR_ulimit 58 ++#define __NR_oldolduname 59 ++#define __NR_umask 60 ++#define __NR_chroot 61 ++#define __NR_ustat 62 ++#define __NR_dup2 63 ++#define __NR_getppid 64 ++#define __NR_getpgrp 65 ++#define __NR_setsid 66 ++#define __NR_sigaction 67 ++#define __NR_sgetmask 68 ++#define __NR_ssetmask 69 ++#define __NR_setreuid 70 ++#define __NR_setregid 71 ++#define __NR_sigsuspend 72 ++#define __NR_sigpending 73 ++#define __NR_sethostname 74 ++#define __NR_setrlimit 75 ++#define __NR_getrlimit 76 ++#define __NR_getrusage 77 ++#define __NR_gettimeofday 78 ++#define __NR_settimeofday 79 ++#define __NR_getgroups 80 ++#define __NR_setgroups 81 ++#define __NR_select 82 ++#define __NR_symlink 83 ++#define __NR_oldlstat 84 ++#define __NR_readlink 85 ++#define __NR_uselib 86 ++#define __NR_swapon 87 ++#define __NR_reboot 88 ++#define __NR_readdir 89 ++#define __NR_mmap 90 ++#define __NR_munmap 91 ++#define __NR_truncate 92 ++#define __NR_ftruncate 93 ++#define __NR_fchmod 94 ++#define __NR_fchown 95 ++#define __NR_getpriority 96 ++#define __NR_setpriority 97 ++#define __NR_profil 98 ++#define __NR_statfs 99 ++#define __NR_fstatfs 100 ++#define __NR_ioperm 101 ++#define __NR_socketcall 102 ++#define __NR_syslog 103 ++#define __NR_setitimer 104 ++#define __NR_getitimer 105 ++#define __NR_stat 106 ++#define __NR_lstat 107 ++#define __NR_fstat 108 ++#define __NR_olduname 109 ++#define __NR_iopl 110 ++#define __NR_vhangup 111 ++#define __NR_idle 112 ++#define __NR_vm86 113 ++#define __NR_wait4 114 ++#define __NR_swapoff 115 ++#define __NR_sysinfo 116 ++#define __NR_ipc 117 ++#define __NR_fsync 118 ++#define __NR_sigreturn 119 ++#define __NR_clone 120 ++#define __NR_setdomainname 121 ++#define __NR_uname 122 ++#define __NR_modify_ldt 123 ++#define __NR_adjtimex 124 ++#define __NR_mprotect 125 ++#define __NR_sigprocmask 126 ++#define __NR_create_module 127 ++#define __NR_init_module 128 ++#define __NR_delete_module 129 ++#define __NR_get_kernel_syms 130 ++#define __NR_quotactl 131 ++#define __NR_getpgid 132 ++#define __NR_fchdir 133 ++#define __NR_bdflush 134 ++#define __NR_sysfs 135 ++#define __NR_personality 136 ++#define __NR_afs_syscall 137 ++#define __NR_setfsuid 138 ++#define __NR_setfsgid 139 ++#define __NR__llseek 140 ++#define __NR_getdents 141 ++#define __NR__newselect 142 ++#define __NR_flock 143 ++#define __NR_msync 144 ++#define __NR_readv 145 ++#define __NR_writev 146 ++#define __NR_getsid 147 ++#define __NR_fdatasync 148 ++#define __NR__sysctl 149 ++#define __NR_mlock 150 ++#define __NR_munlock 151 ++#define __NR_mlockall 152 ++#define __NR_munlockall 153 ++#define __NR_sched_setparam 154 ++#define __NR_sched_getparam 155 ++#define __NR_sched_setscheduler 156 ++#define __NR_sched_getscheduler 157 ++#define __NR_sched_yield 158 ++#define __NR_sched_get_priority_max 159 ++#define __NR_sched_get_priority_min 160 ++#define __NR_sched_rr_get_interval 161 ++#define __NR_nanosleep 162 ++#define __NR_mremap 163 ++#define __NR_setresuid 164 ++#define __NR_getresuid 165 ++#define __NR_query_module 166 ++#define __NR_poll 167 ++#define __NR_nfsservctl 168 ++#define __NR_setresgid 169 ++#define __NR_getresgid 170 ++#define __NR_prctl 171 ++#define __NR_rt_sigreturn 172 ++#define __NR_rt_sigaction 173 ++#define __NR_rt_sigprocmask 174 ++#define __NR_rt_sigpending 175 ++#define __NR_rt_sigtimedwait 176 ++#define __NR_rt_sigqueueinfo 177 ++#define __NR_rt_sigsuspend 178 ++#define __NR_pread64 179 ++#define __NR_pwrite64 180 ++#define __NR_chown 181 ++#define __NR_getcwd 182 ++#define __NR_capget 183 ++#define __NR_capset 184 ++#define __NR_sigaltstack 185 ++#define __NR_sendfile 186 ++#define __NR_getpmsg 187 ++#define __NR_putpmsg 188 ++#define __NR_vfork 189 ++#define __NR_ugetrlimit 190 ++#define __NR_readahead 191 ++#define __NR_pciconfig_read 198 ++#define __NR_pciconfig_write 199 ++#define __NR_pciconfig_iobase 200 ++#define __NR_multiplexer 201 ++#define __NR_getdents64 202 ++#define __NR_pivot_root 203 ++#define __NR_madvise 205 ++#define __NR_mincore 206 ++#define __NR_gettid 207 ++#define __NR_tkill 208 ++#define __NR_setxattr 209 ++#define __NR_lsetxattr 210 ++#define __NR_fsetxattr 211 ++#define __NR_getxattr 212 ++#define __NR_lgetxattr 213 ++#define __NR_fgetxattr 214 ++#define __NR_listxattr 215 ++#define __NR_llistxattr 216 ++#define __NR_flistxattr 217 ++#define __NR_removexattr 218 ++#define __NR_lremovexattr 219 ++#define __NR_fremovexattr 220 ++#define __NR_futex 221 ++#define __NR_sched_setaffinity 222 ++#define __NR_sched_getaffinity 223 ++#define __NR_tuxcall 225 ++#define __NR_io_setup 227 ++#define __NR_io_destroy 228 ++#define __NR_io_getevents 229 ++#define __NR_io_submit 230 ++#define __NR_io_cancel 231 ++#define __NR_set_tid_address 232 ++#define __NR_fadvise64 233 ++#define __NR_exit_group 234 ++#define __NR_lookup_dcookie 235 ++#define __NR_epoll_create 236 ++#define __NR_epoll_ctl 237 ++#define __NR_epoll_wait 238 ++#define __NR_remap_file_pages 239 ++#define __NR_timer_create 240 ++#define __NR_timer_settime 241 ++#define __NR_timer_gettime 242 ++#define __NR_timer_getoverrun 243 ++#define __NR_timer_delete 244 ++#define __NR_clock_settime 245 ++#define __NR_clock_gettime 246 ++#define __NR_clock_getres 247 ++#define __NR_clock_nanosleep 248 ++#define __NR_swapcontext 249 ++#define __NR_tgkill 250 ++#define __NR_utimes 251 ++#define __NR_statfs64 252 ++#define __NR_fstatfs64 253 ++#define __NR_rtas 255 ++#define __NR_sys_debug_setcontext 256 ++#define __NR_migrate_pages 258 ++#define __NR_mbind 259 ++#define __NR_get_mempolicy 260 ++#define __NR_set_mempolicy 261 ++#define __NR_mq_open 262 ++#define __NR_mq_unlink 263 ++#define __NR_mq_timedsend 264 ++#define __NR_mq_timedreceive 265 ++#define __NR_mq_notify 266 ++#define __NR_mq_getsetattr 267 ++#define __NR_kexec_load 268 ++#define __NR_add_key 269 ++#define __NR_request_key 270 ++#define __NR_keyctl 271 ++#define __NR_waitid 272 ++#define __NR_ioprio_set 273 ++#define __NR_ioprio_get 274 ++#define __NR_inotify_init 275 ++#define __NR_inotify_add_watch 276 ++#define __NR_inotify_rm_watch 277 ++#define __NR_spu_run 278 ++#define __NR_spu_create 279 ++#define __NR_pselect6 280 ++#define __NR_ppoll 281 ++#define __NR_unshare 282 ++#define __NR_splice 283 ++#define __NR_tee 284 ++#define __NR_vmsplice 285 ++#define __NR_openat 286 ++#define __NR_mkdirat 287 ++#define __NR_mknodat 288 ++#define __NR_fchownat 289 ++#define __NR_futimesat 290 ++#define __NR_newfstatat 291 ++#define __NR_unlinkat 292 ++#define __NR_renameat 293 ++#define __NR_linkat 294 ++#define __NR_symlinkat 295 ++#define __NR_readlinkat 296 ++#define __NR_fchmodat 297 ++#define __NR_faccessat 298 ++#define __NR_get_robust_list 299 ++#define __NR_set_robust_list 300 ++#define __NR_move_pages 301 ++#define __NR_getcpu 302 ++#define __NR_epoll_pwait 303 ++#define __NR_utimensat 304 ++#define __NR_signalfd 305 ++#define __NR_timerfd_create 306 ++#define __NR_eventfd 307 ++#define __NR_sync_file_range2 308 ++#define __NR_fallocate 309 ++#define __NR_subpage_prot 310 ++#define __NR_timerfd_settime 311 ++#define __NR_timerfd_gettime 312 ++#define __NR_signalfd4 313 ++#define __NR_eventfd2 314 ++#define __NR_epoll_create1 315 ++#define __NR_dup3 316 ++#define __NR_pipe2 317 ++#define __NR_inotify_init1 318 ++#define __NR_perf_event_open 319 ++#define __NR_preadv 320 ++#define __NR_pwritev 321 ++#define __NR_rt_tgsigqueueinfo 322 ++#define __NR_fanotify_init 323 ++#define __NR_fanotify_mark 324 ++#define __NR_prlimit64 325 ++#define __NR_socket 326 ++#define __NR_bind 327 ++#define __NR_connect 328 ++#define __NR_listen 329 ++#define __NR_accept 330 ++#define __NR_getsockname 331 ++#define __NR_getpeername 332 ++#define __NR_socketpair 333 ++#define __NR_send 334 ++#define __NR_sendto 335 ++#define __NR_recv 336 ++#define __NR_recvfrom 337 ++#define __NR_shutdown 338 ++#define __NR_setsockopt 339 ++#define __NR_getsockopt 340 ++#define __NR_sendmsg 341 ++#define __NR_recvmsg 342 ++#define __NR_recvmmsg 343 ++#define __NR_accept4 344 ++#define __NR_name_to_handle_at 345 ++#define __NR_open_by_handle_at 346 ++#define __NR_clock_adjtime 347 ++#define __NR_syncfs 348 ++#define __NR_sendmmsg 349 ++#define __NR_setns 350 ++#define __NR_process_vm_readv 351 ++#define __NR_process_vm_writev 352 ++#define __NR_finit_module 353 ++#define __NR_kcmp 354 ++#define __NR_sched_setattr 355 ++#define __NR_sched_getattr 356 ++#define __NR_renameat2 357 ++#define __NR_seccomp 358 ++#define __NR_getrandom 359 ++#define __NR_memfd_create 360 ++#define __NR_bpf 361 ++#define __NR_execveat 362 ++#define __NR_switch_endian 363 ++#define __NR_userfaultfd 364 ++#define __NR_membarrier 365 ++#define __NR_mlock2 378 ++#define __NR_copy_file_range 379 ++#define __NR_preadv2 380 ++#define __NR_pwritev2 381 ++#define __NR_kexec_file_load 382 ++#define __NR_statx 383 ++#define __NR_pkey_alloc 384 ++#define __NR_pkey_free 385 ++#define __NR_pkey_mprotect 386 ++#define __NR_rseq 387 ++#define __NR_io_pgetevents 388 ++#define __NR_semtimedop 392 ++#define __NR_semget 393 ++#define __NR_semctl 394 ++#define __NR_shmget 395 ++#define __NR_shmctl 396 ++#define __NR_shmat 397 ++#define __NR_shmdt 398 ++#define __NR_msgget 399 ++#define __NR_msgsnd 400 ++#define __NR_msgrcv 401 ++#define __NR_msgctl 402 ++#define __NR_pidfd_send_signal 424 ++#define __NR_io_uring_setup 425 ++#define __NR_io_uring_enter 426 ++#define __NR_io_uring_register 427 ++#define __NR_open_tree 428 ++#define __NR_move_mount 429 ++#define __NR_fsopen 430 ++#define __NR_fsconfig 431 ++#define __NR_fsmount 432 ++#define __NR_fspick 433 ++#define __NR_pidfd_open 434 ++#define __NR_clone3 435 ++ +diff --git src/seccomp.c src/seccomp.c +index 505ac0b..14074db 100644 +--- src/seccomp.c ++++ src/seccomp.c +@@ -426,11 +426,19 @@ seccomp_register_violation(pid_t pid) + int idx; + struct kore_worker *kw; + struct iovec iov; ++#if defined(__powerpc__) ++ unsigned long regs[32]; ++#else + struct user_regs_struct regs; ++#endif + long sysnr; + const char *name; + ++#if defined(__powerpc__) ++ iov.iov_base = (void *)regs; ++#else + iov.iov_base = ®s; ++#endif + iov.iov_len = sizeof(regs); + + if (ptrace(PTRACE_GETREGSET, pid, 1, &iov) == -1) +@@ -442,6 +450,8 @@ seccomp_register_violation(pid_t pid) + sysnr = regs.orig_ax; + #elif SECCOMP_AUDIT_ARCH == AUDIT_ARCH_AARCH64 + sysnr = regs.regs[8]; ++#elif defined(__powerpc__) ++ sysnr = regs[0]; + #else + #error "platform not yet supported" + #endif +-- +2.28.0 + diff --git a/srcpkgs/kore/template b/srcpkgs/kore/template index b2cff305837..79801dc53d6 100644 --- a/srcpkgs/kore/template +++ b/srcpkgs/kore/template @@ -2,6 +2,8 @@ pkgname=kore version=4.0.0 revision=1 +# arch specific seccomp stuff +archs="x86_64* aarch64* ppc64*" build_style=gnu-makefile make_use_env=yes make_build_args="PREFIX=/usr CURL=1 TASKS=1 PGSQL=1 JSONRPC=1 ACME=1" @@ -19,10 +21,6 @@ if [ "$XBPS_TARGET_LIBC" = "musl" ]; then makedepends+=" musl-legacy-compat" fi -if [ "$XBPS_TARGET_WORDSIZE" == "32" ]; then - broken="Requires syscalls not available on 32 bit architectures" -fi - if [ -z "$CROSS_BUILD" ]; then makedepends+=" python3-devel" make_build_args+="PYTHON=1"