1 2017-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 2 3 Prepare for 4.16 release. 4 * NEWS: Update for 4.16 release. 5 6 2017-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 7 8 .mailmap: add addresses of JingPiao Chen. 9 * .mailmap: Add both addresses of JingPiao Chen here to avoid 10 duplications in CREDITS file. 11 12 tests: skip scno tampering tests on compat mips abi. 13 * tests/scno_tampering.sh: In case of mips abi, skip the test 14 unless it is the native abi. 15 16 2017-02-12 Dmitry V. Levin <ldv (a] altlinux.org> 17 18 Fix -Werror=duplicate-decl-specifier compilation issues. 19 capability.c:82:28: error: duplicate "const" declaration specifier 20 capability.c:110:33: error: duplicate "const" declaration specifier 21 rt_tgsigqueueinfo.c:42:61: error: duplicate "const" declaration specifier 22 utime.c:66:23: error: duplicate "const" declaration specifier 23 waitid.c:147:20: error: duplicate "const" declaration specifier 24 25 * capability.c (cap_user_header_t, cap_user_data_t): Remove. 26 (get_cap_header): Change return type 27 to "const struct user_cap_header_struct *". 28 (print_cap_header, print_cap_data): Change the type of last argument 29 to "const struct user_cap_header_struct * const". 30 (SYS_FUNC(capget)): Change type of "h" variable 31 to "const struct user_cap_header_struct *". 32 (SYS_FUNC(capset)): Change type of "h" variable 33 to "const struct user_cap_header_struct * const". 34 * tests/rt_tgsigqueueinfo.c (k_tgsigqueueinfo): Change the type of last 35 argument to "const void *const". 36 * tests/utime.c (main): Change the type of "tail_u" variable 37 to "const struct utimbuf *const". 38 * tests/waitid.c (do_waitid): Change the type of 3rd argument 39 to "const siginfo_t *const". 40 41 2017-02-12 Dmitry V. Levin <ldv (a] altlinux.org> 42 43 tests: rewrite pipe syscall decoding check from match_grep to match_diff 44 * configure.ac (AC_CHECK_FUNCS): Remove pipe2. 45 * tests/pipe.c: Include <asm/unistd.h>, skip the test if [!__NR_pipe] 46 instead of [!HAVE_PIPE2]. 47 (main): Do not call pipe2. 48 * tests/pipe.test: Skip the test if libc pipe wrapper does not use 49 pipe syscall, rewrite from match_grep to match_diff. 50 * tests/pipe.expected: Update expected output. 51 52 2017-02-11 Dmitry V. Levin <ldv (a] altlinux.org> 53 54 tests: rewrite pipe2 syscall decoding check from match_grep to match_diff 55 Unlike pipe.test that is based on match_grep, the new test 56 is based on match_diff and does more rigorous testing. 57 58 * tests/pipe2.c: New file. 59 * tests/pipe2.test: New test. 60 * tests/.gitignore: Add pipe2. 61 * tests/Makefile.am (check_PROGRAMS): Likewise. 62 (DECODER_TESTS): Add pipe2.test. 63 64 2017-02-10 Dmitry V. Levin <ldv (a] altlinux.org> 65 66 tests: rewrite mq.test from match_grep to match_diff. 67 Unlike the previous edition of the test that was based on match_grep, 68 the new one is match_diff based and does more rigorous testing. 69 70 * tests/mq.c: Include <stdio.h>. 71 (NAME): New macro. 72 (main): Use it. Print expected output. 73 * tests/mq.expected: Remove. 74 * tests/Makefile.am (EXTRA_DIST): Remove mq.expected. 75 * tests/mq.test: Use run_strace_match_diff. 76 77 2017-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 78 79 Simplify struct inject_opts.rval semantics. 80 Drop use of INJECT_OPTS_RVAL_DISABLE special inject_opts.rval value, 81 INJECT_OPTS_RVAL_DEFAULT is enough. 82 83 * defs.h (INJECT_OPTS_RVAL_DISABLE): Remove. 84 * qualify.c (qualify_inject_common): Do not replace 85 INJECT_OPTS_RVAL_DEFAULT with INJECT_OPTS_RVAL_DISABLE 86 in inject_opts.rval. 87 * syscall.c (tamper_with_syscall_entering): Check 88 for INJECT_OPTS_RVAL_DEFAULT instead of INJECT_OPTS_RVAL_DISABLE. 89 90 2017-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 91 92 tests: check signal injection along with fault injection. 93 * tests/qual_inject-error-signal.c: New file. 94 * tests/qual_inject-error-signal.expected: Likewise. 95 * tests/qual_inject-error-signal.test: New test. 96 * tests/.gitignore: Add qual_inject-error-signal. 97 * tests/Makefile.am (check_PROGRAMS): Likewise. 98 (MISC_TESTS): Add qual_inject-error-signal.test. 99 (EXTRA_DIST): Add qual_inject-error-signal.expected. 100 101 tests: simplify qual_inject-signal.test. 102 * tests/qual_inject-signal.test: Use $NAME instead of qual_inject-signal. 103 104 2017-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 105 106 Make symbolic errno values match case-insensitive. 107 Follow the example of case-insensitive symbolic signal values in signal 108 and inject expressions and make symbolic errno values in inject 109 expressions case-insensitive. 110 111 * qualify.c (find_errno_by_name): Use strcasecmp instead of strcmp 112 to match symbolic errno values. 113 * tests/qual_fault.c (main): Likewise. 114 * tests/qual_fault.test: Test case-insensitive symbolic errno match. 115 116 2017-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 117 118 tests: check case-insensitive symbolic signal match. 119 * tests/qual_signal.test: Test case-insensitive symbolic signal match. 120 121 2017-02-09 Eugene Syromyatnikov <evgsyr (a] gmail.com> 122 123 Update NEWS. 124 125 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 126 127 Update NEWS. 128 129 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 130 131 strace.spec.in: fix dist version checks. 132 * strace.spec.in: Fix libunwind availability check. 133 134 Reported-by: Eugene Syromyatnikov <evgsyr (a] gmail.com> 135 136 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 137 138 tests: update ipc_sem.test for new glibc. 139 Starting with commit glibc-2.24-553-g40c0a78, glibc may pass NULL 140 address to semctl like other libcs. 141 142 * tests/ipc_sem.c (main) [__GLIBC__]: Remove. 143 144 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 145 146 tests: fix typo in bpf.test. 147 * tests/bpf.c (main): Add missing semicolon. 148 149 Fixes: ad427721 ("tests: rewrite bpf.test from match_grep to match_diff") 150 151 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 152 153 tests: check signal injection. 154 * tests/qual_inject-signal.c: New file. 155 * tests/qual_inject-signal.expected: Likewise. 156 * tests/qual_inject-signal.test: New test. 157 * tests/.gitignore: Add qual_inject-signal. 158 * tests/Makefile.am (check_PROGRAMS): Likewise. 159 (MISC_TESTS): Add qual_inject-signal.test. 160 (EXTRA_DIST): Add qual_inject-signal.expected. 161 162 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 163 164 Implement -e inject= option. 165 Introduce -e inject= as a general injection option, 166 limit -e fault= option to syscall fault injection. 167 168 Change default return code of syscall fault injection to ENOSYS. 169 170 * qualify.c (parse_inject_token): Add fault_tokens_only argument, 171 do not accept retval= and signal= tokens when fault_tokens_only 172 is set to true. 173 (parse_inject_expression): Add fault_tokens_only argument, 174 forward it to parse_inject_token. 175 (qualify_inject_common): New function. 176 (qualify_fault): Use it. 177 (qualify_inject): New function. 178 (qual_options): New entry. 179 * strace.1: Describe -e inject= option. 180 * NEWS: Mention -e inject= option. 181 * tests/qual_fault-syntax.test: Test that -e fault= option does not 182 support retval=, signal=, and multiple error= tokens. 183 * tests/qual_fault.c (DEFAULT_ERRNO): Set to ENOSYS unconditionally. 184 * tests/qual_inject-retval.test: Replace -e fault= option 185 with -e inject= option. 186 * tests/qual_inject-syntax.test: New test. 187 * tests/Makefile.am (MISC_TESTS): Add it. 188 189 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 190 191 tests: prepare for introduction of -e inject= option. 192 Rename files related to fault injection to avoid further confusion. 193 194 * tests/fault_injection-exit_group.expected: Rename 195 to tests/qual_fault-exit_group.expected. 196 * tests/fault_injection-exit_group.test: Rename 197 to tests/qual_fault-exit_group.test. 198 * tests/fault_syntax.test: Rename to tests/qual_fault-syntax.test. 199 * tests/fault_injection.c: Rename to tests/qual_fault.c. 200 * tests/fault_injection.test: Rename to tests/qual_fault.test. 201 * tests/fault_injection-retval.c: Rename to tests/qual_inject-retval.c. 202 * tests/fault_injection-retval.test: Rename 203 to tests/qual_inject-retval.test. 204 * tests/fault_injection.sh: Rename to tests/scno_tampering.sh. 205 * tests/.gitignore: Update. 206 * tests/Makefile.am (check_PROGRAMS, DECODER_TESTS, MISC_TESTS, 207 EXTRA_DIST): Update. 208 209 2017-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 210 211 Prepare for introduction of -e inject= option. 212 As -e fault= injection syntax has been extended to configure various 213 kinds of injections besides fault injection, the original option name 214 bacame too narrow. 215 216 This change renames internal constants, types, and functions from 217 "fault" to more generic inject/tamper ones. 218 219 * defs.h (fault_opts): Rename to inject_opts. 220 (FAULT_OPTS_RVAL_DEFAULT): Rename to INJECT_OPTS_RVAL_DEFAULT. 221 (FAULT_OPTS_RVAL_DISABLE): Rename to INJECT_OPTS_RVAL_DISABLE. 222 (struct tcb): Rename fault_vec field to inject_vec. 223 (TCB_FAULT_INJ): Rename to TCB_TAMPERED. 224 (QUAL_FAULT): Rename to QUAL_INJECT. 225 (fault_vec): Rename to inject_vec. 226 All users changed. 227 * qualify.c (fault_set): Rename to inject_set. 228 (parse_fault_token): Rename to parse_inject_token. 229 (parse_fault_expression): Rename to parse_inject_expression. 230 All callers changed. 231 * syscall.c (fault_vec): Rename to inject_vec. 232 (tcb_fault_opts): Rename to tcb_inject_opts. 233 (inject_syscall_fault_entering): Rename to tamper_with_syscall_entering. 234 (update_syscall_fault_exiting): Rename to tamper_with_syscall_exiting. 235 (syscall_fault_injected): Rename to syscall_tampered. 236 All callers changed. 237 238 2017-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 239 240 tests: make Makefile.am lists sorted in C locale. 241 * tests/Makefile.am (check_PROGRAMS, DECODER_TESTS, MISC_TESTS, 242 EXTRA_DIST): Make sorted in C locale. 243 244 2017-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 245 246 tests: use ARG_STR in msg_control.test. 247 Drop local VAL_STR macro in favour of ARG_STR macro from tests/tests.h. 248 249 * tests/msg_control.c (VAL_STR): Remove. 250 (test_sol_socket, test_sol_ip): Replace VAL_STR with ARG_STR. 251 252 2017-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 253 254 powerpc, powerpc64: wire up new syscalls. 255 * linux/powerpc/syscallent.h [382]: Add kexec_file_load entry. 256 * linux/powerpc64/syscallent.h [382]: Likewise. 257 258 microblaze: wire up new syscalls. 259 * linux/microblaze/syscallent.h [392..397]: New entries. 260 261 avr32: wire up new syscalls. 262 * linux/avr32/syscallent.h [328..330]: New entries. 263 264 2017-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 265 266 Update IPV6_* constants. 267 * xlat/sockipv6options.in: Add IPV6_RECVFRAGSIZE introduced 268 by linux kernel commit v4.10-rc1~202^2~340^2~1. 269 270 Update IP_* constants. 271 * xlat/sockipoptions.in: Add IP_RECVFRAGSIZE introduced 272 by linux kernel commit v4.10-rc1~202^2~340^2~2. 273 274 2017-02-06 Jacob Goense <dugo (a] xs4all.nl> 275 276 or1k: fix build. 277 This fixes a typo in the arch_set_success for the or1k architecture. 278 279 * linux/or1k/set_error.c (arch_setsuccess): Rename to arch_set_success. 280 281 Fixes: 41d647c ("Implement success injection") 282 Closes: https://github.com/strace/strace/pull/6 283 284 2017-02-04 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 285 286 Update ioctl entries from linux 4.10. 287 * linux/32/ioctls_inc_align16.h: Update from linux v4.10 using ioctls_gen.sh. 288 * linux/32/ioctls_inc_align32.h: Likewise. 289 * linux/32/ioctls_inc_align64.h: Likewise. 290 * linux/64/ioctls_inc.h: Likewise. 291 * linux/x32/ioctls_inc0.h: Likewise. 292 * NEWS: Mention this. 293 294 maint: update for linux 4.10. 295 * maint/ioctls_sym.sh: Update workaround for linux/if_pppox.h file. 296 297 maint: add workaround for m68k. 298 * maint/ioctls_sym.sh: Skip asm/amigayle.h. 299 300 2017-01-31 Dmitry V. Levin <ldv (a] altlinux.org> 301 302 tests: check decoding of bpf corner cases. 303 * tests/bpf.c (bogus_bpf): New function. 304 (BOGUS_BPF): New macro. 305 (main): Use them. 306 * tests/bpf.test: Add -a option. 307 308 2017-01-29 Dmitry V. Levin <ldv (a] altlinux.org> 309 310 tests: rewrite bpf.test from match_grep to match_diff. 311 * tests/bpf.c (errstr): New variable. 312 (sys_bpf): New function. 313 (map_create, map_any, prog_load, obj_manage, prog_cgroup): Use it. 314 (main): Update expected output. 315 * tests/bpf.test: Use run_strace_match_diff. 316 317 bpf: move common code to a separate function. 318 * bpf.c (bpf_prog_attach_detach): New function. 319 (bpf_prog_attach, bpf_prog_detach): Use it. 320 321 2017-01-29 Quentin Monnet <quentin.monnet (a] 6wind.com> 322 323 Update bpf syscall decoding. 324 Implement decoding of BPF_OBJ_PIN, BPF_OBJ_GET, BPF_PROG_ATTACH, 325 and BPF_PROG_DETACH commands. 326 327 * bpf.c: Include "xlat/bpf_attach_type.h". 328 (bpf_obj_manage, bpf_prog_attach, bpf_prog_detach): New functions. 329 (SYS_FUNC(bpf)): Use them. 330 * configure.ac: Check for union bpf_attr.bpf_fd and union 331 bpf_attr.attach_type. 332 * xlat/bpf_attach_type.in: New file. 333 * xlat/bpf_commands.in: Update list of BPF_* command constants. 334 * xlat/bpf_map_types.in: Update list of BPF_MAP_TYPE_* constants. 335 * xlat/bpf_prog_types.in: Update list of BPF_PROG_TYPE_* constants. 336 * tests/bpf.c [HAVE_UNION_BPF_ATTR_BPF_FD] (obj_manage): New function. 337 [HAVE_UNION_BPF_ATTR_ATTACH_TYPE] (prog_cgroup): Likewise. 338 (main): Use them. 339 340 2017-01-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 341 342 tests: check success injection. 343 * tests/fault_injection-retval.c: New file. 344 * tests/fault_injection-retval.test: New test. 345 * tests/.gitignore: Add fault_injection-retval. 346 * tests/Makefile.am (check_PROGRAMS): Likewise. 347 (MISC_TESTS): Add fault_injection-retval.test. 348 349 2017-01-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 350 351 Implement success injection. 352 This extends fault injection syntax with :retval= option. 353 When :retval=VALUE is specified, the syscall number is replaced by -1 354 and a bogus success VALUE is returned to the callee. 355 356 * defs.h (fault_opts): Remove err field, add rval field. 357 (MAX_ERRNO_VALUE, FAULT_OPTS_RVAL_DEFAULT, FAULT_OPTS_RVAL_DISABLE): 358 New macros. 359 * qualify.c (parse_fault_token): Handle retval= token. 360 (qualify_fault): Update fault_opts initialization after the move 361 from struct fault_opts.err to struct fault_opts.rval. 362 * syscall.c (arch_set_success): New prototype. 363 (inject_syscall_fault_entering): Check opts->rval instead of opts->err. 364 (update_syscall_fault_exiting): Implement retval injection. 365 * strace.1: Update the section on fault injection. 366 * NEWS: Mention retval= option. 367 * linux/aarch64/set_error.c (arch_set_success): New function. 368 * linux/alpha/set_error.c: Likewise. 369 * linux/arc/set_error.c: Likewise. 370 * linux/arm/set_error.c: Likewise. 371 * linux/avr32/set_error.c: Likewise. 372 * linux/bfin/set_error.c: Likewise. 373 * linux/crisv10/set_error.c: Likewise. 374 * linux/hppa/set_error.c: Likewise. 375 * linux/i386/set_error.c: Likewise. 376 * linux/ia64/set_error.c: Likewise. 377 * linux/m68k/set_error.c: Likewise. 378 * linux/metag/set_error.c: Likewise. 379 * linux/microblaze/set_error.c: Likewise. 380 * linux/mips/set_error.c: Likewise. 381 * linux/nios2/set_error.c: Likewise. 382 * linux/or1k/set_error.c: Likewise. 383 * linux/powerpc/set_error.c: Likewise. 384 * linux/riscv/set_error.c: Likewise. 385 * linux/s390/set_error.c: Likewise. 386 * linux/sh/set_error.c: Likewise. 387 * linux/sh64/set_error.c: Likewise. 388 * linux/sparc/set_error.c: Likewise. 389 * linux/sparc64/set_error.c: Likewise. 390 * linux/tile/set_error.c: Likewise. 391 * linux/x86_64/set_error.c: Likewise. 392 * linux/xtensa/set_error.c: Likewise. 393 394 Closes: https://github.com/strace/strace/issues/3 395 396 2017-01-26 Dmitry V. Levin <ldv (a] altlinux.org> 397 398 mips: rewrite configure check without sgidefs.h. 399 Use builtin macros provided by gcc >= 3.4 instead of sgidefs.h macros. 400 401 * configure.ac <mips>: Do not include <asm/sgidefs.h>, use _ABIO32 402 instead of _MIPS_SIM_ABI32, _ABIN32 instead of _MIPS_SIM_NABI32, 403 and _ABI64 instead of _MIPS_SIM_ABI64. 404 405 2017-01-20 Elvira Khabirova <lineprinter0 (a] gmail.com> 406 407 .gitignore: add missing files that should be ignored. 408 * .gitignore: Add /ioctl_iocdef.[ih]. 409 410 Fixes: 5679fad ("ioctlsort: get ioctl definitions from host, not build") 411 412 2017-01-20 Andre McCurdy <armccurdy (a] gmail.com> 413 414 mips: use <asm/sgidefs.h> 415 Build fix for MIPS with musl libc. 416 417 The MIPS specific header <sgidefs.h> is provided by glibc and uclibc 418 but not by musl. Regardless of the libc, the kernel headers provide 419 <asm/sgidefs.h> which provides the same definitions, so use that 420 instead. 421 422 * configure.ac: Replace <sgidefs.h> with <asm/sgidefs.h>. 423 424 2017-01-20 JingPiao Chen <chenjingpiao (a] gmail.com> 425 426 Implement decoding of ustat syscall. 427 * configure.ac (AC_CHECK_HEADERS): Add ustat.h. 428 * ustat.c: New file. 429 * Makefile.am (strace_SOURCES): Add it. 430 * linux/dummy.h: Remove sys_ustat. 431 * tests/ustat.c: New file. 432 * tests/ustat.test: New test. 433 * tests/.gitignore: Add ustat. 434 * tests/Makefile.am (check_PROGRAMS): Likewise. 435 (DECODER_TESTS): Add ustat.test. 436 437 Makefile.am: allow indented DEF_MPERS_TYPE includes. 438 * Makefile.am (m%_type_defs.h): Change sed regular expression to allow 439 arbitrary number of whitespace characters between "#" symbol 440 and "include" directive. 441 442 strace.1: fix formatting. 443 * strace.1: Remove misplaced .TP macros. 444 445 2017-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 446 447 tests: drop non-USE_ASM_STAT case support. 448 With the switch of fstatat family tests to USE_ASM_STAT variant, 449 there are no non-USE_ASM_STAT users left. Remove support of unused 450 non-USE_ASM_STAT case. 451 452 * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_mtim.tv_nsec. 453 * tests/fstatat.c (USE_ASM_STAT): Remove. 454 * tests/fstatx.c: Likewise. 455 * tests/lstatx.c: Likewise. 456 * tests/xstatx.c: Assume USE_ASM_STAT. 457 [!USE_ASM_STAT]: Remove. 458 459 2017-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 460 461 tests: call newfstatat and fstatat64 syscalls directly. 462 Do not use glibc wrappers to call newfstatat and fstatat64. 463 These wrappers have various problems, e.g. they segfault on sparc64 464 and mips64 if BOGUS_STRUCT_STAT is not disabled, and they do wrong 465 conversion of timestamps on mips64. 466 467 * tests/fstatat.c (TEST_SYSCALL_INVOKE): Invoke the relevant syscall 468 directly. 469 (USE_ASM_STAT): Define. 470 * tests/fstatat64.c (TEST_BOGUS_STRUCT_STAT): Remove. 471 (STRUCT_STAT, STRUCT_STAT_STR, STRUCT_STAT_IS_STAT64): Define. 472 473 Based on patch by James Cowgill <james410 (a] cowgill.org.uk>. 474 475 2017-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 476 477 tests: remove redundant SAMPLE_SIZE definitions. 478 Remove all definitions of SAMPLE_SIZE that are identical to the fallback 479 definition in tests/xstatx.c. 480 481 * tests/fstat64.c (SAMPLE_SIZE): Remove. 482 * tests/lstat64.c (SAMPLE_SIZE): Remove. 483 * tests/stat64.c (SAMPLE_SIZE): Remove. 484 485 2017-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 486 487 tests: change SAMPLE_SIZE type to libc_off_t. 488 As ftruncate libc function and our create_sample function that calls 489 ftruncate both take size argument of type libc_off_t, change the type 490 of SAMPLE_SIZE constant to libc_off_t. 491 492 * tests/fstat.c (SAMPLE_SIZE): Cast to libc_off_t. 493 * tests/lstat.c (SAMPLE_SIZE): Likewise. 494 * tests/oldfstat.c (SAMPLE_SIZE): Likewise. 495 * tests/oldlstat.c (SAMPLE_SIZE): Likewise. 496 * tests/oldstat.c (SAMPLE_SIZE): Likewise. 497 * tests/stat.c (SAMPLE_SIZE): Likewise. 498 * tests/xstatx.c (SAMPLE_SIZE): Likewise. 499 500 2017-01-13 Alexey Neyman <stilor (a] att.net> 501 502 ioctlsort: get ioctl definitions from host, not build. 503 When cross-compiling, ioctlsort must obtain _IOC_* values from the 504 host, build's values may be incompatible. 505 506 * ioctl_iocdef.c: New file. 507 * Makefile.am (EXTRA_DIST): Add it. 508 (ioctl_iocdef.i, ioctl_iocdef.h): New rules. 509 (ioctlsort%.o): Depend on ioctl_iocdef.h. 510 (CLEANFILES): Add ioctl_iocdef.h and ioctl_iocdef.i. 511 * ioctlsort.c: Include "ioctl_iocdef.h" instead of <linux/ioctl.h>. 512 513 2017-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 514 515 tests: treat struct stat mismatch as an error. 516 If the test detects struct stat mismatch, this is likely an error 517 in definitions of a stat structure that might affect strace as well. 518 Fail the test instead of skipping it to attract more attention. 519 520 * tests/xstatx.c (main): Return 1 instead of 77 521 in case of struct stat mismatch. 522 523 2017-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 524 525 tests: rewrite diagnostics about struct stat mismatch. 526 * tests/xstatx.c (LOG_STAT_OFFSETOF_SIZEOF): New macro. 527 (main): Use it to print struct stat mismatch details. 528 529 tests: fix typo in tests/xstatx.c. 530 * tests/xstatx.c [!IS_FSTAT]: Define IS_FSTAT instead of IS_STAT. 531 532 2017-01-12 JingPiao Chen <chenjingpiao (a] gmail.com> 533 534 tests: fix typo in mlock.c. 535 * tests/mlock.c [!(__NR_mlock && __NR_munlock)]: Fix spelling 536 of SKIP_MAIN_UNDEFINED. 537 538 2017-01-12 JingPiao Chen <chenjingpiao (a] gmail.com> 539 540 strace: move description of -k option to the appropriate place. 541 Follow the example of strace.1 and put the description of -k option 542 into the output format group. 543 544 * strace.c (usage): Move description of -k option to the output 545 format group. 546 547 2017-01-11 Dmitry V. Levin <ldv (a] altlinux.org> 548 549 Remove redundant commas at the end of structure initializers. 550 Automatically remove redundant commas using the following 551 sed expression: 552 553 git grep -El ',[[:space:]]+}' |xargs sed -ri 's/,([[:space:]]+\})/\1/' 554 555 * linux/32/syscallent.h: Remove redundant commas at the end of structure 556 initializers. 557 * linux/64/syscallent.h: Likewise. 558 * linux/alpha/syscallent.h: Likewise. 559 * linux/arm/syscallent.h: Likewise. 560 * linux/avr32/syscallent.h: Likewise. 561 * linux/bfin/syscallent.h: Likewise. 562 * linux/crisv10/syscallent.h: Likewise. 563 * linux/hppa/syscallent.h: Likewise. 564 * linux/i386/syscallent.h: Likewise. 565 * linux/ia64/syscallent.h: Likewise. 566 * linux/m68k/syscallent.h: Likewise. 567 * linux/microblaze/syscallent.h: Likewise. 568 * linux/microblaze/userent.h: Likewise. 569 * linux/mips/syscallent-n32.h: Likewise. 570 * linux/mips/syscallent-n64.h: Likewise. 571 * linux/mips/syscallent-o32.h: Likewise. 572 * linux/powerpc/syscallent.h: Likewise. 573 * linux/powerpc64/syscallent.h: Likewise. 574 * linux/s390/syscallent.h: Likewise. 575 * linux/s390x/syscallent.h: Likewise. 576 * linux/sh/syscallent.h: Likewise. 577 * linux/sh64/syscallent.h: Likewise. 578 * linux/sparc/syscallent.h: Likewise. 579 * linux/sparc64/syscallent.h: Likewise. 580 * linux/x32/syscallent.h: Likewise. 581 * linux/x86_64/syscallent.h: Likewise. 582 * linux/xtensa/syscallent.h: Likewise. 583 * tests/kexec_file_load.c: Likewise. 584 585 Reported-by: Eugene Syromyatnikov <evgsyr (a] gmail.com> 586 587 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 588 589 tests: check decoding of scsi ioctl commands. 590 * tests/ioctl_scsi.c: New file. 591 * tests/ioctl_scsi.test: New test. 592 * tests/.gitignore: Add ioctl_scsi. 593 * tests/Makefile.am (check_PROGRAMS): Likewise. 594 (DECODER_TESTS): Add ioctl_scsi.test. 595 596 scsi: implement decoding of all SG_* ioctl commands. 597 * print_sg_req_info.c: New file. 598 * Makefile.am (strace_SOURCES): Add it. 599 * xlat/sg_scsi_reset.in: New file. 600 * scsi.c: Include "xlat/sg_scsi_reset.h". 601 (scsi_ioctl): Implement decoding of all SG_* ioctl commands. 602 603 scsi: prepare for decoding of other SG_* ioctl commands. 604 * scsi.c (scsi_ioctl): Introduce a switch statement. 605 606 tests: check decoding of ioctl SG_IO v3 commands. 607 * tests/ioctl_sg_io_v3.c: New file. 608 * tests/ioctl_sg_io_v3.test: New test. 609 * tests/.gitignore: Add ioctl_sg_io_v3. 610 * tests/Makefile.am (check_PROGRAMS): Likewise. 611 (DECODER_TESTS): Add ioctl_sg_io_v3.test. 612 613 tests: check decoding of ioctl SG_IO v4 commands. 614 * tests/ioctl_sg_io_v4.c: New file. 615 * tests/ioctl_sg_io_v4.test: New test. 616 * tests/.gitignore: Add ioctl_sg_io_v4. 617 * tests/Makefile.am (check_PROGRAMS): Likewise. 618 (DECODER_TESTS): Add ioctl_sg_io_v4.test. 619 620 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 621 622 scsi: add fallback definitions for SG_* ioctl command constants. 623 Unfortunately, <scsi/sg.h> from libc does not provide all constants 624 recognized by the kernel. 625 626 * xlat/scsi_sg_commands.in: New file. 627 * scsi.c: Include "xlat/scsi_sg_commands.h" instead of providing 628 a fallback definition of SG_IO. 629 630 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 631 632 xlat: provide fallback definitions for BSG_FLAG_* constants. 633 BSG_FLAG_* constants were introduced later than the header file where 634 they are defined. 635 636 * xlat/bsg_flags.in: Add default values for constants. 637 638 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 639 640 xlat: provide fallback definitions for SG_FLAG_* constants. 641 Unfortunately, <scsi/sg.h> from libc does not provide all constants 642 recognized by the kernel. 643 644 * xlat/sg_io_flags.in: Add default values for constants. 645 646 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 647 648 sg_io_v4: print din_resid and dout_resid fields as signed integers. 649 * sg_io_v4.c (decode_response): Print din_resid and dout_resid fields 650 using %d format. 651 652 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 653 654 sg_io: cleanup printing of sg_io buffers. 655 Turn print_sg_io_buffer into a universal sg_io buffer printer. 656 657 * sg_io_v3.c (print_sg_io_buffer): Add iovec_count argument. 658 Call tprint_iov_upto when iovec_count is non-zero. 659 (decode_request, decode_response): Do not call tprint_iov_upto directly, 660 use print_sg_io_buffer instead. 661 * sg_io_v4.c: Likewise. 662 663 2017-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 664 665 sg_io: decode structures on exiting syscall in case of syserror. 666 The SCSI driver, starting with kernel commit v2.6.25-rc1~1230^2~78, 667 translates its "struct request.errors" to ioctl errors after 668 filling in all the output members of the SG_IO header structure. 669 670 As there is no easy way to tell SCSI layer errors from other syscall 671 errors, decode the structure on exiting syscall in case of syserror, 672 too. 673 674 * scsi.c (scsi_ioctl): Do not call set_tcb_priv_ulong, use 675 get_tcb_priv_data instead of get_tcb_priv_ulong, call decode_sg_io 676 unconditionally. 677 * sg_io_v3.c (decode_request): Save a copy of struct_sg_io_hdr using 678 set_tcb_priv_data. 679 (decode_response): Restore it using get_tcb_priv_data. Print its i/o 680 fields when umove call fails. Pass IOV_DECODE_STR to tprint_iov_upto 681 unconditionally. 682 * sg_io_v4.c (decode_request): Save a copy of struct sg_io_v4 using 683 set_tcb_priv_data. 684 (decode_response): Restore it using get_tcb_priv_data. Print its i/o 685 fields when umove call fails. Pass IOV_DECODE_STR to tprint_iov_upto 686 unconditionally. 687 688 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 689 690 sg_io: reorder printing of fields to follow structure order. 691 * sg_io_v4.c (decode_request): Print timeout, flags, and usr_ptr fields 692 after dout_xferp field. 693 694 sg_io_v3: print sg_io_hdr.duration field as unsigned integer. 695 * sg_io_v3.c (decode_response): Print duration field using %u format. 696 697 sg_io_v3: print msg_status field. 698 * sg_io_v3.c (decode_response): Print msg_status field. 699 700 sg_io: print names of array fields and corresponding length fields. 701 * sg_io_v3.c (decode_request): Print names of cmd_len, cmdp, 702 and dxferp fields. 703 (decode_response): Print names of dxferp, sb_len_wr, and sbp fields. 704 * sg_io_v4.c (decode_request): Print names of request_len, request, 705 dout_xfer_len, and dout_xferp fields. 706 (decode_response): Print names of response_len, response, 707 and din_xferp fields. 708 709 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 710 711 sg_io_v3: print status fields using %#x format specifier. 712 The formerly used format string %02x led to misleading output as there 713 was no clear indication sometimes whether the printed integer was 714 decimal or hexadecimal. 715 716 * sg_io_v3.c (decode_response): Print status and masked_status fields 717 using %#x format specifier instead of %02x. 718 719 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 720 721 sg_io_v4: print status fields in a hexadecimal form. 722 The tradition is to print scsi status codes in a hexadecimal form. 723 724 * sg_io_v4.c (decode_response): Print driver_status, transport_status, 725 and device_status fields using %#x format specifier instead of %u. 726 727 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 728 729 sg_io_v4: print request_tag and generated_tag fields in hex. 730 The tradition is to print scsi tags in a hexadecimal form. 731 732 * sg_io_v4.c (decode_request): Print request_tag field 733 using ("%#" PRI__x64) format string. 734 (decode_response): Print generated_tag field using ("%#" PRI__x64) 735 format string. 736 737 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 738 739 sg_io_v4: print usr_ptr field in a hexadecimal form. 740 As the nature of this field is pointer-like, print it 741 in a hexadecimal form. 742 743 * sg_io_v4.c (decode_request): Print usr_ptr field 744 using ("%#" PRI__x64) format string. 745 746 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 747 748 sg_io_v4: do not print spare_in and spare_out fields. 749 As the kernel does not touch these fields, there is no use 750 to print them. 751 752 * sg_io_v4.c (decode_request): Do not print spare_in field. 753 (decode_response): Do not print spare_out field. 754 755 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 756 757 sg_io: decode struct sg_io_hdr.info and struct sg_io_v4.info. 758 Print struct sg_io_hdr.info and struct sg_io_v4.info using printflags. 759 760 * xlat/sg_io_info.in: New file. 761 * defs.h (sg_io_info): New xlat prototype. 762 * sg_io_v3.c: Include "xlat/sg_io_info.h". 763 (decode_response): Print struct_sg_io_hdr.info using printflags. 764 * sg_io_v4.c: (decode_response): Print struct sg_io_v4.info 765 using printflags. 766 767 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 768 769 sg_io: decode struct sg_io_hdr.flags and struct sg_io_v4.flags. 770 Print struct sg_io_hdr.flags and struct sg_io_v4.flags using printflags. 771 772 * xlat/sg_io_flags.in: New file. 773 * sg_io_v3.c: Include "xlat/sg_io_flags.h". 774 (decode_request): Print struct_sg_io_hdr.flags using printflags. 775 * xlat/bsg_flags.in: New file. 776 * sg_io_v4.c: Include "xlat/bsg_flags.h". 777 (decode_request): Print struct sg_io_v4.flags using printflags. 778 779 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 780 781 Mpersify struct sg_io_hdr. 782 struct sg_io_hdr contains pointers and therefore has to be mpersified. 783 784 * defs.h (decode_sg_io_v3): Remove prototype. 785 * sg_io_v3.c (struct_sg_io_hdr): Typedef to struct sg_io_hdr. 786 Mpersify it. 787 (decode_sg_io_v3): Wrap into MPERS_PRINTER_DECL. 788 789 2017-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 790 791 Split scsi.c. 792 Move decoders of SG_IO v3 and v4 APIs into separate files, 793 compile generic SG_IO decoder unconditionally. 794 795 * sg_io_v3.c: New file. 796 * sg_io_v4.c: Likewise. 797 * Makefile.am (strace_SOURCES): Add them. 798 * defs.h (decode_sg_io_v3, decode_sg_io_v4): New prototypes. 799 * ioctl.c (ioctl_decode): Remove [HAVE_SCSI_SG_H] condition. 800 * scsi.c: (print_sg_io_res): Remove. 801 (print_sg_io_req): Rename to decode_sg_io, replace print_sg_io_v3_req 802 with decode_sg_io_v3, replace print_sg_io_v4_req with decode_sg_io_v4, 803 compile uncoditionally. 804 (scsi_ioctl): Replace print_sg_io_req and print_sg_io_res 805 with decode_sg_io, compile uncoditionally. 806 Move [HAVE_SCSI_SG_H] code to sg_io_v3.c. 807 Move [HAVE_LINUX_BSG_H] code to sg_io_v4.c. 808 809 2017-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 810 811 scsi: detect and print changes of interface id. 812 * scsi.c (print_sg_io_v3_res): Detect and print changes 813 of struct sg_io_hdr.interface_id field between entering and exiting 814 syscall. 815 (print_sg_io_v4_res): Detect and print changes of struct sg_io_v4.guard 816 field between entering and exiting syscall. 817 818 scsi: print field names of all fields being printed. 819 * scsi.c (print_sg_io_v3_req): Always print the name 820 of struct sg_io_hdr.interface_id field. 821 (print_sg_io_v4_req): Always print the name of struct sg_io_v4.guard 822 field. 823 (print_sg_io_req): Print unknown interface id as an integer. 824 (scsi_ioctl): Save interface id on entering syscall and use it 825 on exiting syscall. 826 827 scsi: print struct sg_io_hdr.dxfer_direction field name. 828 * scsi.c (print_sg_io_v3_req): Print struct sg_io_hdr.dxfer_direction 829 field name. 830 831 scsi: print "protocol" and "subprotocol" field names of struct sg_io_v4. 832 * scsi.c (print_sg_io_v4_req): Print field names 833 of struct sg_io_v4.protocol and struct sg_io_v4.subprotocol. 834 835 2017-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 836 837 Print hexadecimal integer in error diagnostics using %#x. 838 The formerly used format string %x led to misleading output as there was 839 no clear indication sometimes whether the printed integer was decimal or 840 hexadecimal. 841 842 * aio.c (startup_child, test_ptrace_seize): Print status 843 using %#x format specifier instead of %x. 844 845 2017-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 846 847 aio: print hexadecimal integer using %#x. 848 The formerly used format string %x led to misleading output as there was 849 no clear indication sometimes whether the printed integer was decimal or 850 hexadecimal. 851 852 * aio.c (print_common_flags): Print struct iocb.aio_flags using %#x 853 format specifier instead of %x. 854 * tests/aio.c (main): Likewise. 855 856 2017-01-06 Dmitry V. Levin <ldv (a] altlinux.org> 857 858 scsi: rewrite print_sg_io_buffer using printstr_ex(QUOTE_FORCE_HEX) 859 As printstr_ex has got QUOTE_FORCE_HEX flag support, there is no need 860 to implement it manually any longer. 861 862 * scsi.c (print_uchar): Remove. 863 (print_sg_io_buffer): Rewrite using printstr_ex(QUOTE_FORCE_HEX). 864 865 2017-01-06 Eugene Syromyatnikov <evgsyr (a] gmail.com> 866 867 getrandom: print string as hex-escaped. 868 Since there is no reason to interpret the value returned by getrandom as 869 ASCII string, it makes sense to always print it as a hex-escaped string. 870 871 * getrandom.c (SYS_FUNC(getrandom)): Use printstr_ex instead 872 of printstrn, set QUOTE_FORCE_HEX in user_style parameter in order 873 to force hex-escaped string formatting. 874 * tests/getrandom.test: Remove no longer needed -xx flag as the string 875 is always printed in hexadecimal format now. 876 877 Suggested-by: JingPiao Chen <chenjingpiao (a] gmail.com> 878 879 2017-01-06 Eugene Syromyatnikov <evgsyr (a] gmail.com> 880 881 util: add support for forcing printing string as hex-escaped. 882 This could be useful in cases when some binary data should not be 883 interpreted as an ASCII string, but rather as an array of byte values. 884 885 * defs.h (QUOTE_FORCE_HEX): New macro constant. 886 * util.c (quote_string): Enable use_hex when QUOTE_FORCE_HEX is set 887 in user_style parameter. 888 889 2017-01-06 Eugene Syromyatnikov <evgsyr (a] gmail.com> 890 891 term: do not abort decoding in case of non-verbose output. 892 The case of unset verbose is handled by umoven_or_printaddr, moreover, 893 exiting at this point is plain wrong and leads to last argument not 894 being printed while it should be. 895 896 * term.c (decode_termios, decode_termio, decode_winsize, decode_ttysize, 897 decode_modem_flags): Do not check verbose flags explicitly and do not 898 exit early if it is not set. 899 900 2017-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 901 902 tests: skip fault injection tests on hppa if the kernel is too old. 903 * tests/fault_injection.sh: Add the minimal kernel version for hppa. 904 905 2017-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 906 907 tests: skip readahead.test on MIPS n64 when built with glibc < 2.25. 908 Due to a bug in glibc readahead syscall wrapper on MIPS n64, 909 this wrapper cannot be used in readahead.test. 910 911 * tests/readahead.c [HAVE_READAHEAD && LINUX_MIPSN64 && glibc < 2.25]: 912 Undefine HAVE_READAHEAD. 913 914 Reported-by: James Cowgill <james410 (a] cowgill.org.uk> 915 916 2017-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 917 918 tests: replace init_magic with fill_memory. 919 Use the same fill_memory/fill_memory_ex interface in all affected tests. 920 921 * tests/ioctl_block.c (init_magic): Remove. 922 (main): Replace init_magic with fill_memory. 923 * tests/ioctl_evdev.c: Likewise. 924 * tests/ioctl_v4l2.c: Likewise. 925 * tests/ioctl_mtd.c (magic, init_magic): Remove. 926 (main): Replace init_magic with fill_memory. 927 * tests/ioctl_rtc.c: Likewise. 928 929 2017-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 930 931 tests: rewrite ioctl_v4l2 test without reliance on init_magic. 932 * tests/ioctl_v4l2.c (cc0, cc1, cc2, cc3, fourcc): New macros. 933 (main): Use them. Rewrite expected output without assumptions 934 on any particular magic data. 935 936 2017-01-04 Dmitry V. Levin <ldv (a] altlinux.org> 937 938 tests: remove redundant casts in fill_memory{,_ex} invocations. 939 * tests/ioctl_loop.c (main): Remove redundant casts of fill_memory 940 first argument. 941 * tests/kexec_load.c (main): Likewise. 942 * tests/perf_event_open.c (main): Likewise. 943 * tests/quotactl.c (main): Likewise. 944 * tests/mq_sendrecv.c (main): Remove redundant casts of fill_memory_ex 945 first argument. 946 * tests/quotactl-xfs.c (main): Likewise. 947 948 2017-01-04 Dmitry V. Levin <ldv (a] altlinux.org> 949 950 tests: change the type of fill_memory{,_ex} first argument to void * 951 As these functions behave like memset, it's more convenient to have 952 the first argument of type void * like memset. 953 954 * tests/fill_memory.c (fill_memory, fill_memory_ex): Change the type 955 of first argument from "char *" to "void *". 956 * tests/tests.h (fill_memory, fill_memory_ex): Likewise. 957 958 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 959 960 tests: check non-verbose decoding of LOOP_* ioctls. 961 * tests/ioctl_loop-nv.c: New file. 962 * tests/ioctl_loop-nv.test: New test. 963 * tests/ioctl_loop.c [!ABBREV] (ABBREV): Define to 0. 964 (print_loop_info, print_loop_info64): Handle [ABBREV != 0] case. 965 * tests/.gitignore: Add ioctl_loop-nv. 966 * tests/Makefile.am (check_PROGRAMS): Likewise. 967 968 tests: add more checks of LOOP_* ioctls decoding. 969 * tests/ioctl_loop.c: Include <linux/ioctl.h>. 970 (magic, lmagic): Move static constants ... 971 (main): ... here. Change types of magic constants to kernel_ulong_t. 972 Add more checks. 973 974 2017-01-04 JingPiao Chen <chenjingpiao (a] gmail.com> 975 Eugene Syromyatnikov <evgsyr (a] gmail.com> 976 977 tests: check decoding of LOOP_* ioctls. 978 * tests/ioctl_loop.c: New file. 979 * tests/ioctl_loop-v.c: Likewise. 980 * tests/ioctl_loop.test: New test. 981 * tests/ioctl_loop-v.test: Likewise. 982 * tests/.gitignore: Add ioctl_loop and ioctl_loop-v. 983 * tests/Makefile.am (check_PROGRAMS): Likewise. 984 (DECODER_TESTS): Add ioctl_loop.test and ioctl_loop-v.test. 985 986 2017-01-04 Dmitry V. Levin <ldv (a] altlinux.org> 987 988 Drop vsprintf.c. 989 Drop custom vfprintf implementation that was disabled by default. 990 Apparently nobody tests strace with this vfprintf enabled, otherwise 991 multiple uses of format specifiers not supported by this custom vfprintf 992 would not left unnoticed. 993 994 The GNU C library is not the only libc available, so those who want 995 faster implementations of libc functions are encouraged to try building 996 strace with other libc implementations. 997 998 * vsprintf.c: Remove. 999 * Makefile.am (strace_SOURCES): Remove vsprintf.c. 1000 * defs.h (USE_CUSTOM_PRINTF, strace_vfprintf): Remove. 1001 * strace.c (tprintf): Replace strace_vfprintf with vfprintf. 1002 1003 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1004 1005 loop: remove unnecessary verbose check. 1006 The verbose flag is responsible for dereferencing of addresses, and it 1007 is perfectly handled by umove_or_printaddr; moreover, this early exit 1008 leads to incorrect formatting of last argument. 1009 1010 * loop.c (loop_ioctl): Do not check verbose flag explicitly and do not 1011 exit early if it is not set. 1012 1013 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1014 1015 loop: fix lo_encrypt_key field output. 1016 lo_encrypt_key is a sized string with its size specified by 1017 lo_encrypt_key_size field, so take lo_encrypt_key_size into account. 1018 1019 * loop.c (decode_loop_info, decode_loop_info64): Use minimum of 1020 LO_KEY_SIZE and lo_encrypt_key_size field value as lo_encrypt_key size. 1021 1022 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1023 1024 loop: print lo_encrypt_key_size field of struct loop_info as unsigned. 1025 It is converted to an unsigned value in kernel (see loop_info64_from_old 1026 in drivers/block/loop.c), so let's print it that way despite its type. 1027 1028 * loop.c (decode_loop_info): Print lo_encrypt_key_size as an uint32_t 1029 value. 1030 1031 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1032 1033 tests: add more checks of unknown ioctl command formatting. 1034 * tests/ioctl.c (main): Additional check for unknown ioctl command 1035 decoding. 1036 * tests/ioctl_evdev.c (main): Likewise. 1037 * tests/ioctl_dm.c: Include <linux/ioctl.h> for _IOC_SIZE and _IOC_NR. 1038 (main) <dummy_dm_ioctl1, dummy_dm_ioctl2, dummy_dm_arg>: New constants. 1039 Add more checks for unknown command formatting. 1040 1041 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1042 1043 ioctl: do not print explicit 0x prefix and do not specify minimum width. 1044 Specifying output width for size argument is rather misleading - it can 1045 be up to 14 bits in size. The use of explicit "0x" prefix is 1046 discouraged because 0x0 looks ugly. Usage of width specification along 1047 with alternate form flag leads to inconsistent output for 0. 1048 Let's use just plain %#x qualifiers instead. 1049 1050 * ioctl.c (ioctl_print_code): Change printf qualifiers for ioctl command 1051 type, number and size to "%#x". 1052 * tests/ioctl.c (main): Update expected test output. 1053 * tests/ioctl_dm.c (main): Likewise. 1054 * tests/ioctl_evdev.c (main): Likewise. 1055 1056 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1057 1058 loop: fix printing of the reserved field array items. 1059 They are of char type, so "hh" length modifier should be used (otherwise 1060 they are printed incorrectly as they are sign extended implicitly when 1061 passed as printf arguments in case char is a signed type which is true 1062 for most compilers). 1063 1064 * loop.c (decode_loop_info): Change "%#x" printf qualifier to "%#hhx" 1065 in printing routine for array elements of the "reserved" field of 1066 loop_info structure. 1067 1068 2017-01-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1069 1070 tests: check ioctl(SIOCGIFCONF) decoding. 1071 * tests/ioctl_sock_gifconf.c: New file. 1072 * tests/ioctl_sock_gifconf.test: New test. 1073 * tests/.gitignore: Add ioctl_sock_gifconf. 1074 * tests/Makefile.am (check_PROGRAMS): Likewise. 1075 (DECODER_TESTS): Add ioctl_sock_gifconf.test. 1076 1077 dm.c: add copyright notice. 1078 1079 2017-01-04 Dmitry V. Levin <ldv (a] altlinux.org> 1080 1081 Add scno.h and syscallent.i to .gitignore files. 1082 * .gitignore: Add /scno.h and /syscallent.i. 1083 * tests/.gitignore: Add scno.h and syscallent.i. 1084 1085 2017-01-04 JingPiao Chen <chenjingpiao (a] gmail.com> 1086 1087 tests/.gitignore: add generated files that should be ignored. 1088 * tests/.gitignore: Replace addkey with add_key, add attach-f-p-cmd. 1089 1090 2017-01-03 Dmitry V. Levin <ldv (a] altlinux.org> 1091 1092 Remove checks of __NR_* availability from strace source code. 1093 * strace.c: Remove __NR_tkill checks, assume it is always defined. 1094 * util.c: Remove __NR_process_vm_readv checks and fallback definitions, 1095 assume it is always defined. 1096 1097 Include "scno.h" in files that check __NR_* constants. 1098 * strace.c: Include "scno.h". 1099 * util.c: Likewise. 1100 1101 Generate scno.h for use during the build of strace itself. 1102 * Makefile.am: Include scno.am. 1103 ($(strace_OBJECTS)): New rule. 1104 1105 2017-01-01 Dmitry V. Levin <ldv (a] altlinux.org> 1106 1107 Generate scno.h without invoking a generated executable helper. 1108 Generate scno.h using only those tools that are available for cross 1109 build. This allows to use scno.h during the build of strace itself. 1110 1111 * scno.am: New file. 1112 * scno.head: New file. 1113 * Makefile.am (EXTRA_DIST): Add it. 1114 * tests/generate_scno.c: Remove. 1115 * tests/.gitignore: Remove generate_scno. 1116 * tests/Makefile.am (check_PROGRAMS): Likewise. 1117 (CLEANFILES): Remove scno.h. 1118 (scno.h, $(scno_dependants)): Remove rules. 1119 (scno_dependants): Remove. 1120 ($(objects)): New rule. 1121 Include ../scno.am. 1122 1123 2017-01-01 Dmitry V. Levin <ldv (a] altlinux.org> 1124 1125 Update all publicly shown copyright year number ranges. 1126 * COPYING: Update copyright year number range. 1127 * configure.ac: Likewise. 1128 * strace.c: Likewise. 1129 * tests/strace-V.test: Use the current year for the check. 1130 1131 2016-12-31 Dmitry V. Levin <ldv (a] altlinux.org> 1132 1133 defs.h: stop including <asm/unistd.h> 1134 Limit the number of files where <asm/unistd.h> is included 1135 to only those few that need it. 1136 1137 * defs.h: Do not include <asm/unistd.h>. 1138 * clone.c: Include <asm/unistd.h>. 1139 * strace.c: Likewise. 1140 * syscall.c: Likewise. 1141 * util.c: Likewise. 1142 1143 2016-12-30 Dmitry V. Levin <ldv (a] altlinux.org> 1144 1145 tests: do not use BUILT_SOURCES. 1146 * tests/Makefile.am (ksysent.$(OBJEXT)): New rule. 1147 (BUILT_SOURCES): Remove. 1148 1149 2016-12-30 Dmitry V. Levin <ldv (a] altlinux.org> 1150 1151 Fix cross build. 1152 This fixes cross build regression introduced by commit 1153 v4.15-39-g605a705a63d533dceb3c2d489468fcd3aed3963c. 1154 1155 * tests/Makefile.am (BUILT_SOURCES): Remove scno.h 1156 (objects, scno_dependants): New variables. 1157 ($(scno_dependants)): New rule. 1158 1159 Reported-by: Joakim Bech <joakim.bech (a] linaro.org> 1160 1161 2016-12-30 Dmitry V. Levin <ldv (a] altlinux.org> 1162 1163 tests: do not use defs.h and syscall.h. 1164 * tests/generate_scno.c: Include "tests.h", "sysent.h", <stdio.h>, 1165 <string.h>, and <asm/unistd.h> instead of "defs.h" and "syscall.h". 1166 * tests/ksysent.c: Likewise. 1167 * tests/nsyscalls.c: Include "tests.h", "sysent.h", <errno.h>, 1168 <stdio.h>, and <unistd.h> instead of "defs.h" and "syscall.h". 1169 1170 Move definition of struct sysent and trace flags to a separate file. 1171 * sysent.h: New file. 1172 * Makefile.am (strace_SOURCES): Add it. 1173 * defs.h: Include it. 1174 (struct sysent, TRACE_FILE, TRACE_IPC, TRACE_NETWORK, TRACE_PROCESS, 1175 TRACE_SIGNAL, TRACE_DESC, TRACE_MEMORY, SYSCALL_NEVER_FAILS, 1176 STACKTRACE_INVALIDATE_CACHE, STACKTRACE_CAPTURE_ON_ENTER, 1177 TRACE_INDIRECT_SUBCALL, COMPAT_SYSCALL_TYPES): Remove. 1178 1179 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1180 1181 Mpersify SIOC* ioctls. 1182 struct ifreq and struct ifconf are ABI-dependent and should have been 1183 mpersified. 1184 1185 * defs.h (sock_ioctl): Remove prototype. 1186 * sock.c (struct_ifconf, struct_ifreq): New typedefs. 1187 (DEF_MPERS_TYPE(struct_ifconf), DEF_MPERS_TYPE(struct_ifreq), 1188 MPERS_DEFS): New includes. 1189 (print_ifreq, print_ifc_len, print_ifconf_ifreq): Replace struct ifreq 1190 with struct_ifreq. 1191 (decode_ifconf): Replace struct ifconf with struct_ifconf, struct ifreq 1192 with struct_fireq. 1193 (sock_ioctl): Wrap into MPERS_PRINTER_DECL. 1194 1195 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1196 Dmitry V. Levin <ldv (a] altlinux.org> 1197 1198 sock: rewrite decode_ifconf. 1199 * sock.c (decode_ifconf): Rewrite. 1200 1201 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1202 1203 xlat: update LOOP_* ioctl flags constants. 1204 * configure.ac (AC_CHECK_DECLS): Add LO_FLAGS_USE_AOPS 1205 and LO_FLAGS_DIRECT_IO. 1206 * xlat/loop_flags_options.in: Likewise. Add default values 1207 for constants. 1208 1209 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1210 1211 loop: add fallback definitions for LOOP_* ioctl command constants. 1212 Since these are architecture-independent and have been added over the 1213 kernel's lifetime, it makes sense to have these definitions in strace 1214 itself. 1215 1216 * xlat/loop_cmds.in: New file. 1217 * loop.c: Include "xlat/loop_cmds.h". 1218 (loop_ioctl): Eliminate conditional compilation based on availability 1219 of LOOP_* constant definitions. 1220 1221 2016-12-29 Dmitry V. Levin <ldv (a] altlinux.org> 1222 1223 xlat: extend syntax. 1224 * xlat/gen.sh: Implement #stop directive that stops preprocessor 1225 at the line it has been encountered during the first pass. This could 1226 be used, for example, to provide fallback definitions for constants 1227 without defining xlat tables. 1228 1229 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1230 Dmitry V. Levin <ldv (a] altlinux.org> 1231 1232 loop: mpersify struct loop_info and loop_ioctl function. 1233 struct loop_info contains fields of type long, so it definitely should 1234 have been mpersified. 1235 1236 * defs.h (loop_ioctl): Remove prototype. 1237 * loop.c (struct_loop_info): New typedef. 1238 Include DEF_MPERS_TYPE(struct_loop_info) and MPERS_DEFS. 1239 (decode_loop_info): Replace struct loop_info with struct_loop_info. 1240 Cast lo_inode, lo_init[0], and lo_init[1] to kernel_ulong_t and print 1241 them using appropriate format specifiers. 1242 (loop_ioctl): Wrap into MPERS_PRINTER_DECL. 1243 1244 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1245 1246 loop: print lo_device and lo_rdevice fields using print_dev_t. 1247 * loop.c (decode_loop_info, decode_loop_info64): Use print_dev_t 1248 for printing lo_device and lo_rdevice fields. 1249 1250 2016-12-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1251 Dmitry V. Levin <ldv (a] altlinux.org> 1252 1253 Move device number printing code into a separate routine. 1254 * print_dev_t.c: New file. 1255 * Makefile.am (strace_SOURCES): Add it. 1256 * defs.h (print_dev_t): New prototype. 1257 * dm.c: Do not include <sys/sysmacros.h>. 1258 (dm_decode_device, dm_print_dev, dm_decode_dm_name_list): Use 1259 print_dev_t function for printing device numbers. 1260 * mknod.c: Do not include <sys/sysmacros.h>. 1261 (decode_mknod): Use print_dev_t function for printing device number. 1262 * print_struct_stat.c: Do not include <sys/sysmacros.h>. 1263 (print_struct_stat): Use print_dev_t function for printing device 1264 numbers. 1265 1266 2016-12-28 Dmitry V. Levin <ldv (a] altlinux.org> 1267 1268 tests: enhance invalid address decoding check in seccomp-strict.test. 1269 * tests/seccomp-strict.c (main): Change the type of addr variable 1270 containg the invalid address from unsigned long to kernel_ulong_t, 1271 print it using %#llx format. 1272 1273 2016-12-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1274 1275 tests: check decoding of prctl PR_GET_TID_ADDRESS operation. 1276 * tests/prctl-tid_address.c: New file. 1277 * tests/prctl-tid_address.test: New test. 1278 * tests/.gitignore: Add prctl-tid_address. 1279 * tests/Makefile.am (check_PROGRAMS): Likewise. 1280 (DECODER_TESTS): Add prctl-tid_address.test. 1281 1282 2016-12-28 Dmitry V. Levin <ldv (a] altlinux.org> 1283 1284 Update the publicly shown copyright information. 1285 Set the publicly shown copyright holder to "The strace developers.". 1286 1287 * COPYING: Update copyright information. 1288 * configure.ac: Add AC_COPYRIGHT. 1289 * strace.c (print_version): New function. 1290 (init): Use it. 1291 * tests/strace-V.test: Update expected output. 1292 1293 2016-12-28 Dmitry V. Levin <ldv (a] altlinux.org> 1294 1295 configure: specify project URL. 1296 * configure.ac (AC_INIT): Add URL. 1297 1298 2016-12-28 Seraphime Kirkovski <kirkseraph (a] gmail.com> 1299 1300 Document signal injection. 1301 * strace.1: Describe :signal=SIG option of the fault injection syntax. 1302 * NEWS: Mention signal injection. 1303 1304 2016-12-28 Seraphime Kirkovski <kirkseraph (a] gmail.com> 1305 1306 Implement signal injection. 1307 This extends the fault injection capability with :signal=SIG option 1308 which injects a signal on entering each syscall from the specified set. 1309 1310 :signal and :error options are complementary, if they are both specified 1311 the syscall will be fault injected as usual and the specified signal 1312 will be delivered to the tracee. 1313 1314 * defs.h (struct fault_opts): Change the type of err field to int16_t, 1315 add signo field. 1316 (trace_syscall): Add a pointer argument. 1317 * qualify.c: Include "nsig.h". 1318 (parse_fault_token): Handle signal= option. 1319 (qualify_fault): Update default fault_opts. 1320 * strace.c (trace): Forward signal number from trace_syscall 1321 to ptrace_restart(PTRACE_SYSCALL). 1322 * syscall.c (inject_syscall_fault_entering): Add pointer argument, 1323 save there the signal number specified by fault options. Do not inject 1324 a syscall fault unless instructed by fault options. 1325 (update_syscall_fault_exiting): Update the error code injection check. 1326 (trace_syscall_entering): Add pointer argument, forward it to 1327 inject_syscall_fault_entering. 1328 (trace_syscall): Add pointer argument, forward it to 1329 trace_syscall_entering. 1330 1331 2016-12-28 Dmitry V. Levin <ldv (a] altlinux.org> 1332 1333 Update README.md. 1334 * README.md: Update homepage URL, mention command-line interface 1335 and tampering capabilities in the description. 1336 1337 2016-12-28 Dmitry V. Levin <ldv (a] altlinux.org> 1338 1339 tests: robustify prctl-arg2-intptr.test. 1340 Robustify prctl-arg2-intptr.test against unrelated prctl invocations. 1341 1342 * tests/prctl-arg2-intptr.test: Filter out unrelated PR_GET_* 1343 and PR_SET_* prctl calls. 1344 1345 2016-12-27 Dmitry V. Levin <ldv (a] altlinux.org> 1346 1347 signal: remove redundant checks around NSIG. 1348 * signal.c (struct old_sigaction, struct new_sigaction, 1349 struct new_sigaction32): Remove safety checks for NSIG >= sizeof(long). 1350 1351 Introduce NSIG_BYTES. 1352 * nsig.h (NSIG_BYTES): New macro. 1353 * desc.c: Use it in comments instead of NSIG. 1354 * epoll.c: Likewise. 1355 * poll.c: Likewise. 1356 * signalfd.c: Likewise. 1357 * signal.c: Likewise. 1358 (sprintsigmask_n, print_sigset_addr_len_limit): Use it instead of NSIG. 1359 * linux/alpha/arch_sigreturn.c (arch_sigreturn): Likewise. 1360 * linux/arm/arch_sigreturn.c (arch_sigreturn): Likewise. 1361 * linux/crisv10/arch_sigreturn.c (arch_sigreturn): Likewise. 1362 * linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise. 1363 * linux/m68k/arch_sigreturn.c (arch_sigreturn): Likewise. 1364 * linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise. 1365 * linux/mips/arch_sigreturn.c (arch_sigreturn): Likewise. 1366 * linux/powerpc/arch_sigreturn.c (arch_sigreturn): Likewise. 1367 * linux/s390/arch_sigreturn.c (arch_sigreturn): Likewise. 1368 * linux/sparc/arch_sigreturn.c (arch_sigreturn): Likewise. 1369 * linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise. 1370 * linux/x86_64/arch_sigreturn.c (arch_sigreturn): Likewise. 1371 * tests/pselect6.c (main): Likewise. 1372 1373 Move NSIG ifdefery to a separate header file. 1374 * nsig.h: New file. 1375 * Makefile.am (strace_SOURCES): Add it. 1376 * signal.c: Include "nsig.h" instead of <signal.h>, remove 1377 NSIG workarounds. 1378 * sigreturn.c: Likewise. 1379 * syscall.c: Likewise. 1380 * tests/pselect6.c: Likewise. 1381 1382 Introduce ANY_WORDSIZE_LESS_THAN_KERNEL_LONG macro. 1383 * defs.h (ANY_WORDSIZE_LESS_THAN_KERNEL_LONG): New macro. 1384 (truncate_klong_to_current_wordsize, 1385 truncate_kulong_to_current_wordsize): Use it. 1386 * mem.c (SYS_FUNC(old_mmap)): Likewise. 1387 * util.c (umoven, umovestr, dumpiov_upto): Likewise. 1388 * syscall.c (trace_syscall_exiting): Likewise. 1389 1390 Simplify personality checks in msghdr.c and signal.c. 1391 * msghdr.c: Check for [!current_wordsize] instead 1392 of [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4]. 1393 * signal.c: Likewise. 1394 1395 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1396 1397 Replace widen_to_long with truncate_klong_to_current_wordsize. 1398 * defs.h (widen_to_long): Remove. 1399 (truncate_klong_to_current_wordsize): New static inline function. 1400 * aio.c (SYS_FUNC(io_submit), SYS_FUNC(io_getevents): Use it 1401 instead of widen_to_long. 1402 * linux/sparc64/get_syscall_args.c (get_syscall_args): Update comment. 1403 * linux/x86_64/get_syscall_args.c (get_syscall_args): Likewise. 1404 1405 Replace widen_to_ulong with truncate_kulong_to_current_wordsize. 1406 * defs.h (widen_to_ulong): Remove. 1407 (truncate_kulong_to_current_wordsize): New static inline function. 1408 * io.c (do_preadv, do_pwritev): Use it instead of widen_to_ulong. 1409 1410 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1411 1412 Simplify print_lld_from_low_high_val ifdefery. 1413 The demise of HAVE_STRUCT_TCB_EXT_ARG opens the way for a simpler 1414 implementation. 1415 1416 * io.c (print_lld_from_low_high_val): Merge [SIZEOF_LONG > 4 1417 && SIZEOF_LONG == SIZEOF_LONG_LONG] 1418 and [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] cases 1419 into a single [SIZEOF_KERNEL_LONG_T > 4] case. 1420 [SIZEOF_KERNEL_LONG_T == 4]: Use direct casts to long long 1421 instead of zero_extend_signed_to_ull. 1422 1423 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1424 1425 Simplify getllval ifdefery. 1426 The demise of HAVE_STRUCT_TCB_EXT_ARG opens the way for a simpler 1427 implementation. 1428 1429 * util.c (getllval): Merge [SIZEOF_LONG > 4 1430 && SIZEOF_LONG == SIZEOF_LONG_LONG] 1431 and [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] cases 1432 into a single [SIZEOF_KERNEL_LONG_T > 4] case. 1433 1434 2016-12-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1435 1436 prctl: print pointer returned by PR_GET_TID_ADDRESS as kernel long. 1437 Since there is no compat handler for x32/n32, kernel returns kernel's 1438 long as a result of the call. 1439 1440 Interesting, does any callee out there actually care to have enough room 1441 allocated for kernel long? 1442 1443 * prctl.c (SYS_FUNC(prctl)): Use printnum_kptr instead of printnum_ptr 1444 to print the value stored at address pointed by addr2 argument 1445 of PR_GET_TID_ADDRESS operation. 1446 1447 2016-12-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1448 1449 Add functions for printing pointers of kernel_ulong_t size. 1450 In cases where no compat for x32/n32 is implemented, pointer is of 1451 kernel's long size, so it should be printed appropriately. 1452 1453 * defs.h [!current_klongsize] (printnum_addr_klong_int): New prototype. 1454 (printnum_kptr): New macro. 1455 * util.c [!current_klongsize] (printnum_addr_klong_int): New function. 1456 1457 2016-12-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1458 Dmitry V. Levin <ldv (a] altlinux.org> 1459 1460 Print indirect pointers as pointers. 1461 Originally, printnum_long_int was used, but it prints NULL incorrectly. 1462 1463 * defs.h (DECL_PRINTNUM_ADDR): New macro. 1464 (DECL_PRINTNUM_ADDR(int), DECL_PRINTNUM_ADDR(int64)): New prototypes. 1465 [!current_wordsize] (printnum_addr_long_int): New prototype. 1466 [!current_wordsize] (printnum_ptr): Use it. 1467 [current_wordsize > 4] (printnum_ptr): Use printnum_addr_int64. 1468 [current_wordsize == 4] (printnum_ptr) Use printnum_addr_int. 1469 * util.c (DEF_PRINTNUM_ADDR): New macro. 1470 (DEF_PRINTNUM_ADDR(int, unsigned int), 1471 DEF_PRINTNUM_ADDR(int64, uint64_t)): New macro instantiations that 1472 provide printnum_addr_int and printnum_addr_int64, accordingly. 1473 [!current_wordsize] (printnum_addr_long_int): New function. 1474 * xet_robust_list.c (sprintaddr): New function. 1475 (main): Use it, update expected output. 1476 * tests/ipc_sem.c (main): Update expected output. 1477 1478 2016-12-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1479 1480 ipc_sem: print 4th argument of semctl syscall as an address. 1481 * ipc_sem.c (SYS_FUNC(semctl)): Print 4th argument using printaddr. 1482 * tests/ipc_sem.c (cleanup): Update expected output. 1483 1484 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1485 1486 Do not define printnum_long_int on systems with constant current_wordsize 1487 * defs.h: Check [!current_wordsize] instead 1488 of [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] to select 1489 definitions of printnum_slong, printnum_ulong, and printnum_ptr. 1490 * util.c: Check [!current_wordsize] instead 1491 of [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] to decide 1492 whether to compile printnum_long_int. 1493 1494 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1495 1496 umoven: detect invalid addresses. 1497 Do not silently truncate tracee addresses to current_wordsize. 1498 After transition from long to kernel_ulong_t there should be no sign 1499 extension issues with tracee addresses, and invalid addresses should 1500 be printed properly. 1501 1502 * util.c (umoven): Check [SIZEOF_KERNEL_LONG_T > 4] instead 1503 of [SIZEOF_LONG > 4], reject addresses that do not fit into 1504 current_wordsize. 1505 * tests/umoven-illptr.c: New file. 1506 * tests/umoven-illptr.test: New test. 1507 * tests/.gitignore: Add umoven-illptr. 1508 * tests/Makefile.am (check_PROGRAMS): Likewise. 1509 (DECODER_TESTS): Add umoven-illptr.test. 1510 1511 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1512 1513 umovestr: detect invalid addresses. 1514 Do not silently truncate tracee addresses to current_wordsize. 1515 After transition from long to kernel_ulong_t there should be no sign 1516 extension issues with tracee addresses, and invalid addresses should 1517 be printed properly. 1518 1519 * util.c (umovestr): Check [SIZEOF_KERNEL_LONG_T > 4] instead 1520 of [SIZEOF_LONG > 4], reject addresses that do not fit into 1521 current_wordsize. 1522 * tests/umovestr-illptr.c: New file. 1523 * tests/umovestr-illptr.test: New test. 1524 * tests/.gitignore: Add umovestr-illptr. 1525 * tests/Makefile.am (check_PROGRAMS): Likewise. 1526 (DECODER_TESTS): Add umovestr-illptr.test. 1527 1528 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1529 1530 lseek: simplify _llseek syscall decoder. 1531 After transition from long to kernel_ulong_t the implementation 1532 could be made a bit simpler. 1533 1534 * lseek.c (SYS_FUNC(llseek)): Use direct cast to long long instead 1535 of zero_extend_signed_to_ull. 1536 1537 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1538 1539 lseek: merge two different implementations of lseek syscall decoder. 1540 After transition from long to kernel_ulong_t there are no mo 1541 complications that required to keep a separate implementation 1542 for x32 and mips n32. 1543 1544 * lseek.c (SYS_FUNC(lseek)): Merge two different implementations 1545 into a single one. 1546 1547 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1548 1549 Remove HAVE_STRUCT_TCB_EXT_ARG, ext_arg, and u_lrval. 1550 After transition from long to kernel_ulong_t these fields 1551 are no longer needed. 1552 1553 * defs.h (HAVE_STRUCT_TCB_EXT_ARG): Remove. 1554 (struct tcb) [HAVE_STRUCT_TCB_EXT_ARG]: Remove. 1555 [HAVE_STRUCT_TCB_EXT_ARG]: Remove. 1556 (RVAL_MASK): Update. 1557 * io.c (print_lld_from_low_high_val): Check 1558 [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] 1559 instead of [HAVE_STRUCT_TCB_EXT_ARG]. 1560 Use u_arg instead of ext_arg. 1561 * linux/mips/get_error.c (get_error) [LINUX_MIPSN32]: Remove. 1562 * linux/mips/get_syscall_args.c (get_syscall_args) [LINUX_MIPSN32]: 1563 Remove. 1564 [LINUX_MIPSN64]: Extend to [LINUX_MIPSN32]. 1565 * linux/x86_64/get_error.c (get_error) [X32]: Remove. 1566 * linux/x86_64/get_syscall_args.c (get_syscall_args) [X32]: Remove. 1567 * lseek.c: Check [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] 1568 instead of [HAVE_STRUCT_TCB_EXT_ARG]. 1569 [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] (SYS_FUNC(lseek)): Use u_arg 1570 instead of ext_arg. Use RVAL_UDECIMAL instead of RVAL_LUDECIMAL. 1571 * mem.c (SYS_FUNC(mmap)): Pass offset syscall argument directly 1572 to print_mmap. 1573 * syscall.c (trace_syscall_exiting) [HAVE_STRUCT_TCB_EXT_ARG]: Remove. 1574 * times.c (SYS_FUNC(times)): Use RVAL_UDECIMAL instead 1575 of RVAL_LUDECIMAL. 1576 * util.c (getllval): Check [SIZEOF_KERNEL_LONG_T > SIZEOF_LONG] 1577 instead of [HAVE_STRUCT_TCB_EXT_ARG]. Use u_arg instead of ext_arg. 1578 1579 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1580 1581 Remove getarg_klu. 1582 After transition from long to kernel_ulong_t we no longer need 1583 tcp->ext_arg, and therefore a function to access it is also no longer 1584 needed. 1585 1586 * defs.h (getarg_klu): Remove prototype. 1587 * util.c (getarg_klu): Remove. 1588 (printargs): Access tcp->u_arg directly 1589 * bjm.c (SYS_FUNC(init_module)): Likewise. 1590 * clone.c (SYS_FUNC(unshare)): Likewise. 1591 * fadvise.c (SYS_FUNC(fadvise64)): Likewise. 1592 * kcmp.c (SYS_FUNC(kcmp)): Likewise. 1593 * kexec.c (SYS_FUNC(kexec_file_load)): Likewise. 1594 * keyctl.c (SYS_FUNC(keyctl)): Likewise. 1595 * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Likewise. 1596 * mem.c (do_mprotect): Likewise. 1597 * mq.c (SYS_FUNC(mq_timedsend), SYS_FUNC(mq_timedreceive)): Likewise. 1598 * pkeys.c (SYS_FUNC(pkey_alloc)): Likewise. 1599 * prctl.c (print_prctl_args, SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): 1600 Likewise. 1601 1602 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1603 1604 Remove printaddr_klu. 1605 After transition from long to kernel_ulong_t we no longer need 1606 two versions of printaddr function. 1607 1608 * defs.h (printaddr): Remove. 1609 (printaddr_klu): Rename to printaddr. 1610 * util.c (printaddr_klu): Likewise. 1611 * bjm.c (SYS_FUNC(init_module)): Replace printaddr_klu with printaddr. 1612 * mem.c (do_mprotect): Likewise. 1613 1614 2016-12-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 1615 1616 tests: check decoding of a subset of prctl operations. 1617 Check decoding of prctl operations that take the second syscall argument 1618 as a pointer to an integer. 1619 1620 * tests/prctl-arg2-intptr.c: New file. 1621 * tests/prctl-arg2-intptr.test: New test. 1622 * tests/.gitignore: Add prctl-arg2-intptr. 1623 * tests/Makefile.am (check_PROGRAMS): Likewise. 1624 (DECODER_TESTS): Add prctl-arg2-intptr.test. 1625 1626 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1627 1628 Automatically replace PRI_kr[dux] with PRI_kl[dux] 1629 Remove temporary macros created for transition from long 1630 to kernel_ulong_t. 1631 1632 Automatically replace PRI_kr[dux] with PRI_kl[dux] using 1633 $ git grep -l 'PRI_kr[dux]' | xargs sed -ri 's/PRI_kr([dux])/PRI_kl\1/g' 1634 1635 * defs.h (PRI_krd, PRI_kru, PRI_krx): Remove. All users updated. 1636 1637 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1638 1639 Automatically replace kernel_(scno|ureg)_t with kernel_ulong_t. 1640 Remove temporary types created for transition from long 1641 to kernel_ulong_t. 1642 1643 Automatically replace kernel_scno_t and kernel_ureg_t with 1644 kernel_ulong_t using 1645 $ git grep -El 'kernel_(scno|ureg)_t' | 1646 xargs sed -ri 's/kernel_(scno|ureg)_t/kernel_ulong_t/g' 1647 1648 * kernel_types.h (kernel_scno_t, kernel_ureg_t): Remove. 1649 All users updated. 1650 1651 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1652 1653 Redirect kernel_ureg_t and kernel_scno_t from unsigned long to kernel_ulong_t 1654 * defs.h (struct tcb): Change u_rval type from long to kernel_long_t. 1655 (PRI_krd, PRI_kru, PRI_krx): Redirect to PRI_kld, PRI_klu, and PRI_klx. 1656 * kernel_types.h (kernel_scno_t, kernel_ureg_t): Redirect 1657 to kernel_ulong_t. 1658 1659 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1660 1661 Print kernel_ureg_t and kernel_scno_t using dedicated format strings. 1662 Prepare for the change of kernel_ureg_t and kernel_scno_t from 1663 unsigned long to kernel_ulong_t. 1664 1665 * defs.h (PRI_krd, PRI_kru, PRI_krx): New temporary macros. 1666 All users updated. 1667 1668 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1669 1670 vm_read_mem: detect address truncation. 1671 When sizeof(kernel_ureg_t) > sizeof(long), the tracee address passed 1672 to vm_read_mem could be silently truncated. Detect this situation 1673 and return EIO when the tracee address does not fit into unsigned long. 1674 1675 * util.c (vm_read_mem): Save raddr argument into a temporary variable 1676 truncated_raddr of type unsigned long. Set errno to EIO and return -1 1677 when truncated_raddr does not equal to raddr. 1678 1679 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1680 1681 trace_syscall_exiting: prepare personality check for u_rval type change. 1682 * syscall.c (trace_syscall_exiting): Check for sizeof(tcp->u_rval) 1683 instead of sizeof(long) when deciding how to print tcp->u_rval. 1684 1685 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1686 1687 Use ptr_to_kulong instead of explicit casts of pointers to kernel_ureg_t 1688 Direct casts to kernel_ureg_t will not work after the change 1689 of kernel_ureg_t from unsigned long to kernel_ulong_t. 1690 1691 * defs.h (ptr_to_kulong): New macro. 1692 * block.c (print_blkpg_req): Use it instead of explicit casts 1693 to kernel_ureg_t. 1694 * btrfs.c (btrfs_ioctl): Likewise. 1695 * evdev.c (ff_effect_ioctl): Likewise. 1696 * mmsghdr.c (dumpiov_in_mmsghdr): Likewise. 1697 * msghdr.c (print_struct_msghdr, dumpiov_in_msghdr): Likewise. 1698 * mtd.c (decode_mtd_oob_buf): Likewise. 1699 * printsiginfo.c (printsigval, print_si_info): Likewise. 1700 * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res): Likewise. 1701 * sigaltstack.c (print_stack_t): Likewise. 1702 * sock.c (decode_ifconf): Likewise. 1703 * sysctl.c (SYS_FUNC(sysctl)): Likewise. 1704 * util.c (dumpiov_upto): Likewise. 1705 * v4l2.c (print_v4l2_framebuffer, print_v4l2_ext_control, 1706 print_v4l2_ext_controls): Likewise. 1707 1708 2016-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 1709 1710 umove*: remove redundant casts. 1711 * util.c (umoven, umovestr): Remove casts from unsigned long to pointer. 1712 1713 upoke: remove redundant casts. 1714 * upoke.c (upoke): Remove casts from unsigned long to pointer. 1715 1716 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1717 1718 signal: cleanup decoding of sa_handler and sa_restorer. 1719 Change type of sa_handler and sa_restorer fields from function pointers 1720 to unsigned long. This saves the code from a lot of casts between 1721 pointers and integers. 1722 1723 Rename __sa_handler to sa_handler__ as names starting with underscore 1724 symbol are reserved and should not be used. 1725 1726 * signal.c (old_sigaction): Rename __sa_handler to sa_handler__, 1727 all users updated. Change the type of sa_handler__ and sa_restorer 1728 from pointer to unsigned long. 1729 (old_sigaction32): Rename __sa_handler to sa_handler__, all users 1730 updated. 1731 (decode_old_sigaction): Remove now redundant casts from 1732 old_sigaction32.sa_handler__ to old_sigaction.sa_handler__, 1733 from old_sigaction32.sa_restorer to old_sigaction.sa_restorer, 1734 and from old_sigaction.sa_handler__ to unsigned long. Print 1735 old_sigaction.sa_restorer using printaddr. 1736 * signal.c (new_sigaction): Rename __sa_handler to sa_handler__, 1737 all users updated. Change the type of sa_handler__ and sa_restorer 1738 from pointer to unsigned long. 1739 (new_sigaction32): Rename __sa_handler to sa_handler__, all users 1740 updated. 1741 (decode_new_sigaction): Remove now redundant casts from 1742 new_sigaction32.sa_handler__ to new_sigaction.sa_handler__, 1743 from new_sigaction32.sa_restorer to new_sigaction.sa_restorer, 1744 and from new_sigaction.sa_handler__ to unsigned long. Print 1745 new_sigaction.sa_restorer using printaddr. 1746 1747 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1748 1749 signal: change signal handler address type from unsigned long to kernel_ureg_t 1750 * signal.c (get_sa_handler_str, print_sa_handler): Change handler type 1751 from unsigned long to kernel_ureg_t. 1752 1753 quota: change address argument type from unsigned long to kernel_ureg_t. 1754 * quota.c (decode_cmd_data): Change the type of data argument 1755 from unsigned long to kernel_ureg_t. 1756 1757 execve: prepare for handling big pointers. 1758 * execve.c (printargv): Change cp.p64 type from unsigned long 1759 to kernel_ulong_t so it could handle wordsize > sizeof(long) properly. 1760 1761 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1762 1763 clone: print clone flags without truncation. 1764 The flags argument is defined in kernel as unsigned long, 1765 so change its decoding to avoid truncation. 1766 1767 * clone.c (SYS_FUNC(clone)): Change flags type from unsigned long 1768 to kernel_ureg_t, print it using printflags64 instead of printflags. 1769 1770 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1771 1772 Use printxval64 instead of printxval_long. 1773 After the change of tcb.u_arg type from long to kernel_ureg_t it is safe 1774 to stop using printxval_long proxy and pass syscall arguments directly 1775 to printxval64. 1776 1777 * defs.h (printxval_long): Remove. 1778 * fcntl.c (print_fcntl): Replace printxval_long with printxval64. 1779 * mtd.c (mtd_ioctl): Likewise. 1780 * numa.c (SYS_FUNC(mbind)): Likewise. 1781 * or1k_atomic.c [OR1K] (SYS_FUNC(or1k_atomic)): Likewise. 1782 * sysmips.c [MIPS] (SYS_FUNC(sysmips)): Likewise. 1783 * term.c (term_ioctl): Likewise. 1784 1785 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1786 1787 Use printflags64 instead of printflags_long. 1788 After the change of tcb.u_arg type from long to kernel_ureg_t it is safe 1789 to stop using printflags_long proxy and pass syscall arguments directly 1790 to printflags64. 1791 1792 * defs.h (printflags_long): Remove. 1793 * fcntl.c (print_fcntl): Replace printflags_long with printflags64. 1794 * numa.c (SYS_FUNC(get_mempolicy)): Likewise. 1795 * perf.c (SYS_FUNC(perf_event_open)): Likewise. 1796 * sram_alloc.c [BFIN] (SYS_FUNC(sram_alloc)): Likewise. 1797 1798 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1799 1800 upeek, upoke: change argument types from long to unsigned long. 1801 * defs.h (upeek, upoke): Change offset argument type from long 1802 to unsigned long. Change res argument type from long to kernel_ureg_t. 1803 * upeek.c (upeek): Likewise. 1804 * upoke.c (upoke.c): Likewise. 1805 * syscall.c (print_pc) [ARCH_PC_PEEK_ADDR]: Change pc type from long 1806 to kernel_ureg_t. 1807 * linux/aarch64/arch_regs.c (arm_sp_ptr): Remove redundant cast. 1808 * linux/metag/get_syscall_args.c (get_syscall_args): Likewise. 1809 * linux/sh/get_syscall_result.c (get_syscall_result_regs): Likewise. 1810 * linux/sh64/get_syscall_result.c (get_syscall_result_regs): Likewise. 1811 * linux/powerpc/getregs_old.c (getregs_old): Remove redundant casts. 1812 * linux/alpha/arch_getrval2.c (getrval2): Change r20 type from long 1813 to unsigned long. 1814 * linux/alpha/arch_regs.c (alpha_r0, alpha_a3): Change type from long 1815 to unsigned long. 1816 * linux/bfin/arch_regs.c (bfin_r0): Likewise. 1817 * linux/crisv10/arch_regs.c (cris_r10): Likewise. 1818 * linux/hppa/arch_regs.c (hppa_r28): Likewise. 1819 * linux/ia64/arch_regs.c (IA64_PSR_IS): Likewise. 1820 * linux/microblaze/arch_regs.c (microblaze_r3): Likewise. 1821 * linux/sh/arch_regs.c (sh_r0): Likewise. 1822 * linux/sh64/arch_regs.c (sh64_r9): Likewise. 1823 * linux/xtensa/arch_regs.c (xtensa_a2): Likewise. 1824 * linux/alpha/arch_sigreturn.c (arch_sigreturn): Change addr type 1825 from long to unsigned long. 1826 * linux/microblaze/arch_sigreturn.c (arch_sigreturn): Likewise. 1827 * linux/alpha/get_scno.c (arch_get_scno): Update for the change 1828 of signedness. 1829 * linux/arc/get_syscall_args.c (get_syscall_args): Change arc_args type 1830 from pointer to long to pointer to unsigned long. 1831 * linux/arm/arch_regs.c (arm_sp_ptr): Change type from pointer to long 1832 to pointer to unsigned long. 1833 * linux/arm/arch_regs.h (arm_sp_ptr): Likewise. 1834 * linux/i386/arch_regs.c (i386_esp_ptr): Likewise. 1835 * linux/i386/arch_regs.h (i386_esp_ptr): Likewise. 1836 * linux/m68k/arch_regs.c (m68k_usp_ptr): Likewise. 1837 * linux/m68k/arch_regs.h (m68k_usp_ptr): Likewise. 1838 * linux/ia64/get_syscall_args.c (get_syscall_args): Use umove 1839 instead of umoven. 1840 * linux/sh/arch_getrval2.c (getrval2): Change val type from long 1841 to unsigned long. 1842 1843 arch_sigreturn: change tracee address type from long to unsigned long. 1844 * linux/arm/arch_sigreturn.c (arch_sigreturn): Change addr variable 1845 type from long to unsigned long. 1846 * linux/ia64/arch_sigreturn.c (arch_sigreturn): Likewise. 1847 * linux/m68k/arch_sigreturn.c (arch_sigreturn): Likewise. 1848 * linux/powerpc/arch_sigreturn.c (arch_sigreturn): Likewise. 1849 * linux/s390/arch_sigreturn.c (arch_sigreturn): Likewise. 1850 * linux/sparc/arch_sigreturn.c (arch_sigreturn): Likewise. 1851 * linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise. 1852 * linux/crisv10/arch_sigreturn.c (arch_sigreturn): Change the type 1853 of addr and regs variables from long to unsigned long. 1854 * linux/mips/arch_sigreturn.c (arch_sigreturn): Change addr variable 1855 type from long to kernel_ureg_t. 1856 * linux/x86_64/arch_sigreturn.c (arch_sigreturn): Change the type 1857 of offset and addr variables from long to kernel_ureg_t. 1858 1859 kexec: change flags type from unsigned long to kernel_ureg_t. 1860 * kexec.c (SYS_FUNC(kexec_load)): Change n variable type 1861 from unsigned long to kernel_ureg_t. Use printxval64 instead 1862 of printxval_long. Use printflags64 instead of printflags_long. 1863 1864 kexec: change types of pointers and sizes to kernel_ureg_t. 1865 * kexec.c (print_seg): Change the type of *seg and seg_buf variables 1866 from unsigned long to kernel_ureg_t. 1867 (print_kexec_segments): Change len argument type from unsigned long 1868 to kernel_ureg_t. Change seg variable type from unsigned long 1869 to kernel_ureg_t. 1870 1871 printsiginfo: change len argument type from unsigned long to kernel_ureg_t 1872 * printsiginfo.c (print_siginfo_array): Change len argument type 1873 from unsigned long to kernel_ureg_t. 1874 1875 signal: change address argument type from unsigned long to kernel_ureg_t 1876 * signal.c (print_sigqueueinfo): Change address argument type 1877 from unsigned long to kernel_ureg_t. 1878 1879 statfs64: change size argument type from unsigned long to kernel_ureg_t. 1880 * defs.h (print_struct_statfs64): Change size argument type 1881 from unsigned long to kernel_ureg_t. 1882 * print_statfs.c (print_struct_statfs64): Likewise. 1883 * fetch_struct_statfs.c (fetch_struct_statfs64): Likewise. 1884 * fstatfs64.c (SYS_FUNC(fstatfs64)): Pass size argument directly 1885 to print_struct_statfs64. 1886 * statfs64.c (SYS_FUNC(statfs64)): Likewise. 1887 1888 Cast tcp->u_rval to kernel_ureg_t instead of unsigned long. 1889 * fcntl.c (print_fcntl): Cast tcp->u_rval to kernel_ureg_t instead 1890 of unsigned long. 1891 * membarrier.c (SYS_FUNC(membarrier)): Likewise. 1892 * prctl.c (SYS_FUNC(prctl)): Likewise. 1893 * sched.c (SYS_FUNC(sched_getscheduler)): Likewise. 1894 * time.c (do_adjtimex): Likewise. 1895 1896 decode_sockbuf: change addrlen argument type from long to kernel_ureg_t. 1897 * net.c (decode_sockbuf): Change addrlen argument type from long 1898 to kernel_ureg_t. 1899 1900 netlink: change size types from unsigned long to kernel_ureg_t. 1901 * defs.h (decode_netlink): Change len argument type from unsigned long 1902 to kernel_ureg_t. 1903 * netlink.c (fetch_nlmsghdr): Likewise. 1904 (decode_nlmsghdr_with_payload): Likewise. Change nlmsg_len variable 1905 type from unsigned long to unsigned int. 1906 (decode_netlink): Change the type of len argument and next_len variable 1907 from unsigned long to kernel_ureg_t. Change nlmsg_len variable type 1908 from unsigned long to unsigned int. 1909 1910 ipc_msg: change size types from unsigned long to kernel_ureg_t. 1911 * ipc_msg.c (tprint_msgsnd): Change count argument type 1912 from unsigned long to kernel_ureg_t. Change flags argument type 1913 from unsigned long to unsigned int. 1914 (tprint_msgrcv): Change the type of count and msgtyp arguments 1915 from unsigned long to kernel_ureg_t. 1916 (fetch_msgrcv_args): Change *pair type from unsigned long 1917 to kernel_ureg_t. 1918 (SYS_FUNC(msgrcv)): Change pair type from unsigned long 1919 to kernel_ureg_t. 1920 * print_msgbuf.c (tprint_msgbuf): Change count argument type 1921 from unsigned long to kernel_ureg_t. 1922 1923 dumpiov_upto: change size types from unsigned long to kernel_ureg_t. 1924 * defs.h (dumpiov_upto): Change data_size argument type 1925 from unsigned long to kernel_ureg_t. 1926 * util.c (dumpiov_upto): Change the type of data_size argument 1927 and iov_len variable from unsigned long to kernel_ureg_t. 1928 1929 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1930 1931 msghdr: change cmsghdr size types from size_t to unsigned int. 1932 As the kernel does not accept control messages longer than the value 1933 of int sysctl_optmem_max kernel variable exported as 1934 /proc/sys/net/core/optmem_max, we do not print them either. 1935 1936 Since unsigned int has enough room to contain any valid control message 1937 size, change all internal cmsghdr size types from size_t 1938 to unsigned int. 1939 1940 * msghdr.c (print_scm_rights, print_scm_creds, print_scm_security, 1941 print_cmsg_ip_pktinfo, print_cmsg_uint, print_cmsg_uint8_t, 1942 print_cmsg_ip_opts, print_cmsg_ip_recverr, print_cmsg_ip_origdstaddr, 1943 cmsg_printer, print_cmsg_type_data): Change data_len argument type 1944 from size_t to unsigned int. 1945 (cmsg_socket_printers): Change min_len type from size_t to unsigned int. 1946 (decode_msg_control): Change the type of in_control_len argument, 1947 cmsg_len, and len variables from size_t to kernel_ureg_t. 1948 Change the type of cmsg_size, control_len, and buf_len variables 1949 from size_t to unsigned int. 1950 1951 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 1952 1953 msghdr: change register based size types from unsigned long to kernel_ureg_t 1954 * defs.h (dumpiov_in_msghdr): Change data_size argument type 1955 from unsigned long to kernel_ureg_t. 1956 * msghdr.h (print_struct_msghdr): Likewise. 1957 * msghdr.c (print_struct_msghdr): Likewise. Cast msghdr.msg_iovlen 1958 and msghdr.msg_controllen to kernel_ureg_t instead of unsigned long. 1959 (decode_msghdr, dumpiov_in_msghdr): Change data_size argument type 1960 from unsigned long to kernel_ureg_t. 1961 (SYS_FUNC(sendmsg)): Pass -1 instead of -1UL as data_size argument 1962 to decode_msghdr. 1963 * mmsghdr.c (print_struct_mmsghdr): Pass (kernel_ureg_t) -1 instead 1964 of -1UL as data_size argument to print_struct_msghdr. 1965 (dumpiov_in_mmsghdr): Cast msghdr.msg_iovlen to kernel_ureg_t instead 1966 of unsigned long. 1967 * syscall.c (dumpio): Pass -1 instead of -1UL as data_size argument 1968 to dumpiov_in_msghdr 1969 1970 mq: remove redundant u_rval check. 1971 * mq.c (SYS_FUNC(mq_timedreceive)): Do not check for tcp->u_rval < 0, 1972 syserror(tcp) is enough, and printstrn can handle len < 0 anyway. 1973 1974 io: change size types from unsigned long to kernel_ureg_t. 1975 * defs.h (tprint_iov_upto): Change the type of len and data_size 1976 arguments from unsigned long to kernel_ureg_t. 1977 (tprint_iov): Change the type of len argument from unsigned long 1978 to kernel_ureg_t. 1979 * io.c (print_iovec_config): Change data_size type from unsigned long 1980 to kernel_ureg_t. 1981 (print_iovec): Change the type of *iov, iov_buf, and len variables 1982 from unsigned long to kernel_ureg_t. 1983 (tprint_iov_upto): Change the type of len and data_size arguments, and 1984 the type of iov variable from unsigned long to kernel_ureg_t. 1985 1986 mount: change flags type from unsigned long to kernel_ureg_t. 1987 * mount.c (SYS_FUNC(mount)): Change the type of flags from unsigned long 1988 to kernel_ureg_t, use printflags64 instead of printflags_long 1989 to print it. 1990 1991 mem: change mmap arguments type from unsigned long to kernel_ureg_t. 1992 * mem.c (print_mmap): Change the type of len, prot, and flags 1993 from unsigned long to kernel_ureg_t. Use printflags64 instead 1994 of printflags_long. Use printxval64 instead of printxval_long. 1995 (SYS_FUNC(old_mmap)): Check for current_klongsize instead 1996 of [AARCH64 || X86_64] to take X32 into account. 1997 (SYS_FUNC(mremap)): Use printflags64 instead of printflags_long. 1998 (SYS_FUNC(remap_file_pages)): Change the type of size, prot, pgoff, and 1999 flags from unsigned long to kernel_ureg_t. Use printflags64 instead 2000 of printflags_long. Use printxval64 instead of printxval_long. 2001 [POWERPC] (SYS_FUNC(subpage_prot)): Change the type of len and nmemb 2002 from unsigned long to kernel_ureg_t. 2003 2004 numa: change size arguments type from unsigned long to kernel_ureg_t. 2005 * numa.c (print_node, print_addr): Add kernel_ureg_t support. 2006 (print_nodemask): Change type of maxnodes argument from unsigned long 2007 to kernel_ureg_t. 2008 (SYS_FUNC(move_pages)): Change npages type from unsigned long 2009 to kernel_ureg_t. Change buf type from long to kernel_ureg_t. 2010 2011 print_sigset_addr_len: change len argument type from long to kernel_ureg_t 2012 * defs.h (print_sigset_addr_len): Change len argument type from long 2013 to kernel_ureg_t. 2014 * signal.c (print_sigset_addr_len_limit, print_sigset_addr_len): Likewise. 2015 2016 process_vm: change size arguments type from unsigned long to kernel_ureg_t 2017 * process_vm.c (SYS_FUNC(process_vm_readv), 2018 SYS_FUNC(process_vm_writev)): Change the type of local_iovcnt, 2019 remote_iovcnt, and flags from unsigned long to kernel_ureg_t. 2020 2021 printstr*: change len argument type from long to kernel_ureg_t. 2022 * defs.h (printstr_ex, printstrn): Change len argument type from long 2023 to kernel_ureg_t. 2024 * util.c (printstr_ex): Likewise. 2025 2026 xattr: change size arguments type from unsigned long to kernel_ureg_t. 2027 * xattr.c (print_xattr_val): Change type of insize and size arguments 2028 from unsigned long to kernel_ureg_t. 2029 (print_xattr_list): Change type of size argument from unsigned long 2030 to kernel_ureg_t. 2031 2032 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 2033 2034 printstr_ex: fix decoding of non-NUL-terminated strings when len == -1. 2035 Do not treat len == -1 in any special way. All users who need the 2036 string to be handled as a NUL-terminated string set QUOTE_0_TERMINATED 2037 bit in user_style flags already. 2038 2039 * util.c (printstr_ex): Remove (len == -1) check. 2040 * tests/printstr.c: New file. 2041 * tests/printstr.test: New test. 2042 * tests/.gitignore: Add printstr. 2043 * tests/Makefile.am (check_PROGRAMS): Likewise. 2044 (DECODER_TESTS): Add printstr.test. 2045 2046 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 2047 2048 Fix decoding of sethostname syscall. 2049 The second argument of sethostname syscall is not an unsigned long but 2050 unsigned int. The kernel does not look at the string argument when 2051 the length argument is too long. 2052 2053 * hostname.c [HAVE_LINUX_UTSNAME_H]: Include <linux/utsname.h>. 2054 [!__NEW_UTS_LEN] (__NEW_UTS_LEN): Define. 2055 (SYS_FUNC(sethostname)): Treat the second argument as unsigned int. 2056 Print the first argument as a pointer when the second argument exceeds 2057 __NEW_UTS_LEN. 2058 * tests/sethostname.c [HAVE_LINUX_UTSNAME_H]: Include <linux/utsname.h>. 2059 [!__NEW_UTS_LEN] (__NEW_UTS_LEN): Define. 2060 (main): Use it. Check that the second argument of sethostname 2061 is handled as unsigned int. Check that the first argument is printed 2062 as a pointer when the second argument exceeds __NEW_UTS_LEN. 2063 2064 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 2065 2066 tests: add F8ILL_KULONG_* and f8ill_ptr_to_kulong to tests.h. 2067 * tests/tests.h (F8ILL_KULONG_SUPPORTED, F8ILL_KULONG_MASK): New macros. 2068 (f8ill_ptr_to_kulong): New static inline function. 2069 2070 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 2071 2072 printstr: rename to printstrn, add printstr as a thin wrapper. 2073 As about half of all printstr uses cases are invocations with the last 2074 argument set to -1, create a dedicated function for this use case. 2075 2076 * defs.h (printstr): Rename to printstrn. All callers updated. 2077 (printstr): New static inline function. All callers updated. 2078 2079 2016-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 2080 2081 process: change ptrace arguments type from unsigned long to kernel_ureg_t 2082 (SYS_FUNC(ptrace)): Change type of request and data arguments 2083 from unsigned long to kernel_ureg_t. 2084 2085 process: change tracee address type from unsigned long to kernel_ureg_t. 2086 * process.c (print_user_offset_addr): Change address argument type 2087 from unsigned long to kernel_ureg_t. 2088 (SYS_FUNC(ptrace)): Change addr variable type from unsigned long 2089 to kernel_ureg_t. 2090 2091 net: change address argument type from long to kernel_ureg_t. 2092 * net.c (decode_sockbuf, decode_pair_fd, print_linger, print_ucred, 2093 print_tpacket_stats, print_icmp_filter, print_getsockopt, print_mreq, 2094 print_mreq6, print_group_req, print_tpacket_req, print_packet_mreq, 2095 print_setsockopt): Change address argument type from long 2096 to kernel_ureg_t. 2097 2098 print_mq_attr: change address argument type from long to kernel_ureg_t. 2099 * print_mq_attr.c (printmqattr): Change address argument type from long 2100 to kernel_ureg_t. 2101 2102 ipc_*: change address argument type from long to kernel_ureg_t. 2103 * ipc_msg.c (tprint_msgsnd, tprint_msgrcv, fetch_msgrcv_args): Change 2104 address argument type from long to kernel_ureg_t. 2105 * ipc_msgctl.c (print_msqid_ds): Likewise. 2106 * ipc_sem.c (tprint_sembuf_array): Likewise. 2107 * ipc_shmctl.c (print_shmid_ds): Likewise. 2108 2109 print_msgbuf: change address argument type from long to kernel_ureg_t. 2110 * print_msgbuf.c (tprint_msgbuf): Change address argument type 2111 from long to kernel_ureg_t. 2112 2113 desc: change tracee address type from long to kernel_ureg_t. 2114 * desc.c (decode_select): Rename arg to addr, change its type 2115 from long to kernel_ureg_t. 2116 2117 uid: change address argument type from long to kernel_ureg_t. 2118 * uid.c (get_print_uid): Change address argument type 2119 from long to kernel_ureg_t. 2120 2121 time: change address argument type from long to kernel_ureg_t. 2122 * time.c (print_timezone, do_adjtimex): Change address argument type 2123 from long to kernel_ureg_t. 2124 2125 sched: change address argument type from long to kernel_ureg_t. 2126 * sched.c (print_sched_attr): Change address argument type 2127 from long to kernel_ureg_t. 2128 2129 printsiginfo: change address argument type from long to kernel_ureg_t. 2130 * printsiginfo.c (printsiginfo_at): Change address argument type 2131 from long to kernel_ureg_t. 2132 2133 print_timex: change address argument type from long to kernel_ureg_t. 2134 * print_timex.c (print_timex): Change address argument type 2135 from long to kernel_ureg_t. 2136 2137 print_sigevent: change address argument type from long to kernel_ureg_t. 2138 * print_sigevent.c (print_sigevent): Change address argument type 2139 from long to kernel_ureg_t. 2140 2141 poll: change address argument type from long to kernel_ureg_t. 2142 * poll.c (decode_poll_exiting): Change tracee address argument type 2143 from long to kernel_ureg_t. 2144 2145 printrusage*: change tracee address argument type from long to kernel_ureg_t 2146 * defs.h [ALPHA] (printrusage32): Change address argument type 2147 from long to kernel_ureg_t. 2148 * printrusage.c (printrusage): Likewise. 2149 [ALPHA] (printrusage32): Likewise. 2150 * wait.c (printwaitn): Change the type of tracee address argument 2151 of print_rusage from long to kernel_ureg_t. 2152 2153 print_time*: change tracee address argument type from long to kernel_ureg_t 2154 * defs.h [ALPHA] (sprint_timeval32, print_timeval32, 2155 print_timeval32_pair, print_itimerval32): Change address argument type 2156 from long to kernel_ureg_t. 2157 * desc.c (decode_select): Change the type of tracee address argument 2158 of print_tv_ts and sprint_tv_ts from long to kernel_ureg_t. 2159 * print_timespec.c (print_timespec, sprint_timespec, 2160 print_timespec_utime_pair, print_itimerspec): Change address argument 2161 type from long to kernel_ureg_t. 2162 * print_timeval.c (print_timeval, print_timeval_pair, sprint_timeval, 2163 print_itimerval, print_timeval32, print_timeval32_pair, 2164 print_itimerval32, sprint_timeval32): Likewise. 2165 2166 rtc: change type of ioctl 3rd argument from long to kernel_ureg_t. 2167 * rtc.c (decode_rtc_time, decode_rtc_wkalrm, decode_rtc_pll_info): 2168 Change addr type from long to kernel_ureg_t. 2169 (rtc_ioctl): Change arg type from long to kernel_ureg_t. 2170 2171 mtd: change type of ioctl 3rd argument from long to kernel_ureg_t. 2172 * mtd.c (decode_erase_info_user, decode_erase_info_user64, 2173 decode_mtd_oob_buf, decode_mtd_oob_buf64, decode_otp_info, 2174 decode_otp_select, decode_mtd_write_req, decode_mtd_info_user, 2175 decode_nand_oobinfo, decode_nand_ecclayout_user, decode_mtd_ecc_stats): 2176 Change addr type from long to kernel_ureg_t. 2177 (mtd_ioctl): Change arg type from long to kernel_ureg_t. 2178 2179 hdio: change type of ioctl 3rd argument from long to kernel_ureg_t. 2180 * hdio.c (hdio_ioctl): Change arg type from long to kernel_ureg_t. 2181 2182 v4l2: change type of ioctl 3rd argument from long to kernel_ureg_t. 2183 * v4l2.c (print_v4l2_capability, print_v4l2_fmtdesc, print_v4l2_format, 2184 print_v4l2_requestbuffers, print_v4l2_buffer, print_v4l2_framebuffer, 2185 print_v4l2_buf_type, print_v4l2_streamparm, print_v4l2_standard, 2186 print_v4l2_input, print_v4l2_control, print_v4l2_queryctrl, 2187 print_v4l2_cropcap, print_v4l2_crop, print_v4l2_ext_controls, 2188 print_v4l2_frmsizeenum, print_v4l2_frmivalenum, 2189 print_v4l2_create_buffers, v4l2_ioctl): Change arg type from long 2190 to kernel_ureg_t. 2191 2192 evdev: change type of ioctl 3rd argument from long to kernel_ureg_t. 2193 * evdev.c (ff_effect_ioctl, abs_ioctl, keycode_ioctl, keycode_V2_ioctl, 2194 getid_ioctl, decode_bitset, mtslots_ioctl, repeat_ioctl, bit_ioctl, 2195 evdev_read_ioctl, evdev_write_ioctl, evdev_ioctl): Change arg type 2196 from long to kernel_ureg_t. 2197 2198 btrfs: change type of ioctl 3rd argument from long to kernel_ureg_t. 2199 * btrfs.c (btrfs_print_balance, btrfs_ioctl): Change arg type from long 2200 to kernel_ureg_t. 2201 2202 block: change type of ioctl 3rd argument from long to kernel_ureg_t. 2203 * block.c (block_ioctl): Change arg type from long to kernel_ureg_t. 2204 2205 Change type of ioctl 3rd argument from long to kernel_ureg_t. 2206 * defs.h (DECL_IOCTL): Change arg type from long to kernel_ureg_t. 2207 * dm.c (dm_known_ioctl, dm_ioctl): Likewise. 2208 * file_ioctl.c (file_ioctl): Likewise. 2209 * fs_x_ioctl.c (fs_x_ioctl): Likewise. 2210 * ioctl.c (ioctl_decode): Likewise. 2211 * loop.c (decode_loop_info, decode_loop_info64): Change addr type 2212 from long to kernel_ureg_t. 2213 (loop_ioctl): Change arg type from long to kernel_ureg_t. 2214 * ptp.c (ptp_ioctl): Likewise. 2215 * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, 2216 print_sg_io_v4_res, scsi_ioctl): Likewise. 2217 * sock.c (print_ifreq, sock_ioctl): Likewise. 2218 (decode_ifconf): Change addr type from long to kernel_ureg_t. 2219 * term.c (decode_termios, decode_termio, decode_winsize, decode_ttysize, 2220 decode_modem_flags): Likewise. 2221 (term_ioctl): Change arg type from long to kernel_ureg_t. 2222 * ubi.c (ubi_ioctl): Likewise. 2223 * userfaultfd.c (uffdio_ioctl): Likewise. 2224 2225 ldt: change address argument type from long to kernel_ureg_t. 2226 * defs.h [HAVE_STRUCT_USER_DESC] (print_user_desc): Change address 2227 argument type from long to kernel_ureg_t. 2228 * ldt.c [HAVE_STRUCT_USER_DESC] (print_user_desc): Likewise. 2229 2230 fcntl: change address argument type from long to kernel_ureg_t. 2231 * fcntl.c (printflock64, printflock, print_f_owner_ex): Change 2232 address argument type from long to kernel_ureg_t. 2233 2234 execve: change address argument type from long to kernel_ureg_t. 2235 * execve.c (printargv, printargc): Change address argument type 2236 from long to kernel_ureg_t. 2237 2238 dirent: change address argument type from long to kernel_ureg_t. 2239 * dirent.c (print_old_dirent): Change address argument type from long 2240 to kernel_ureg_t. 2241 2242 bpf: change address argument type from long to kernel_ureg_t. 2243 * bpf.c (bpf_map_create, bpf_map_update_elem, bpf_map_delete_elem, 2244 bpf_map_io, bpf_prog_load, SYS_FUNC(bpf)): Change address argument 2245 type from long to kernel_ureg_t. 2246 2247 dump*: change address argument type from long to kernel_ureg_t. 2248 * defs.h (dumpiov_in_msghdr, dumpiov_in_mmsghdr, dumpiov_upto, dumpstr): 2249 Change address argument type from long to kernel_ureg_t. 2250 * mmsghdr.c (dumpiov_in_mmsghdr): Likewise. 2251 * msghdr.c (fetch_msghdr_namelen, decode_msghdr, dumpiov_in_msghdr): 2252 Likewise. 2253 * util.c (dumpiov_upto, dumpstr): Likewise. 2254 2255 print_sigset_addr_len: change address argument type from long to kernel_ureg_t 2256 * defs.h (print_sigset_addr_len) Change address argument type from long 2257 to kernel_ureg_t. 2258 * signal.c (print_sigset_addr_len_limit, print_sigset_addr_len, 2259 decode_old_sigaction, decode_new_sigaction): Likewise. 2260 2261 decode_sockaddr: change address argument type from long to kernel_ureg_t 2262 * defs.h (decode_sockaddr) Change tracee address argument type from long 2263 to kernel_ureg_t. 2264 * sockaddr.c (decode_sockaddr): Likewise. 2265 2266 print_struct_statfs*: change address argument type from long to kernel_ureg_t 2267 * defs.h (print_struct_statfs, print_struct_statfs64): Change address 2268 argument type from long to kernel_ureg_t. 2269 * print_statfs.c (print_struct_statfs, print_struct_statfs64): Likewise. 2270 * fetch_struct_statfs.c (fetch_struct_statfs, fetch_struct_statfs64): 2271 Likewise. 2272 2273 fetch_struct_flock: change address argument type from long to kernel_ureg_t 2274 * fetch_struct_flock.c (fetch_struct_flock, fetch_struct_flock64): 2275 Change address argument type from long to kernel_ureg_t. 2276 2277 fetch_seccomp_fprog: change address argument type from long to kernel_ureg_t 2278 * fetch_seccomp_fprog.c (fetch_seccomp_fprog): Change address argument 2279 type from long to kernel_ureg_t. 2280 2281 printnum_*, printpair_*: change address argument type from long to kernel_ureg_t 2282 * defs.h (DECL_PRINTNUM, DECL_PRINTPAIR, printnum_long_int): Change 2283 address argument type from long to kernel_ureg_t. 2284 * util.c (DEF_PRINTNUM, DEF_PRINTPAIR, printnum_long_int): Likewise. 2285 2286 printpath*: change address argument type from long to kernel_ureg_t. 2287 * defs.h (printpath, printpathn): Change address argument type 2288 from long to kernel_ureg_t. 2289 * util.c (printpath, printpathn): Likewise. 2290 2291 printstr*: change address argument type from long to kernel_ureg_t. 2292 * defs.h (printstr_ex, printstr_ex): Change address argument type 2293 from long to kernel_ureg_t. 2294 * util.c (printstr_ex): Likewise. 2295 2296 umove*: change tracee address argument type from long to kernel_ureg_t. 2297 * defs.h (umovestr, umoven, umoven_or_printaddr, 2298 umoven_or_printaddr_ignore_syserror): Change tracee address argument 2299 type from long to kernel_ureg_t. 2300 (print_array): Change the type of tracee address argument of umoven_func 2301 from long to kernel_ureg_t. 2302 * util.c (vm_read_mem, umovestr, umoven, umoven_or_printaddr, 2303 umoven_or_printaddr_ignore_syserror): Change tracee address argument 2304 type from long to kernel_ureg_t. 2305 (print_array): Change the type of tracee address argument of umoven_func 2306 from long to kernel_ureg_t. 2307 * desc.c (umove_kulong_array_or_printaddr): Change tracee address 2308 argument type from long to kernel_ureg_t. 2309 * mmsghdr.c (fetch_struct_mmsghdr_or_printaddr): Likewise. 2310 2311 futex: change address type from long to kernel_ureg_t. 2312 * futex.c (SYS_FUNC(futex)): Change address type from long 2313 to kernel_ureg_t. 2314 2315 file_handle: change address type from long to kernel_ureg_t. 2316 * file_handle.c (SYS_FUNC(name_to_handle_at), 2317 SYS_FUNC(open_by_handle_at)): Change address type from long 2318 to kernel_ureg_t. 2319 2320 printsiginfo: cast pointers to kernel_ureg_t instead of unsigned long. 2321 * printsiginfo.c (printsigval): Cast siginfo.si_ptr pointer 2322 to kernel_ureg_t instead of unsigned long. 2323 (print_si_info): Cast siginfo.si_addr and siginfo.si_call_addr pointers 2324 to kernel_ureg_t instead of unsigned long. 2325 2326 sigaltstack: cast pointers and sizes to kernel_ureg_t instead of unsigned long 2327 * sigaltstack.c (print_stack_t): Cast sigaltstack.ss_sp pointer 2328 and sigaltstack.ss_size to kernel_ureg_t instead of unsigned long. 2329 2330 v4l2: cast pointers to kernel_ureg_t instead of long. 2331 * v4l2.c (print_v4l2_ext_control): Cast v4l2_ext_control.string pointer 2332 to kernel_ureg_t instead of long. 2333 2334 v4l2: cast pointers to kernel_ureg_t instead of unsigned long. 2335 * v4l2.c (print_v4l2_buffer): Remove redundant cast. 2336 (print_v4l2_framebuffer): Cast v4l2_framebuffer.base pointer 2337 to kernel_ureg_t instead of unsigned long. 2338 (print_v4l2_ext_controls): Cast v4l2_ext_controls.controls pointer 2339 to kernel_ureg_t instead of unsigned long. 2340 2341 2016-12-24 Dmitry V. Levin <ldv (a] altlinux.org> 2342 2343 sysctl: cast pointers to kernel_ureg_t instead of size_t. 2344 * sysctl.c (SYS_FUNC(sysctl)): Cast __sysctl_args.oldval and 2345 __sysctl_args.newval pointers to kernel_ureg_t instead of size_t. 2346 2347 sysctl: cast pointers to kernel_ureg_t instead of long. 2348 * sysctl.c (SYS_FUNC(sysctl)): Cast __sysctl_args.oldlenp pointer 2349 to kernel_ureg_t instead of long. 2350 2351 block: cast pointers to kernel_ureg_t instead of long. 2352 * block.c (print_blkpg_req): Cast blkpg_ioctl_arg.data pointer 2353 to kernel_ureg_t instead of long. 2354 2355 dumpiov_upto: cast pointers to kernel_ureg_t instead of long. 2356 * util.c (dumpiov_upto): Cast iovec.iov_base pointer to kernel_ureg_t 2357 instead of long. 2358 2359 msghdr: cast pointers to kernel_ureg_t instead of long. 2360 * msghdr.c (print_struct_msghdr): Cast msghdr.msg_name pointer 2361 to kernel_ureg_t instead of long. 2362 (dumpiov_in_msghdr): Cast msghdr.msg_iov pointer to kernel_ureg_t 2363 instead of long. 2364 2365 mmsghdr: cast pointers to kernel_ureg_t instead of long. 2366 * mmsghdr.c (dumpiov_in_mmsghdr): Cast msghdr.msg_iov pointer 2367 to kernel_ureg_t instead of long. 2368 2369 Remove redundant casts of ptrace arguments. 2370 * strace.c (maybe_switch_tcbs, trace): Do not cast ptrace 4th argument 2371 from pointer to long type. 2372 2373 ptrace_restart: cleanup. 2374 * strace.c (ptrace_restart): Replace the sequence of "if" statements 2375 with a "switch" statement. 2376 2377 ptrace_restart: change types of integer arguments to unsigned. 2378 * strace.c (ptrace_restart): Change types of "op" and "sig" 2379 from int to unsigned int. 2380 2381 process: remove redundant syserror checks. 2382 * process.c (SYS_FUNC(ptrace)): Remove syserror checks as both 2383 print_siginfo_array and print_seccomp_fprog do the right thing 2384 by using umoven_or_printaddr. 2385 2386 sparc64: remove redundant casts. 2387 * linux/sparc64/get_syscall_args.c (get_syscall_args): Remove 2388 redundant casts from uint32_t to long. 2389 2390 2016-12-23 Dmitry V. Levin <ldv (a] altlinux.org> 2391 2392 numa: change address argument type from unsigned long to kernel_ureg_t. 2393 * numa.c (print_nodemask): Change address argument type from 2394 unsigned long to kernel_ureg_t. 2395 2396 net: change address argument type from unsigned long to kernel_ureg_t. 2397 * net.c (fetch_socklen): Change address argument type from 2398 unsigned long to kernel_ureg_t. 2399 2400 mem: change tracee address type from unsigned long to kernel_ureg_t. 2401 * mem.c (print_mmap, SYS_FUNC(remap_file_pages), 2402 SYS_FUNC(subpage_prot)): Change the type of variables containing tracee 2403 addresses from unsigned long to kernel_ureg_t. 2404 2405 kexec: change address argument type from unsigned long to kernel_ureg_t. 2406 * kexec.c (print_kexec_segments): Change address argument type 2407 from unsigned long to kernel_ureg_t. 2408 2409 poll: change counter type from unsigned long to unsigned int. 2410 * poll.c (decode_poll_exiting): Change the type of printed and 2411 max_printed counters from unsigned long to unsigned int. 2412 2413 xattr: change address argument type from unsigned long to kernel_ureg_t. 2414 * xattr.c (print_xattr_val, print_xattr_list): Change address 2415 argument type from unsigned long to kernel_ureg_t. 2416 2417 uid: change address argument type from unsigned long to kernel_ureg_t. 2418 * uid.c (print_groups): Change address argument type 2419 from unsigned long to kernel_ureg_t. 2420 2421 stat64: change address argument type from unsigned long to kernel_ureg_t 2422 * stat64.c (decode_struct_stat64): Change address argument type 2423 from unsigned long to kernel_ureg_t. 2424 2425 stat: change address argument type from unsigned long to kernel_ureg_t. 2426 * stat.c (decode_struct_stat): Change address argument type 2427 from unsigned long to kernel_ureg_t. 2428 2429 sigaltstack: change address argument type from unsigned long to kernel_ureg_t 2430 * sigaltstack.c (print_stack_t): Change address argument type 2431 from unsigned long to kernel_ureg_t. 2432 2433 resource: change address argument type from unsigned long to kernel_ureg_t 2434 * resource.c (print_rlimit64, print_rlimit32, decode_rlimit): Change 2435 address argument type from unsigned long to kernel_ureg_t. 2436 2437 printsiginfo: change address argument type from unsigned long to kernel_ureg_t 2438 * printsiginfo.c (print_siginfo_array): Change address argument type 2439 from unsigned long to kernel_ureg_t. 2440 2441 poll: change tracee address type from unsigned long to kernel_ureg_t. 2442 * poll.c (decode_poll_entering, decode_poll_exiting): Change the type 2443 all tracee address variables from unsigned long to kernel_ureg_t. 2444 2445 perf: change address argument type from unsigned long to kernel_ureg_t. 2446 * perf.c (fetch_perf_event_attr, print_perf_event_attr): Change 2447 address argument type from unsigned long to kernel_ureg_t. 2448 2449 pathtrace: change tracee address type from unsigned long to kernel_ureg_t 2450 * pathtrace.c (upathmatch): Change address argument type 2451 from unsigned long to kernel_ureg_t. 2452 (pathtrace_match): Change the type of all tracee address variables 2453 from unsigned long to kernel_ureg_t. 2454 2455 scsi: change address argument type from unsigned long to kernel_ureg_t. 2456 * scsi.c (print_sg_io_buffer): Change address argument type 2457 from unsigned long to kernel_ureg_t. 2458 2459 dm: change address argument type from unsigned long to kernel_ureg_t. 2460 * dm.c (dm_decode_dm_target_spec, dm_decode_dm_target_deps, 2461 dm_decode_dm_name_list, dm_decode_dm_target_versions, 2462 dm_decode_dm_target_msg, dm_decode_string): Change address argument type 2463 from unsigned long to kernel_ureg_t. 2464 2465 oldstat: change address argument type from unsigned long to kernel_ureg_t 2466 * oldstat.c (print_old_kernel_stat): Change address argument type 2467 from unsigned long to kernel_ureg_t. 2468 2469 capability: change address argument type from unsigned long to kernel_ureg_t 2470 * capability.c (get_cap_header, print_cap_header, print_cap_data): 2471 Change address argument type from unsigned long to kernel_ureg_t. 2472 2473 btrfs: change address argument type from unsigned long to kernel_ureg_t. 2474 * btrfs.c (btrfs_print_qgroup_inherit): Change address argument type 2475 from unsigned long to kernel_ureg_t. 2476 2477 affinity: change address argument type from unsigned long to kernel_ureg_t 2478 * affinity.c (print_affinitylist): Change address argument type from 2479 unsigned long to kernel_ureg_t. 2480 2481 aio: change address type from unsigned long to kernel_ureg_t. 2482 * aio.c (print_iocb): Remove casts to unsigned long. 2483 (print_iocbp, SYS_FUNC(io_submit)): Change address type 2484 from unsigned long to kernel_ureg_t. 2485 2486 mmsghdr: change address argument type from unsigned long to kernel_ureg_t 2487 * mmsghdr.c (save_mmsgvec_namelen, decode_mmsgvec): Change 2488 address argument type from unsigned long to kernel_ureg_t. 2489 2490 msghdr: change address argument type from unsigned long to kernel_ureg_t 2491 * msghdr.c (decode_msg_control): Change address argument type 2492 from unsigned long to kernel_ureg_t. 2493 2494 fetch_struct_stat64: change address argument type from unsigned long to kernel_ureg_t 2495 * fetch_struct_stat64.c (fetch_struct_stat64): Change address argument 2496 type from unsigned long to kernel_ureg_t. 2497 2498 fetch_struct_stat: change address argument type from unsigned long to kernel_ureg_t 2499 * fetch_struct_stat.c (fetch_struct_stat): Change address argument 2500 type from unsigned long to kernel_ureg_t. 2501 2502 fetch_struct_msghdr: change address argument type from unsigned long to kernel_ureg_t 2503 * fetch_struct_msghdr.c (fetch_struct_msghdr): Change 2504 address argument type from unsigned long to kernel_ureg_t. 2505 2506 fetch_struct_mmsghdr: change address argument type from unsigned long to kernel_ureg_t 2507 * fetch_struct_mmsghdr.c (fetch_struct_mmsghdr): Change 2508 address argument type from unsigned long to kernel_ureg_t. 2509 2510 decode_netlink: change address argument type from unsigned long to kernel_ureg_t 2511 * defs.h (decode_netlink) Change address argument type 2512 from unsigned long to kernel_ureg_t. 2513 * netlink.c (fetch_nlmsghdr, decode_nlmsghdr_with_payload, 2514 decode_netlink): Likewise. 2515 2516 print_seccomp_*: change address argument type from unsigned long to kernel_ureg_t 2517 * defs.h (print_seccomp_filter, print_seccomp_fprog): Change 2518 address argument type from unsigned long to kernel_ureg_t. 2519 * seccomp.c (print_seccomp_filter, print_seccomp_fprog, 2520 decode_seccomp_set_mode_strict): Likewise. 2521 2522 tprint_iov*: change address argument type from unsigned long to kernel_ureg_t 2523 * defs.h (tprint_iov, tprint_iov_upto): Change address argument type 2524 from unsigned long to kernel_ureg_t. 2525 * io.c (tprint_iov, tprint_iov_upto): Likewise. 2526 2527 print_array: change tracee address type from unsigned long to kernel_ureg_t 2528 * defs.h (print_array): Change start_addr type from unsigned long 2529 to kernel_ureg_t. 2530 * util.c (print_array): Likewise. Change the type of all tracee 2531 address variables from unsigned long to kernel_ureg_t. 2532 2533 2016-12-23 Dmitry V. Levin <ldv (a] altlinux.org> 2534 2535 Rename LONG_LONG to ULONG_LONG and change it to return unsigned long long 2536 In all places where LONG_LONG is used the destination already has type 2537 unsigned long long, so it is quite natural to change LONG_LONG as well. 2538 2539 * defs.h (LONG_LONG): Rename to ULONG_LONG, change return type 2540 from long long to unsigned long long. All callers updated. 2541 2542 2016-12-23 Dmitry V. Levin <ldv (a] altlinux.org> 2543 2544 mem: remove redundant casts. 2545 * mem.c (SYS_FUNC(old_mmap)): Remove redundant cast 2546 from kernel_ureg_t to unsigned long. 2547 [S390] (SYS_FUNC(old_mmap_pgoff)): Remove redundant cast 2548 from unsigned int to unsigned long. 2549 2550 desc: remove redundant casts. 2551 * desc.c (umove_kulong_array_or_printaddr): Remove redundant cast 2552 from uint32_t to kernel_ulong_t. 2553 (SYS_FUNC(pselect6)): Remove redundant casts from kernel_ulong_t 2554 to unsigned long. 2555 2556 2016-12-22 Dmitry V. Levin <ldv (a] altlinux.org> 2557 2558 print_sigevent: remove redundant cast. 2559 * print_sigevent.c (print_sigevent): Remove redundant cast from 2560 struct_sigevent.sigev_value.sival_ptr to unsigned long as the former 2561 is not a pointer but an unsigned integer. 2562 2563 tests: fix xattr.test for the case when listxattr returns a long list. 2564 * tests/xattr.c (DEFAULT_STRLEN): New macro. 2565 (main): Use it to limit the length passed to print_quoted_memory. 2566 Print ellipsis when the list returned by listxattr is too long. 2567 2568 2016-12-22 Gabriel Laskar <gabriel (a] lse.epita.fr> 2569 2570 tests: test for correct ellipsis with -s in xattr. 2571 * tests/xattr-strings.c: New file. 2572 * tests/xattr-strings.test: New test. 2573 * tests/.gitignore: Add xattr-string. 2574 * tests/Makefile.am (check_PROGRAMS): Likewise. 2575 (DECODER_TESTS): Add xattr-string.test. 2576 2577 2016-12-22 Gabriel Laskar <gabriel (a] lse.epita.fr> 2578 2579 xattr: use printstr_ex instead of print_quoted_string. 2580 This fixes the display when using `-s` to limit the string size 2581 of the values displayed by {get,set}xattr. 2582 2583 * xattr.c (print_xattr_val): Remove static buffer. Use printstr_ex 2584 instead of print_quoted_string. 2585 2586 Reported-by: <socketpair (a] gmail.com> 2587 2588 2016-12-22 Eugene Syromyatnikov <evgsyr (a] gmail.com> 2589 2590 tests: use scno.h in finit_module, kcmp, renameat2 tests. 2591 * tests/finit_module.c: Include "scno.h". 2592 * tests/kcmp.c: Likewise. 2593 * tests/renameat2.c: Likewise. 2594 2595 2016-12-21 Dmitry V. Levin <ldv (a] altlinux.org> 2596 2597 sock: cast pointers to kernel_ureg_t instead of unsigned long. 2598 * sock.c (decode_ifconf): Cast ifconf.ifc_buf pointer to kernel_ureg_t 2599 instead of unsigned long. 2600 2601 scsi: cast pointers to kernel_ureg_t instead of unsigned long. 2602 * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res): Cast sg_io_hdr.cmdp, 2603 sg_io_hdr.dxferp, and sg_io_hdr.sbp pointers to kernel_ureg_t instead 2604 of unsigned long. 2605 2606 mtd: cast pointers to kernel_ureg_t instead of unsigned long. 2607 * mtd.c (decode_mtd_oob_buf): Cast mtd_oob_buf.ptr pointer 2608 to kernel_ureg_t instead of unsigned long. 2609 2610 msghdr: cast pointers to kernel_ureg_t instead of unsigned long. 2611 * msghdr.c (print_struct_msghdr): Cast msghdr.msg_iov and 2612 msghdr.msg_control pointers to kernel_ureg_t instead of unsigned long. 2613 2614 evdev: cast tcp->u_rval to kernel_ureg_t instead of unsigned long. 2615 * evdev.c (decode_bitset): Cast tcp->u_rval to kernel_ureg_t 2616 instead of unsigned long. 2617 2618 evdev: cast pointers to kernel_ureg_t instead of unsigned long. 2619 * evdev.c (ff_effect_ioctl): Cast ff_periodic_effect.custom_data 2620 pointer to kernel_ureg_t instead of unsigned long. 2621 2622 btrfs: cast pointers to kernel_ureg_t instead of unsigned long. 2623 * btrfs.c (btrfs_ioctl): Cast btrfs_ioctl_send_args.clone_sources 2624 and btrfs_ioctl_vol_args_v2.qgroup_inherit pointers to kernel_ureg_t 2625 instead of unsigned long. 2626 2627 Rework ifdefery around print_user_desc. 2628 * configure.ac (AC_CHECK_TYPES): Check for struct user_desc 2629 in <asm/ldt.h>. 2630 * clone.c (print_tls_arg): New function. 2631 (SYS_FUNC(clone)): Use it. 2632 (print_user_desc): Move prototype ... 2633 * defs.h [HAVE_STRUCT_USER_DESC]: ... here. 2634 * ldt.c: Check for HAVE_STRUCT_USER_DESC instead of architectures. 2635 * linux/dummy.h: Likewise. 2636 2637 Introduce DECL_IOCTL macro to declare *_ioctl functions. 2638 * defs.h (DECL_IOCTL): New macro. 2639 (dm_ioctl, file_ioctl, fs_x_ioctl, loop_ioctl, ptp_ioctl, scsi_ioctl, 2640 sock_ioctl, term_ioctl, ubi_ioctl, uffdio_ioctl): Rewrite prototypes 2641 using DECL_IOCTL. 2642 2643 Introduce DECL_PRINT* macros to declare printnum_* and printpair_* 2644 * defs.h (DECL_PRINTNUM, DECL_PRINTPAIR): New macros. 2645 (printnum_short, printnum_int, printnum_int64): Rewrite prototypes 2646 using DECL_PRINTNUM. 2647 (printpair_int, printpair_int64): Rewrite prototypes 2648 using DECL_PRINTPAIR. 2649 2650 ioctl: use uintptr_t for casts between 32-bit integers and pointers. 2651 * ioctl.c (compare): Cast pointer to uintptr_t before assigning 2652 it to an integer. 2653 (ioctl_lookup): Cast integer to uintptr_t before passing it 2654 as a pointer. 2655 2656 scsi: use umove_or_printaddr. 2657 * scsi.c (scsi_ioctl): Use umove_or_printaddr. 2658 2659 Remove dumpiov wrapper. 2660 * defs.h (dumpiov): Remove. 2661 * syscall.c (dumpio): Use dumpiov_upto instead of dumpiov. 2662 2663 travis: fix enabling of gcc -Werror builds. 2664 * travis-build.sh: Use DISTCHECK_CONFIGURE_FLAGS instead 2665 of CHECK_CONFIGURE_FLAGS and ENABLE_GCC_WERROR. 2666 [$CC == gcc]: Add --enable-gcc-Werror to DISTCHECK_CONFIGURE_FLAGS 2667 instead of ENABLE_GCC_WERROR. 2668 [$CHECK == coverage]: Add --enable-code-coverage 2669 to DISTCHECK_CONFIGURE_FLAGS instead of CHECK_CONFIGURE_FLAGS. 2670 2671 printaddr: change argument type to kernel_ureg_t. 2672 * defs.h (printaddr): Change argument type from unsigned long 2673 to kernel_ureg_t. 2674 2675 tests: check decoding of unreadable ip_mreq and ipv6_mreq structures. 2676 * tests/ip_mreq.c (main): Check short read. 2677 2678 tests: rewrite ip_mreq.c using arrays and iterators. 2679 * tests/ip_mreq.c (main): Create arrays of setsockopt arguments to test. 2680 Iterate over these arrays invoking setsockopt and printing expected 2681 output. 2682 2683 tests: rewrite ip_mreq.c using tail_alloc. 2684 * tests/ip_mreq.c (main): Allocate objects of struct ip_mreq 2685 and struct ipv6_mreq using tail_alloc instead of using stack. 2686 2687 tests: rewrite ip_mreq.c without asserts. 2688 * tests/ip_mreq.c: Do not include <assert.h>. 2689 (main): Do not use assert. Use sprintrc instead of errno2name. 2690 2691 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2692 2693 Remove NEED_PTRACE_PROTOTYPE_WORKAROUND. 2694 Remove the workaround for broken ptrace prototypes 2695 that seems to be unneeded for quite a long time. 2696 2697 * defs.h [NEED_PTRACE_PROTOTYPE_WORKAROUND]: Remove. 2698 2699 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2700 2701 tests: use scno.h in tests of relatively new syscalls. 2702 * tests/add_key.c: Include "scno.h" after <asm/unistd.h>. 2703 * tests/copy_file_range.c: Likewise. 2704 * tests/execveat.c: Likewise. 2705 * tests/kexec_file_load.c: Likewise. 2706 * tests/membarrier.c: Likewise. 2707 * tests/memfd_create.c: Likewise. 2708 * tests/mlock2.c: Likewise. 2709 * tests/pkey_alloc.c: Likewise. 2710 * tests/pkey_free.c: Likewise. 2711 * tests/pkey_mprotect.c: Likewise. 2712 * tests/preadv2-pwritev2.c: Likewise. 2713 * tests/userfaultfd.c: Likewise. 2714 2715 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2716 2717 tests: generate scno.h from syscallent.h for use by other tests. 2718 Provide scno.h with fallback definitions of all __NR_* constants known 2719 to strace for the personbality being tested. 2720 2721 Some tests need just __NR_* constants without any kernel support. 2722 Such tests can include "scno.h" after <asm/unistd.h> to get definitions 2723 of these constants when system headers are too old. 2724 2725 * tests/generate_scno.c: New file. 2726 * tests/.gitignore: Add generate_scno. 2727 * tests/Makefile.am (check_PROGRAMS): Likewise. 2728 (scno.h): New rule. 2729 (BUILT_SOURCES, CLEANFILES): Add scno.h. 2730 2731 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2732 2733 tests: fix potential errno clobbering in membarrier test. 2734 * tests/membarrier.c (main): Save errno. 2735 2736 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2737 2738 Do not use widen_to_ulong in kexec.c and process_vm.c. 2739 Automatic argument truncation makes use of this function redundant. 2740 2741 * kexec.c (SYS_FUNC(kexec_load)): Do not invoke widen_to_ulong. 2742 * process_vm.c (SYS_FUNC(process_vm_readv), 2743 SYS_FUNC(process_vm_writev)): Likewise. 2744 2745 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2746 2747 x32: implement automatic argument truncation for compat syscalls. 2748 x32 syscalls starting with number 512 are compat syscalls that operate 2749 on compat types. Set COMPAT_SYSCALL_TYPES flag to these syscall entries 2750 and make get_syscall_args truncate arguments of syscalls that have this 2751 flag set, to avoid unpleasant alternative of adding multiple 2752 widen_to_ulong invocations to individual syscall parsers. 2753 2754 preadv, pwritev, preadv2, and pwritev2 are exceptions: while these 2755 syscalls operate on compat types, the offset argument has a regular 2756 64-bit type, so the automatic argument truncation cannot be applied. 2757 2758 * defs.h (COMPAT_SYSCALL_TYPES): New macro. 2759 * syscall.c (CST): New macro, defined to COMPAT_SYSCALL_TYPES. 2760 * linux/ia64/syscallent.h: Do not include "../i386/syscallent.h" 2761 unless [CST > 0]. 2762 * linux/x32/syscallent.h [512..533, 536..545]: Add CST flag. 2763 * linux/x86_64/get_syscall_args.c (get_syscall_args): Truncate arguments 2764 of compat syscalls to 32-bit values. 2765 * tests/ksysent.c (CST): New macro, defined to 0. 2766 * tests/nsyscalls.c (CST): Likewise. 2767 2768 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2769 2770 x32: fix decoding of mprotect and pkey_mprotect syscall arguments. 2771 As there are no compat versions of mprotect or pkey_mprotect syscalls 2772 in x32 personality, "addr", "len", and "prot" syscall arguments have 2773 kernel_ulong_t type and should be printed accordingly. 2774 2775 * mem.c (do_mprotect): Retrieve 1st, 2nd and 3rd arguments using 2776 getarg_klu, print them using printaddr_klu, PRI_klu format, 2777 and printflags64, correspondingly. 2778 2779 2016-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 2780 2781 Make tprint_iov function a static inline wrapper. 2782 * io.c (tprint_iov): Move ... 2783 * defs.h: ... here, add static inline keywords. 2784 2785 2016-12-20 Eugene Syromyatnikov <evgsyr (a] gmail.com> 2786 2787 x32: fix decoding of 3rd argument of preadv* and pwritev* syscalls. 2788 In x32 personality these syscalls use compat type for the 3rd argument, 2789 therefore it has to be truncated there. 2790 2791 * io.c (do_preadv, do_pwritev): Truncate tcp->u_arg[2] using 2792 widen_to_ulong. 2793 2794 2016-12-19 Eugene Syromyatnikov <evgsyr (a] gmail.com> 2795 2796 tests: fix preadv2-pwritev2 test on x32. 2797 On x32 p(read|write)v(|2) syscalls are implemented via compat, which 2798 truncates len argument to unsigned int. 2799 2800 * tests/preadv2-pwritev2.c (main): Print vlen argument as unsigned long. 2801 2802 2016-12-19 Eugene Syromyatnikov <evgsyr (a] gmail.com> 2803 2804 kexec: fix for the x32 ABI. 2805 There is no compat (and no 32-bit version, ever) for x32 ABI, so 2806 kernel's long type should be used for arguments' values. 2807 2808 The only remaining thing is a pointer to cmdline string, but it is 2809 currently broken on x32 anyway. 2810 2811 * kexec.c (SYS_FUNC(kexec_file_load)): Print the cmdline_len argument 2812 as kernel long, retrieve it via getarg_klu; use printflags64 for 2813 printing the flags argument, retrieve it via getarg_klu. 2814 2815 2016-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 2816 2817 Check for current_klongsize instead of current_personality where appropriate 2818 current_klongsize checks are more universal, therefore they are usually 2819 shorter and easier to comprehend. 2820 2821 * desc.c (umove_kulong_array_or_printaddr): Check for current_klongsize 2822 instead of current_personality and current_wordsize. 2823 * io.c (print_lld_from_low_high_val): Likewise. 2824 * lseek.c (SYS_FUNC(lseek)): Likewise. 2825 * resource.c (decode_rlimit): Likewise. 2826 * syscall.c (is_negated_errno): Likewise. 2827 * util.c (getllval, getarg_klu): Likewise. 2828 2829 2016-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 2830 2831 Use kernel_ulong_t instead of unsigned long long where appropriate. 2832 * defs.h (printaddr_ull): Rename to printaddr_klu, change argument 2833 type from unsigned long long to kernel_ulong_t. All callers updated. 2834 (getarg_ull): Rename to getarg_klu, change return value type 2835 from unsigned long long to kernel_ulong_t. All callers updated. 2836 (PRI_kl, PRI_kld, PRI_klu, PRI_klx): New macros. 2837 * bjm.c (SYS_FUNC(init_module)): Print kernel_ulong_t type using 2838 PRI_klu format. 2839 * desc.c (SYS_FUNC(pselect6)): Likewise. 2840 * fadvise.c (SYS_FUNC(fadvise64)): Likewise. 2841 * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Likewise. 2842 * mq.c (SYS_FUNC(mq_timedsend), SYS_FUNC(mq_timedreceive)): Likewise. 2843 * kcmp.c (SYS_FUNC(kcmp)): Print kernel_ulong_t type using 2844 PRI_klx format. 2845 * keyctl.c (SYS_FUNC(keyctl)): Likewise. 2846 * pkeys.c (SYS_FUNC(pkey_alloc)): Likewise. 2847 * prctl.c (print_prctl_args, SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): 2848 Print kernel_ulong_t type using PRI_kld, PRI_klu, or PRI_klx format. 2849 * util.c (printaddr_ull): Rename to printaddr_klu, change argument 2850 type from unsigned long long to kernel_ulong_t, print it using 2851 PRI_klx format. 2852 (getarg_ull): Rename to getarg_klu, change return value type 2853 from unsigned long long to kernel_ulong_t, print it using 2854 PRI_klx format. 2855 2856 fcntl.c: print 64-bit fields of struct_kernel_flock64 using PRId64 format 2857 * fcntl.c (print_struct_flock64): Print l_start and l_len fields 2858 of struct_kernel_flock64 using PRId64 format. 2859 2860 v4l2.c: print v4l2_ext_control.value64 using PRId64 format. 2861 * v4l2.c (print_v4l2_ext_control): Print value64 field 2862 of struct_v4l2_ext_control using PRId64 format. 2863 2864 perf.c: print perf_event_attr.__reserved_1 using PRIx64 format. 2865 * perf.c (print_perf_event_attr): Print __reserved_1 field 2866 of perf_event_attr using PRIx64 format. 2867 2868 btrfs.c: print 64-bit fields of btrfs_ioctl_vol_args_v2 using PRIu64 format 2869 * block.c (btrfs_ioctl): Print size and transid fields 2870 of struct_btrfs_ioctl_vol_args_v2 using PRIu64 format. 2871 2872 block.c: change type of long long fileds to int64_t. 2873 * block.c (struct_blkpg_partition): Change type of start and length 2874 fields from long long to int64_t. 2875 (print_blkpg_req): Print them using PRId64 format. 2876 2877 2016-12-19 Eugene Syromyatnikov <evgsyr (a] gmail.com> 2878 2879 Introduce current_klongsize in addition to current_wordsize. 2880 Subsequent commits are going to use current_klongsize 2881 as the tracee's size of kernel_ulong_t type. 2882 2883 * defs.h (PERSONALITY0_KLONGSIZE): New macro. 2884 [X86_64] (PERSONALITY2_KLONGSIZE): Likewise. 2885 [SUPPORTED_PERSONALITIES > 1] (PERSONALITY1_KLONGSIZE): Likewise. 2886 [SUPPORTED_PERSONALITIES == 1] (current_klongsize): Likewise. 2887 [SUPPORTED_PERSONALITIES == 2 && PERSONALITY0_KLONGSIZE == 2888 PERSONALITY1_KLONGSIZE] (current_klongsize): Likewise. 2889 [SUPPORTED_PERSONALITIES != 1 && (SUPPORTED_PERSONALITIES != 2 || 2890 PERSONALITY0_KLONGSIZE != PERSONALITY1_KLONGSIZE)] (current_klongsize): 2891 New variable prototype. 2892 * syscall.c [!current_klongsize] (current_klongsize): New variable. 2893 [!current_klongsize] (personality_klongsize): New array. 2894 (set_personality) [!current_klongsize]: Update current_klongsize 2895 with the appropriate value from personality_klongsize. 2896 2897 2016-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 2898 2899 configure: define SIZEOF_KERNEL_LONG_T macro. 2900 Provide SIZEOF_KERNEL_LONG_T macro in addition to SIZEOF_LONG and 2901 SIZEOF_LONG_LONG for checking of kernel_long_t and kernel_ulong_t 2902 types at the time of preprocessing. 2903 2904 * configure.ac (AC_CHECK_SIZEOF): Add kernel_long_t. 2905 2906 2016-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 2907 2908 Remove getarg_ll. 2909 This function has never been used in the code, and in perspective 2910 the whole ext_arg thing will go away. 2911 2912 * defs.h (getarg_ll): Remove prototype. 2913 * util.c (getarg_ll): Remove. 2914 2915 2016-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 2916 2917 struct tcb: make types of syscall arguments unsigned. 2918 This is the first step in the direction of revisiting current practice 2919 of indiscriminate use of signed types for syscall arguments and memory 2920 addresses. 2921 2922 * kernel_types.h (kernel_ureg_t): New type, typedef to unsigned long. 2923 * defs.h (struct tcb): Change type of u_arg from long to kernel_ureg_t. 2924 [HAVE_STRUCT_TCB_EXT_ARG]: Change type of ext_arg from long long 2925 to unsigned long long. 2926 * desc.c (decode_select): Change type of syscall arguments from long 2927 to kernel_ureg_t. 2928 (SYS_FUNC(oldselect)): Change type of select_args from long 2929 to kernel_ureg_t. 2930 * io.c (print_lld_from_low_high_val): Remove no longer needed cast 2931 of syscall arguments to unsigned long. 2932 * lseek.c (SYS_FUNC(lseek)): Cast syscall argument from unsigned long 2933 to long. 2934 * mem.c (print_mmap): Change type of syscall arguments from long 2935 to kernel_ureg_t. 2936 (SYS_FUNC(old_mmap), SYS_FUNC(old_mmap_pgoff)): Change type of u_arg 2937 from long to kernel_ureg_t. 2938 (SYS_FUNC(mmap), SYS_FUNC(mmap_pgoff), SYS_FUNC(mmap_pgoff)): Remove 2939 no longer needed cast of syscall arguments to unsigned long. 2940 * pathtrace.c (pathtrace_match): Change type of args and select_args 2941 from long to kernel_ureg_t. 2942 * util.c (getarg_ull): Remove no longer needed casts of syscall 2943 arguments to unsigned types. 2944 2945 2016-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 2946 2947 s390: fix decoding of mmap2 syscall when arguments are not available. 2948 * mem.c [S390] (SYS_FUNC(old_mmap_pgoff)): Use umove_or_printaddr 2949 instead of umoven to fetch mmap arguments, fix return value when this 2950 fetch fails. 2951 2952 Fix pathmatch of oldselect syscall on 64-bit architectures. 2953 * pathtrace.c (pathtrace_match): Fix fetching of 32-bit oldselect 2954 arguments on 64-bit architectures. 2955 2956 Cleanup oldselect. 2957 * desc.c (SYS_FUNC(oldselect)): Rewrite without use of macros. 2958 2959 2016-12-18 Dmitry V. Levin <ldv (a] altlinux.org> 2960 2961 Change scno type from long to unsigned long. 2962 Use an unsigned type for syscall numbers as they are not intended 2963 for signed arithmetics. Introduce kernel_scno_t as a typedef 2964 to unsigned long, that could be changed later to kernel_ulong_t. 2965 2966 * kernel_types.h (kernel_scno_t): New type, typedef to unsigned long. 2967 * defs.h (struct tcb): Change type of scno field from long 2968 to kernel_scno_t. 2969 (syscall_name): Change argument type from long to kernel_scno_t. 2970 (scno_in_range, scno_is_valid): Change argument type from unsigned long 2971 to kernel_scno_t. 2972 * linux/aarch64/set_scno.c (arch_set_scno): Change scno argument type 2973 from long to kernel_scno_t. 2974 * linux/alpha/set_scno.c (arch_set_scno): Likewise. 2975 * linux/arc/set_scno.c (arch_set_scno): Likewise. 2976 * linux/arm/set_scno.c (arch_set_scno): Likewise. 2977 * linux/avr32/set_scno.c (arch_set_scno): Likewise. 2978 * linux/bfin/set_scno.c (arch_set_scno): Likewise. 2979 * linux/crisv10/set_scno.c (arch_set_scno): Likewise. 2980 * linux/hppa/set_scno.c (arch_set_scno): Likewise. 2981 * linux/i386/set_scno.c (arch_set_scno): Likewise. 2982 * linux/ia64/set_scno.c (arch_set_scno): Likewise. 2983 * linux/m68k/set_scno.c (arch_set_scno): Likewise. 2984 * linux/metag/set_scno.c (arch_set_scno): Likewise. 2985 * linux/microblaze/set_scno.c (arch_set_scno): Likewise. 2986 * linux/mips/set_scno.c (arch_set_scno): Likewise. 2987 * linux/nios2/set_scno.c (arch_set_scno): Likewise. 2988 * linux/or1k/set_scno.c (arch_set_scno): Likewise. 2989 * linux/powerpc/set_scno.c (arch_set_scno): Likewise. 2990 * linux/riscv/set_scno.c (arch_set_scno): Likewise. 2991 * linux/s390/set_scno.c (arch_set_scno): Likewise. 2992 * linux/sh/set_scno.c (arch_set_scno): Likewise. 2993 * linux/sh64/set_scno.c (arch_set_scno): Likewise. 2994 * linux/sparc/set_scno.c (arch_set_scno): Likewise. 2995 * linux/tile/set_scno.c (arch_set_scno): Likewise. 2996 * linux/x86_64/set_scno.c (arch_set_scno): Likewise. 2997 * linux/xtensa/set_scno.c (arch_set_scno): Likewise. 2998 * linux/aarch64/get_scno.c (arch_get_scno): Change scno variable type 2999 from long to kernel_scno_t. 3000 * linux/alpha/get_scno.c (arch_get_scno): Likewise. 3001 * linux/arm/get_scno.c (arch_get_scno): Likewise. 3002 * linux/sh/get_scno.c (arch_get_scno): Likewise. 3003 * linux/x86_64/get_scno.c (arch_get_scno): Likewise. 3004 * syscall.c (arch_set_scno): Likewise. 3005 (shuffle_scno): Change return type from long to kernel_scno_t. 3006 (syscall_name): Change argument type from long to kernel_scno_t. 3007 3008 2016-12-18 Dmitry V. Levin <ldv (a] altlinux.org> 3009 3010 Lowercase SCNO_IN_RANGE and SCNO_IS_VALID. 3011 * defs.h (SCNO_IN_RANGE): Rename to scno_in_range. All callers updated. 3012 (SCNO_IS_VALID): Rename to scno_is_valid. All callers updated. 3013 3014 Turn SCNO_IN_RANGE and SCNO_IS_VALID into static inline functions. 3015 * defs.h (SCNO_IN_RANGE, SCNO_IS_VALID): Transform into static inline 3016 functions. 3017 3018 count.c: use syserror instead of direct u_error access. 3019 * count.c (count_syscall): Use syserror instead of u_error. 3020 3021 Replace "(unsigned long) -1L" with -1UL. 3022 * defs.h (dumpiov): Replace "(unsigned long) -1L" with -1UL. 3023 * io.c (print_iovec, tprint_iov): Likewise. 3024 * msghdr.c (SYS_FUNC(sendmsg)): Likewise. 3025 * syscall.c (dumpio): Likewise. 3026 * poll.c (decode_poll_exiting): Replace "(unsigned int) -1" with -1U. 3027 3028 Add toplevel recursive check-valgrind rule. 3029 * Makefile.am (.PHONY): Add check-valgrind-local. 3030 (check-valgrind): New rule. 3031 * configure.ac (AM_EXTRA_RECURSIVE_TARGETS): Add it. 3032 3033 m4: fix check-valgrind-* rules generated by AX_VALGRIND_CHECK. 3034 * m4/ax_valgrind_check.m4 (check-valgrind-$(1)): Depend 3035 on $(BUILT_SOURCES), honor $(AM_MAKEFLAGS), build check-am 3036 instead of check-TESTS. 3037 3038 travis: do coverage using a dedicated build. 3039 * .travis.yml (after_success): Remove. 3040 (matrix): Create an entry for the regular x86_64 target. 3041 * travis-success.sh: Merge into ... 3042 * travis-build.sh: ... this file. Disable optimization 3043 for coverage builds. 3044 * travis-install.sh: Rename COVERAGE=true to CHECK=coverage. 3045 3046 2016-12-17 Dmitry V. Levin <ldv (a] altlinux.org> 3047 3048 mips n32: provide fallback definitions of kernel_long_t/kernel_ulong_t. 3049 * kernel_types.h [!(HAVE___KERNEL_LONG_T && HAVE___KERNEL_ULONG_T) && 3050 LINUX_MIPSN32] (kernel_long_t, kernel_ulong_t): Define to long long types. 3051 3052 2016-12-17 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3053 3054 util: simplify definitions of bit mask constants in umovestr. 3055 * util.c (umovestr): Do not check for SIZEOF_LONG in definitions 3056 of bit mask constants. 3057 3058 tests: check decoding of prctl operations without arguments. 3059 * tests/prctl-no-args.c: New file. 3060 * tests/prctl-no-args.test: New test. 3061 * tests/.gitignore: Add prctl-no-args. 3062 * tests/Makefile.am (check_PROGRAMS): Likewise. 3063 (DECODER_TESTS): Add prctl-no-args.test. 3064 3065 tests: check decoding of prctl PR_[GS]ET_SECUREBITS operations. 3066 * tests/prctl-securebits.c: New file. 3067 * tests/prctl-securebits.test: New test. 3068 * tests/.gitignore: Add prctl-securebits. 3069 * tests/Makefile.am (check_PROGRAMS): Likewise. 3070 (DECODER_TESTS): Add prctl-securebits.test. 3071 3072 tests: check decoding of prctl PR_[GS]ET_DUMPABLE operations. 3073 * tests/prctl-dumpable.c: New file. 3074 * tests/prctl-dumpable.test: New test. 3075 * tests/.gitignore: Add prctl-dumpable. 3076 * tests/Makefile.am (check_PROGRAMS): Likewise. 3077 (DECODER_TESTS): Add prctl-dumpable.test. 3078 3079 prctl: implement decoding of SUID_DUMP_* constants in PR_[GS]ET_DUMPABLE 3080 * xlat/pr_dumpable.in: New file. 3081 * prctl.c: Include "xlat/pr_dumpable.h". 3082 (SYS_FUNC(prctl)): Decode returned value of PR_GET_DUMPABLE operation 3083 and the second syscall argument of PR_SET_DUMPABLE operation 3084 as SUID_DUMP_* constants. 3085 3086 2016-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 3087 3088 Include "kernel_types.h" in defs.h and tests/tests.h. 3089 As kernel_ulong_t type is going to be used in the definition 3090 of struct tcb and in many function prototypes, make it readily 3091 available for every source file by including "kernel_types.h" 3092 in defs.h and tests/tests.h files. 3093 3094 * defs.h: Include "kernel_types.h". 3095 * tests/tests.h: Likewise. 3096 * desc.c: Do not include "kernel_types.h". 3097 * dirent.c: Likewise. 3098 * keyctl.c: Likewise. 3099 * syscall.c: Likewise. 3100 * linux/asm_stat.h: Likewise. 3101 * tests/answer.c: Likewise. 3102 * tests/epoll_pwait.c: Likewise. 3103 * tests/fanotify_init.c: Likewise. 3104 * tests/fanotify_mark.c: Likewise. 3105 * tests/file_handle.c: Likewise. 3106 * tests/ftruncate.c: Likewise. 3107 * tests/getdents.c: Likewise. 3108 * tests/init_delete_module.h: Likewise. 3109 * tests/inotify.c: Likewise. 3110 * tests/inotify_init1.c: Likewise. 3111 * tests/ioprio.c: Likewise. 3112 * tests/ipc_msgbuf.c: Likewise. 3113 * tests/kcmp.c: Likewise. 3114 * tests/kexec_file_load.c: Likewise. 3115 * tests/kexec_load.c: Likewise. 3116 * tests/keyctl.c: Likewise. 3117 * tests/lookup_dcookie.c: Likewise. 3118 * tests/lseek.c: Likewise. 3119 * tests/mq_sendrecv.c: Likewise. 3120 * tests/nsyscalls.c: Likewise. 3121 * tests/pkey_alloc.c: Likewise. 3122 * tests/pkey_free.c: Likewise. 3123 * tests/pkey_mprotect.c: Likewise. 3124 * tests/prctl-pdeathsig.c: Likewise. 3125 * tests/prctl-tsc.c: Likewise. 3126 * tests/preadv2-pwritev2.c: Likewise. 3127 * tests/process_vm_readv_writev.c: Likewise. 3128 * tests/read-write.c: Likewise. 3129 * tests/setfsugid.c: Likewise. 3130 * tests/setns.c: Likewise. 3131 * tests/truncate.c: Likewise. 3132 * tests/unshare.c: Likewise. 3133 * tests/xgetrlimit.c: Likewise. 3134 3135 2016-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 3136 3137 Post-release administrivia. 3138 * NEWS: Add a header line for the next release. 3139 * debian/changelog.in: Add a changelog entry for 4.15-1. 3140 * strace.spec.in: Likewise. 3141 3142 2016-12-14 Dmitry V. Levin <ldv (a] altlinux.org> 3143 3144 xlat: provide fallback definitions for NETLINK_* constants. 3145 As new constants have been added gradually over kernel releases, define 3146 all constant values to make newer constants decoded properly when strace 3147 is built with older kernel headers. 3148 3149 * xlat/netlink_protocols.in: Add default values for constants. 3150 * net.c [!NETLINK_SOCK_DIAG && NETLINK_INET_DIAG]: Remove. 3151 * socketutils.c: Likewise. 3152 3153 2016-12-14 Dmitry V. Levin <ldv (a] altlinux.org> 3154 3155 tests: relax getaffinity return value check in tests/sched_xetaffinity.c 3156 * tests/sched_xetaffinity.c (errstr): New variable. 3157 (getaffinity, setaffinity): Initialize it. 3158 (main): Use it. Allow getaffinity return value to be less than 3159 its cpusetsize argument. 3160 3161 tests: fix threads-execve.test for large pids. 3162 * tests/threads-execve.c (main): Fix expected output for large pids. 3163 3164 2016-12-13 Dmitry V. Levin <ldv (a] altlinux.org> 3165 3166 Prepare for 4.15 release. 3167 * NEWS: Update for 4.15 release. 3168 3169 .mailmap: add addresses of Thomas De Schampheleire. 3170 * .mailmap: Add both addresses of Thomas De Schampheleire here to avoid 3171 duplications in CREDITS file. 3172 3173 Sync strace.spec and debian/ with packages. 3174 * debian/control: Add Vcs-* metadata from 4.13-0.1. 3175 * debian/watch: Sync with 4.13-0.1. 3176 * strace.spec.in: Sync with 4.14.0.100.622a-1. 3177 3178 2016-12-13 Dmitry V. Levin <ldv (a] altlinux.org> 3179 3180 tests: workaround a bug in GNU grep. 3181 Workaround a bug introduced in GNU grep 2.27, for details see 3182 https://lists.gnu.org/archive/html/bug-grep/2016-12/msg00011.html 3183 3184 * tests/init.sh (grep_pid_status): New function. 3185 * tests/detach-running.test: Use it instead of grep to search 3186 in /proc/$pid/status. 3187 * tests/detach-sleeping.test: Likewise. 3188 * tests/detach-stopped.test: Likewise. 3189 3190 2016-12-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3191 3192 tests: fix typo in comment inside prctl-tsc.c. 3193 3194 2016-12-13 Sean Stangl <sstangl (a] mozilla.com> 3195 Dmitry V. Levin <ldv (a] altlinux.org> 3196 3197 Fix libunwind segfault when -p is passed before -k. 3198 * strace.c (init) [USE_LIBUNWIND]: Call unwind_tcb_init after 3199 unwind_init for all allocated tcb structures if stack trace is enabled. 3200 * unwind.c (unwind_tcb_init): Skip if tcb is already initialized. 3201 3202 2016-12-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3203 Dmitry V. Levin <ldv (a] altlinux.org> 3204 3205 Update NEWS. 3206 3207 2016-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 3208 3209 tests: skip fault injection tests on unsupported platforms. 3210 * tests/fault_injection.sh: New file. 3211 * tests/Makefile.am (EXTRA_DIST): Add it. 3212 * tests/fault_injection-exit_group.test: Use it. 3213 * tests/fault_injection.test: Likewise. 3214 3215 tests: introduce require_min_kernel_version_or_skip function. 3216 * tests/init.sh (kernel_version_code, 3217 require_min_kernel_version_or_skip): New functions. 3218 * tests/threads-execve.test: Use require_min_kernel_version_or_skip. 3219 3220 2016-12-07 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3221 3222 tests: add descriptions to prctl-pdeathsig and prctl-tsc tests. 3223 3224 2016-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 3225 3226 tests: robustify prctl-pdeathsig.test and prctl-tsc.test. 3227 Rrobustify remaining prctl tests against unrelated prctl invocations 3228 3229 * tests/prctl-pdeathsig.test: Filter out unrelated PR_GET_* and PR_SET_* 3230 prctl calls. 3231 * tests/prctl-tsc.test: Likewise. 3232 3233 2016-12-07 Thomas De Schampheleire <thomas.de_schampheleire (a] nokia.com> 3234 3235 Makefile.am: don't confuse CFLAGS and CFLAGS_FOR_BUILD. 3236 Commit dc427d50d96b15c9a64d7e78d97ce4d194622a63 enabled a number of extra 3237 warning flags through configure.ac. The configure script will determine 3238 dynamically if CC supports these flags before adding them to WARN_CFLAGS. 3239 3240 ioctlsort is compiled with CC_FOR_BUILD, rather than CC. Nevertheless, 3241 the flags passed to this compilation also include WARN_CFLAGS (through 3242 AM_CFLAGS). This is incorrect: in a cross-compilation use case, CC 3243 and CC_FOR_BUILD are not the same. The former is the cross-compiler, 3244 the latter is the host compiler. Both may be of different versions 3245 and support different warning flags. 3246 3247 In particular, this posed a problem when cross-compiling with a host 3248 compiler gcc 4.1, which does not support all the new flags: 3249 3250 /usr/bin/gcc -DHAVE_CONFIG_H -I./linux/arm -I./linux/arm -I./linux 3251 -I./linux -I. -I. -I/host-sysroot/usr/include -Wall -Wempty-body 3252 -Wformat-security -Wignored-qualifiers -Winit-self -Wlogical-op 3253 -Wmissing-parameter-type -Wnested-externs -Wold-style-declaration 3254 -Wold-style-definition -Wsign-compare -Wtype-limits -Wwrite-strings -O2 3255 -I/host-sysroot/usr/include -DIOCTLSORT_INC=\"ioctls_all0.h\" -c -o 3256 ioctlsort0.o ./ioctlsort.c 3257 cc1: error: unrecognized command line option "-Wempty-body" 3258 cc1: error: unrecognized command line option "-Wignored-qualifiers" 3259 cc1: error: unrecognized command line option "-Wlogical-op" 3260 cc1: error: unrecognized command line option "-Wmissing-parameter-type" 3261 cc1: error: unrecognized command line option "-Wold-style-declaration" 3262 cc1: error: unrecognized command line option "-Wtype-limits" 3263 make[2]: *** [ioctlsort0.o] Error 1 3264 3265 * Makefile.am (AM_CFLAGS_FOR_BUILD, AM_CPPFLAGS_FOR_BUILD): New 3266 variables. 3267 (ioctlsort_CPPFLAGS): Use AM_CPPFLAGS_FOR_BUILD instead of AM_CPPFLAGS. 3268 (ioctlsort_CFLAGS): Use AM_CFLAGS_FOR_BUILD instead of AM_CFLAGS. 3269 (ioctlsort_LDFLAGS): Use AM_LDFLAGS_FOR_BUILD instead of AM_LDFLAGS. 3270 * m4/ax_prog_cc_for_build.m4 (AX_PROG_CC_FOR_BUILD): Redirect 3271 WARN_CFLAGS and gl_unknown_warnings_are_errors, call st_WARN_CFLAGS, 3272 substitute WARN_CFLAGS_FOR_BUILD. 3273 3274 2016-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 3275 3276 m4: prepare gl_WARN_ADD for simultaneous use of multiple compilers. 3277 * m4/warnings.m4 (gl_COMPILER_OPTION_IF): Change gl_Flags to use 3278 _AC_LANG_PREFIX[]FLAGS in unquoted form. Change gl_Warn to use gl_Flags 3279 instead of _AC_LANG_ABBREV. Change notification message to mention 3280 the variable name of the compiler. 3281 (gl_UNKNOWN_WARNINGS_ARE_ERRORS): Do nothing if 3282 gl_unknown_warnings_are_errors is set. 3283 (gl_WARN_ADD): Change the use of gl_UNKNOWN_WARNINGS_ARE_ERRORS from 3284 AC_REQUIRE to a regular call. 3285 3286 2016-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 3287 3288 AX_PROG_CC_FOR_BUILD: redirect more variables related to C compiler. 3289 Some of these variables cannot be redirected using traditional 3290 pushdef/popdef mechanism because of complex constructions like 3291 [ac_cv_[]_AC_LANG_ABBREV[]_compiler_gnu] employed by autoconf macros. 3292 Use st_SAVE_VAR/st_RESTORE_VAR to workaround this issue. 3293 3294 * m4/ax_prog_cc_for_build.m4: Redirect ac_cv_prog_cc_stdc, 3295 ac_cv_prog_cc_c11, ac_cv_prog_cc_c99, ac_cv_prog_cc_c89, 3296 am_cv_prog_cc_c_o, and am_cv_CC_dependencies_compiler_type using 3297 pushdef/popdef. 3298 Redirect ac_c_decl_warn_flag, ac_c_preproc_warn_flag, ac_c_werror_flag, 3299 ac_compile, ac_compiler_gnu, ac_cpp, ac_cv_c_compiler_gnu, 3300 ac_cv_c_decl_report, and ac_link using st_SAVE_VAR/st_RESTORE_VAR. 3301 3302 2016-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 3303 3304 Move all gl_WARN_ADD calls to a separate m4 macro. 3305 This is going to be needed for the upcoming AX_PROG_CC_FOR_BUILD 3306 change. 3307 3308 * configure.ac: Call st_WARN_CFLAGS before AX_PROG_CC_FOR_BUILD. 3309 Move all gl_WARN_ADD calls ... 3310 * m4/st_warn_cflags.m4: ... here. 3311 3312 2016-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 3313 3314 m4: introduce st_SAVE_VAR and st_RESTORE_VAR macros. 3315 These new macros are going to be needed for the upcoming 3316 AX_PROG_CC_FOR_BUILD change. 3317 3318 * m4/st_save_restore_var.m4: New file. 3319 3320 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3321 3322 tests: add valgrind support to "make check" 3323 * m4/ax_valgrind_check.m4: Import from the autoconf-archive package. 3324 * configure.ac: Invoke AX_VALGRIND_CHECK. 3325 * valgrind.supp: Move to tests/strace.supp. 3326 * Makefile.am (EXTRA_DIST): Remove valgrind.supp. 3327 * tests/Makefile.am: Add @VALGRIND_CHECK_RULES@. 3328 (VALGRIND_FLAGS, VALGRIND_SUPPRESSIONS_FILES): New variables. 3329 (EXTRA_DIST): Add strace.supp. 3330 * tests/init.sh: Add valgrind command prefix to $STRACE when appropriate. 3331 3332 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3333 3334 tests: robustify threads-execve.test against race conditions. 3335 Due to probabilistic nature of the test, try it several times. 3336 3337 * tests/threads-execve.c (NUMBER_OF_ITERATIONS): Change to 1. 3338 * tests/threads-execve.test: Iterate up to 10 times. 3339 3340 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3341 3342 tests: fix expected output in strace-ttt.test. 3343 If strace -ttt is running too long, it might happen that time stamps 3344 before and after its invocation differ for more than a second. 3345 Adjust expected output to handle this rare but possible case. 3346 3347 * tests/strace-ttt.test: Allow any time stamp between start and finish 3348 of strace invocation. 3349 3350 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3351 3352 tests: fix expected output in strace-tt.test. 3353 If strace -tt is running too long, it might happen that time stamps 3354 before and after its invocation differ for more than a second. 3355 Adjust expected output to handle this rare but possible case. 3356 3357 * tests/strace-tt.test: Allow any time stamp between start and finish 3358 of strace invocation. 3359 3360 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3361 3362 tests: robustify redirect.test against race conditions. 3363 Introduce a synchronization mechanism between the tracee and its peer. 3364 3365 * tests/redirect.test: Change timeout file to $OUT. Let the tracee 3366 remove $LOG, wait for $LOG removal in its peer. 3367 3368 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3369 3370 tests: robustify attach-f-p.test against race conditions. 3371 Introduce a synchronization mechanism between attach-f-p and strace. 3372 3373 * tests/attach-f-p-cmd.c: New file. 3374 * tests/Makefile.am (check_PROGRAMS): Add attach-f-p-cmd. 3375 * tests/attach-f-p.c: Include <sys/stat.h>. 3376 (main): Write to stdout instead of descriptor 3. Wait for the peer 3377 writing to stdout. 3378 * tests/attach-f-p.test: Assume that ./attach-f-p-cmd works. 3379 Use $OUT for expected output. Use attach-f-p-cmd for unlocking $OUT. 3380 3381 2016-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 3382 3383 tests: robustify attach-p-cmd.test against race conditions. 3384 Introduce a synchronization mechanism between attach-p-cmd-p 3385 and attach-p-cmd-cmd processes. 3386 3387 * tests/attach-p-cmd-cmd.c: Include <errno.h> and <sys/stat.h>. 3388 (main): Wait for the lock directory creation by attach-p-cmd-p. 3389 * tests/attach-p-cmd-p.c: Include <errno.h> and <sys/stat.h>. 3390 (main): Create a lock directory and wait for its removal 3391 by attach-p-cmd-cmd. 3392 * tests/attach-p-cmd.test: Assume that test programs work. 3393 3394 2016-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 3395 3396 Rewrite remaining qual_* parsers using bit sets. 3397 * defs.h (struct fault_opts): Replace forward declaration 3398 with a definition. 3399 (qualbits_t, qualify_read, qualify_write, qualify_signals): Remove. 3400 (qual_flags): New function prototype. 3401 (nsyscall_vec, sysent_vec, fault_vec): New variable prototypes. 3402 * qualify.c (abbrev_set, fault_set, raw_set, trace_set, verbose_set): 3403 New variables. 3404 (qualify_read, qualify_write, qualify_signals): Add static qualifier. 3405 (find_errno_by_name, lookup_class, parse_fault_expression, 3406 parse_fault_token, qual_flags, qualify, qualify_abbrev, qualify_fault, 3407 qualify_raw, qualify_syscall, qualify_syscall_class, 3408 qualify_syscall_name, qualify_syscall_number, qualify_syscall_tokens, 3409 qualify_trace, qualify_verbose, strip_prefix): New functions. 3410 * syscall.c (nsyscall_vec, nsysent_vec): Remove static qualifier. 3411 (MAX_NSYSCALLS1, MAX_NSYSCALLS2, MAX_NSYSCALLS, qual_vec, qual_flags, 3412 qual_fault, qual_syscall, qual_options, fault_opts, qualify_one, 3413 qualify_scno, lookup_class, qualify_syscall_class, qualify_syscall_name, 3414 qual_syscall_ex, qual_syscall, strip_prefix, find_errno_by_name, 3415 parse_fault_token, parse_fault_expression, qual_fault, qualify): Remove. 3416 (decode_socket_subcall, decode_ipc_subcall, decode_mips_subcall, 3417 get_scno): Update use of qual_flags. 3418 (inject_syscall_fault_entering): Update per-personality allocation 3419 of tcp->fault_vec. 3420 * tests/fault_injection-exit_group.test: Check parsing of inversed 3421 fault sets. 3422 * tests/fault_injection.test: Check parsing of -efault=none. 3423 * tests/options-syntax.test: Check parsing of invalid syscall numbers. 3424 3425 Change qual_vec/qual_fault into static fixed size arrays. 3426 * defs.h (qual_vec, num_quals): Remove. 3427 (qual_flags): Move ... 3428 * syscall.c: ... here. 3429 (num_quals, num_faults, MIN_QUALS, reallocate_vec, reallocate_qual, 3430 reallocate_fault): Remove. 3431 (qual_vec, qual_fault): Change into static fixed size arrays. 3432 (qualify_one): Remove reallocate_qual and reallocate_fault calls. 3433 (qualify): Likewise. Replace num_quals and num_faults with 3434 MAX_NSYSCALLS. 3435 3436 Rewrite qual_signal using bit sets. 3437 * defs.h (signal_set): New variable prototypes. 3438 (qualify_signals): New function prototypes. 3439 (QUAL_SIGNAL): Change to a value greater than 0xff. 3440 (QUAL_FAULT): Change to a lower value. 3441 * qualify.c (signal_set): New variable. 3442 (sigstr_to_uint, qualify_signals): New functions. 3443 * syscall.c (qual_signal): Remove. 3444 (qual_options): Replace qual_signal with NULL. 3445 (qualify): Use qualify_signals. 3446 * strace.c (print_signalled, print_stopped): Use is_number_in_set 3447 with signal_set argument. 3448 3449 2016-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 3450 3451 Rewrite qual_desc using bit sets. 3452 As a side effect, this also fixes support of negated sets 3453 of descriptors. 3454 3455 * defs.h (struct number_set): New forward declaration. 3456 (read_set, write_set): New variable prototypes. 3457 (is_number_in_set, qualify_read, qualify_write): New function 3458 prototypes. 3459 (QUAL_READ, QUAL_WRITE): Change to values greater than 0xff. 3460 * qualify.c: New file. 3461 * Makefile.am (strace_SOURCES): Add it. 3462 * syscall.c (qual_desc): Remove. 3463 (qual_options): Replace qual_desc with NULL. 3464 (qualify): Use qualify_read and qualify_write. 3465 (dumpio): Use is_number_in_set. 3466 * tests/options-syntax.test: Check invalid sets of descriptors. 3467 * tests/readv.test: Check dumping of negated sets of descriptors. 3468 3469 2016-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 3470 3471 tests: skip redirect-fds.test when strace is wrapped with valgrind. 3472 valgrind is not as transparent as strace wrt standard descriptors, 3473 so if strace is wrapped with valgrind, the test would check valgrind 3474 transparency properties and fail imminently. 3475 3476 * tests/redirect-fds.test: Skip the test when $STRACE shows a presence 3477 of valgrind. 3478 3479 2016-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 3480 3481 Add valgrind.supp. 3482 As valgrind is not quite happy about the way how get_cpuset_size uses 3483 sched_getaffinity, add a suppression file for this case. 3484 3485 * valgrind.supp: New file. 3486 * Makefile.am (EXTRA_DIST): Add it. 3487 3488 2016-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 3489 3490 affinity: pass 0 as a pid to sched_getaffinity. 3491 * affinity.c (get_cpuset_size): Pass 0 instead of getpid() 3492 to sched_getaffinity. 3493 3494 affinity: document the method of finding out the cpuset size. 3495 * affinity.c (get_cpuset_size): Add a comment about sched_getaffinity. 3496 3497 2016-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 3498 3499 tests: make options-syntax.test tolerant of strace wrappers. 3500 Change the test to allow wrappers like STRACE="valgrind ./strace". 3501 3502 * tests/options-syntax.test: Strip all words but last from $STRACE 3503 variable in all contexts where the name of strace executable is expected 3504 in its output. 3505 3506 2016-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 3507 3508 Do not allocate memory for line buffered output. 3509 libc is perfectly capable of allocating memory for its buffers, 3510 so let it do its job. 3511 3512 * strace.c (init): Do not allocate memory for setvbuf invocation. 3513 3514 2016-12-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3515 3516 Update NEWS. 3517 3518 tests: use kernel_ulong_t as argument type in setfsuid/setfsgid tests. 3519 * setfsugid.c: Include "kernel_types.h". 3520 (main): Change type of entries of the "tests" array from long to 3521 kernel_ulong_t. 3522 3523 2016-12-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3524 Elvira Khabirova <lineprinter0 (a] gmail.com> 3525 3526 uid: print size as signed in setgroups/getgroups. 3527 As this is the type used in kernel. 3528 3529 * uid.c (SYS_FUNC(setgroups), SYS_FUNC(getgroups)): Print size parameter 3530 as "%d". 3531 * tests/getgroups.c: Update expected output. 3532 * tests/setgroups.c: Likewise. 3533 3534 2016-12-04 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3535 Elvira Khabirova <lineprinter0 (a] gmail.com> 3536 3537 uid: use printuid for printing UID/GID value. 3538 * uid.c (setfsuid, get_print_uid, print_gid): Use printuid. 3539 * tests/setfsugid.c (printuid): New function. 3540 (main): Use it to print UID/GID values. 3541 * tests/setgroups.c: Likewise. 3542 * tests/setugid.c (ugid2int): Remove. 3543 (printuid): New function. 3544 (main): Use it to print UID/GID values. 3545 3546 2016-12-01 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3547 3548 tests: additional check for PTRACE_SETSIGINFO ptrace command. 3549 * tests/ptrace.c (main): Add an additional PTRACE_SETSIGINFO check. 3550 3551 2016-12-01 Dmitry V. Levin <ldv (a] altlinux.org> 3552 3553 syscall_name: clear __X32_SYSCALL_BIT from syscall number on x32. 3554 * linux/x86_64/get_scno.c (X32_PERSONALITY_NUMBER): New macro. 3555 * syscall.c (syscall_name) [X32_PERSONALITY_NUMBER && __X32_SYSCALL_BIT]: 3556 Clear __X32_SYSCALL_BIT from scno on x32 personality. 3557 3558 2016-12-01 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3559 3560 Print syscall names only for defined syscalls. 3561 The string literal "__NR_syscall_4294967295" is semantically incorrect 3562 as there is no such constant defined. 3563 3564 * syscall.c (syscall_name): Return NULL if there is no syscall 3565 corresponding to the given number. 3566 * defs.h (syscall_name): Document this behaviour. 3567 * printsiginfo.c (print_si_info): Print syscall name with "__NR_" prefix 3568 only if there is a syscall corresponding to si_syscall number; print 3569 a plain syscall number otherwise. 3570 * tests/ptrace.c (main): Update expected output. 3571 3572 2016-12-01 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3573 3574 affinity: print cpu set as an array. 3575 * affinity.c: Add comma between elements of cpu set. 3576 * tests/sched_xetaffinity.c (main): Update expected output. 3577 3578 statfs: fix printing format of f_fsid field. 3579 * print_statfs.c: Print f_fsid as a structure containing field "val" 3580 which, in turn, is an array of two elements that used to be printed 3581 as members of f_fsid structure. 3582 * tests/statfs.expected: Update expected output. 3583 * tests/xstatfsx.c (print_statfs): Likewise. 3584 3585 swap: always print priority value. 3586 * swapon.c (SYS_FUNC(swapon)): Do not check for non-zero the value 3587 of the prio variable in order to print it. 3588 * tests/swap.c (main): Update expected output. 3589 3590 2016-12-01 Elvira Khabirova <lineprinter0 (a] gmail.com> 3591 3592 tests: show pattern line number in match_grep. 3593 This makes debugging of failing test a bit easier. 3594 3595 * tests/init.sh (match_grep): Add the cnt variable, increment it on every 3596 pattern line read, print it as a prefix for non-matched pattern. 3597 3598 2016-11-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3599 Elvira Khabirova <lineprinter0 (a] gmail.com> 3600 3601 futex: make output of the val3 argument of the FUTEX_WAKE_OP command more structured 3602 It is a number which consists of several xlat values, not a structure. 3603 3604 * futex.c (SYS_FUNC(futex)): Modify output of the val3 argument 3605 of the FUTEX_WAKE_OP futex syscall command. 3606 * tests/futex.c (main): Update expected output. 3607 3608 2016-11-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3609 3610 tests: additional checks for prctl-* tests. 3611 * tests/prctl-pdeathsig.c (main): Additional checks. 3612 * tests/prctl-tsc.c (main): Likewise. 3613 * tests/prctl-pdeathsig.test: Update value of -a argument. 3614 * tests/prctl-tsc.test: Likewise. 3615 3616 2016-11-30 JingPiao Chen <chenjingpiao (a] foxmail.com> 3617 3618 tests: add prctl-pdeathsig.test and prctl-tsc.test. 3619 * tests/prctl-pdeathsig.c: New file. 3620 * tests/prctl-tsc.c: Likewise. 3621 * tests/prctl-pdeathsig.test: New test. 3622 * tests/prctl-tsc.test: Likewise. 3623 * tests/.gitignore: Add prctl-pdeathsig and prctl-tsc. 3624 * tests/Makefile.am (check_PROGRAMS): Likewise. 3625 (DECODER_TESTS): Add prctl-pdeathsig.test and prctl-tsc.test. 3626 3627 2016-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 3628 3629 syscall: Simplify strip_prefix. 3630 * syscall.c (strip_prefix): Use strncmp instead of strlen+memcmp. 3631 3632 util: fix integer overflow check in string_to_uint_ex. 3633 * util.c (string_to_uint_ex): Fix the check for integer overflow 3634 on systems where LONG_MAX == INT_MAX. 3635 3636 Check dumping of io syscalls when descriptor arguments are sensibly large 3637 * tests/tests.h (pipe_maxfd): New prototype. 3638 * tests/pipe_maxfd.c: New file. 3639 * tests/print_maxfd.c: Likewise. 3640 * tests/.gitignore: Add print_maxfd. 3641 * tests/Makefile.am (check_PROGRAMS): Likewise. 3642 (libtests_a_SOURCES): Add pipe_maxfd.c. 3643 * tests/readv.c (main): Use pipe_maxfd() instead of pipe(), 3644 fds[0] instead of 0, fds[1] instead of 1. 3645 * tests/readv.test: Use print_maxfd to specify dump descriptor numbers. 3646 3647 dumpio: remove useless check. 3648 * syscall.c (dumpio): Remove SEN_printargs check. Use tcp->s_ent->sen 3649 directly. 3650 3651 2016-11-29 Dmitry V. Levin <ldv (a] altlinux.org> 3652 3653 Fix dumping of io syscalls when descriptor argument has unused bits set. 3654 * syscall.c (dumpio): Explicitly cast the first argument of syscall 3655 to "int", the same way as the kernel does. 3656 * tests/read-write.c: Include <asm/unistd.h> and "kernel_types.h". 3657 (k_read, k_write): New functions. 3658 (test_dump, main): Use them. 3659 3660 x32: fix preadv2-pwritev2.test. 3661 * tests/preadv2-pwritev2.c: Include "kernel_types.h". 3662 (main): Use kernel_ulong_t instead of unsigned long as types 3663 of arguments of preadv2 and pwritev2 syscalls. 3664 3665 x32: wire up preadv2 and pwritev2 syscalls. 3666 * linux/x32/syscallent.h [546]: Add preadv2 entry. 3667 [547]: Add pwritev2 entry. 3668 3669 2016-11-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3670 Elvira Khabirova <lineprinter0 (a] gmail.com> 3671 3672 signal: fix omission of field names in sigaction printers. 3673 * signal.c (decode_old_sigaction, decode_new_sigaction): Add printing 3674 of the field names. 3675 * tests/sigaction.awk: Update expected output. 3676 3677 2016-11-29 Elvira Khabirova <lineprinter0 (a] gmail.com> 3678 3679 Make date output format conform to ISO 8601. 3680 * util.c (sprinttime): Make date output conform to ISO 8601. 3681 * tests/utime.c (print_tm): Update expected output. 3682 * tests/xstatx.c (print_time): Likewise. 3683 3684 2016-11-29 Dmitry V. Levin <ldv (a] altlinux.org> 3685 3686 tests: rewrite utime.test without relying on libc utime wrapper. 3687 * tests/utime.c (k_utime): New function, a thin wrapper around 3688 syscall(__NR_utime). 3689 (main): Use it instead of utime. 3690 * tests/utime.test: Update. 3691 3692 2016-11-29 Dmitry V. Levin <ldv (a] altlinux.org> 3693 3694 Fix meaning of negated sets in fault expressions. 3695 Change the parser of fault expression to follow the POLA: 3696 -e fault=!SET 3697 means that all syscalls except those from SET are subject to fault 3698 injection; 3699 -e fault=!SET1:error=ERRNO1, -e fault=!SET2:error=ERRNO2 3700 means that all syscalls except those from SET2 are subject to fault 3701 injection with error code ERRNO2, and all syscalls from SET2 that are 3702 not in SET1 are subject to fault injection with error code ERRNO1. 3703 3704 * syscall.c (qualify_scno, qualify_syscall_class, qualify_syscall_name): 3705 Handle negated QUAL_FAULT case differently. 3706 * tests/fault_syntax.test: Add checks of negated sets. 3707 3708 2016-11-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3709 3710 print_sigevent: fix field names of sigev_value structure. 3711 * print_sigevent.c (print_sigevent): Change "int" to "sival_int", "ptr" 3712 to "sival_ptr". 3713 * tests/mq_sendrecv.c (main): Update expected output in accordance with 3714 fixed field names. 3715 * tests/timer_create.c (main): Likewise. 3716 3717 tests: add more utime checks. 3718 * tests/utime.c: Include <unistd.h> and <asm/unistd.h>. 3719 (main): Add checks for invalid pointers. 3720 3721 utime: fix omission of field names in utimbuf structure printing. 3722 * utime.c (SYS_FUNC(utime)): Print struct utimbuf as a structure, 3723 not as an array (use curly brackets instead of square ones). 3724 Add field names to the output. 3725 * tests/utime.c (main): Update expected output. 3726 3727 mem: print mincore output as an array. 3728 * mem.c (SYS_FUNC(minore)): Print commas between elements. 3729 * tests/mincore.c (print_mincore): Update expected output in accordance 3730 with syscall decoder formatting change. 3731 3732 2016-11-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3733 3734 util: provide information whether xlat value has been found. 3735 This is necessary for the upcoming change in the output format 3736 of the val3 argument of the FUTEX_WAKE_OP futex command. 3737 3738 * defs.h (printxvals, printxval_searchn): Change return type to int. 3739 (printxval64, printxval, printxval_long): Likewise. Forward the value 3740 returned by printxvals call. 3741 * util.c (printxvals, printxval_searchn): Change return type to int, 3742 return 1 if xlat value has been found, 0 otherwise. 3743 3744 2016-11-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3745 3746 util: check dflt argument for NULL in printxvals. 3747 This is necessary for the upcoming change in the output format 3748 of the val3 argument of the FUTEX_WAKE_OP futex command. 3749 3750 * util.c (printxvals): Do not print dflt if it is NULL. 3751 3752 2016-11-29 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3753 3754 capability: fix omission of capability structure field names. 3755 * capability.c (print_cap_header, print_cap_data): Add field names 3756 to the output. 3757 * tests/caps.awk: Update test output. 3758 3759 2016-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 3760 3761 tests: fix "comparison between signed and unsigned" compilation warnings 3762 * tests/readv.c (main): Cast r_len to int. 3763 * tests/preadv2-pwritev2.c (dumpio): Likewise. 3764 3765 aarch64, arm, sparc: add comments on fault injection support in kernel. 3766 * linux/aarch64/set_scno.c: Note the kernel commit that introduced 3767 NT_ARM_SYSTEM_CALL support. 3768 * linux/arm/set_scno.c: Note the kernel commit that introduced 3769 PTRACE_SET_SYSCALL support. 3770 * linux/sparc/set_scno.c: Note the kernel commit that introduced 3771 reloading from the syscall number register. 3772 3773 tests: check -C option. 3774 * tests/strace-C.expected: New file. 3775 * tests/strace-C.test: New test. 3776 * tests/Makefile.am (MISC_TESTS): Add strace-C.test. 3777 (EXTRA_DIST): Add strace-C.expected. 3778 3779 tests: check basic options syntax. 3780 * tests/options-syntax.test: New file. 3781 * tests/Makefile.am (MISC_TESTS): Add it. 3782 3783 2016-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 3784 3785 Fix -r option syntax. 3786 While -r option implies -t, it should not literally have the effect 3787 of -t option, e.g. -rr should not increment tflag twice. 3788 3789 * strace.c (init): In the getopt loop, do not increment tflag for each 3790 occurrence of -r option. After the getopt loop, if rflag is set, set 3791 tflag to 1. Issue a warning that -tt has no effect with -r. 3792 3793 2016-11-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3794 3795 Print timeval pair as an array of timeval entries. 3796 * print_timeval.c (print_timeval_item): New function. 3797 (print_timeval_pair): Use it as a print_function in print_array call. 3798 * tests/futimesat.c (main): Update to test new behaviour. 3799 * tests/utimes.c (main): Likewise. 3800 3801 tests: treat tv_sec/tv_usec as signed types in futimesat and utimes tests 3802 * tests/futimesat.c: Print tv_sec and tv_usec fields as signed types. 3803 * tests/utimes.c: Likewise. 3804 3805 2016-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 3806 3807 alpha: print struct timeval32 consistently. 3808 * defs.h [ALPHA] (timeval32_t): New type. 3809 [ALPHA] (print_timeval32_t): New prototype. 3810 * print_timeval.c [ALPHA] (timeval32_t): Remove. 3811 [ALPHA] (print_timeval32_t): Remove static keyword. 3812 * printrusage.c [ALPHA] (printrusage32): Use timeval32_t instead 3813 of local definition of struct timeval32. Use print_timeval32_t. 3814 3815 2016-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 3816 3817 Print struct timeval consistently. 3818 Use print_struct_timeval interface to print struct timeval. 3819 3820 * print_timeval.c (print_struct_timeval): New mpers printer. 3821 * print_timex.c (print_timex): Use it. 3822 * printrusage.c (printrusage): Likewise. 3823 * v4l2.c (print_v4l2_buffer): Likewise. 3824 * tests/getrusage.c (main): Print tv_sec and tv_usec fields as signed. 3825 * tests/waitid.c (sprint_rusage): Likewise. 3826 3827 Suggested-by: Eugene Syromyatnikov <evgsyr (a] gmail.com> 3828 3829 2016-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 3830 3831 Split print_time.c. 3832 After commit v4.14-136-g151d1d1 that removed the last object common 3833 for timespec and timeval parsers there is no need to keep them all 3834 in a single file. 3835 3836 * print_timespec.c: New file. 3837 * print_timeval.c: Likewise. 3838 * Makefile.am (strace_SOURCES): Add them. 3839 * print_time.c: Move all timespec related code to print_timespec.c. 3840 Move all timeval related code to print_timeval.c. 3841 3842 2016-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 3843 3844 tests: check decoding of threads when a non-leader thread invokes execve 3845 * tests/threads-execve.c: New file. 3846 * tests/threads-execve.test: New test. 3847 * tests/.gitignore: Add threads-execve. 3848 * tests/Makefile.am (check_PROGRAMS): Likewise. 3849 (threads_execve_LDADD): New variable. 3850 (MISC_TESTS): Add threads-execve.test. 3851 3852 2016-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 3853 3854 tests: check decoding of fault injected exit_group syscall. 3855 * tests/answer.c: New file. 3856 * tests/fault_injection-exit_group.expected: Likewise. 3857 * tests/fault_injection-exit_group.test: New test. 3858 * tests/.gitignore: Add answer. 3859 * tests/Makefile.am (check_PROGRAMS): Likewise. 3860 (DECODER_TESTS): Add fault_injection-exit_group.test. 3861 (EXTRA_DIST): Add fault_injection-exit_group.expected. 3862 3863 2016-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 3864 3865 Set PTRACE_O_TRACEEXIT option and handle PTRACE_EVENT_EXIT events. 3866 Do not assume that some syscalls do not generate syscall-exit-stops. 3867 When syscalls fail for any reason they may generate syscall-exit-stops. 3868 3869 The solution is to wait for an actual exit reported by PTRACE_EVENT_EXIT 3870 and print the end of unfinished exiting syscall properly. 3871 3872 * exit.c: Remove. 3873 * Makefile.am (strace_SOURCES): Remove exit.c. 3874 * linux/dummy.h (sys_exit): Alias to printargs_d. 3875 * strace.c (ptrace_setoptions): Add PTRACE_O_TRACEEXIT bit. 3876 (print_event_exit): New function. 3877 (trace): Use it in case of PTRACE_EVENT_EXIT. 3878 * syscall.c (trace_syscall_entering): Remove special handling 3879 of SEN_exit. 3880 3881 2016-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 3882 3883 Change printargs to return RVAL_DECODED. 3884 As printargs is invoked as a generic syscall decoder only and 3885 it is not supposed to print anything on exiting, change printargs 3886 to return RVAL_DECODED so it would not be called on exiting at all. 3887 3888 * util.c (printargs): Print args unconditionally, return RVAL_DECODED. 3889 3890 2016-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 3891 3892 Enhance error diagnostics of exit/exit_group decoder. 3893 * exit.c (SYS_FUNC(exit)): Print the name of syscall that has returned. 3894 3895 2016-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 3896 3897 Restrain from fault injection while the trace executes strace code. 3898 There is little use in injections of faults into syscalls made by strace. 3899 3900 * syscall.c (trace_syscall_entering): Clear QUAL_FAULT bit from 3901 tcp->qual_flg when tcp->flags has TCB_HIDE_LOG bit set. 3902 3903 2016-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 3904 3905 Move two global flags to tracee scope. 3906 A simultaneous use of -p option and tracing of a command available 3907 since commit v4.11-183-gfa8c286 introduces a race condition because 3908 the flags whether the first exec has happened are global. 3909 3910 Fix the race by moving hide_log_until_execve and hide_log_until_execve 3911 global variables to TCB_HIDE_LOG and TCB_SKIP_DETACH_ON_FIRST_EXEC bits 3912 in struct tcb.flags, correspondingly. 3913 3914 * defs.h (TCB_HIDE_LOG, TCB_SKIP_DETACH_ON_FIRST_EXEC, hide_log): 3915 New macros. 3916 (hide_log_until_execve): Remove prototype. 3917 * strace.c (skip_one_b_execve, hide_log_until_execve): Remove. 3918 (startup_child): Set TCB_HIDE_LOG and TCB_SKIP_DETACH_ON_FIRST_EXEC bits 3919 in the allocated tcb structure. 3920 (init): Remove initialization of hide_log_until_execve and 3921 skip_one_b_execve. 3922 (print_stopped): Use hide_log() instead of hide_log_until_execve. 3923 (trace): Check and clear TCB_SKIP_DETACH_ON_FIRST_EXEC flag instead 3924 of skip_one_b_execve. 3925 * syscall.c (trace_syscall_entering): Clear TCB_HIDE_LOG flag instead of 3926 hide_log_until_execve. 3927 (trace_syscall_entering, trace_syscall_exiting): Check hide_log() 3928 instead of hide_log_until_execve. 3929 3930 2016-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 3931 3932 Treat execveat as an execve family syscall. 3933 * syscall.c (trace_syscall_entering): Clear hide_log_until_execve flag 3934 also when SEN_execveat is encountered. 3935 3936 2016-11-25 Dmitry V. Levin <ldv (a] altlinux.org> 3937 3938 Change parser of fault expressions to conform the documentation. 3939 Make expressions like fault=SYSCALL1,SYSCALL2:error=EPERM work 3940 as documented, i.e. fail both SYSCALL1 and SYSCALL2 with EPERM. 3941 3942 * syscall.c (parse_fault_expression): Remove const qualifier from 3943 "name" and "token: variables, as well as from the return value. 3944 (qual_fault): Remove const qualifier from "name" variables. 3945 Split "name" into comma delimited tokens and pass each token 3946 to individual qual_syscall_ex call. 3947 (qualify): For QUAL_FAULT options, pass the whole option value 3948 to their qualify methods without prior splitting into comma 3949 delimited tokens. 3950 * tests/fault_injection.test: Check it. 3951 * tests/fault_syntax.test: Check empty syscall sets. 3952 3953 2016-11-24 Dmitry V. Levin <ldv (a] altlinux.org> 3954 3955 Simplify parse_fault_expression. 3956 * syscall.c (parse_fault_expression): Rewrite iterator over strtok_r 3957 in a more concise way. 3958 3959 2016-11-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 3960 3961 Fix omission of field names in printers of timeval structure. 3962 * print_time.c (time_fmt): Remove. 3963 (timeval_fmt): New constant. 3964 (print_timeval_t, sprint_timeval, print_timeval32_t, sprint_timeval32): 3965 Use it instead of time_fmt. 3966 * print_timex.c (print_timex): Print field names of the time field. 3967 * printrusage.c (printrusage, printrusage32): Print field names 3968 of ru_utime and ru_stime fields. 3969 * tests/adjtimex.c (main): Add field names to expected output. 3970 * tests/clock_nanosleep.c (main): Likewise. 3971 * tests/futimesat.c (main): Likewise. 3972 * tests/getrusage.c (main): Likewise. 3973 * tests/nanosleep.c (main): Likewise. 3974 * tests/oldselect.expected: Likewise. 3975 * tests/utimes.c (main): Likewise. 3976 * tests/wait4.c (sprint_rusage): Likewise. 3977 * tests/waitid.c (sprint_rusage): Likewise. 3978 * tests/xetitimer.c (main): Likewise. 3979 * tests/xettimeofday.c (main): Likewise. 3980 * tests/xselect.c (main): Likewise. 3981 3982 Fix omission of field names in printers of timespec structure. 3983 * print_time.c (timespec_fmt): New constant. 3984 (print_timespec_t, sprint_timespec): Use it instead of time_fmt. 3985 * tests/aio.c: Add field names to expected output. 3986 * tests/clock_nanosleep.c (main): Likewise. 3987 * tests/clock_xettime.c (main): Likewise. 3988 * tests/futex.c (main): Likewise. 3989 * tests/mq_sendrecv.c (do_send, do_recv): Likewise. 3990 * tests/nanosleep.c (main): Likewise. 3991 * tests/ppoll-v.expected: Likewise. 3992 * tests/ppoll.expected: Likewise. 3993 * tests/pselect6.c (main): Likewise. 3994 * tests/recvmmsg-timeout.c (main): Likewise. 3995 * tests/restart_syscall.c (main): Likewise. 3996 * tests/rt_sigtimedwait.c (iterate, main): Likewise. 3997 * tests/sched_rr_get_interval.c (main): Likewise. 3998 * tests/semop.c (main): Likewise. 3999 * tests/strace-T.expected: Likewise. 4000 * tests/timer_xettime.c (main): Likewise. 4001 * tests/timerfd_xettime.c (main): Likewise. 4002 * tests/utimensat.c (print_ts): Likewise. 4003 4004 2016-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 4005 4006 tests: robustify prctl-name.test against unrelated prctl invocations. 4007 * tests/prctl-name.test: Filter out unrelated PR_GET_* prctl calls. 4008 4009 2016-11-22 Dmitry V. Levin <ldv (a] altlinux.org> 4010 4011 tests: cleanup prctl-name.c. 4012 * tests/prctl-name.c (main): Remove "len" variable, rename "len1" 4013 to "len". Remove "name1" variable, use "name" instead. 4014 4015 Move KVM_* ioctl entries from ioctls_inc*.h to ioctls_arch*.h. 4016 * linux/32/ioctls_inc_align32.h: Regenerate. 4017 * linux/32/ioctls_inc_align64.h: Likewise. 4018 * linux/64/ioctls_inc.h: Likewise. 4019 * linux/arm/ioctls_arch0.h: Likewise. 4020 * linux/i386/ioctls_arch0.h: Likewise. 4021 * linux/powerpc/ioctls_arch0.h: Likewise. 4022 * linux/s390/ioctls_arch0.h: Likewise. 4023 * linux/s390x/ioctls_arch0.h: Likewise. 4024 * linux/x32/ioctls_inc0.h: Likewise. 4025 * linux/x86_64/ioctls_arch0.h: Likewise. 4026 4027 maint: add more workarounds for alpha and powerpc. 4028 * maint/ioctls_sym.sh: Skip asm/core_*.h. Filter out from 4029 asm-generic/ioctls.h those macros that are defined using unavailable 4030 struct termios2 on alpha and powerpc. 4031 4032 2016-11-22 Andreas Schwab <schwab (a] linux-m68k.org> 4033 4034 Add ioctl definitions for 16-bit alignment. 4035 * Makefile.am (EXTRA_DIST): Add linux/32/ioctls_inc_align16.h. 4036 * linux/32/ioctls_inc_align16.h: New file. 4037 * linux/32/ioctls_inc.h [M68K]: Include it. 4038 4039 2016-11-22 Dmitry V. Levin <ldv (a] altlinux.org> 4040 4041 maint: move KVM_* constants from ioctls_inc.h to ioctls_arch.h. 4042 * maint/ioctls_gen.sh: Place constants defined in linux/kvm.h 4043 into ioctls_arch.h instead of ioctls_inc.h. 4044 4045 2016-11-21 Dmitry V. Levin <ldv (a] altlinux.org> 4046 4047 maint: harmonize use of ioctls_sym.sh. 4048 * maint/ioctls_gen.sh: Consistently specify INCLUDES for all 4049 ioctls_sym.sh invocations. Use $mydir to specify ioctls_sym.sh 4050 location. 4051 4052 maint: rework workarounds for linux/kvm.h. 4053 * maint/ioctls_sym.sh: Remove pre-include linux/kvm.h workarounds. 4054 Skip linux/kvm.h on those architectures that have no asm/kvm.h file. 4055 Introduce post-process workarounds, add post-process workarounds 4056 for linux/kvm.h. 4057 4058 2016-11-20 Elvira Khabirova <lineprinter0 (a] gmail.com> 4059 4060 Restructure strace.1. 4061 * strace.1 (OPTIONS): Add subsections. 4062 (PROBLEMS): Rename to REPORTING BUGS. 4063 (SEE ALSO): Move to the bottom. 4064 4065 2016-11-20 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4066 4067 prctl: implement decoding of PR_SET_FP_MODE and PR_GET_FP_MODE options. 4068 * xlat/pr_fp_mode.in: New file. 4069 * prctl.c: Include "xlat/pr_fp_mode.h". 4070 (SYS_FUNC(prctl)): Add handling for PR_SET_FP_MODE and PR_GET_FP_MODE 4071 options. 4072 4073 prctl: add braces for conditional blocks with else/else-if blocks having braces 4074 4075 2016-11-20 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4076 4077 prctl: cast arg2 to int in PR_SET_PTRACER handler. 4078 Kernel code does this when compares it with -1 (apart from comparing it with 4079 PR_SET_PTRACER_ANY, which is also -1) in security/yama/yama_lsm.c. 4080 4081 * prctl.c (SYS_FUNC(prctl)) <PR_SET_PTRACER>: Cast arg2 to int before 4082 comparing it with -1. 4083 4084 2016-11-20 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4085 4086 prctl: use getarg_ull for option value retrieval. 4087 The prctl syscall does not use compat on x32/n32, so argument types 4088 are in fact kernel_ulong_t. 4089 4090 * prctl.c (print_prctl_args): Use getarg_ull, print as "%#llx" instead 4091 of "%#lx". 4092 (SYS_FUNC(prctl)): Use getarg_ull to store call arguments in arg2, arg3, 4093 arg4, arg5 variables of type unsigned long long. Use them in printing 4094 routines. 4095 (SYS_FUNC(arch_prctl)): Use getarg_ull to store call argument in addr 4096 variable of type unsigned long long. Print it as "%#llx" instead of 4097 "%#lx". 4098 4099 2016-11-20 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4100 4101 block: add some definitions from <linux/blkpg.h> 4102 This is done in order to fix build error on old distributions where 4103 struct blkpg_ioctl_arg declaration is broken: 4104 4105 In file included from block.c:35: 4106 /usr/include/linux/blkpg.h:36: error: expected ':', ',', ';', '}' or '__attribute__' before '*' token 4107 block.c: In function 'print_blkpg_req': 4108 block.c:113: error: 'struct_blkpg_ioctl_arg' has no member named 'data' 4109 4110 (from SLE10) 4111 4112 * block.c: Include <linux/ioctl.h> instead of <linux/blkpg.h>. 4113 (BLKPG, BLKPG_DEVNAMELTH, BLKPG_VOLNAMELTH): New macros. 4114 (struct_blkpg_ioctl_arg, struct_blkpg_partition): New definitions, 4115 copied from blkpg_ioctl_arg and blkpg_partition structures defined 4116 in <linux/blkpg.h>. 4117 4118 2016-11-20 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4119 4120 xlat: add values to new ARCH_* constants. 4121 Since UAPI header declares them under CONFIG_CHECKPOINT_RESTORE 4122 and they would never be defined in user space. 4123 4124 * xlat/archvals.in: Add numeric values to ARCH_MAP_VDSO_* constants. 4125 4126 2016-11-20 Dmitry V. Levin <ldv (a] altlinux.org> 4127 4128 prctl: include <linux/prctl.h> instead of <sys/prctl.h> 4129 There are no users of prctl function in prctl.c, and all the rest 4130 is provided by <linux/prctl.h> anyway. 4131 4132 * prctl.c: Include <linux/prctl.h> instead of <sys/prctl.h>. 4133 4134 2016-11-20 Dmitry V. Levin <ldv (a] altlinux.org> 4135 4136 tests: check decoding of prctl PR_GET_NAME/PR_SET_NAME operations. 4137 * tests/prctl-name.c: New file. 4138 * tests/prctl-name.test: New test. 4139 * tests/.gitignore: Add prctl-name. 4140 * tests/Makefile.am (check_PROGRAMS): Likewise. 4141 (DECODER_TESTS): Add prctl-name.test. 4142 4143 prctl: fix printing of PR_SET_NAME's argument. 4144 * prctl.c (SYS_FUNC(prctl)): Use printstr_ex with QUOTE_0_TERMINATED 4145 instead of printstr to print the argument of PR_SET_NAME and PR_GET_NAME 4146 operations. 4147 4148 printstr_ex: fix handling of last byte when QUOTE_0_TERMINATED bit set. 4149 * util.c (printstr_ex): Simplify handling of size == 0 case. 4150 Do not artificially decrement size when QUOTE_0_TERMINATED bit is set. 4151 Ensure that str[size] byte is non-zero if it hasn't been fetched. 4152 4153 2016-11-19 Dmitry V. Levin <ldv (a] altlinux.org> 4154 4155 printstr_ex: handle QUOTE_0_TERMINATED bit consistently. 4156 When user_style has QUOTE_0_TERMINATED bit set, printstr_ex prints 4157 the fetched string as a NUL-terminated. 4158 After this change, the string is being fetched as a NUL-terminated, too. 4159 4160 * util.c (printstr_ex): Use umovestr instead of umoven 4161 if QUOTE_0_TERMINATED bit is set. 4162 4163 2016-11-19 Dmitry V. Levin <ldv (a] altlinux.org> 4164 4165 Cleanup fetch part of printstr_ex. 4166 * util.c (printstr_ex): Initialize "style" early, unify error handling. 4167 4168 2016-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 4169 4170 Update prctl ARCH_* constants. 4171 * xlat/archvals.in: Add ARCH_MAP_VDSO_X32, ARCH_MAP_VDSO_32, and 4172 ARCH_MAP_VDSO_64 introduced by linux kernel commit v4.9-rc1~155^2~6. 4173 4174 Update V4L2_* constants. 4175 * xlat/v4l2_device_capabilities_flags.in: Add V4L2_CAP_TOUCH introduced 4176 by linux kernel commit v4.9-rc4~7^2~422. 4177 * xlat/v4l2_input_types.in: Add V4L2_CAP_TOUCH introduced 4178 by linux kernel commit v4.9-rc4~7^2~422. 4179 4180 Update fs *_MAGIC constants. 4181 * xlat/fsmagic.in: Add DAXFS_MAGIC introduced by linux kernel commit 4182 v4.9-rc1~45^2^2~5. 4183 4184 Update MS_* constants. 4185 * xlat/mount_flags.in: Add MS_NOREMOTELOCK introduced 4186 by linux kernel commit v4.9-rc1~57^2~1^2~7. 4187 4188 Update FALLOC_* constants. 4189 * xlat/falloc_flags.in: Add FALLOC_FL_UNSHARE_RANGE introduced 4190 by linux kernel commit v4.9-rc1~31^2~69. 4191 4192 Update BTRFS_* constants. 4193 * xlat/btrfs_features_compat_ro.in: Add 4194 BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID introduced 4195 by linux kernel commit v4.9-rc1~7^2^2~4. 4196 4197 Update BPF_* constants. 4198 * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_PERF_EVENT introduced 4199 by linux kernel commit v4.9-rc1~127^2~302^2~4. 4200 4201 2016-11-18 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4202 4203 make-dist: use HEAD for making distribution package. 4204 * make-dist: Use HEAD commit instead of master branch by default. 4205 4206 2016-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 4207 4208 tests: fix btrfs build error on some old systems. 4209 Fix the following build error on SLE 11 SP4: 4210 4211 btrfs.c: In function 'btrfs_test_dev_replace_ioctl': 4212 btrfs.c:1570: error: unknown field 'start' specified in initializer 4213 4214 * tests/btrfs.c (btrfs_test_dev_replace_ioctl): Move initialization 4215 of struct btrfs_ioctl_dev_replace_args.start.srcdevid out of the 4216 designated initializer. 4217 4218 2016-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 4219 4220 tests: check decoding of ERESTARTSYS error code. 4221 * tests/erestartsys.c: New file. 4222 * tests/erestartsys.test: New test. 4223 * tests/.gitignore: Add erestartsys. 4224 * tests/Makefile.am (check_PROGRAMS): Likewise. 4225 (DECODER_TESTS): Add erestartsys.test. 4226 4227 2016-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 4228 4229 Fix signame usage in qual_signal. 4230 Do not assume that the string returned by signame starts with "SIG" 4231 prefix, this is not always the case. 4232 4233 * syscall.c (qual_signal): Skip signame return value 4234 when it does not have "SIG" prefix. 4235 4236 2016-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 4237 4238 tests: check -e signal=set syntax. 4239 * tests/qual_signal.c: New file. 4240 * tests/qual_signal.test: New test. 4241 * tests/.gitignore: Add qual_signal. 4242 * tests/Makefile.am (check_PROGRAMS): Likewise. 4243 (MISC_TESTS): Add qual_signal.test. 4244 4245 2016-11-17 Dmitry V. Levin <ldv (a] altlinux.org> 4246 4247 Make -e fault= expressions cumulative. 4248 Change the way how subsequent -e fault= expressions are interpreted 4249 to implement a cumulative behavior. For example, 4250 -e fault=file:when=3+ -e fault=chdir 4251 now specifies that all chdir syscalls and 3+ file related syscalls 4252 except chdir are subject for fault injection. 4253 4254 * syscall.c (qualify): Do not reset qual_vec for QUAL_FAULT. 4255 * tests/fault_injection.test: Check it. 4256 4257 2016-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 4258 4259 tests: check syscall fault injection. 4260 * tests/fault_injection.c: New file. 4261 * tests/fault_injection.test: New test. 4262 * tests/fault_syntax.test: Likewise. 4263 * tests/.gitignore: Add fault_injection. 4264 * tests/Makefile.am (check_PROGRAMS): Likewise. 4265 (MISC_TESTS): Add fault_injection.test and fault_syntax.test. 4266 4267 2016-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 4268 4269 Implement syscall fault injection. 4270 Introduce new -e fault=EXPR syntax that can be used to specify a subset 4271 of syscalls that are subject of syscall fault injection, an error code 4272 that has to be injected, and a frequency of injection. 4273 4274 The expression specifying syscall fault injection has the following 4275 format: SET[:error=ERRNO][:when=FIRST[+[STEP]]] 4276 where only SET is a required part and all the rest is optional. 4277 4278 The method used to implement syscall fault injection is the following: 4279 on entering syscall the syscall number is substituted by an invalid 4280 syscall number -1, and on exiting syscall the error code returned by 4281 the kernel is substituted with the error code specified in the fault 4282 expression. 4283 4284 This implementaion is based on the prototype developed 4285 by Nahim El Atmani as a part of his GSoC 2016 strace project. 4286 4287 * defs.h (struct fault_opts): New forward declaration. 4288 (struct tcb): Add fault_vec field. 4289 (TCB_FAULT_INJ, QUAL_FAULT): New macros. 4290 * strace.1: Document -e fault expression syntax. 4291 * strace.c (usage): Mention -e fault expression. 4292 (droptcb): Deallocate fault_vec member. 4293 * syscall.c (qual_fault, arch_set_scno, arch_set_error): New prototypes. 4294 (qual_options): Add "fault" option. 4295 (struct fault_opts): New structure. 4296 (num_faults): New variable. 4297 (fault_vec): New array. 4298 (syscall_fault_injected, tcb_fault_opts, reallocate_fault, 4299 find_errno_by_name, qual_syscall_ex, strip_prefix, parse_fault_token, 4300 parse_fault_expression, qual_fault, inject_syscall_fault_entering, 4301 update_syscall_fault_exiting): New functions. 4302 (qual_syscall): Use qual_syscall_ex. 4303 (qualify_one): Add argument: a pointer to struct fault_opts, all callers 4304 changed. Copy struct fault_opts from the pointer to fault_vec. 4305 Use reallocate_fault. 4306 (qualify_scno, qualify_syscall_class, qualify_syscall_name): Add 4307 argument: a pointer to struct fault_opts. 4308 (qualify): Use reallocate_fault. Do not check "all" class for 4309 QUAL_FAULT qualifier. 4310 (lookup_class): Check for "all" class. 4311 (trace_syscall_entering): Use inject_syscall_fault_entering. 4312 (trace_syscall_exiting): Use update_syscall_fault_exiting. Clear 4313 TCB_FAULT_INJ flag along with TCB_INSYSCALL. Print " (INJECTED)" suffix 4314 when the syscall has been injected successfully. 4315 [ARCH_REGS_FOR_GETREGSET && !HAVE_GETREGS_OLD] 4316 (ptrace_setregset): New function. 4317 (ptrace_setregset_or_setregs): Define to ptrace_setregset. 4318 [ARCH_REGS_FOR_GETREGS && !HAVE_GETREGS_OLD] 4319 (ptrace_setregs): New function. 4320 (ptrace_setregset_or_setregs): Define to ptrace_setregs. 4321 [ptrace_setregset_or_setregs] (set_regs): New function. 4322 Include "set_scno.c" and "set_error.c" 4323 * NEWS: Mention this enhancement. 4324 4325 2016-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 4326 4327 Implement arch specific methods of changing syscall number and error code 4328 This introduces arch_set_error and arch_set_scno functions for each 4329 supported architecture, needed to implement syscall fault injection. 4330 4331 * linux/aarch64/set_error.c: New file. 4332 * linux/aarch64/set_scno.c: Likewise. 4333 * linux/alpha/set_error.c: Likewise. 4334 * linux/alpha/set_scno.c: Likewise. 4335 * linux/arc/set_error.c: Likewise. 4336 * linux/arc/set_scno.c: Likewise. 4337 * linux/arm/set_error.c: Likewise. 4338 * linux/arm/set_scno.c: Likewise. 4339 * linux/avr32/set_error.c: Likewise. 4340 * linux/avr32/set_scno.c: Likewise. 4341 * linux/bfin/set_error.c: Likewise. 4342 * linux/bfin/set_scno.c: Likewise. 4343 * linux/crisv10/set_error.c: Likewise. 4344 * linux/crisv10/set_scno.c: Likewise. 4345 * linux/crisv32/set_error.c: Likewise. 4346 * linux/crisv32/set_scno.c: Likewise. 4347 * linux/hppa/set_error.c: Likewise. 4348 * linux/hppa/set_scno.c: Likewise. 4349 * linux/i386/set_error.c: Likewise. 4350 * linux/i386/set_scno.c: Likewise. 4351 * linux/ia64/set_error.c: Likewise. 4352 * linux/ia64/set_scno.c: Likewise. 4353 * linux/m68k/set_error.c: Likewise. 4354 * linux/m68k/set_scno.c: Likewise. 4355 * linux/metag/set_error.c: Likewise. 4356 * linux/metag/set_scno.c: Likewise. 4357 * linux/microblaze/set_error.c: Likewise. 4358 * linux/microblaze/set_scno.c: Likewise. 4359 * linux/mips/set_error.c: Likewise. 4360 * linux/mips/set_scno.c: Likewise. 4361 * linux/nios2/set_error.c: Likewise. 4362 * linux/nios2/set_scno.c: Likewise. 4363 * linux/or1k/set_error.c: Likewise. 4364 * linux/or1k/set_scno.c: Likewise. 4365 * linux/powerpc/set_error.c: Likewise. 4366 * linux/powerpc/set_scno.c: Likewise. 4367 * linux/powerpc64/set_error.c: Likewise. 4368 * linux/powerpc64/set_scno.c: Likewise. 4369 * linux/riscv/set_error.c: Likewise. 4370 * linux/riscv/set_scno.c: Likewise. 4371 * linux/s390/set_error.c: Likewise. 4372 * linux/s390/set_scno.c: Likewise. 4373 * linux/s390x/set_error.c: Likewise. 4374 * linux/s390x/set_scno.c: Likewise. 4375 * linux/sh/set_error.c: Likewise. 4376 * linux/sh/set_scno.c: Likewise. 4377 * linux/sh64/set_error.c: Likewise. 4378 * linux/sh64/set_scno.c: Likewise. 4379 * linux/sparc/set_error.c: Likewise. 4380 * linux/sparc/set_scno.c: Likewise. 4381 * linux/sparc64/set_error.c: Likewise. 4382 * linux/sparc64/set_scno.c: Likewise. 4383 * linux/tile/set_error.c: Likewise. 4384 * linux/tile/set_scno.c: Likewise. 4385 * linux/x32/set_error.c: Likewise. 4386 * linux/x32/set_scno.c: Likewise. 4387 * linux/x86_64/set_error.c: Likewise. 4388 * linux/x86_64/set_scno.c: Likewise. 4389 * linux/xtensa/set_error.c: Likewise. 4390 * linux/xtensa/set_scno.c: Likewise. 4391 * Makefile.am (EXTRA_DIST): Add them. 4392 4393 2016-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 4394 4395 cris: add syscall tables. 4396 The incomplete CRIS support introduced by commit v4.5.18-77-gea0e6e8 4397 should not have been merged because it lacks essential parts, e.g. 4398 syscall tables. 4399 4400 This change adds missing syscall tables for crisv10 and crisv32. 4401 4402 * linux/crisv10/syscallent.h: New file. 4403 * linux/crisv32/syscallent.h: Likewise. 4404 * Makefile.am (EXTRA_DIST): Add them. 4405 4406 2016-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 4407 4408 Introduce string_to_uint_ex and string_to_uint_upto functions. 4409 * defs.h (string_to_uint_ex): New prototype. 4410 (string_to_uint_upto): New function, a thin wrapper around 4411 string_to_uint_ex. 4412 * util.c (string_to_uint_ex): New function. 4413 (string_to_uint): Change into a thin wrapper around string_to_uint_upto. 4414 * strace.c (init): Use string_to_uint_upto. 4415 * syscall.c (qualify_scno, qual_signal, qual_desc): Use 4416 string_to_uint_upto instead of string_to_uint. 4417 4418 2016-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 4419 4420 Split qual_syscall into separate functions. 4421 Split qual_syscall into qualify_scno, qualify_syscall_class, 4422 and qualify_syscall_name. 4423 This might be needed later to implement syscall fault injection. 4424 4425 * syscall.c (qualify_scno, qualify_syscall_class, qualify_syscall_name): 4426 New functions. 4427 (qual_syscall): Use them. 4428 4429 2016-11-15 Dmitry V. Levin <ldv (a] altlinux.org> 4430 4431 xtensa: wire up new syscalls. 4432 * linux/xtensa/syscallent.h [342..347]: New entries. 4433 4434 2016-11-14 Dmitry V. Levin <ldv (a] altlinux.org> 4435 4436 arc: wire up new syscalls. 4437 * linux/arc/syscallent.h [247, 248]: New entries. 4438 4439 2016-11-13 Dmitry V. Levin <ldv (a] altlinux.org> 4440 4441 tests: fix potential compilation warning in ioctl_block.c. 4442 ioctl_block.c:48: warning: 'init_magic' defined but not used 4443 4444 * tests/ioctl_block.c (init_magic): Define only for 4445 [BLKTRACESETUP && HAVE_STRUCT_BLK_USER_TRACE_SETUP]. 4446 4447 2016-11-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4448 4449 Add support for pkey_mprotect, pkey_alloc, pkey_free syscalls. 4450 * linux/32/syscallent.h: Add syscall entries for pkey_* calls. 4451 * linux/64/syscallent.h: Likewise. 4452 * linux/arm/syscallent.h: Likewise. 4453 * linux/i386/syscallent.h: Likewise. 4454 * linux/mips/syscallent-n32.h: Likewise. 4455 * linux/mips/syscallent-n64.h: Likewise. 4456 * linux/mips/syscallent-o32.h: Likewise. 4457 * linux/x32/syscallent.h: Likewise. 4458 * linux/x86_64/syscallent.h: Likewise. 4459 * mem.c (do_mprotect): New function, common handler for mprotect and 4460 pkey_mprotect. 4461 (SYS_FUNC(mprotect)): Convert to wrapper around do_mprotect. 4462 (SYS_FUNC(pkey_mprotect)): New function. 4463 * xlat/pkey_access.in: New file. 4464 * pkeys.c: New file containing implementation of pkey_alloc and 4465 pkey_free. 4466 * Makefile.am: Add it. 4467 * NEWS: Mention this enhancement. 4468 * tests/.gitignore: Add pkey_alloc, pkey_free, and pkey_mprotect. 4469 * tests/Makefile.am (check_PROGRAMS): Likewise. 4470 (DECODER_TESTS): Add pkey_alloc.test, pkey_free.test, and 4471 pkey_mprotect.test. 4472 * tests/pkey_alloc.c: New file. 4473 * tests/pkey_free.c: Likewise. 4474 * tests/pkey_mprotect.c: Likewise. 4475 * tests/pkey_alloc.test: New test. 4476 * tests/pkey_free.test: Likewise. 4477 * tests/pkey_mprotect.test: Likewise. 4478 4479 2016-11-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4480 4481 tests: fix "constant is too large" compilation warnings. 4482 alarm.c: In function 'main': 4483 alarm.c:41: warning: integer constant is too large for 'long' type 4484 aio.c: In function 'main': 4485 aio.c:162: warning: integer constant is too large for 'long' type 4486 btrfs.c: In function 'btrfs_test_sync_ioctls': 4487 btrfs.c:202: warning: integer constant is too large for 'long' type 4488 btrfs.c: In function 'btrfs_test_subvol_ioctls': 4489 btrfs.c:289: warning: integer constant is too large for 'long' type 4490 btrfs.c:290: warning: integer constant is too large for 'long' type 4491 dup2.c: In function 'main': 4492 dup2.c:12: warning: integer constant is too large for 'long' type 4493 dup2.c:13: warning: integer constant is too large for 'long' type 4494 dup3.c: In function 'main': 4495 dup3.c:13: warning: integer constant is too large for 'long' type 4496 dup3.c:14: warning: integer constant is too large for 'long' type 4497 epoll_create.c: In function 'main': 4498 epoll_create.c:12: warning: integer constant is too large for 'long' type 4499 epoll_ctl.c: In function 'invoke_syscall': 4500 epoll_ctl.c:14: warning: integer constant is too large for 'long' type 4501 faccessat.c: In function 'main': 4502 faccessat.c:13: warning: integer constant is too large for 'long' type 4503 fchdir.c: In function 'main': 4504 fchdir.c:12: warning: integer constant is too large for 'long' type 4505 struct_flock.c: In function 'invoke_test_syscall': 4506 struct_flock.c:48: warning: integer constant is too large for 'long' type 4507 struct_flock.c: In function 'test_flock_einval': 4508 struct_flock.c:58: warning: integer constant is too large for 'long' type 4509 struct_flock.c:59: warning: integer constant is too large for 'long' type 4510 fcntl64.c: In function 'test_flock64_einval': 4511 fcntl64.c:44: warning: integer constant is too large for 'long' type 4512 fcntl64.c:45: warning: integer constant is too large for 'long' type 4513 fcntl.c: In function 'test_flock64_einval': 4514 fcntl.c:44: warning: integer constant is too large for 'long' type 4515 fcntl.c:45: warning: integer constant is too large for 'long' type 4516 fdatasync.c: In function 'main': 4517 fdatasync.c:12: warning: integer constant is too large for 'long' type 4518 flock.c: In function 'main': 4519 flock.c:13: warning: integer constant is too large for 'long' type 4520 xstatx.c: In function 'main': 4521 xstatx.c:255: warning: integer constant is too large for 'long' type 4522 xstatx.c:290: warning: integer constant is too large for 'long' type 4523 xstatx.c:290: warning: integer constant is too large for 'long' type 4524 xstatx.c:290: warning: integer constant is too large for 'long' type 4525 xstatx.c:290: warning: integer constant is too large for 'long' type 4526 xstatx.c:290: warning: integer constant is too large for 'long' type 4527 xstatx.c:290: warning: integer constant is too large for 'long' type 4528 xstatx.c:290: warning: integer constant is too large for 'long' type 4529 xstatx.c:290: warning: integer constant is too large for 'long' type 4530 xstatx.c:290: warning: integer constant is too large for 'long' type 4531 xstatx.c:294: warning: integer constant is too large for 'long' type 4532 xstatx.c:294: warning: integer constant is too large for 'long' type 4533 xstatx.c:294: warning: integer constant is too large for 'long' type 4534 xstatx.c:294: warning: integer constant is too large for 'long' type 4535 xstatx.c:294: warning: integer constant is too large for 'long' type 4536 xstatx.c:294: warning: integer constant is too large for 'long' type 4537 xstatx.c:294: warning: integer constant is too large for 'long' type 4538 xstatx.c:294: warning: integer constant is too large for 'long' type 4539 xstatx.c:294: warning: integer constant is too large for 'long' type 4540 xstatfsx.c: In function 'main': 4541 xstatfsx.c:113: warning: integer constant is too large for 'long' type 4542 fsync.c: In function 'main': 4543 fsync.c:12: warning: integer constant is too large for 'long' type 4544 ftruncate64.c: In function 'main': 4545 ftruncate64.c:39: warning: integer constant is too large for 'long' type 4546 futimesat.c: In function 'main': 4547 futimesat.c:52: warning: integer constant is too large for 'long' type 4548 futimesat.c:59: warning: integer constant is too large for 'long' type 4549 get_mempolicy.c: In function 'main': 4550 get_mempolicy.c:83: warning: integer constant is too large for 'long' type 4551 get_mempolicy.c:84: warning: integer constant is too large for 'long' type 4552 get_mempolicy.c:85: warning: integer constant is too large for 'long' type 4553 get_mempolicy.c:86: warning: integer constant is too large for 'long' type 4554 getdents.c: In function 'main': 4555 getdents.c:109: warning: integer constant is too large for 'long' type 4556 getdents.c:110: warning: integer constant is too large for 'long' type 4557 getdents.c:114: warning: integer constant is too large for 'long' type 4558 getdents64.c: In function 'main': 4559 getdents64.c:114: warning: integer constant is too large for 'long' type 4560 getdents64.c:115: warning: integer constant is too large for 'long' type 4561 getdents64.c:119: warning: integer constant is too large for 'long' type 4562 xgetrlimit.c: In function 'main': 4563 xgetrlimit.c:71: warning: integer constant is too large for 'long' type 4564 ioctl_block.c:44: warning: integer constant is too large for 'long' type 4565 ioctl_block.c: In function 'main': 4566 ioctl_block.c:136: warning: integer constant is too large for 'long' type 4567 ioctl_block.c:137: warning: integer constant is too large for 'long' type 4568 ioctl_block.c:161: warning: integer constant is too large for 'long' type 4569 ioctl_block.c:170: warning: integer constant is too large for 'long' type 4570 ioctl_block.c:171: warning: integer constant is too large for 'long' type 4571 ioctl_evdev.c:42: warning: integer constant is too large for 'long' type 4572 ioctl_mtd.c:46: warning: integer constant is too large for 'long' type 4573 ioctl_rtc.c:40: warning: integer constant is too large for 'long' type 4574 ioperm.c: In function 'main': 4575 ioperm.c:12: warning: integer constant is too large for 'long' type 4576 ioctl_v4l2.c: In function 'main': 4577 ioctl_v4l2.c:409: warning: integer constant is too large for 'long' type 4578 ipc.c: In function 'ipc_call': 4579 ipc.c:52: warning: integer constant is too large for 'long' type 4580 kill.c: In function 'main': 4581 kill.c:59: warning: integer constant is too large for 'long' type 4582 kill.c:62: warning: integer constant is too large for 'long' type 4583 kill.c:63: warning: integer constant is too large for 'long' type 4584 kill.c:68: warning: integer constant is too large for 'long' type 4585 linkat.c: In function 'main': 4586 linkat.c:14: warning: integer constant is too large for 'long' type 4587 linkat.c:15: warning: integer constant is too large for 'long' type 4588 mbind.c: In function 'main': 4589 mbind.c:41: warning: integer constant is too large for 'long' type 4590 mbind.c:43: warning: integer constant is too large for 'long' type 4591 mbind.c:44: warning: integer constant is too large for 'long' type 4592 migrate_pages.c: In function 'main': 4593 migrate_pages.c:41: warning: integer constant is too large for 'long' type 4594 In file included from mkdirat.c:10: 4595 umode_t.c: In function 'test_syscall': 4596 umode_t.c:47: warning: integer constant is too large for 'long' type 4597 mknod.c: In function 'call_mknod': 4598 mknod.c:16: warning: integer constant is too large for 'long' type 4599 mknod.c: In function 'main': 4600 mknod.c:23: warning: integer constant is too large for 'long' type 4601 mknod.c:49: warning: integer constant is too large for 'long' type 4602 mknod.c:56: warning: integer constant is too large for 'long' type 4603 mknodat.c:12: warning: integer constant is too large for 'long' type 4604 mknodat.c: In function 'call_mknodat': 4605 mknodat.c:17: warning: integer constant is too large for 'long' type 4606 mknodat.c: In function 'main': 4607 mknodat.c:24: warning: integer constant is too large for 'long' type 4608 mknodat.c:50: warning: integer constant is too large for 'long' type 4609 mknodat.c:57: warning: integer constant is too large for 'long' type 4610 mmap.c: In function 'main': 4611 mmap.c:51: warning: integer constant is too large for 'long' type 4612 move_pages.c: In function 'print_stat_pages': 4613 move_pages.c:139: warning: integer constant is too large for 'long' type 4614 move_pages.c: In function 'print_move_pages': 4615 move_pages.c:166: warning: integer constant is too large for 'long' type 4616 move_pages.c: In function 'main': 4617 move_pages.c:188: warning: integer constant is too large for 'long' type 4618 mq_sendrecv.c: In function 'main': 4619 mq_sendrecv.c:238: warning: integer constant is too large for 'long' type 4620 mq_sendrecv.c:401: warning: integer constant is too large for 'long' type 4621 mq_sendrecv.c:403: warning: integer constant is too large for 'long' type 4622 nsyscalls.c: In function 'test_syscall': 4623 nsyscalls.c:64: warning: integer constant is too large for 'long' type 4624 nsyscalls.c:65: warning: integer constant is too large for 'long' type 4625 nsyscalls.c:66: warning: integer constant is too large for 'long' type 4626 nsyscalls.c:67: warning: integer constant is too large for 'long' type 4627 nsyscalls.c:68: warning: integer constant is too large for 'long' type 4628 nsyscalls.c:69: warning: integer constant is too large for 'long' type 4629 preadv-pwritev.c: In function 'main': 4630 preadv-pwritev.c:162: warning: comparison between signed and unsigned 4631 prlimit64.c: In function 'main': 4632 prlimit64.c:65: warning: integer constant is too large for 'long' type 4633 prlimit64.c:70: warning: integer constant is too large for 'long' type 4634 remap_file_pages.c: In function 'main': 4635 remap_file_pages.c:42: warning: integer constant is too large for 'long' type 4636 remap_file_pages.c:43: warning: integer constant is too large for 'long' type 4637 remap_file_pages.c:45: warning: integer constant is too large for 'long' type 4638 renameat.c: In function 'main': 4639 renameat.c:15: warning: integer constant is too large for 'long' type 4640 renameat.c:16: warning: integer constant is too large for 'long' type 4641 rt_sigqueueinfo.c: In function 'main': 4642 rt_sigqueueinfo.c:41: warning: integer constant is too large for 'long' type 4643 rt_tgsigqueueinfo.c: In function 'k_tgsigqueueinfo': 4644 rt_tgsigqueueinfo.c:45: warning: integer constant is too large for 'long' type 4645 rt_tgsigqueueinfo.c:46: warning: integer constant is too large for 'long' type 4646 rt_tgsigqueueinfo.c:47: warning: integer constant is too large for 'long' type 4647 rt_tgsigqueueinfo.c: In function 'main': 4648 rt_tgsigqueueinfo.c:67: warning: integer constant is too large for 'long' type 4649 sendfile.c: In function 'main': 4650 sendfile.c:110: warning: integer constant is too large for 'long' type 4651 sendfile64.c: In function 'main': 4652 sendfile64.c:100: warning: integer constant is too large for 'long' type 4653 set_mempolicy.c: In function 'main': 4654 set_mempolicy.c:129: warning: integer constant is too large for 'long' type 4655 set_mempolicy.c:130: warning: integer constant is too large for 'long' type 4656 setrlimit.c: In function 'main': 4657 setrlimit.c:44: warning: integer constant is too large for 'long' type 4658 socketcall.c: In function 'test_socketcall': 4659 socketcall.c:58: warning: integer constant is too large for 'long' type 4660 splice.c: In function 'main': 4661 splice.c:41: warning: integer constant is too large for 'long' type 4662 splice.c:42: warning: integer constant is too large for 'long' type 4663 splice.c:45: warning: integer constant is too large for 'long' type 4664 splice.c:46: warning: integer constant is too large for 'long' type 4665 symlinkat.c: In function 'main': 4666 symlinkat.c:12: warning: integer constant is too large for 'long' type 4667 sync_file_range.c: In function 'main': 4668 sync_file_range.c:42: warning: integer constant is too large for 'long' type 4669 sync_file_range.c:43: warning: integer constant is too large for 'long' type 4670 syslog.c: In function 'main': 4671 syslog.c:14: warning: integer constant is too large for 'long' type 4672 tee.c: In function 'main': 4673 tee.c:41: warning: integer constant is too large for 'long' type 4674 tee.c:42: warning: integer constant is too large for 'long' type 4675 timer_create.c: In function 'main': 4676 timer_create.c:52: warning: integer constant is too large for 'long' type 4677 timer_create.c:84: warning: integer constant is too large for 'long' type 4678 timer_create.c:85: warning: integer constant is too large for 'long' type 4679 truncate64.c: In function 'main': 4680 truncate64.c:41: warning: integer constant is too large for 'long' type 4681 xgetrlimit.c: In function 'main': 4682 xgetrlimit.c:71: warning: integer constant is too large for 'long' type 4683 umode_t.c: In function 'test_syscall': 4684 umode_t.c:46: warning: integer constant is too large for 'long' type 4685 unlinkat.c: In function 'main': 4686 unlinkat.c:13: warning: integer constant is too large for 'long' type 4687 waitpid.c: In function 'main': 4688 waitpid.c:43: warning: integer constant is too large for 'long' type 4689 waitid.c: In function 'poison': 4690 waitid.c:141: warning: integer constant is too large for 'long' type 4691 xetpriority.c: In function 'main': 4692 xetpriority.c:15: warning: integer constant is too large for 'long' type 4693 xetpriority.c:19: warning: integer constant is too large for 'long' type 4694 xetpriority.c:20: warning: integer constant is too large for 'long' type 4695 xetpgid.c: In function 'main': 4696 xetpgid.c:43: warning: integer constant is too large for 'long' type 4697 xetpgid.c:47: warning: integer constant is too large for 'long' type 4698 xetpgid.c:48: warning: integer constant is too large for 'long' type 4699 4700 (SLES 11SP4, i386) 4701 4702 * tests/alarm.c (main): Add proper suffix to integer constant. 4703 * tests/aio.c (main): Likewise. 4704 * tests/btrfs.c (btrfs_test_sync_ioctls, btrfs_test_subvol_ioctls): Likewise. 4705 * tests/dup2.c (main): Likewise. 4706 * tests/dup3.c (main): Likewise. 4707 * tests/epoll_create.c (main): Likewise. 4708 * tests/epoll_ctl.c (invoke_syscall): Likewise. 4709 * tests/faccessat.c (main): Likewise. 4710 * tests/fchdir.c (main): Likewise. 4711 * tests/fcntl.c (test_flock64_einval): Likewise. 4712 * tests/fcntl64.c (test_flock64_einval): Likewise. 4713 * tests/fdatasync.c (main): Likewise. 4714 * tests/flock.c (main): Likewise. 4715 * tests/fstat64.c (SAMPLE_SIZE): Likewise. 4716 * tests/fstat.c (SAMPLE_SIZE): Likewise. 4717 * tests/fsync.c (main): Likewise. 4718 * tests/ftruncate64.c (main): Likewise. 4719 * tests/futimesat.c (main): Likewise. 4720 * tests/get_mempolicy.c (main): Likewise. 4721 * tests/getdents.c (main): Likewise. 4722 * tests/getdents64.c (main): Likewise. 4723 * tests/ioctl_block.c (lmagic, main): Likewise. 4724 * tests/ioctl_evdev.c (lmagic): Likewise. 4725 * tests/ioctl_mtd.c (lmagic): Likewise. 4726 * tests/ioctl_rtc.c (lmagic): Likewise. 4727 * tests/ioctl_v4l2.c (main): Likewise. 4728 * tests/ioperm.c (main): Likewise. 4729 * tests/ipc.c (ipc_call): Likewise. 4730 * tests/kill.c (main): Likewise. 4731 * tests/linkat.c (main): Likewise. 4732 * tests/lstat64.c (SAMPLE_SIZE): Likewise. 4733 * tests/lstat.c (SAMPLE_SIZE): Likewise. 4734 * tests/mbind.c (main): Likewise. 4735 * tests/migrate_pages.c (main): Likewise. 4736 * tests/mkdirat.c (TEST_SYSCALL_PREFIX_ARGS): Likewise. 4737 * tests/mknod.c (call_mknod, main): Likewise. 4738 * tests/mknodat.c (fd, call_mknodat, main): Likewise. 4739 * tests/mmap.c (main): Likewise. 4740 * tests/move_pages.c (print_stat_pages, print_move_pages): Likewise. 4741 * tests/mq_sendrecv.c (main): Likewise. 4742 * tests/nsyscalls.c (test_syscall): Likewise. 4743 * tests/prlimit64.c (main): Likewise. 4744 * tests/remap_file_pages.c (main): Likewise. 4745 * tests/renameat.c (main): Likewise. 4746 * tests/rt_sigqueueinfo.c (main): Likewise. 4747 * tests/rt_tgsigqueueinfo.c (k_tgsigqueueinfo, main): Likewise. 4748 * tests/sendfile.c (main): Likewise. 4749 * tests/sendfile64.c (main): Likewise. 4750 * tests/set_mempolicy.c (main): Likewise. 4751 * tests/setrlimit.c (main): Likewise. 4752 * tests/socketcall.c (test_socketcall): Likewise. 4753 * tests/splice.c (main): Likewise. 4754 * tests/stat64.c (SAMPLE_SIZE): Likewise. 4755 * tests/stat.c (SAMPLE_SIZE): Likewise. 4756 * tests/struct_flock.c (invoke_test_syscall, test_flock_einval): Likewise. 4757 * tests/symlinkat.c (main): Likewise. 4758 * tests/sync_file_range.c (main): Likewise. 4759 * tests/syslog.c (main): Likewise. 4760 * tests/tee.c (main): Likewise. 4761 * tests/timer_create.c (main): Likewise. 4762 * tests/truncate64.c (main): Likewise. 4763 * tests/umode_t.c (test_syscall): Likewise. 4764 * tests/unlinkat.c (main): Likewise. 4765 * tests/waitid.c (main): Likewise. 4766 * tests/waitpid.c (main): Likewise. 4767 * tests/xetpgid.c (main): Likewise. 4768 * tests/xetpriority.c (main): Likewise. 4769 * tests/xgetrlimit.c (main): Likewise. 4770 * tests/xstatfsx.c (main) [CHECK_ODD_SIZE]: Likewise. 4771 * tests/xstatx.c (main): Likewise. 4772 4773 2016-11-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4774 4775 tests: fix "comparison between signed and unsigned" compilation warnings 4776 preadv-pwritev.c: In function 'main': 4777 preadv-pwritev.c:162: warning: comparison between signed and unsigned 4778 readv.c: In function 'main': 4779 readv.c:148: warning: comparison between signed and unsigned 4780 recvmsg.c: In function 'main': 4781 recvmsg.c:148: warning: comparison between signed and unsigned 4782 4783 * tests/preadv-pwritev.c (main): Cast r_len to int. 4784 * tests/readv.c (main): Likewise. 4785 * tests/recvmsg.c (main): Likewise. 4786 4787 2016-11-13 Dmitry V. Levin <ldv (a] altlinux.org> 4788 4789 syscall.c: refactor getregs_old fallback in get_regs. 4790 This change moves remaining arch specific getregs_old code into 4791 appropriate arch subdirectories and removes unnecessary code 4792 duplication. 4793 4794 * linux/getregs_old.h: New file. 4795 * linux/powerpc/getregs_old.h: Likewise. 4796 * linux/powerpc64/getregs_old.h: Likewise. 4797 * linux/x86_64/getregs_old.h: Likewise. 4798 * Makefile.am (EXTRA_DIST): Add them. 4799 * syscall.c: Include "getregs_old.h". 4800 [X86_64 || POWERPC]: Remove. 4801 [ARCH_REGS_FOR_GETREGSET] (ptrace_getregset_or_getregs): Define 4802 to ptrace_getregset. 4803 [ARCH_REGS_FOR_GETREGS] (ptrace_getregset_or_getregs): Define 4804 to ptrace_getregs. 4805 (get_regs): Check for ptrace_getregset_or_getregs instead 4806 of ARCH_REGS_FOR_GETREGSET and ARCH_REGS_FOR_GETREGS. Use 4807 ptrace_getregset_or_getregs instead of ptrace_getregset and 4808 ptrace_getregs. Check for HAVE_GETREGS_OLD instead of X86_64 4809 and POWERPC. Use use_getregs_old instead of getregset_support 4810 and old_kernel. 4811 4812 2016-11-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4813 4814 Rename BUILD_BUG_ON_ZERO macro. 4815 In order to avoid name clash on distributions which decide to include 4816 kernel headers instead of UAPI ones. For example, on SLES 11SP4: 4817 4818 gcc -DHAVE_CONFIG_H -I./linux/x86_64 -I./linux -I. -Wall -O2 -c net.c 4819 In file included from /usr/include/linux/sysctl.h:25:0, 4820 from /usr/include/linux/netfilter.h:6, 4821 from /usr/include/linux/netfilter_arp.h:8, 4822 from /usr/include/linux/netfilter_arp/arp_tables.h:14, 4823 from net.c:60: 4824 net.c: In function 'print_packet_mreq': 4825 gcc_compat.h:59:27: error: negative width in bit-field '<anonymous>' 4826 # define MUST_BE_ARRAY(a) BUILD_BUG_ON_ZERO(!SAME_TYPE((a), &(a)[0])) 4827 ^ 4828 defs.h:76:53: note: in expansion of macro 'MUST_BE_ARRAY' 4829 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]) + MUST_BE_ARRAY(a)) 4830 ^ 4831 net.c:747:22: note: in expansion of macro 'ARRAY_SIZE' 4832 if (mreq.mr_alen > ARRAY_SIZE(mreq.mr_address)) 4833 ^ 4834 due to the fact BUILD_BUG_ON_ZERO is already defined in <linux/kernel.h>. 4835 4836 * gcc_compat.h (BUILD_BUG_ON_ZERO): Rename to FAIL_BUILD_ON_ZERO. 4837 (MUST_BE_ARRAY): Update usage. 4838 4839 2016-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 4840 4841 syscall.c: factor out ptrace_getregs from get_regs. 4842 Move the code that calls ptrace(PTRACE_GETREGS) to a separate function. 4843 4844 * syscall.c (ptrace_getregs): New function. 4845 (get_regs): Use it. 4846 4847 2016-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 4848 4849 syscall.c: rename get_regset to ptrace_getregset. 4850 * syscall.c (get_regset): Rename to ptrace_getregset. 4851 (get_regs): Rename get_regset to ptrace_getregset. 4852 4853 2016-11-12 Andreas Schwab <schwab (a] linux-m68k.org> 4854 4855 m68k: switch to PTRACE_GETREGS. 4856 * Makefile.am (EXTRA_DIST): Add linux/m68k/arch_regs.h, remove 4857 linux/m68k/get_syscall_result.c. 4858 * linux/m68k/arch_regs.c (m68k_d0, ARCH_PC_PEEK_ADDR): Don't 4859 define. 4860 (m68k_regs, m68k_usp_ptr, ARCH_PC_REG, ARCH_REGS_FOR_GETREGS): 4861 Define. 4862 * linux/m68k/arch_regs.h: New file. 4863 * linux/m68k/arch_sigreturn.c (arch_sigreturn): Use m68k_usp_ptr. 4864 * linux/m68k/get_error.c (get_error): Use m68k_regs.d0. 4865 * linux/m68k/get_scno.c (arch_get_scno): Use m68k_regs.orig_d0. 4866 * linux/m68k/get_syscall_args.c (get_syscall_args): Use m68k_regs. 4867 * linux/m68k/get_syscall_result.c: Remove. 4868 4869 tests: do not run old_mmap test on m68k. 4870 * tests/old_mmap.c: Skip test on m68k. 4871 4872 2016-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 4873 4874 syscall.c: introduce reallocate_vec function. 4875 This might be needed later to implement syscall fault injection. 4876 4877 * syscall.c (reallocate_vec): New function. 4878 (reallocate_qual): Use it. 4879 4880 2016-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 4881 4882 Fix prototypes of qual_desc, qual_signal, and qual_syscall functions. 4883 * syscall.c (qual_desc, qual_signal, qual_syscall): Fix prototypes. 4884 (struct qual_options): Fix type of "qualify" member. 4885 4886 2016-11-12 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4887 4888 linux/x32/syscallent.h: fix syscallent array initialisation on x32. 4889 Why gcc didn't complain about it? It is definitely an index clash. 4890 4891 * linux/x32/syscallent.h: Change initializer indices for empty records from 4892 [327 ... 511] to [329 ... 511]. 4893 4894 2016-11-11 Dmitry V. Levin <ldv (a] altlinux.org> 4895 4896 Introduce upoke function. 4897 This will be needed to implement fault injection on those architectures 4898 that lack PTRACE_SETREGSET/PTRACE_SETREGS support. 4899 4900 * defs.h (upoke): New prototype. 4901 * upoke.c: New file. 4902 * Makefile.am (libstrace_a_SOURCES): Add it. 4903 4904 2016-11-11 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 4905 4906 Update ioctl entries from linux 4.9. 4907 * linux/32/ioctls_inc_align32.h: Update from linux v4.9 using ioctls_gen.sh. 4908 * linux/32/ioctls_inc_align64.h: Likewise. 4909 * linux/64/ioctls_inc.h: Likewise. 4910 * linux/x32/ioctls_inc0.h: Likewise. 4911 * NEWS: Mention this. 4912 4913 2016-11-10 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4914 4915 Update NEWS. 4916 4917 2016-11-10 Mikulas Patocka <mpatocka (a] redhat.com> 4918 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4919 4920 Add support for decoding of DM_* ioctl commands. 4921 * dm.c: New file. 4922 * xlat/dm_flags.in: Likewise. 4923 * Makefile.am (strace_SOURCES): Add dm.c. 4924 * configure.ac (AC_CHECK_HEADERS): Add linux/dm-ioctl.h. 4925 * defs.h (dm_ioctl): New prototype. 4926 * ioctl.c (ioctl_decode) [HAVE_LINUX_DM_IOCTL_H]: Call dm_ioctl 4927 for 0xfd ioctl type. 4928 * tests/ioctl_dm.c: New file. 4929 * tests/ioctl_dm-v.c: Likewise. 4930 * tests/ioctl_dm.test: New test. 4931 * tests/ioctl_dm-v.test: Likewise. 4932 * tests/.gitignore: Add ioctl_dm and ioctl_dm-v. 4933 * tests/Makefile.am (check_PROGRAMS): Likewise. 4934 (DECODER_TESTS): Add ioctl_dm.test and ioctl_dm-v.test. 4935 4936 2016-11-10 Dmitry V. Levin <ldv (a] altlinux.org> 4937 4938 Introduce ALIGNOF macro. 4939 * gcc_compat.h (ALIGNOF): New macro. 4940 4941 2016-11-10 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4942 4943 util: add support for QUOTE_0_TERMINATED in user_style to ptrintstr_ex. 4944 This enables printing size-limited (expectedly) ASCIZ strings. 4945 4946 This is done by increasing umoven size limit for sized strings by one 4947 byte above max_strlen (enabling copying possible NUL byte in case len is 4948 greater than max_strlen) and decreasing size after copying by one byte 4949 in case QUOTE_0_TERMINATED is set (due to user_style or usage of len of 4950 -1). As a result, there is one excess byte for string_quote in case 4951 QUOTE_0_TERMINATED is set so string_quote can check for NUL termination 4952 of strings up to size bytes in size (which is len or max_strlen, whatever 4953 is greater). 4954 4955 The catch here is that when string is not properly NUL-terminated and 4956 QUOTE_0_TERMINATED is provided in user_style and len is less than 4957 max_strlen then last non-NUL byte is not printed. But ellipsis is 4958 printed instead, being indication that string is not terminated 4959 properly. QUOTE_OMIT_TRAILING_0 should be used instead in case this 4960 behaviour is not intended. 4961 4962 * util.c (printstr_ex): Copy one excess byte in case of non-negative len 4963 provided and it is more than max_strlen; handle case of max_strlen of 0 4964 in case QUOTE_0_TERMINATED is set separately; check for need of printing 4965 ellipsis by checking resulting style against QUOTE_0_TERMINATED. 4966 4967 2016-11-09 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4968 4969 tests: check decoding of mq_{notify,open,timedreceive,timedsend,unlink} 4970 * tests/mq_sendrecv.c: New file. 4971 * tests/mq_sendrecv-read.c: Likewise. 4972 * tests/mq_sendrecv-write.c: Likewise. 4973 * tests/mq_sendrecv.test: New test. 4974 * tests/mq_sendrecv-read.test: Likewise. 4975 * tests/mq_sendrecv-write.test: Likewise. 4976 * tests/.gitignore: Add mq_sendrecv, mq_sendrecv-read, 4977 and mq_sendrecv-write. 4978 * tests/Makefile.am (check_PROGRAMS): Likewise. 4979 (mq_sendrecv_LDADD, mq_sendrecv_read_LDADD, mq_sendrecv_write_LDADD): 4980 New variables. 4981 (DECODER_TESTS): Add mq_sendrecv.test, mq_sendrecv-read.test, 4982 and mq_sendrecv-write.test. 4983 4984 2016-11-08 Dmitry V. Levin <ldv (a] altlinux.org> 4985 4986 tests: skip times.test if CLOCK_PROCESS_CPUTIME_ID does not work. 4987 * tests/times.c (main): Skip if clock_gettime consistenly returns zero 4988 for CLOCK_PROCESS_CPUTIME_ID timer. 4989 4990 2016-10-31 Eugene Syromyatnikov <evgsyr (a] gmail.com> 4991 4992 tests: add tests for perf_event_attr structure decoding in perf_event_open 4993 * configure.ac: Add checks for presence of various fields of struct 4994 perf_event_attr defined in kernel headers. 4995 * tests/perf_event_open.c: New file. 4996 * tests/perf_event_open_unabbrev.c: Likewise. 4997 * tests/perf_event_open.test: New test. 4998 * tests/perf_event_open_unabbrev.test: Likewise. 4999 * tests/.gitignore: Add perf_event_open, perf_event_open_unabbrev. 5000 * tests/Makefile.am (check_PROGRAMS): Likewise. 5001 (DECODER_TESTS): Add perf_event_open.test, perf_event_open_unabbrev.test. 5002 5003 Implement decoding of perf_event_attr structure in perf_event_open syscall 5004 * linux/perf_event_struct.h: New file, definition of struct perf_event_attr 5005 from Linux 4.8 5006 * Makefile.am (strace_SOURCES): Add it. 5007 * xlat/hw_breakpoint_len.in: New file. 5008 * xlat/hw_breakpoint_type.in: Likewise. 5009 * xlat/perf_attr_size.in: Likewise. 5010 * xlat/perf_branch_sample_type.in: Likewise. 5011 * xlat/perf_event_read_format.in: Likewise. 5012 * xlat/perf_event_sample_format.in: Likewise. 5013 * xlat/perf_hw_cache_id.in: Likewise. 5014 * xlat/perf_hw_cache_op_id.in: Likewise. 5015 * xlat/perf_hw_cache_op_result_id.in: Likewise. 5016 * xlat/perf_hw_id.in: Likewise. 5017 * xlat/perf_sw_ids.in: Likewise. 5018 * xlat/perf_type_id.in: Likewise. 5019 * perf.c [HAVE_LINUX_PERF_EVENT_H]: Remove inclusion of 5020 <linux/perf_event.h>. 5021 (PRINT_XLAT): New macro for simplifying printing values from 5022 sorted xlat. 5023 (printxlat_search): New function, wrapper for xlat_search with behaviour 5024 similar to printval. 5025 (print_perf_event_attr): New print_event_attr structure fetching and 5026 printing function. 5027 (SYS_FUNC(perf_event_open)): Use print_perf_event_attr for displaying 5028 attr argument contents. 5029 * tests/perf_event_open.c: Renamed to 5030 tests/perf_event_open_nonverbose.c. 5031 * tests/perf_event_open.test: add -e verbose=none in order to preserve 5032 output format being checked (in case verbose output is enabled, 5033 contents of attr arguments are shown now); rename to 5034 tests/perf_event_open_nonverbose.test; add -e trace=perf_event_open. 5035 5036 tests: fix name spelling. 5037 5038 2016-10-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5039 5040 tests: fix name spelling. 5041 5042 Update NEWS. 5043 5044 Fix typo in comment in tests/quotactl.h. 5045 5046 tests: fix invalid pointer checks in quotactl test. 5047 * tests/quotactl.h (bogus_special, bogus_addr): Move it... 5048 * tests/quotactl.c (main): ... here; remove static and const qualifiers, 5049 use memory after tail_alloc instead of magic numbers. 5050 * tests/quotactl-xfs.c (main): Likewise. 5051 5052 tests: fix invalid pointer checks in getcpu test. 5053 * test/getcpu.c (main): Replace magic numbers deemed invalid pointers 5054 with addresses after memory returned by tail_alloc. 5055 5056 tests: fix invalid pointer checks in request_key test. 5057 * test/request_key.c (main): Replace magic numbers deemed invalid pointers 5058 with addresses after memory returned by tail_alloc. 5059 5060 tests: fix invalid pointer checks in add_key test. 5061 * test/add_key.c (main): Replace magic numbers deemed invalid pointers 5062 with addresses after memory returned by tail_alloc. 5063 5064 statfs: use printxval_search. 5065 * print_statfs.c (print_statfs_type): Use printxval_search for printing 5066 FS magic xlat value. 5067 5068 util: add printing helper for sorted xlat arrays. 5069 * util.c (printxval_searchn): New function. 5070 * defs.h (printxval_searchn): New prototype. 5071 (printxval_search): New helper macro useful in conjunction with static 5072 xlat arrays. 5073 5074 defs: add check for argument being array to ARRAY_SIZE macro. 5075 * gcc_compat.h [GNUC_PREREQ(3, 0)] (BUILD_BUG_ON_ZERO): New macro. 5076 (SAME_TYPE, MUST_BE_ARRAY): Likewise. 5077 * defs.h (ARRAY_SIZE): Add MUST_BE_ARRAY for build-time type check. 5078 5079 tests: check decoding of oldfstat, oldlstat, and oldstat syscalls. 5080 * tests/oldfstat.c: New file. 5081 * tests/oldlstat.c: Likewise. 5082 * tests/oldstat.c: Likewise. 5083 * tests/oldfstat.test: New test. 5084 * tests/oldlstat.test: Likewise. 5085 * tests/oldstat.test: Likewise. 5086 * tests/xstatx.c [!OLD_STAT]: define OLD_STAT to 0. 5087 (print_stat) [OLD_STAT]: Print predefined values for 5088 st_blksize/st_blocks. 5089 (print_stat): Check for !OLD_STAT in nanosecond precision checks. 5090 (main) [OLD_STAT]: Ignore EOVERFLOW. 5091 (main): Test for successful rc in returned size value check; 5092 print address only on non-successful rc. 5093 * tests/.gitignore: Add oldfstat, oldlstat, and oldstat. 5094 * tests/Makefile.am (check_PROGRAMS): Likewise. 5095 (DECODER_TESTS): Add oldfstat.test, oldlstat.test, and oldstat.test. 5096 5097 tests: additional tests of stat decoders. 5098 * tests/fstatx.c (IS_FSTAT): Define to 1. 5099 * tests/fstatat64.c [__GLIBC__ && __sparc64__] (TEST_BOGUS_STRUCT_STAT): 5100 Define to 0. 5101 * tests/xstatx.c [!IS_STAT] (IS_STAT): Define to 0. 5102 [!TEST_BOGUS_STRUCT_STAT] (TEST_BOGUS_STRUCT_STAT): Define to 1. 5103 (main): Add a check for non-available pointer and a check 5104 for block device file. 5105 * tests/statx.sh: Add tracing of /dev/full file, specify alignment. 5106 * tests/fstat.test: Specify alignment. 5107 5108 2016-10-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5109 5110 tests: prepare for additional tests of stat decoders. 5111 PRINT_SYSCALL_HEADER/PRINT_SYSCALL_FOOTER now contain open/close brace 5112 pair in order to save errno. PRINT_SYSCALL_FOOTER now uses sprintrc for 5113 printing rc/errno. 5114 5115 * tests/xstatx.c: Include <errno.h>. 5116 (main): Update PRINT_SYSCALL_FOOTER call convention. 5117 * tests/fstatat.c (PRINT_SYSCALL_HEADER): Add errno saving. 5118 (PRINT_SYSCALL_FOOTER): Restore errno. 5119 * tests/fstatx.c: Likewise. 5120 * tests/lstatx.c: Likewise. 5121 5122 2016-10-28 Dmitry V. Levin <ldv (a] altlinux.org> 5123 5124 Provide a safe definition of O_ACCMODE. 5125 Some libcs e.g. musl are guilty of messing up with O_ACCMODE. 5126 5127 * open.c (O_ACCMODE): Redefine to 03. 5128 5129 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5130 5131 Implement dumping of mq_timedsend and mq_timedreceive syscalls. 5132 * syscall.c (dumpio): Add SEN_mq_timedreceive and SEN_mq_timedsend. 5133 5134 mq: print msg_prio as a pointer, not as an immediate value. 5135 * mq.c (SYS_FUNC(mq_timedreceive)): Use printnum_int for printing 5136 msg_prio argument. 5137 5138 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5139 5140 mq: print msg payload only in case of successful mq_timedreceive call. 5141 Also, use u_rval for determining message size. 5142 5143 * mq.c (SYS_FUNC(mq_timedreceive)): Check for syserror and non-negative 5144 u_rval before calling printstr on msg_ptr argument, or use printaddr otherwise; 5145 provide u_rval as string size. 5146 5147 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5148 5149 mq: Print msg_prio parameter as unsigned int in mq_timedsend. 5150 * mq.c (SYS_FUNC(mq_timedsend)): Change conversion specifier from "%ld" 5151 to "%u", cast argument value to unsigned int. 5152 5153 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5154 5155 mq: Properly print mq_flags field. 5156 mq_flags field of struct mq_attr can contain only O_NONBLOCK flag (other 5157 flags are treated as invalid by mq_getsetattr). Moreover, this field is 5158 ignored by mq_open at all (O_NONBLOCK is set via oflag, not via attr 5159 attribute). 5160 5161 * xlat/mq_attr_flags.in: New file. 5162 * print_mq_attr.c: Include xlat/mq_attr_flags.h. 5163 (printmqattr): New parameter, bool decode_flags; cast members of struct 5164 mq_attr to long long type; use mq_attr_flags xlat for printing mq_flags; 5165 print mq_flags as flags only in case decode_flags parameter is set 5166 to true. 5167 * mq.c (SYS_FUNC(mq_open)): Specify value of false for decode_flags 5168 parameter of printmqattr call. 5169 (SYS_FUNC(mq_getsetattr)): Specify value of true for decode_flags 5170 parameter of printmqattr call. 5171 * tests/mq.expected: Update expected output. 5172 5173 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5174 5175 mq: Print msg_len parameter as kernel_ulong_t. 5176 * mq.c (SYS_FUNC(mq_timedsend)): Change conversion specifier from "%lu" 5177 to "%llu", use getarg_ull for obtaining msg_len parameter. 5178 (SYS_FUNC(mq_timedreceive)): Likewise. 5179 5180 print_mq_attr: fix typo. 5181 * print_mq_attr.c (printmqattr): Print field name "mq_curmsgs" 5182 instead of "mq_curmsg". 5183 * tests/mq.expected: Update expected output. 5184 5185 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5186 5187 mq: print mqdes parameter as int. 5188 It is defined as int in <linux/posix_types.h>. 5189 5190 * mq.c (SYS_FUNC(mq_timedsend)): Use "%d" conversion specifier instead 5191 of "%ld" for printing mqdes (0th parameter), cast parameter value to 5192 int. 5193 (SYS_FUNC(mq_timedreceive)): Likewise. 5194 (SYS_FUNC(mq_notify)): Likewise. 5195 (SYS_FUNC(mq_getsetattr)): Likewise. 5196 5197 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5198 5199 mq: curly brackets usage fix. 5200 Use curly brackets for denoting blocks in both of if branches if they 5201 are already used in at least one branch. 5202 5203 tests: additional name_to_handle_at/open_by_handle_at checks. 5204 * tests/file_handle.c: Additional name_to_handle_at/open_by_handle_at 5205 checks. 5206 5207 tests: require only presence of __NR_* macros for file_handle test. 5208 * tests/file_handle.c: replace fcntl.h include with asm/unistd.h. 5209 [MAX_HANDLE_SZ]: change to defined __NR_name_to_handle_at 5210 && defined __NR_open_by_handle_at, add fcntl.h include 5211 [!MAX_HANDLE_SZ]: Add definition of MAX_HANDLE_SZ and struct 5212 file_handle. 5213 (main): Change name_to_handle_at and open_by_handle_at calls to syscall. 5214 5215 tests: proper type conversion in keyctl test. 5216 * tests/keyctl.c (printarg): Add intermediate conversion of arg to uintptr_t 5217 since kernel_ulong_t may be of different size. 5218 5219 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5220 5221 file_handle: use separate xlat for name_ta_handle_at flags. 5222 Since the only two flags supported are AT_SYMLINK_FOLLOW and 5223 AT_EMPTY_PATH. 5224 5225 * xlat/name_to_handle_at_flags.in: New file. 5226 * file_handle.c (SYS_FUNC(name_to_handle_at)): Use name_to_handle_at_flags 5227 for printing flags parameter. 5228 5229 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5230 5231 tests: check decoding of kexec_file_load and kexec_load syscalls. 5232 * tests/kexec_file_load.c: New file. 5233 * tests/kexec_load.c: Likewise. 5234 * tests/kexec_file_load.test: New test. 5235 * tests/kexec_load.test: Likewise. 5236 * tests/.gitignore: Add kexec_file_load and kexec_load. 5237 * tests/Makefile.am (check_PROGRAMS): Likewise. 5238 (DECODER_TESTS): Add kexec_file_load.test and kexec_load.test. 5239 5240 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5241 5242 kexec: use widen_to_ulong since kexec_load has compat on x32/n32. 5243 Curiously, kexec_load uses compat on x32/n32, so its parameters should 5244 be 4 bytes in size on these ABIs. 5245 5246 * kexec.c (SYS_FUNC(kexec_load)): Use widen_to_ulong for casting 5247 parameters to proper size on x32/n32. 5248 5249 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5250 5251 kexec: fix zeroing of higher bits of flags parameter in kexec_load. 5252 * kexec.c (SYS_FUNC(kexec_load)): Perform type conversion before 5253 negation in order to properly negate higher bits of KEXEC_ARCH_MASK. 5254 5255 kexec: add printing of struct kexec_segment field names. 5256 * kexec.c (print_seg): Print field names of the kexec_segment structure. 5257 5258 tests: check decoding of unshare syscall. 5259 * tests/unshare.c: New file. 5260 * tests/unshare.test: New test. 5261 * tests/.gitignore: Add unshare. 5262 * tests/Makefile.am (check_PROGRAMS): Likewise. 5263 (DECODER_TESTS): Add unshare.test. 5264 5265 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5266 5267 clone: use kernel_ulong_t as type of flags parameter of unshare call. 5268 Kernel declares flags parameter as long and looks like x32 and n32 5269 implement no compat for this call. 5270 5271 * clone.c (SYS_FUNC(unshare)): Use getarg_ull and printflags64 for 5272 obtaining and parsing flags parameter. 5273 5274 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5275 5276 clone: use separate flag list for unshare. 5277 Not all clone flags could be passed to unshare (see check_unshare_flags 5278 function in kernel/fork.c). 5279 5280 * xlat/unshare_flags.in: New file. 5281 * clone.c (SYS_FUNC(unshare)): Use unshare_flags for printing flags 5282 parameter. 5283 5284 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5285 5286 tests: check decoding of setns syscall. 5287 * tests/setns.c: New file. 5288 * tests/setns.test: New test. 5289 * tests/.gitignore: Add setns. 5290 * tests/Makefile.am (check_PROGRAMS): Likewise. 5291 (DECODER_TESTS): Add setns.test. 5292 5293 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5294 5295 clone: use separate xlat for nstype parameter of setns syscall. 5296 nstype is not flag set but specific type value against which it is 5297 compared in kernel (see kernel/nsproxy.c, SYSCALL_DEFINE2(setns, ...)). 5298 5299 * xlat/setns_types.in: New file. 5300 * clone.c: Use printxval and setns_types for nstype parameter. 5301 5302 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5303 5304 tests: check non-verbose capget/capset output. 5305 * tests/caps-abbrev.awk: New file. 5306 * tests/caps-abbrev.c: Likewise. 5307 * tests/caps-abbrev.test: New test. 5308 * tests/.gitignore: Add caps-abbrev. 5309 * tests/Makefile.am (check_PROGRAMS): Likewise. 5310 (DECODER_TESTS): Add caps-abbrev.test. 5311 (EXTRA_DIST): Add caps-abbrev.awk. 5312 5313 tests: additional capset decoder checks. 5314 * tests/caps.awk: Add patterns for additional checks. 5315 * tests/caps.c: Implement additional checks. 5316 5317 tests: check decoding of fanotify_init syscall. 5318 * tests/fanotify_init.c: New file. 5319 * tests/fanotify_init.test: New test. 5320 * tests/.gitignore: Add fanotify_init. 5321 * tests/Makefile.am (check_PROGRAMS): Likewise. 5322 (DECODER_TESTS): Add fanotify_init.test. 5323 5324 tests: some additional checks for fanotify_mark. 5325 * tests/fanotify_mark.c (do_call): New function. 5326 (main): Use it. 5327 5328 tests: use sprintrc in tests/fanotify_mark.c. 5329 * tests/fanotify.c (main): Use sprintrc. 5330 5331 tests: check decoding of {init,finit,delete}_module syscalls. 5332 * tests/delete_module.c: New file. 5333 * tests/finit_module.c: Likewise. 5334 * tests/init_delete_module.h: Likewise. 5335 * tests/init_module.c: Likewise. 5336 * tests/delete_module.test: New test. 5337 * tests/finit_module.test: Likewise. 5338 * tests/init_module.test: Likewise. 5339 * tests/.gitignore: Add delete_nodule, finit_module, and init_module. 5340 * tests/Makefile.am (check_PROGRAMS): Likewise. 5341 (DECODER_TESTS): Add delete_module.test, finit_module.test, 5342 and init_module.test. 5343 (EXTRA_DIST): Add init_delete_module.h. 5344 5345 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5346 5347 bjm: use getarg_ull for retrieving first two parameters of init_module syscall 5348 As init_module has no compat wrapper, its first parameter is a pointer 5349 and the second is length, they both have the same size as kernel_ulong_t 5350 type. 5351 5352 * bjm.c (SYS_FUNC(init_module)): Obtain first two parameters using 5353 getarg_ull, print address argument using printaddr_ull, print length 5354 argument using "%llu" conversion specifier. 5355 5356 2016-10-28 Dmitry V. Levin <ldv (a] altlinux.org> 5357 5358 Add printaddr_ull, change printaddr into a thin wrapper around it. 5359 * defs.h (printaddr_ull): New prototype. 5360 (printaddr): Change to a static inline wrapper around printaddr_ull. 5361 * util.c (printaddr): Rename to printaddr_ull, change argument type 5362 to unsigned long long, change print format to %#llx. 5363 5364 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5365 5366 xlat: add values for MODULE_INIT_* constants. 5367 * bjm.c (MODULE_INIT_IGNORE_MODVERSIONS, MODULE_INIT_IGNORE_VERMAGIC): 5368 Remove. 5369 * xlat/module_init_flags.in: Add values for 5370 MODULE_INIT_IGNORE_MODVERSIONS and MODULE_INIT_IGNORE_VERMAGIC records. 5371 5372 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5373 5374 Remove parser of create_module syscall. 5375 Since create_module syscall is present only in kernels before Linux 2.6 5376 and strace does not support those kernels, there is no use to keep this 5377 parser any longer. 5378 5379 * bjm.c (SYS_FUNC(create_module)): Remove. 5380 * linux/dummy.h (sys_create_module): Add stub alias. 5381 5382 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5383 5384 tests: check decoding of process_vm_readv and process_vm_writev syscalls 5385 * tests/process_vm_readv.c: New file. 5386 * tests/process_vm_readv_writev.c: Likewise. 5387 * tests/process_vm_writev.c: Likewise. 5388 * tests/process_vm_readv.test: New test. 5389 * tests/process_vm_writev.test: Likewise. 5390 * tests/.gitignore: Add process_vm_readv and process_vm_writev. 5391 * tests/Makefile.am (check_PROGRAMS): Likewise. 5392 (DECODER_TESTS): Add process_vm_readv.test and process_vm_writev.test. 5393 (EXTRA_DIST): Add process_vm_readv_writev.c. 5394 5395 process_vm: use widen_to_ulong for local_iovcnt, renote_iovcnt, and flags 5396 * process_vm.c (SYS_FUNC(process_vm_readv), 5397 SYS_FUNC(process_vm_writev)): Use widen_to_ulong for local_iovcnt, 5398 renote_iovcnt, and flags parameters. 5399 5400 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5401 5402 defs: add widen_to_ulong macro. 5403 This is similar to widen_to_long, but for unsigned values. 5404 5405 * defs.h (widen_to_ulong): New macro. 5406 5407 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5408 5409 process_vm: print pid argument as int. 5410 * process_vm.c (SYS_FUNC(process_vm_readv), 5411 SYS_FUNC(process_vm_writev)): Change conversion specifier for pid 5412 argument from "%ld" to "%d". 5413 5414 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5415 5416 process_vm: remove syserror check for iovec printing. 5417 This check had been done by print_array inside tprint_iov anyway. 5418 5419 * process_vm.c (SYS_FUNC(process_vm_readv)): Use tprint_iov_upto for 5420 printing local_iov; do not check for syserror, provide decode_iov 5421 parameter to tprint_iov{,_upto} based on its value instead. 5422 5423 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5424 5425 io: use umoven_or_printaddr_ignore_syserror as umove function in tprint_iov_upto 5426 This enables printing of iovec arrays even in case of failed syscall 5427 (failed syscall doesn't mean that iovec itself is inaccessible and 5428 useless). One caveat here is that we should explicitly provide proper 5429 IOV_DECODE_* value based on syserror value in case printing is performed 5430 on exiting; we can't simply override it to IOV_DECODE_ADDR on exiting 5431 when syserror is up, since this may be called by code which tries to 5432 print iovec containing local data, which should be perfectly accessible 5433 (on the other hand, there are no cases of such behaviour at the moment). 5434 5435 Since iovecs themselves are printed even if syscall has failed now, 5436 preadv test is updated to reflect this. It is notable, though, that this 5437 is the only place where this case is checked. 5438 5439 * io.c (tprint_iov_upto): Specify umoven_or_printaddr_ignore_syserror 5440 instead of umoven_or_printaddr as umoven_func parameter. 5441 (SYS_FUNC(readv), do_preadv): Specify decode_iov parameter value 5442 based on syserror(tcp) value. 5443 * scsi.c: (print_sg_io_v3_res, print_sg_io_v4_res): Likewise. 5444 * tests/preadv.c: Update expected output for the case when preadv 5445 with singe-item iovec failed. 5446 5447 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5448 5449 Move umoven_or_printaddr_ignore_syserror to util.c. 5450 * defs.h (umoven_or_printaddr_ignore_syserror): New prototype. 5451 * v4l2.c (umoven_or_printaddr_ignore_syserror): Move ... 5452 * util.c: ... here. 5453 5454 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5455 5456 v4l2: check for verbose flag in umoven_or_printaddr_ignore_syserror. 5457 This change makes behaviour of umoven_or_printaddr_ignore_syserror in 5458 line with umoven_or_printaddr when verbose flag is disabled. 5459 5460 * v4l2.c (umoven_or_printaddr_ignore_syserror): Simply call printaddr 5461 when verbose flag is unset. 5462 5463 2016-10-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5464 5465 tests: check decoding of kcmp syscall. 5466 * tests/kcmp.c: New file. 5467 * tests/kcmp.test: New test. 5468 * tests/.gitignore: Add kcmp. 5469 * tests/Makefile.am (check_PROGRAMS): Likewise. 5470 (DECODER_TESTS): Add kcmp.test. 5471 5472 2016-10-28 Dmitry V. Levin <ldv (a] altlinux.org> 5473 5474 kcmp: print index parameters of unknown commands as kernel_ulong_t. 5475 * lookup_dcookie.c (SYS_FUNC(kcmp)): Use getarg_ull to retrieve idx1 5476 and idx2, print them using %#llx format in case of unknown command. 5477 5478 2016-10-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5479 5480 tests: check decoding of inotify family syscalls. 5481 * tests/inotify.c: New file. 5482 * tests/inotify_init1.c: Likewise. 5483 * tests/inotify.test: New test. 5484 * tests/inotify_init1.test: Likewise. 5485 * tests/.gitignore: Add inotify and inotify_init1. 5486 * tests/Makefile.am (check_PROGRAMS): Likewise. 5487 (DECODER_TESTS): Add inotify.test and inotify_init1.test. 5488 5489 xlat: use IN_* prefix for inotify_init1 flag constants. 5490 * xlat/inotify_init_flags.in: Replace O_* prefix with IN_* prefix for 5491 O_NONBLOCK and O_CLOEXEC constants, provide fallback definitions. 5492 5493 tests: check decoding of lookup_dcookie syscall. 5494 * tests/lookup_dcookie.c: New file. 5495 * tests/lookup_dcookie.test: New test. 5496 * tests/.gitignore: Add lookup_dcookie. 5497 * tests/Makefile.am (check_PROGRAMS): Likewise. 5498 (DECODER_TESTS): Add lookup_dcookie.test. 5499 5500 2016-10-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5501 5502 lookup_dcookie: print len parameter as kernel_ulong_t. 5503 It is size_t and without compat on x32/n32. 5504 5505 * lookup_dcookie.c (SYS_FUNC(lookup_dcookie)): Change conversion 5506 specifier from "%lu" to "%llu", use getarg_ull for len argument 5507 retrieval. 5508 5509 2016-10-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5510 5511 defs.h: add offsetofend macro. 5512 Analogous to offsetof but returns structure offset after the specified 5513 field. Useful for checking whether specific field is present in obtained 5514 data or specifying amount of data to copy based on the (last) field needed. 5515 5516 * defs.h (offsetofend): New macro. 5517 5518 2016-10-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5519 5520 tests: move ARG_STR and similar macros to tests.h. 5521 * tests/add_key.c (_STR, ARG_STR): Move ... 5522 * tests/tests.h: ... here. 5523 (ARG_ULL_STR): New macro. 5524 * tests/keyctl.c (ARG_STR): Remove. 5525 * tests/quotactl.h (ARG_STR): Likewise. 5526 * tests/request_key.c (ARG_STR): Likewise. 5527 5528 tests: move LL_PAIR and LL_VAL_TO_PAIR macros to tests.h. 5529 * tests/fadvise.h (LL_PAIR, LL_VAL_TO_PAIR): Move ... 5530 * tests/tests.h: ... here. 5531 5532 tests: check decoding of ioprio_get and ioprio_set syscalls. 5533 * tests/ioprio.c: New file. 5534 * tests/ioprio.test: New test. 5535 * tests/.gitignore: Add ioprio. 5536 * tests/Makefile.am (check_PROGRAMS): Likewise. 5537 (DECODER_TESTS): Add ioprio.test. 5538 5539 2016-10-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5540 5541 xlat: provide fallback definitions for CLOCK_* constants. 5542 Since new values have been added gradually over various kernel versions, 5543 it's better to define them explicitly in order to avoid situations when 5544 strace built with older kernel headers cannot decode some recently 5545 defined values. 5546 5547 * xlat/clocknames.in: Add values for constants. 5548 5549 2016-10-26 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5550 5551 tests: move fill_memory and fill_memory_ex into a separate file. 5552 * tests/fill_memory.c: New file. 5553 * tests/Makefile.am (libtests_a_SOURCES): Add it. 5554 * tests/quotactl.h (fill_memory, fill_memory_ex): Move to fill_memory.c. 5555 * tests/tests.h (fill_memory, fill_memory_ex): New prototypes. 5556 5557 tests: add period parameter to fill_memory_ex. 5558 * tests/quotactl.h (fill_memory_ex): Add period parameter, 5559 use it as a divisor in non-constant part of value. 5560 (fill_memory): Specify period of 0x80 to fill_memory_ex call. 5561 * tests/quotactl-xfs.c (main): Likewise. 5562 5563 2016-10-05 Dmitry V. Levin <ldv (a] altlinux.org> 5564 5565 Post-release administrivia. 5566 * NEWS: Add a header line for the next release. 5567 * debian/changelog.in: Add a changelog entry for 4.14-1. 5568 * strace.spec.in: Likewise. 5569 5570 2016-10-04 Dmitry V. Levin <ldv (a] altlinux.org> 5571 5572 Prepare for 4.14 release. 5573 * NEWS: Update for 4.14 release. 5574 5575 Generate SEN numbers in a locale independent order. 5576 * generate_sen.sh: Sort SEN numbers using C collation rules. 5577 5578 2016-10-04 Dmitry V. Levin <ldv (a] altlinux.org> 5579 5580 Assume that offsetof is provided by stddef.h. 5581 According to C89, <stddef.h> shall define offsetof macro. 5582 5583 * defs.h: Include <stddef.h> unconditionally. 5584 [!offsetof]: Remove. 5585 5586 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5587 5588 tests: check decoding of add_key, keyctl, and request_key syscalls. 5589 * tests/add_key.c: New file. 5590 * tests/keyctl.c: Likewise. 5591 * tests/request_key.c: Likewise. 5592 * tests/add_key.test: New test. 5593 * tests/keyctl.test: Likewise. 5594 * tests/request_key.test: Likewise. 5595 * tests/.gitignore: Add add_key, keyctl, and request_key. 5596 * tests/Makefile.am (check_PROGRAMS): Likewise. 5597 (DECODER_TESTS): Add add_key.test, keyctl.test, and request_key.test. 5598 5599 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5600 5601 keyctl: use kernel_ulong_t and getarg_ull instead of long. 5602 This potentially fixes keyctl decoder for x32 personality. 5603 5604 * keyctl.c (keyctl_update_key, keyctl_read_key, keyctl_instantiate_key, 5605 keyctl_instantiate_key_iov, keyctl_dh_compute): Change addr and len 5606 arguments to kernel_ulong_t. Print len using %llu format. 5607 (keyctl_keyring_search): Change addr1 and addr2 arguments 5608 to kernel_ulong_t. 5609 (print_dh_params): Change addr argument to kernel_ulong_t. 5610 (SYS_FUNC(keyctl)): Retrieve arguments via getarg_ull, pass them 5611 to the appropriate handlers. 5612 5613 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5614 5615 keyctl: fix parameter signedness. 5616 * keyctl.c (keyctl_update_key): Change addr and len arguments 5617 to unsigned. 5618 (keyctl_read_key): Likewise. 5619 (keyctl_instantiate_key): Likewise. 5620 (keyctl_instantiate_key_iov): Likewise. 5621 (keyctl_dh_compute): Likewise. 5622 (keyctl_keyring_search): Change addr1 and addr2 arguments to unsigned. 5623 (keyctl_chown_key): Change user and group arguments to unsigned. 5624 (keyctl_get_persistent): Change uid argument to unsigned. 5625 5626 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5627 5628 keyctl: use printstr_ex for printing out buffer. 5629 keyctl_read_key had subtle bug by treating out buffer in KEYCTL_READ 5630 as NUL-terminated, which is not true. We fix it by adding parameter to 5631 keyctl_read_key signalising whether buffer is NUL-terminated and using 5632 printstr_ex for printing (expectedly) NUL-terminated strings. 5633 5634 * keyctl.c (keyctl_read_key): Add has_nul parameter. Do not use -1 as 5635 string len. Use printstr_ex for buffer output with user style depending 5636 on has_nul value. 5637 (SYS_FUNC(keyctl)): Specify has_nul parameter to keyctl_read_key 5638 by comparing cmd value with KEYCTL_READ. 5639 5640 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5641 5642 Add printstr_ex which allows for providing user quotation style. 5643 This is useful for providing QUOTE_OMIT_TRAILING_0 and maybe other 5644 flags. 5645 5646 * defs.h (printstr_ex): New prototype. 5647 (printstr): Change to a wrapper around printstr_ex with zero user style. 5648 * util.c (printstr): Rename to ... 5649 (printstr_ex) ... new function, add user_style argument which is or'ed 5650 with computed style. 5651 5652 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5653 5654 util: add quote_string flag signalising that string is NUL-terminated. 5655 It is useful in cases strings with size provided are expected to be 5656 NUL-terminated but are not trustworthy enough to call just plain 5657 printstr(str, -1). 5658 5659 * defs.h (QUOTE_OMIT_TRAILING_0): New constant definition. 5660 * util.c (string_quote): Swallow terminating NUL if 5661 QUOTE_OMIT_TRAILING_0 is set. 5662 5663 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5664 5665 keyctl: add support for KEYCTL_DH_COMPUTE. 5666 * keyctl.c (struct keyctl_dh_params): New structure. 5667 (print_dh_params, keyctl_dh_compute): New functions. 5668 (SYS_FUNC(keyctl)): Add support for KEYCTL_DH_COMPUTE cmd value. 5669 5670 2016-10-03 Dmitry V. Levin <ldv (a] altlinux.org> 5671 5672 x86_64: fix is_negated_errno for x32 personality. 5673 * syscall.c (is_negated_errno) [X86_64]: Do not truncate kernel_ulong_t 5674 to uint32_t for x32 personality. 5675 5676 tests: fix another regression in qual_syscall.test. 5677 * tests/qual_syscall.test: Fix pattern_nonabbrev_verbose pattern. 5678 (check_output_mismatch): Print the pattern that triggered match failure. 5679 5680 Use err_name, print unrecognized errno values as numbers. 5681 * syscall.c (trace_syscall_exiting): Use err_name() instead 5682 of open-coding it. Print unrecognized errno values using %lu format 5683 instead of ERRNO_%lu as the latter prodices an invalid constant. 5684 5685 2016-10-03 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5686 5687 keyctl: print errno name in KEYCTL_REJECT in case it is available. 5688 * keyctl.c (keyctl_reject_key): Get errno string via err_name 5689 and print it if it is not NULL. 5690 5691 Add function for getting errno string. 5692 * defs.h (err_name): New prototype. 5693 * syscall.c (err_name): New function. 5694 5695 2016-10-03 Dmitry V. Levin <ldv (a] altlinux.org> 5696 5697 struct tcb: change the type of u_error field from int to unsigned long. 5698 This is the type actually used for the error code on architectures 5699 that use a dedicated register. 5700 5701 * defs.h (struct tcb): Change the type of u_error to unsigned long. 5702 * syscall.c (trace_syscall_exiting): Change the type of u_error variable 5703 to unsigned long, print it using %lu format, drop no longer needed 5704 explicit cast to unsigned long. 5705 (saved_u_error): Change type to unsigned long. 5706 5707 2016-10-02 Dmitry V. Levin <ldv (a] altlinux.org> 5708 5709 Use tprints instead of tprintf in a few more places. 5710 * btrfs.c (btrfs_print_qgroup_inherit, btrfs_print_tree_search, 5711 btrfs_ioctl): Replace tprintf with tprints for printing strings without 5712 format specifiers. 5713 * net.c (print_group_req): Likewise. 5714 * scsi.c (scsi_ioctl): Likewise. 5715 * term.c (decode_termios, decode_termio): Likewise. 5716 * userfaultfd.c (uffdio_ioctl): Likewise. 5717 5718 2016-10-02 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5719 5720 keyctl: do not print comma for KEYCTL_SESSION_TO_PARENT command. 5721 Since this command doesn't have any additional arguments, the comma does 5722 not needed. Since this is the only command which lacks additional 5723 arguments, it's better to add special case for it rather than add 5724 printing of comma to all other commands. 5725 5726 * keyctl.c (SYS_FUNC(keyctl)): Add check for command not being 5727 KEYCTL_SESSION_TO_PARENT when printing comma dividing cmd argument 5728 from the rest. 5729 5730 2016-10-02 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5731 5732 keyctl: use getarg_ull for printing generic arguments. 5733 Otherwise it is erroneous on x32, for example. 5734 5735 * keyctl.c (SYS_FUNC(keyctl)): Use "%#llx" conversion specifier 5736 and getarg_ull for fallback argument printing. 5737 5738 2016-10-02 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5739 5740 keyctl: use printuid for printing UID/GID. 5741 UID/GID are unsigned except special -1 value (which is also special in 5742 context of specific keyctl commands), so special printing function 5743 should be used. 5744 5745 * keyctl.c (keyctl_chown_key, keyctl_get_persistent): Use printuid 5746 instead of printf with "%d" conversion for printing UID/GID. 5747 5748 2016-10-02 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5749 5750 io: handle data_size of -1 as unlimited data in print_iovec. 5751 Otherwise it can be depleted and print_iovec starts printing empty 5752 strings. 5753 5754 * io.c (print_iovec): Interpret c->data_size of -1 as unlimited data 5755 and do not decrease it in this case. 5756 5757 2016-10-01 Dmitry V. Levin <ldv (a] altlinux.org> 5758 5759 tests: fix typo in qual_syscall.test. 5760 Fix test regression introduced by commit v4.13-225-g55334ef. 5761 5762 * tests/qual_syscall.test: Fix typo. 5763 5764 2016-09-30 Dmitry V. Levin <ldv (a] altlinux.org> 5765 5766 Enhance -e abbrev=set, -e raw=set, and -e verbose=set. 5767 Enhance abbrev=, raw=, and verbose= to accept the same syntax as trace=. 5768 For example, this allows such syntax as -e verbose=file. 5769 5770 * syscall.c (lookup_class): Define before qual_syscall. 5771 (qualify): Move the loop based on lookup_class ... 5772 (qual_syscall): ... here. 5773 * tests/qual_syscall.test: Check it. 5774 5775 2016-09-30 Dmitry V. Levin <ldv (a] altlinux.org> 5776 5777 tests/qual_syscall.test: rewrite without ls. 5778 * tests/qual_syscall.test: Invoke ./umovestr instead of ls. 5779 Update expected output. 5780 5781 2016-09-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5782 5783 tests: check decoding of fadvise64 and fadvise64_64 syscalls. 5784 * tests/fadvise.h: New file. 5785 * tests/fadvise64.c: Likewise. 5786 * tests/fadvise64_64.c: Likewise. 5787 * tests/fadvise64.test: New test. 5788 * tests/fadvise64_64.test: Likewise. 5789 * tests/.gitignore: Add fadvise64 and fadvise64_64. 5790 * tests/Makefile.am (check_PROGRAMS): Likewise. 5791 (DECODER_TESTS): Add fadvise64.test, fadvise64_64.test. 5792 (EXTRA_DIST): Add fadvise.h. 5793 5794 2016-09-28 Dmitry V. Levin <ldv (a] altlinux.org> 5795 5796 mips o32: implement fetching the 7th subcall argument. 5797 * syscall.c [LINUX_MIPSO32] (decode_mips_subcall): Fetch the last 5798 argument of 7-arg syscalls. 5799 5800 2016-09-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5801 5802 x32: use proper decoder for fadvise64 syscall. 5803 fadvise_64_64 decoder used before this change prints different sign 5804 of the "len" argument (loff_t vs size_t). 5805 5806 * linux/x32/syscallent.h (fadvise64): Replace SEN(fadvise64_64) 5807 with SEN(fadvise64). 5808 5809 2016-09-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5810 5811 fadvise: use getarg_ull for obtaining len argument of fadvise64 syscall. 5812 Since its type is size_t, it is 64-bit wide on x32 and special care 5813 should be taken in order to obtain it. 5814 5815 * fadvise.c (SYS_FUNC(fadvise64)): Use getarg_ull for obtaining value 5816 of "len" syscall argument. 5817 5818 2016-09-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5819 5820 util: add getarg_ll and getarg_ull functions. 5821 These allow retrieving specific argument in full taking into account 5822 peculiarities of runtimes which employ tcp->ext_arg (e.g. x32). 5823 5824 * defs.h (getarg_ll, getarg_ull): New prototypes. 5825 * util.c (getarg_ll, getarg_ull): New functions. 5826 (printargs): Use getarg_ull. 5827 5828 2016-09-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5829 5830 fadvise: change printing of len argument to unsigned in fadvise64 syscall 5831 The kernel declares fadvise64 as 5832 long sys_fadvise64(int fd, loff_t offset, size_t len, int advice); 5833 5834 * fadvise.c (SYS_FUNC(fadvise64)): Change conversion specifier from 5835 "%ld" to "%lu" for printing len argument since kernel expects argument 5836 of type size_t. 5837 5838 2016-09-28 Dmitry V. Levin <ldv (a] altlinux.org> 5839 5840 sh64, sparc64: use proper decoder for fadvise64_64 syscall. 5841 This change is no-op yet, but things will change when decoder 5842 of fadvise64 syscall get fixed. 5843 5844 * linux/sh64/syscallent.h (fadvise64_64): Replace SEN(fadvise64) 5845 with SEN(fadvise64_64). 5846 * linux/sparc64/syscallent.h (fadvise64_64): Likewise. 5847 5848 2016-09-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5849 5850 tests: check decoding of fallocate syscall. 5851 * configure.ac (AC_CHECK_FUNCS): Add fallocate. 5852 * tests/fallocate.c: New file. 5853 * tests/fallocate.test: New test. 5854 * tests/.gitignore: Add fallocate. 5855 * tests/Makefile.am (check_PROGRAMS): Likewise. 5856 (DECODER_TESTS): Add fallocate.test. 5857 5858 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5859 5860 fallocate: change print format of offset and len arguments to signed. 5861 Since types of these arguments are off_t and kernel actually expects 5862 signed values in order to fail when negative values are provided, 5863 lets display these values as signed. 5864 5865 * fallocate.c (SYS_FUNC(fallocate)): Change conversion specifier for 5866 printing "offset" and "len" syscall arguments from %llu to %lld. 5867 5868 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5869 5870 xlat: add default values for falloc_flags constants. 5871 In order to avoid dependence of declared constants to headers available 5872 on build system. 5873 5874 * xlat/falloc_flags.in: Add default values for constants. 5875 5876 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5877 5878 tests: check decoding of getcpu syscall. 5879 * tests/getcpu.c: New file. 5880 * tests/getcpu.test: New test. 5881 * tests/.gitignore: Add getcpu. 5882 * tests/Makefile.am (check_PROGRAMS): Likewise. 5883 (DECODER_TESTS): Add getcpu.test. 5884 5885 tests: make magic values in ioctl_block test distinctive. 5886 * tests/ioctl.block (init_magic): Add iterator value to magic value 5887 in order to enable detection of potential 4-byte aligned shifts. 5888 5889 tests: additional getcwd decoding checks. 5890 * tests/getcwd.c (main): Add more checks for getcwd arguments decoding. 5891 5892 tests: check decoding of quotactl syscall. 5893 * configure.ac (AC_CHECK_HEADERS): Add linux/dqblk_xfs.h, linux/quota.h, 5894 and sys/quota.h. 5895 * tests/.gitignore: Add quotactl, quotactl-v, quotactl-xfs, 5896 and quotactl-xfs-v. 5897 * tests/Makefile.am (check_PROGRAMS): Likewise. 5898 (DECODER_TESTS): Add quotactl.test, quotactl-v.test, 5899 quotactl-xfs.test, and quotactl-xfs-v.test. 5900 (EXTRA_DIST): Add quotactl.h 5901 * quotactl.h: New file. 5902 * quotactl.c: Likewise. 5903 * quotactl-v.c: Likewise. 5904 * quotactl-xfs.c: Likewise. 5905 * quotactl-xfs-v.c: Likewise. 5906 * quotactl.test: New test. 5907 * quotactl-v.test: Likewise. 5908 * quotactl-xfs.test: Likewise. 5909 * quotactl-xfs-v.test: Likewise. 5910 5911 2016-09-27 Dmitry V. Levin <ldv (a] altlinux.org> 5912 5913 quota: ensure that names of structure fields are printed properly. 5914 * quota.c (PRINT_FIELD_D, PRINT_FIELD_U, PRINT_FIELD_X): New macros. 5915 (decode_cmd_data): Use them to print structure fields. 5916 5917 Enhance zero_extend_signed_to_ull and sign_extend_unsigned_to_ll macros. 5918 * defs.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll): 5919 Add support of char types. 5920 * tests/tests.h (zero_extend_signed_to_ull, sign_extend_unsigned_to_ll): 5921 Likewise. 5922 5923 quota: move Q_QUOTAON handling to subcommand switch statement. 5924 * quota.c (SYS_FUNC(quotactl)): Move handling of Q_QUOTAON subcommand ... 5925 (decode_cmd_data): ... here. 5926 5927 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5928 5929 quota: remove legacy subcommand decoding support code. 5930 Support for these quota subcommands by linux kernels has been dropped 5931 long time ago (between 2.5.16 and 2.5.17), so lets drop it in order 5932 to minimize amount of code which should be subjected to testing and 5933 structured conversion. 5934 5935 * quota.c (struct v1_dqblk, struct v2_dqblk, struct v2_dqinfo, 5936 struct v1_dqstats, struct v2_dqstats): Remove. 5937 (decode_cmd_data): Remove handling of Q_V1_GETQUOTA, Q_V1_SETQUOTA, 5938 Q_V2_GETQUOTA, Q_V2_SETQUOTA, Q_V2_GETINFO, Q_V2_SETINFO, Q_V1_GETSTATS, 5939 and Q_V2_GETSTATS subcommands. 5940 (SYS_FUNC(quotactl)): Remove handling of Q_V1_QUOTAON subcommand. 5941 5942 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5943 5944 quota: add realtime block limits fields to XFS disk quota printing code. 5945 * quota.c (decode_cmd_data): Add printing of d_rtb_hardlimit 5946 and d_rtb_softlimit fields to struct xfs_dqblk printing code. 5947 5948 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5949 5950 quota: add packed attribute to struct if_dqblk definition. 5951 Since the only difference between 32-bit and 64-bit environments 5952 regarding this structure is its padding, lets just add packed attribute 5953 to its definition instead of going full mpers. 5954 5955 * quota.c (struct if_dqblk): Add ATTRIBUTE_PACKED. 5956 5957 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5958 5959 quota: Add decoding for Q_XQUOTARM subcommand. 5960 * quota.c (decode_cmd_data): Add Q_XQUOTARM handling to subcommand 5961 switch. 5962 5963 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5964 5965 quota: add dispatch of SYNC subcommands. 5966 Q_XQUOTASYNC is no-op, but it does not require id/addr arguments anyway. 5967 5968 * quota.c (decode_cmd_data): Add Q_SYNC and Q_XQUOTASYNC to subcommand 5969 dispatch switch since id/addr arguments for these subcommands are known 5970 to be ignored. 5971 5972 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5973 5974 quota: add missing prefixes to struct field names. 5975 * quota.c (decode_cmd_data): Print field names in accordance with 5976 their definition. 5977 5978 quota: fix indentation inside subcommand dispatching switch statement. 5979 5980 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5981 5982 quota: avoid printing id argument for those commands that ignore it. 5983 As id argument is not used for Q_QUOTAOFF, Q_GETFMT, Q_V2_GETINFO, 5984 Q_GETINFO, Q_V2_SEETINFO, Q_SETINFO, Q_SYNC, Q_XQUOTAON, Q_XQUOTAOFF, 5985 Q_XQUOTARM, Q_XGETQSTAT, Q_XGETQSTATV, Q_XQUOTASYNC, Q_V1_GETSTATS, and 5986 Q_V2_GETSTATS subcommands, do not print it for these subcommands. 5987 5988 * quota.c (decode_cmd_data): Add id argument parameter, add printing 5989 of id argument for Q_GETQUOTA, Q_SETQUOTA, Q_GETNEXTQUOTA, 5990 Q_V1_GETQUOTA, Q_V1_SETQUOTA, Q_V2_GETQUOTA, Q_V2_SETQUOTA, 5991 Q_XGETQUOTA, Q_XGETNEXTQUOTA, Q_XSETQLIM, and unknown subcommands. 5992 (SYS_FUNC(quotactl)): Remove printing of id argument, pass it 5993 to decode_cmd_data. 5994 5995 2016-09-27 Eugene Syromyatnikov <evgsyr (a] gmail.com> 5996 5997 quota: use printuid for id parameter printing. 5998 * quota.c (SYS_FUNC(quotactl)): Since id call argument is used for 5999 user/group/project ID which all have special semantics for -1, 6000 print it the same way as UIDs are printed. 6001 6002 quota: display quota subcommand as a macro. 6003 * quota.c (SYS_FUNC(quotactl)): Replace disjunction of two xlat values 6004 (which also lacks shift of the left part) with QCMD macro call. 6005 6006 2016-09-26 Dmitry V. Levin <ldv (a] altlinux.org> 6007 6008 tests: use VERBOSE macro in waitid and waitid-v tests. 6009 * tests/waitid-v.c (VERBOSE_RUSAGE): Remove. 6010 (VERBOSE): Define to 1. 6011 * tests/waitid.c (sprint_rusage): Check VERBOSE instead 6012 of VERBOSE_RUSAGE. 6013 6014 tests: use VERBOSE macro in wait4 and wait4-v tests. 6015 * tests/wait4-v.c (VERBOSE_RUSAGE): Remove. 6016 (VERBOSE): Define to 1. 6017 * tests/wait4.c (sprint_rusage): Check VERBOSE instead 6018 of VERBOSE_RUSAGE. 6019 6020 tests: use VERBOSE macro in msg_control and msg_control-v tests. 6021 * tests/msg_control-v.c (VERBOSE_MSGHDR): Remove. 6022 (VERBOSE): Define to 1. 6023 * tests/msg_control.c (print_fds, print_ip_opts): Check VERBOSE instead 6024 of VERBOSE_MSGHDR. 6025 6026 tests: use VERBOSE macro in mmsg_name and mmsg_name-v tests. 6027 * tests/mmsg_name-v.c (VERBOSE_MMSGHDR): Remove. 6028 (VERBOSE): Define to 1. 6029 * tests/mmsg_name.c (test_mmsg_name): Check VERBOSE instead 6030 of VERBOSE_MMSGHDR. 6031 6032 tests: use VERBOSE macro in ioctl_rtc and ioctl_rtc-v tests. 6033 * tests/ioctl_rtc-v.c (VERBOSE_IOCTL): Remove. 6034 (VERBOSE): Define to 1. 6035 * tests/ioctl_rtc.c (print_rtc_time): Check VERBOSE instead 6036 of VERBOSE_IOCTL. 6037 6038 tests: use VERBOSE macro in ioctl_evdev and ioctl_evdev-v tests. 6039 * tests/ioctl_evdev-v.c (VERBOSE_IOCTL): Remove. 6040 (VERBOSE): Define to 1. 6041 * tests/ioctl_evdev.c: Check VERBOSE instead of VERBOSE_IOCTL. 6042 6043 tests: use VERBOSE macro in execveat and execveat-v tests. 6044 * tests/execveat-v.c (VERBOSE_EXECVEAT): Remove. 6045 (VERBOSE): Define to 1. 6046 * tests/execveat.c (main): Check VERBOSE instead of VERBOSE_EXECVEAT. 6047 6048 tests: use VERBOSE macro in execve and execve-v tests. 6049 * tests/execve-v.c (VERBOSE_EXECVE): Remove. 6050 (VERBOSE): Define to 1. 6051 * tests/execve.c (main): Check VERBOSE instead of VERBOSE_EXECVE. 6052 6053 2016-09-26 Dmitry V. Levin <ldv (a] altlinux.org> 6054 6055 tests: add VERBOSE macro. 6056 Introduce VERBOSE macro (defaults to 0) that is expected to be defined 6057 to 1 by code testing "strace -v" output. 6058 6059 * tests/tests.h [!VERBOSE] (VERBOSE): New macro. 6060 6061 2016-09-20 Dmitry V. Levin <ldv (a] altlinux.org> 6062 6063 decode_open: print the mode argument when O_TMPFILE flag is set. 6064 O_TMPFILE reqires the mode argument (just like O_CREAT), so print it. 6065 6066 * open.c (STRACE_O_TMPFILE): New macro. 6067 (decode_open): Print the mode argument when O_TMPFILE flag is set. 6068 * tests/open.c (main): Check it. 6069 Fixes RH#1377846. 6070 6071 2016-09-20 Dmitry V. Levin <ldv (a] altlinux.org> 6072 6073 tests: use sprintrc in tests/ptrace.c. 6074 * tests/ptrace.c (errstr): New static variable. 6075 (do_ptrace): Initialize it using sprintrc. 6076 (test_peeksiginfo, main): Use errstr. 6077 6078 tests: use sprintrc in tests/netlink_protocol.c. 6079 * tests/netlink_protocol.c (main): Use sprintrc. 6080 6081 tests: use sprintrc in tests/fchownat.c. 6082 * tests/fchownat.c (main): Use sprintrc. 6083 6084 tests: use sprintrc in tests/fchmodat.c. 6085 * tests/fchmodat.c (main): Use sprintrc. Add more fchmodat decoding tests. 6086 6087 tests: use sprintrc in tests/fchmod.c. 6088 * tests/fchmod.c (main): Use sprintrc. Add more fchmod decoding tests. 6089 * tests/fchmod.test: Update the value specified for strace -a parameter. 6090 6091 tests: use sprintrc in tests/getgroups.c. 6092 * tests/getgroups.c (main): Use sprintrc. 6093 6094 tests: use sprintrc in tests/setgroups.c. 6095 * tests/setgroups.c (main): Use sprintrc. 6096 6097 2016-09-19 Dmitry V. Levin <ldv (a] altlinux.org> 6098 6099 tests/utime.c: rewrite without assert. 6100 * tests/utime.c: Do not include <assert.h>. 6101 (main): Use sprintrc instead of assert. 6102 6103 tests/xattr.c: rewrite without assert. 6104 * tests/xattr.c: Do not include <assert.h>. 6105 (main): Use sprintrc instead of assert. 6106 6107 tests: use sprintrc in tests/xchownx.c. 6108 * tests/xchownx.c (main): Do not include <errno.h>. Use sprintrc. 6109 6110 tests/xstatfsx.c: fix potential errno clobbering. 6111 * tests/xstatfsx.c (main): Use sprintrc. 6112 6113 2016-09-19 Dmitry V. Levin <ldv (a] altlinux.org> 6114 6115 Add more fs magic constants. 6116 Add *_MAGIC constants defined for some relatively widespread 6117 non-mainline filesystems. 6118 6119 * xlat/fsmagic.in: Add AUFS_SUPER_MAGIC, GPFS_SUPER_MAGIC, 6120 VZFS_SUPER_MAGIC, and ZFS_SUPER_MAGIC constants. 6121 6122 2016-09-15 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6123 6124 tests: fix whitespace for explicit type casts in futex test. 6125 6126 2016-09-14 Dmitry V. Levin <ldv (a] altlinux.org> 6127 6128 Add more fs magic constants. 6129 Add *_MAGIC constants defined inside linux fs but not explicitly 6130 exported via linux uapi. 6131 6132 * xlat/fsmagic.in: Add HFS_SUPER_MAGIC, HFSPLUS_SUPER_MAGIC, 6133 EXOFS_SUPER_MAGIC, CEPH_SUPER_MAGIC, UBIFS_SUPER_MAGIC, JFS_SUPER_MAGIC, 6134 BEFS_SUPER_MAGIC, NTFS_SB_MAGIC, XFS_SB_MAGIC, CONFIGFS_MAGIC, 6135 FUSE_CTL_SUPER_MAGIC, FUSE_SUPER_MAGIC, AFS_FS_MAGIC, OCFS2_SUPER_MAGIC, 6136 VXFS_SUPER_MAGIC, LOGFS_MAGIC, SMB2_MAGIC_NUMBER, and CIFS_MAGIC_NUMBER 6137 constants. 6138 6139 2016-09-14 Dmitry V. Levin <ldv (a] altlinux.org> 6140 6141 Update fs *_MAGIC constants. 6142 Add fs *_MAGIC constants exported by linux uapi. 6143 6144 * xlat/fsmagic.in: Add BFS_MAGIC, GFS2_MAGIC, and ROMFS_MAGIC constants 6145 defined in linux/bfs_fs.h, linux/gfs2_ondisk.h, and linux/romfs_fs.h, 6146 respectively. 6147 6148 2016-09-13 Dmitry V. Levin <ldv (a] altlinux.org> 6149 6150 tests: workaround limited semctl implementation in musl. 6151 musl libc forwards semctl command argument for 8 known commands only, 6152 for all the rest it passes 0 instead. 6153 6154 * tests/ipc_sem.c (main): Update semctl expected output. 6155 6156 2016-09-13 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6157 6158 tests: add more IPC decoding checks. 6159 * tests/ipc_msg.c: Additional msgget (parameter format) and msgctl 6160 (parameter format, decoding of struct msqid_ds in IPC_SET/IPC_STAT 6161 commands) checks. 6162 * tests/ipc_sem.c: Additional semget and semctl checks. 6163 * tests/ipc_shm.c: Additional shmget and shmctl checks. 6164 * tests/semop.c: Additional semop checks. Add checks for semtimedop. 6165 * tests/semop.test: Add explicit -e parameter in order to trace both 6166 semop and semtimedop. 6167 * tests/shmxt.c: Additional shmat and shmdt checks. 6168 6169 2016-09-12 Dmitry V. Levin <ldv (a] altlinux.org> 6170 6171 .mailmap: add addresses of Dr. David Alan Gilbert. 6172 * .mailmap: Add both addresses of Dr. David Alan Gilbert here to avoid 6173 duplications in CREDITS file. 6174 6175 2016-09-12 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6176 6177 .mailmap: add canonical name for Eugene Syromyatnikov. 6178 This is needed due to apparent deviation in spelling of commit author 6179 name in several commits. 6180 6181 * .mailmap: Add canonical name for Eugene Syromyatnikov. 6182 6183 2016-09-12 Dmitry V. Levin <ldv (a] altlinux.org> 6184 6185 Update generic ioctl entries from linux 4.8. 6186 * linux/64/ioctls_inc.h: Update from linux v4.8 using ioctls_gen.sh. 6187 * linux/32/ioctls_inc_align32.h: Likewise. 6188 * linux/32/ioctls_inc_align64.h: Likewise. 6189 6190 2016-09-12 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 6191 6192 x32: update ioctl entries from linux 4.8. 6193 * linux/x32/ioctls_inc0.h: Update from linux v4.8 using ioctls_gen.sh. 6194 6195 maint: update for linux 4.8. 6196 * maint/ioctls_sym.sh: Add workarounds for linux/atm_zatm.h and 6197 xen/evtchn.h files. 6198 6199 2016-09-12 Dmitry V. Levin <ldv (a] altlinux.org> 6200 6201 tests: use sprintrc_grep in tests/ipc_shm.c. 6202 * tests/ipc_shm.c (main): Use sprintrc_grep. 6203 6204 tests: use sprintrc_grep in tests/ipc_sem.c. 6205 * tests/ipc_sem.c (main): Use sprintrc_grep. 6206 6207 2016-09-11 Dmitry V. Levin <ldv (a] altlinux.org> 6208 6209 tests: use sprintrc_grep in tests/ipc_msg.c. 6210 * tests/ipc_msg.c (main): Use sprintrc_grep. 6211 6212 2016-09-10 Dmitry V. Levin <ldv (a] altlinux.org> 6213 6214 tests: use sprintrc in tests/chmod.c. 6215 * tests/chmod.c (main): Use sprintrc. Add more chmod decoding tests. 6216 6217 2016-09-09 Dmitry V. Levin <ldv (a] altlinux.org> 6218 6219 ipc: fix printing of nsops argument of semop and semtimedop syscalls. 6220 According to POSIX, nsops argument of semop syscall has type size_t, 6221 but the kernel treats nsops argument of semop and semtimedop syscalls 6222 as unsigned int. 6223 6224 * ipc_sem.c (tprint_sembuf_array): Change type of "count" argument 6225 from unsigned long to unsigned int, print it using %u format. 6226 6227 2016-09-09 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6228 6229 tests/aio.c: bring indentation in conformance with the rest of the file. 6230 6231 2016-09-09 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6232 6233 tests: use predefined constant in aio_context_t checks in aio test. 6234 Also fix io_cancel and io_destroy checks which did not check correct 6235 printing of context argument properly. 6236 6237 * tests/aio.c (main): Update syscall checks in order to use newly 6238 defined bogus_ctx constant. 6239 6240 2016-09-09 Dmitry V. Levin <ldv (a] altlinux.org> 6241 6242 Mark io_setup and io_destroy as memory mapping related syscalls. 6243 As io_setup syscall allocates some memory using do_mmap_pgoff, and 6244 io_destroy deallocates this memory using vm_munmap, set TRACE_MEMORY 6245 flag for all sysentries of io_setup and io_destroy using the following 6246 oneliner: 6247 sed -ri '/io_setup|io_destroy/ s/0,/TM,/' linux/*/syscallent*.h 6248 6249 * linux/*/syscallent*.h (io_setup, io_destroy): Change sys_flags to TM. 6250 6251 2016-09-08 Dmitry V. Levin <ldv (a] altlinux.org> 6252 6253 travis: add x86 musl. 6254 * .travis.yml (matric): Add musl-gcc/x86. 6255 * travis-build.sh [TARGET == x86]: Specify --target along with --build 6256 to configure. 6257 * travis-install.sh [CC == musl-gcc && TARGET == x32]: Add -mx32 to $CC. 6258 [CC == musl-gcc && TARGET == x86]: Add -m32 to $CC. Specify --build 6259 and --target to musl configure invocation. 6260 6261 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6262 6263 tests: use PRI__*64 macros in aio test. 6264 It was incorrectly assumed that __*64 types are long long on all 6265 platforms, despite strace having specially crafted macros in order 6266 to handle precisely this architecture discrepancy. 6267 The commit fixes this oversight. 6268 6269 * tests/aio.c (main): Use PRI__*64 macros for correct format conversion 6270 specifiers for __*64-typed values. 6271 6272 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6273 6274 ipc: fix printing of integer arguments. 6275 * ipc_msgctl.c (SYS_FUNC(msgctl)): As msqid argument is treated as int 6276 by the kernel, cast it to int and print it using %d format. 6277 * ipc_sem.c (SYS_FUNC(semop), SYS_FUNC(semtimedop)): Likewise, 6278 for semid argument. 6279 (SYS_FUNC(semget)): Likewise, for nsems argument. 6280 (SYS_FUNC(semctl)): Likewise, for semid and semnum arguments. 6281 * ipc_shm.c (SYS_FUNC(shmat)): Likewise, for shmid argument. 6282 * ipc_shmctl.c (SYS_FUNC(shmctl)): Likewise. 6283 6284 2016-09-08 Dmitry V. Levin <ldv (a] altlinux.org> 6285 6286 ipc: fix printing key_t arguments of msgget, semget, and shmget syscalls 6287 * ipc_msg.c (SYS_FUNC(msgget)): As key_t type in the kernel 6288 is __kernel_key_t (i.e. int), cast key_t argument to int 6289 and print it using %#x format. 6290 * ipc_sem.c (SYS_FUNC(semget)): Likewise. 6291 * ipc_shm.c (SYS_FUNC(shmget)): Likewise. 6292 * tests/ipc_msg.c (main): Test it. 6293 * tests/ipc_sem.c (main): Likewise. 6294 * tests/ipc_shm.c (main): Likewise. 6295 6296 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6297 6298 tests: add more sched_getattr and sched_setattr decoding checks. 6299 * tests/sched_xetattr.c (main): Add more sched_getattr and sched_setattr 6300 decoding checks. 6301 6302 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6303 6304 tests: change type of sched_nice field to signed in sched_xetattr test. 6305 Kernel headers declare this field as s32, and strace prints it with %d 6306 specifier. 6307 6308 * tests/sched_xetattr.c (main): Change type of sched_nice field of struct 6309 sched_attr to int32_t, update format specifiers accordingly. 6310 6311 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6312 6313 tests: add sprintrc_grep function to libtests. 6314 New sprintrc_grep function is sprintrc function equivalent suitable for 6315 tests where grep-base pattern matching is employed. 6316 6317 * tests/tests.h (sprintrc_grep): New prototype. 6318 * tests/sprintrc.c (enum sprintrc_fmt): New sprintrc format enumeration. 6319 (sprintrc_ex): New function, renamed from sprintrc and updated to 6320 support different formats. 6321 (sprintrc): Change to use sprintrc_ex with SPRINTRC_FMT_RAW. 6322 (sprintrc_grep): New function, calls sprintrc_ex with SPRINTRC_FMT_GREP. 6323 6324 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6325 6326 tests: perform more strict structure allocation in sched_xetattr test. 6327 Use tail_alloc with precise size of the structure. 6328 6329 * tests/sched_xetattr.c (main): Eliminate usage of anonymous union type. 6330 Rename sched to sched_attr. Change type of sched_attr to struct 6331 pointer. Use tail_alloc for sched_attr allocation, update printf 6332 statements accrodingly. 6333 6334 2016-09-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6335 6336 tests: split long lines in sched_xetattr test. 6337 * tests/sched_xetattr.c (main): Split long lines. 6338 6339 2016-09-07 Dmitry V. Levin <ldv (a] altlinux.org> 6340 6341 tests/aio.c: fix for x32 personality. 6342 * tests/aio.c (main): Do not pass 64-bit aio_context_t to io_submit 6343 and io_getevents until strace learns how to print 64-bit pointers on x32 6344 and on x86_64 for x32 personality. 6345 6346 2016-09-07 Dmitry V. Levin <ldv (a] altlinux.org> 6347 6348 aio: print aio_context_t as a pointer type. 6349 As aio_context_t is treated by the kernel as a pointer, 6350 print it using printaddr. 6351 6352 * aio.c (SYS_FUNC(io_setup)): Print the pointer to aio_context_t 6353 argument using printnum_ptr. 6354 (SYS_FUNC(io_destroy), SYS_FUNC(io_submit), SYS_FUNC(io_cancel), 6355 SYS_FUNC(io_getevents)): Print aio_context_t argument using printaddr. 6356 * tests/aio.c (sprint_aio_context_t): Remove. 6357 (main): Update expected output. 6358 6359 2016-09-07 Dmitry V. Levin <ldv (a] altlinux.org> 6360 6361 tests/aio.c: rewrite without assert. 6362 * tests/aio.c: Do not include <assert.h>. 6363 (main): Use sprintrc instead of assert. 6364 6365 2016-09-06 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6366 6367 tests: add more aio decoding checks. 6368 * tests/aio.c (sprint_aio_context_t): New function. 6369 (main): Use it; add more checks. 6370 6371 2016-09-06 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6372 6373 tests: add suffix and cast to 64-bit constants in aio test. 6374 This helps to avoid warnings like 6375 "integer constant is too large for long type" 6376 reported by some versions of gcc on 32-bit platforms. 6377 6378 * tests/aio.c (main): Add ULL suffix to 64-bit constants 6379 and cast them to unsigned long. 6380 6381 2016-09-05 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6382 6383 tests: check decoding of perf_event_open syscall. 6384 * tests/perf_event_open.c: New file. 6385 * tests/perf_event_open.test: New test. 6386 * tests/.gitignore: Add perf_event_open. 6387 * tests/Makefile.am (check_PROGRAMS): Likewise. 6388 (DECODER_TESTS): Add perf_event_open.test. 6389 6390 Makefile.am: use pwd instead of realpath. 6391 * Makefile.am (CODE_COVERAGE_GENHTML_OPTIONS): Use standard pwd(1) 6392 instead of less widespread realpath(1) utility from GNU coreutils. 6393 6394 2016-09-05 Dmitry V. Levin <ldv (a] altlinux.org> 6395 6396 tests: use sprintrc in tests/xetpriority.c. 6397 * tests/xetpriority.c (main): Use sprintrc. 6398 6399 tests: use sprintrc in vhangup.test. 6400 * tests/vhangup.c (main): Use sprintrc. 6401 6402 tests: use sprintrc in tests/sockname.c. 6403 * tests/sockname.c (test_sockname_syscall): Use sprintrc. 6404 6405 tests: use sprintrc in signalfd4.test. 6406 * tests/signalfd4.c (main): Use sprintrc. 6407 6408 tests: use sprintrc in setrlimit.test. 6409 * tests/setrlimit.c (main): Use sprintrc. 6410 6411 tests: use sprintrc in set_mempolicy.test. 6412 * tests/set_mempolicy.c (main, print_nodes): Use sprintrc. 6413 6414 tests: use sprintrc in openat.test. 6415 * tests/openat.c (main): Use sprintrc. 6416 6417 tests: use sprintrc in open.test. 6418 * tests/open.c (main): Use sprintrc. 6419 6420 tests: use sprintrc in move_pages.test. 6421 * tests/move_pages.c (print_stat_pages, print_move_pages): Use sprintrc. 6422 6423 tests: use sprintrc in mlockall.test. 6424 * tests/mlockall.c (main): Use sprintrc. 6425 6426 tests: use sprintrc in mlock.test. 6427 * tests/mlock.c (main): Use sprintrc. 6428 6429 tests: use sprintrc in epoll_create1.test. 6430 * tests/epoll_create1.c (main): Use sprintrc. 6431 6432 2016-09-05 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6433 6434 tests: fix printing of min_nr and nr arguments of io_getevents syscall. 6435 * tests/aio.c (main): Change output format for min_nr and nr arguments 6436 in io_getevents check to %ld, cast these arguments to long. 6437 6438 tests: use sprintrc for return code output in aio test. 6439 * tests/aio.c (main): Use sprintrc for return code output. 6440 6441 tests: add more tests for ched_rr_get_interval decoding. 6442 * tests/sched_rr_get_interval.c (main): Check decoding of invalid 6443 timespec pointer and successful syscall invocation. 6444 6445 tests: use sprintrc for return code output in sched_rr_get_interval test 6446 * tests/sched_rr_get_interval.c (main): Use sprintrc for return code 6447 output. 6448 6449 tests: add more tests for sched_getscheduler and sched_xetscheduler. 6450 * tests/sched_xetscheduler.c (main): Check for decoding of invalid PID 6451 in sched_getscheduler and sched_setscheduler, invalid address 6452 of sched_param structure, and invalid policy value. 6453 6454 tests: use sprintrc for return code output in sched_xetscheduler test. 6455 * tests/sched_xetscheduler.c (main): Use sprintrc for return code output. 6456 6457 2016-09-05 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6458 6459 aio: use printfd for fd printing. 6460 struct iocb contains two fields with fd semantics: aio_fildes and 6461 aio_resfd. It is quite reasonable to use the appropriate function for 6462 printing them (apart from just "%d"). 6463 6464 * aio.c (print_common_flags): Add struct tcb pointer to parameter list; 6465 use printfd for printing aio_resfd field. 6466 (print_iocb_header): Add struct tcb pointer to parameter list; 6467 use printfd for printing aio_fildes field. 6468 (print_iocb): Provide tcp argument to print_iocb_header 6469 and print_common_flags. 6470 (SYS_FUNC(io_cancel)): Likewise. 6471 6472 2016-09-05 Dmitry V. Levin <ldv (a] altlinux.org> 6473 6474 sh64: wire up new syscalls. 6475 * linux/sh64/syscallent.h [380..393]: New entries. 6476 6477 2016-09-02 Dmitry V. Levin <ldv (a] altlinux.org> 6478 6479 sh: wire up new syscalls. 6480 * linux/sh/syscallent.h [369..382]: New entries. 6481 6482 2016-09-05 Dmitry V. Levin <ldv (a] altlinux.org> 6483 6484 avr32: wire up preadv2 and pwritev2 syscalls. 6485 * linux/avr32/syscallent.h [326]: Add preadv2 entry. 6486 [327]: Add pwritev2 entry. 6487 6488 2016-09-05 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6489 6490 tests: check decoding of readahead syscall. 6491 * configure.ac (AC_CHECK_FUNCS): Add readahead. 6492 * tests/readahead.c: New file. 6493 * tests/readahead.test: New test. 6494 * tests/.gitignore: Add readahead. 6495 * tests/Makefile.am (check_PROGRAMS): Likewise. 6496 (DECODER_TESTS): Add readahead.test. 6497 6498 2016-09-02 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6499 6500 tests: move sprintrc function to libtests. 6501 * tests/tests.h (sprintrc): New prototype. 6502 * tests/futex.c (sprintrc): Move to ... 6503 * tests/sprintrc.c: ... new file. 6504 * tests/Makefile.am (libtests_a_SOURCES): Add sprintrc.c. 6505 6506 tests/futex: add support to sprintrc for return codes other than 0 and -1 6507 * tests/futex.c (sprintrc): Print the actual return code provided, 6508 not just "0". Check snprintf return code. 6509 6510 tests/futex: increase sprintrc static buffer size. 6511 * tests/futex.c (sprintrc): Increase buffer size from 256 to 4096. 6512 6513 tests/futex: rename retstr to sprintrc. 6514 * tests/futex.c (retstr): Rename to sprintrc. 6515 (main): Convert all retstr calls to sprintrc. 6516 6517 2016-09-01 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6518 6519 readahead: fix print format for the "count" argument. 6520 According to documentation and kernel's syscalls.h, its type is size_t, 6521 so "%lu" format should be used instead of "%ld". 6522 6523 * readahead.c (SYS_FUNC(readahead)): Fix conversion specifier 6524 for the "count" argument. 6525 6526 2016-08-31 Dmitry V. Levin <ldv (a] altlinux.org> 6527 6528 tests/xstatx.c: use zero_extend_signed_to_ull/sign_extend_unsigned_to_ll 6529 Use zero_extend_signed_to_ull and sign_extend_unsigned_to_ll macros 6530 instead of explicit casts with unpredictable sign extension semantics. 6531 6532 * tests/xstatx.c (print_time, main): Use zero_extend_signed_to_ull 6533 instead of explicit cast. 6534 (print_stat): Use zero_extend_signed_to_ull and 6535 sign_extend_unsigned_to_ll instead of explicit casts. 6536 6537 2016-08-31 Dmitry V. Levin <ldv (a] altlinux.org> 6538 6539 tests: add sign_extend_unsigned_to_ll macro. 6540 * tests/tests.h (sign_extend_unsigned_to_ll): New macro from defs.h. 6541 6542 2016-08-31 Eugene Syromiatnikov <evgsyr (a] gmail.com> 6543 6544 Refactor common sa_handler printing code. 6545 * xlat/sa_handler_values.in: New file. 6546 * signal.c: Include "xlat/sa_handler_values.h". 6547 (get_sa_handler_str, print_sa_handler): New functions. 6548 (SYS_FUNC(sigsetmask), SYS_FUNC(signal), decode_new_sigaction): Use them. 6549 6550 2016-08-31 Dmitry V. Levin <ldv (a] altlinux.org> 6551 6552 Update TCP* constants. 6553 * xlat/socktcpoptions.in: Add TCP_REPAIR_WINDOW introduced by linux 6554 kernel commit v4.8-rc1~140^2~226. 6555 6556 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6557 6558 Update SCTP_* constants. 6559 * xlat/socksctpoptions.in: Add SCTP_PR_SUPPORTED, SCTP_DEFAULT_PRINFO, 6560 and SCTP_PR_ASSOC_STATUS introduced by linux kernel commits 6561 v4.8-rc1~140^2~148^2~5, v4.8-rc1~140^2~148^2~4, and 6562 v4.8-rc1~140^2~148^2~3, respectively. 6563 6564 Update fs *_MAGIC constants. 6565 * xlat/fsmagic.in: Add BALLOON_KVM_MAGIC and ZSMALLOC_MAGIC introduced 6566 by linux kernel commits v4.8-rc1~147^2~82 and v4.8-rc1~147^2~74, 6567 respectively. 6568 6569 Update KEXEC_ARCH_* constants. 6570 * xlat/kexec_arch_values.in: Add KEXEC_ARCH_AARCH64 introduced by linux 6571 kernel commit v4.8-rc1~16^2~41. 6572 6573 Update ETH_P_* constants. 6574 * xlat/ethernet_protocols.in: Add ETH_P_NCSI introduced by linux kernel 6575 commit v4.8-rc1~140^2~65^2~8. 6576 6577 Update BPF_* constants. 6578 * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_CGROUP_ARRAY introduced 6579 by linux kernel commit v4.8-rc1~140^2~212^2~2. 6580 * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_XDP introduced 6581 by linux kernel commit v4.8-rc1~140^2~64^2~10. 6582 6583 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6584 6585 Remove HAVE_SIGACTION checks. 6586 The syscall parsers guarded by HAVE_SIGACTION check have to be compiled 6587 regardless of libc sigaction function availability. 6588 6589 * configure.ac (AC_CHECK_FUNCS): Remove sigaction. 6590 * signal.c: Remove HAVE_SIGACTION checks. 6591 6592 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6593 6594 Remove obsolescent autoconf macro AC_TYPE_SIGNAL. 6595 All supported systems are expected to have C89 conforming sematics. 6596 6597 * configure.ac (AC_TYPE_SIGNAL): Remove. 6598 6599 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6600 6601 Remove obsolescent autoconf macro AC_C_CONST. 6602 All supported systems are expected to have the 'const' keyword. 6603 6604 * configure.ac (AC_C_CONST): Remove. 6605 6606 2016-08-30 Eugene Syromiatnikov <evgsyr (a] gmail.com> 6607 6608 tests: check decoding of futex syscall. 6609 * tests/futex.c: New file. 6610 * tests/futex.test: New test. 6611 * tests/.gitignore: Add futex. 6612 * tests/Makefile.am (check_PROGRAMS): Likewise. 6613 (DECODER_TESTS): Add futex.test. 6614 6615 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6616 6617 futex: do not pretend <linux/futex.h> is included. 6618 As configure.ac does not check for linux/futex.h, HAVE_LINUX_FUTEX_H is 6619 never defined and therefore the inclusion of <linux/futex.h> guarded by 6620 HAVE_LINUX_FUTEX_H makes no sense. 6621 6622 Moreover, <linux/futex.h> used to have an incorrect definition 6623 of FUTEX_WAIT_BITSET_PRIVATE and FUTEX_WAKE_BITSET_PRIVATE: 6624 since kernel commit v2.6.24-6320-gcd68998 where these definitions 6625 were initially introduced and up to v2.6.31-7082-gf8d1e54 where they 6626 were finally fixed these macros had been incorrectly defined via 6627 FUTEX_WAIT_BITS and FUTEX_WAKE_BITS instead of FUTEX_WAIT_BITSET 6628 and FUTEX_WAKE_BITSET, and these incorrect definitions made their way 6629 into some distributions still in use. 6630 6631 * futex.c [HAVE_LINUX_FUTEX_H]: Remove. 6632 6633 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6634 6635 futex: avoid printing val when it is not used by the futex command. 6636 This is analogous to timeout argument omitting in FUTEX_WAKE_BITSET 6637 command. 6638 6639 * futex.c (SYS_FUNC(futex)): Remove common printing of val argument. 6640 Add printing of val argument for all futex commands except 6641 FUTEX_LOCK_PI, FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI. 6642 6643 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6644 6645 xlat: add FUTEX_WAIT* commands with FUTEX_CLOCK_REALTIME bit set. 6646 * xlat/futexops.in: Add FUTEX_WAIT|FUTEX_CLOCK_REALTIME and 6647 FUTEX_WAIT_PRIVATE|FUTEX_CLOCK_REALTIME values supported by linux kernel 6648 since commit v4.5-rc1~172^2. 6649 6650 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6651 6652 futex: fix formatting of unknown command argument. 6653 Use alternate form for printing hexadecimal numbers to avoid confusion. 6654 Use printaddr to print uaddr as the latter is interpreted as a pointer 6655 in all currently supported futex operations. 6656 6657 * futex.c (SYS_FUNC(futex)): Fix formatting of unknown command 6658 argument. 6659 6660 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6661 6662 futex: add handling of FUTEX_FD command. 6663 Since obsolete FUTEX_FD command is known and used to have some expected 6664 argument format, print FUTEX_FD using that format. 6665 6666 * futex.c (SYS_FUNC(futex)): Handle FUTEX_FD command. 6667 6668 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6669 6670 futex: fix formatting of val3 hexadecimal argument. 6671 * futex.c (SYS_FUNC(futex)): In FUTEX_WAIT_BITSET and FUTEX_WAKE_BITSET, 6672 print hexadecimal val3 argument in alternate form to avoid confusion. 6673 6674 2016-08-30 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6675 6676 futex: fix FUTEX_WAKE_OP compare function mask. 6677 According to the initial and current (v4.7) kernel implementations, 6678 in FUTEX_WAKE_OP case the compare function does not have 6679 FUTEX_OP_OPARG_SHIFT flag and occupies 4 bits starting with bit 24. 6680 6681 * futex.c (SYS_FUNC(futex)): Do not print FUTEX_OP_OPARG_SHIFT 6682 for 27th bit of val3 in FUTEX_WAKE_OP case. 6683 6684 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6685 6686 tests: use correct m32/mx32 st_mtime_nsec checks in tests/xstatx.c. 6687 * bootstrap: Add -DMPERS_IS_$(MPERS_NAME) to ARCH_MFLAGS. 6688 * tests/xstatx.c [USE_ASM_STAT && STRUCT_STAT_IS_STAT64 && MPERS_IS_m32]: 6689 Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC 6690 to HAVE_M32_STRUCT_STAT64_ST_MTIME_NSEC. 6691 [USE_ASM_STAT && STRUCT_STAT_IS_STAT64 && MPERS_IS_mx32]: 6692 Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC 6693 to HAVE_MX32_STRUCT_STAT64_ST_MTIME_NSEC. 6694 [USE_ASM_STAT && !STRUCT_STAT_IS_STAT64 && MPERS_IS_m32]: 6695 Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC 6696 to HAVE_M32_STRUCT_STAT_ST_MTIME_NSEC. 6697 [USE_ASM_STAT && !STRUCT_STAT_IS_STAT64 && MPERS_IS_mx32]: 6698 Redefine HAVE_STRUCT_STAT_ST_MTIME_NSEC 6699 to HAVE_MX32_STRUCT_STAT_ST_MTIME_NSEC. 6700 6701 Based on patch by James Clarke <jrtc27 (a] jrtc27.com>. 6702 6703 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6704 6705 Remove redundant check for PTRACE_LISTEN availability. 6706 As ptrace.h already ensures that PTRACE_LISTEN is defined, 6707 there is no need to check this fact in other places. 6708 6709 * strace.c (ptrace_restart): Do not check that PTRACE_LISTEN is defined. 6710 6711 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6712 6713 Remove unused autoconf macro AC_TYPE_GETGROUPS. 6714 strace code does not use GETGROUPS_T. 6715 6716 * configure.ac (AC_TYPE_GETGROUPS): Remove. 6717 6718 2016-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 6719 6720 Remove unused autoconf macro AC_TYPE_MODE_T. 6721 strace code already redefines mode_t. 6722 6723 * configure.ac (AC_TYPE_MODE_T): Remove. 6724 6725 2016-08-30 James Clarke <jrtc27 (a] jrtc27.com> 6726 6727 Use PTRACE_SUNDETACH everywhere on SPARC and SPARC64. 6728 SPARC has a different PTRACE_DETACH value correctly defined in 6729 sys/ptrace.h, but linux/ptrace.h clobbers it with the standard one. 6730 PTRACE_SUNDETACH is also defined to the correct value by sys/ptrace.h, 6731 so use that instead. 6732 6733 * strace.c (detach) [SPARC]: Move redefinition of PTRACE_DETACH 6734 to PTRACE_SUNDETACH ... 6735 * ptrace.h [SPARC || SPARC64]: ... here. 6736 6737 2016-08-29 Dmitry V. Levin <ldv (a] altlinux.org> 6738 6739 Remove obsolescent autoconf macro AC_HEADER_STDC. 6740 All systems supported by strace are expected to have C89 conforming 6741 header files. 6742 6743 * configure.ac (AC_HEADER_STDC): Remove. 6744 6745 2016-08-29 Dmitry V. Levin <ldv (a] altlinux.org> 6746 6747 Remove unneeded autoconf macro AC_HEADER_DIRENT. 6748 strace code already includes <dirent.h> unconditionally. 6749 6750 * configure.ac (AC_HEADER_DIRENT): Remove. 6751 6752 2016-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 6753 6754 Remove unneeded autoconf macro AC_HEADER_STDBOOL. 6755 strace code assumes C99. 6756 6757 * configure.ac (AC_HEADER_STDBOOL): Remove. 6758 * defs.h: Include <stdbool.h> unconditionally. 6759 6760 2016-08-27 Dmitry V. Levin <ldv (a] altlinux.org> 6761 6762 Remove obsolescent autoconf macro AC_HEADER_STAT. 6763 No systems supported by strace are expected to have the bug workarounded 6764 by AC_HEADER_STAT macro. 6765 6766 * configure.ac (AC_HEADER_STAT): Remove. 6767 6768 2016-08-29 Dmitry V. Levin <ldv (a] altlinux.org> 6769 6770 Do not use AC_HEADER_MAJOR, include <sys/sysmacros.h> unconditionally. 6771 glibc, starting with commit glibc-2.24-28-gdbab657, has deprecated 6772 inclusion of <sys/sysmacros.h> by <sys/types.h>. The method used 6773 for deprecation breaks AC_HEADER_MAJOR: this autoconf macro no longer 6774 defines MAJOR_IN_SYSMACROS, which consequently breaks build. 6775 6776 Let's assume that all systems supported by strace provide major, minor, 6777 and makedev macros via <sys/sysmacros.h>. 6778 6779 * configure.ac (AC_HEADER_MAJOR): Remove. 6780 * mknod.c [MAJOR_IN_SYSMACROS, MAJOR_IN_MKDEV]: Remove. 6781 Include <sys/sysmacros.h> unconditionally. 6782 * print_struct_stat.c: Likewise. 6783 * tests/mknod.c: Likewise. 6784 * tests/mknodat.c: Likewise. 6785 * tests/xstatx.c: Likewise. 6786 6787 2016-08-29 Dmitry V. Levin <ldv (a] altlinux.org> 6788 6789 btrfs: mpersify struct btrfs_ioctl_vol_args_v2. 6790 This complements commit v4.11-719-gfb0c609. 6791 6792 * btrfs.c (struct_btrfs_ioctl_vol_args_v2): New type. Mpersify it. 6793 (btrfs_print_qgroup_inherit): Change qgi_addr type to unsigned long. 6794 (btrfs_ioctl): Replace struct btrfs_ioctl_vol_args_v2 with 6795 struct_btrfs_ioctl_vol_args_v2. 6796 6797 2016-08-29 Elvira Khabirova <lineprinter0 (a] gmail.com> 6798 6799 mpers.awk: relax union member name absence check. 6800 This fixes mpersing of unions containing nameless members, 6801 e.g. struct btrfs_ioctl_vol_args_v2. 6802 6803 * mpers.awk (what_is): Print names of union_type members as is. 6804 6805 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6806 6807 Revert "tests/xstatx.c: fix stat syscall tests on mips64" 6808 Previous commit effectively changed types of st_atime, st_ctime, and 6809 st_mtime members of struct stat and struct stat64 to signed integers, 6810 making the mips64 workaround obsolete. 6811 6812 This reverts commit 3fb84bfc79949c145197c61fbf04ce18464e9112. 6813 6814 * tests/xstatx.c (create_sample) [__mips64]: Remove. 6815 6816 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6817 6818 Mpersify parsers of struct stat and struct stat64. 6819 On many architectures that support multiple personalities, 6820 struct stat differ between personalities. While old code could handle 6821 these differences, there are some architectures, e.g. sparc64, that also 6822 have different struct stat64. Rewrite parsers using mpers functionality 6823 to fix these issues. 6824 6825 * fetch_struct_stat.c: New file. 6826 * fetch_struct_stat64.c: Likewise. 6827 * print_struct_stat.c: Likewise. 6828 * oldstat.c: Likewise. 6829 * stat.c: Likewise. 6830 * stat.h: Likewise. 6831 * stat64.c: Likewise. 6832 * file.c: Remove. 6833 * printstat.h: Likewise. 6834 * linux/aarch64/stat32.h: Likewise. 6835 * linux/powerpc64/stat32.h: Likewise. 6836 * linux/riscv/stat32.h: Likewise. 6837 * linux/sparc64/stat32.h: Likewise. 6838 * linux/tile/stat32.h: Likewise. 6839 * linux/x32/stat32.h: Likewise. 6840 * linux/x86_64/stat32.h: Likewise. 6841 * Makefile.am (strace_SOURCES): Add fetch_struct_stat.c, 6842 fetch_struct_stat64.c, print_struct_stat.c, oldstat.c, stat.c, stat.h, 6843 and stat64.c. Remove file.c, printstat.h, linux/aarch64/stat32.h, 6844 linux/powerpc64/stat32.h, linux/riscv/stat32.h, linux/sparc64/stat32.h, 6845 linux/tile/stat32.h, linux/x32/stat32.h, and linux/x86_64/stat32.h. 6846 * configure.ac (AC_CHECK_MEMBERS): Add struct stat64.st_mtime_nsec. 6847 * defs.h (struct strace_stat): New declaration. 6848 (print_struct_stat): New prototype. 6849 * linux/dummy.h (sys_fstatat64): Remove. 6850 6851 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6852 6853 mpers.m4: check for struct stat64, struct stat, and their members. 6854 * m4/mpers.m4 (st_MPERS_STRUCT_STAT): New macro. 6855 (st_MPERS): Use it. 6856 6857 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6858 6859 mpers: add MPERS_IS_* to CFLAGS passed to mpers.sh. 6860 This allows testing of MPERS_IS_* macros in pre-MPERS_DEFS parts 6861 of source code. 6862 6863 * Makefile.am (mpers-m%.stamp): Add -DMPERS_IS_$(mpers_NAME) to CFLAGS 6864 passed to mpers.sh. 6865 * mpers_test.sh: Likewise. 6866 6867 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6868 6869 Move redefinition of stat types to asm_stat.h. 6870 * file.c: Move redefinition of types that might be used 6871 to define struct stat ... 6872 * linux/asm_stat.h: ... here. 6873 * tests/xstatx.c: Remove redefinition of stat types. 6874 6875 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6876 6877 x86_64: provide a replacement of <asm/stat.h> for x32 personality. 6878 For the reason described in commit v4.10-517-gcfde1e3, a correct 6879 definition of struct stat for x32 personality is necessary to enable 6880 "asm_stat.h" with -mx32 on x86_64. 6881 6882 * linux/x32/asm_stat.h: Rename to ... 6883 * linux/x86_64/asm_stat.h: ... new file. 6884 * Makefile.am (strace_SOURCES): Add it. 6885 * linux/x32/asm_stat.h: New file, include "x86_64/asm_stat.h". 6886 6887 2016-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 6888 6889 x32/asm_stat.h: provide definitions for i386 personality. 6890 This enables x32/asm_stat.h with -m32. 6891 6892 * linux/x32/asm_stat.h [__x86_64__ && __ILP32__]: Redirect stat. 6893 Include "linux/asm_stat.h". 6894 (struct stat): Define for [__x86_64__ && __ILP32__] only. 6895 (struct __old_kernel_stat): Remove. 6896 6897 2016-08-23 Dmitry V. Levin <ldv (a] altlinux.org> 6898 6899 Introduce a separate SEN entry for fstatat64 syscall. 6900 * linux/dummy.h (sys_fstatat64): Redirect to sys_newfstatat. 6901 * linux/32/syscallent.h: Replace SEN(newfstatat) with SEN(fstatat64). 6902 * linux/alpha/syscallent.h: Likewise. 6903 * linux/arm/syscallent.h: Likewise. 6904 * linux/avr32/syscallent.h: Likewise. 6905 * linux/bfin/syscallent.h: Likewise. 6906 * linux/hppa/syscallent.h: Likewise. 6907 * linux/i386/syscallent.h: Likewise. 6908 * linux/m68k/syscallent.h: Likewise. 6909 * linux/microblaze/syscallent.h: Likewise. 6910 * linux/mips/syscallent-o32.h: Likewise. 6911 * linux/powerpc/syscallent.h: Likewise. 6912 * linux/s390/syscallent.h: Likewise. 6913 * linux/sh/syscallent.h: Likewise. 6914 * linux/sh64/syscallent.h: Likewise. 6915 * linux/sparc/syscallent.h: Likewise. 6916 * linux/sparc64/syscallent.h: Likewise. 6917 * linux/xtensa/syscallent.h: Likewise. 6918 * pathtrace.c (pathtrace_match): Handle SEN_fstatat64. 6919 6920 2016-08-23 Dmitry V. Levin <ldv (a] altlinux.org> 6921 6922 Do not check for struct stat.st_{a,c}time_nsec. 6923 Assume that the check for struct stat.st_mtime_nsec is enough. 6924 Likewise, do not check for struct stat.st_{a,c}tim.tv_nsec. 6925 6926 * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_atime_nsec, 6927 struct stat.st_ctime_nsec, struct stat.st_atim.tv_nsec, 6928 and struct stat.st_ctim.tv_nsec. 6929 * file.c (HAVE_STRUCT_STAT_ST_ATIME_NSEC, 6930 HAVE_STRUCT_STAT_ST_CTIME_NSEC): Remove. 6931 * printstat.h (HAVE_STRUCT_STAT_ST_ATIME_NSEC, 6932 HAVE_STRUCT_STAT_ST_CTIME_NSEC): Replace with 6933 HAVE_STRUCT_STAT_ST_MTIME_NSEC. 6934 * tests/xstatx.c: Likewise. 6935 6936 2016-08-23 Dmitry V. Levin <ldv (a] altlinux.org> 6937 6938 Add sign_extend_unsigned_to_ll macro. 6939 * defs.h (sign_extend_unsigned_to_ll): New macro, mirrors 6940 zero_extend_signed_to_ull. 6941 6942 zero_extend_signed_to_ull: add short int support. 6943 * defs.h (zero_extend_signed_to_ull): Add short int support. 6944 * tests/tests.h: Likewise. 6945 6946 Rename widen_to_ull to zero_extend_signed_to_ull. 6947 * defs.h (widen_to_ull): Rename to zero_extend_signed_to_ull. 6948 All callers changed. 6949 * tests/tests.h: Likewise. 6950 6951 2016-08-23 Dmitry V. Levin <ldv (a] altlinux.org> 6952 6953 sparc, sparc64: remove obsolete code. 6954 Remove remains of solaris personality support. 6955 This complements commit v4.10-45-gdf4dd8b. 6956 6957 * file.c [SPARC || SPARC64] (SYS_FUNC(xstat), SYS_FUNC(fxstat)): Remove. 6958 6959 2016-08-22 Dmitry V. Levin <ldv (a] altlinux.org> 6960 6961 sparc64: fix decoding of struct stat64 related syscalls. 6962 For some reason, struct stat and struct stat64 are different on sparc64. 6963 This change fixes decoding of struct stat64 related syscalls for sparc64 6964 personality, sparc32 personality on sparc64 needs more work. 6965 6966 * file.c (printstat64) [SPARC64]: Do not use printstat. 6967 (SYS_FUNC(newfstatat)): Likewise. 6968 6969 2016-08-22 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6970 6971 tests: fill old_value argument in timer{,fd}_xettime tests. 6972 This is needed in order to differentiate it from the value returned 6973 by the call. As a consequence, it enables revealing possible bugs 6974 in syscall parsers, for example, when the value read on syscall 6975 entering and not on syscall exiting, as it was the case with 6976 timerfd_settime parser. 6977 6978 * tests/timer_xettime.c (main): Fill old.its field with value different 6979 from the expected one upon call return. 6980 * tests/timerfd_xettime.c: Likewise. 6981 6982 2016-08-22 Eugene Syromyatnikov <evgsyr (a] gmail.com> 6983 6984 Fix old_value argument retrieval in timerfd_settime parser. 6985 This is done similar to timer_settime syscall parser. 6986 6987 * time.c (SYS_FUNC(timerfd_settime)): Retrieve old_value argument 6988 on exiting and not on entering. Return 0 instead of RVAL_DECODED 6989 since the call hasn't been decoded in full on entering. 6990 6991 2016-08-21 Richard W.M. Jones <rjones (a] redhat.com> 6992 6993 Add RISC-V architecture support. 6994 The original port of strace was done by Palmer Dabbelt 6995 (eecs.berkeley.edu), based on strace 4.9. 6996 6997 * configure.ac: Define RISCV for riscv*. 6998 * clone.c [RISCV]: Define ARG_* macros as for OR1K. 6999 * defs.h [RISCV] (SUPPORTED_PERSONALITIES): Define to 2. 7000 [RISCV] (NEED_UID16_PARSERS): Define to 1. 7001 * linux/riscv/arch_regs.c: New file. 7002 * linux/riscv/errnoent1.h: Likewise. 7003 * linux/riscv/get_error.c: Likewise. 7004 * linux/riscv/get_scno.c: Likewise. 7005 * linux/riscv/get_syscall_args.c: Likewise. 7006 * linux/riscv/ioctls_arch0.h: Likewise. 7007 * linux/riscv/ioctls_arch1.h: Likewise. 7008 * linux/riscv/ioctls_inc0.h: Likewise. 7009 * linux/riscv/ioctls_inc1.h: Likewise. 7010 * linux/riscv/signalent1.h: Likewise. 7011 * linux/riscv/stat32.h: Likewise. 7012 * linux/riscv/syscallent.h: Likewise. 7013 * linux/riscv/syscallent1.h: Likewise. 7014 * Makefile.am (EXTRA_DIST): Add them. 7015 7016 2016-08-21 Eugene Syromyatnikov <evgsyr (a] gmail.com> 7017 7018 Move SH-specific argument number calculation to getllval. 7019 This change prevents scattering of ll-related hacks and simplifies 7020 pread/pwrite syscalls parsers' logic a bit. 7021 7022 * util.c (getllval): Add fixup for arg_no for SuperH when argument 7023 number is equal to 3. 7024 * io.c (PREAD_OFFSET_ARG): Remove. 7025 (SYS_FUNC(pread)): Always use argument number 3 for "count" argument 7026 printing. 7027 (SYS_FUNC(pwrite)): Likewise. 7028 7029 2016-08-21 Dmitry V. Levin <ldv (a] altlinux.org> 7030 7031 sparc64: fix sigreturn decoding for sparc personality. 7032 * linux/sparc/arch_sigreturn.c (arch_sigreturn): Parametrize 7033 member types of struct signal_frame. 7034 * linux/sparc64/arch_sigreturn.c (sparc64_arch_sigreturn, 7035 sparc32_arch_sigreturn): New functions. 7036 (arch_sigreturn): Use them. 7037 7038 2016-08-20 Dmitry V. Levin <ldv (a] altlinux.org> 7039 7040 Fix compat decoding of struct sigaction.sa_mask on big endian architectures 7041 * signal.c (decode_new_sigaction) [SUPPORTED_PERSONALITIES > 1 && 7042 SIZEOF_LONG > 4]: Use LONG_LONG to convert sa_mask from 32-bit 7043 struct sigaction to 64-bit struct sigaction. 7044 7045 2016-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 7046 7047 Fix decoding of indirect shmat's return code for non-native personalities 7048 * ipc_shm.c (SYS_FUNC(shmat)): Fetch current_wordsize bytes of data 7049 to obtain return code of indirect shmat subcall. 7050 7051 2016-08-18 Dmitry V. Levin <ldv (a] altlinux.org> 7052 7053 sparc64: fix sparc personality decoding of mmap64's offset argument. 7054 * linux/sparc64/syscallent1.h: Remove redirection of sys_mmap_4koff. 7055 7056 2016-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 7057 7058 sparc64: fix decoding of the forth argument of semctl syscall. 7059 On sparc64, unlike all other architectures where semctl is an indirect 7060 ipc subcall, the forth argument is passed directly. 7061 7062 * ipc_sem.c (SYS_FUNC(semctl)) [SPARC64]: Print 4th argument without 7063 indirection in case of native personality. 7064 7065 2016-08-16 Dmitry V. Levin <ldv (a] altlinux.org> 7066 7067 Add sparc64 specific ptrace constants. 7068 * xlat/ptrace_cmds.in: Add PTRACE_GETREGS64, PTRACE_SETREGS64, 7069 PTRACE_GETFPREGS64, and PTRACE_SETFPREGS64. 7070 7071 sparc64: fix sign extension bug of syscall args for sparc personality. 7072 * linux/sparc64/get_syscall_args.c (get_syscall_args): Zero-extend 7073 syscall args from 32 bit for sparc personality. 7074 7075 2016-08-16 Dmitry V. Levin <ldv (a] altlinux.org> 7076 7077 sparc64: fix tty ioctl numbers. 7078 The structures defined in asm/termbits.h have the same size 7079 on sparc and sparc64. 7080 7081 * linux/sparc64/ioctls_arch0.h (TCGETS, TCGETS2, TCSETS, TCSETS2, 7082 TCSETSF, TCSETSF2, TCSETSW, TCSETSW2): Sync with 7083 linux/sparc/ioctls_arch0.h 7084 7085 2016-08-15 Dmitry V. Levin <ldv (a] altlinux.org> 7086 7087 evdev.c: fix typo in comment. 7088 7089 2016-08-15 Dmitry V. Levin <ldv (a] altlinux.org> 7090 7091 Drop support of dummy members of struct stat. 7092 As st_flags, st_fstype, and st_gen members of struct stat are not filled 7093 by the kernel, there is no use supporting them. 7094 7095 * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_flags, 7096 struct stat.st_fstype, and struct stat.st_gen. 7097 * file.c [STAT32_PERSONALITY, HAVE_STRUCT_STAT64]: Do not undefine 7098 HAVE_STRUCT_STAT_ST_FLAGS, HAVE_STRUCT_STAT_ST_FSTYPE, 7099 and HAVE_STRUCT_STAT_ST_GEN. 7100 * printstat.h (DO_PRINTSTAT): Do not check for 7101 HAVE_STRUCT_STAT_ST_FLAGS, HAVE_STRUCT_STAT_ST_FSTYPE, 7102 and HAVE_STRUCT_STAT_ST_GEN. 7103 7104 2016-08-15 Dmitry V. Levin <ldv (a] altlinux.org> 7105 7106 Assume that struct stat contains st_blksize, st_blocks, and st_rdev. 7107 Our test suite already assumes that struct stat contains st_blksize, 7108 st_blocks, and st_rdev members, and there haven't been any complaints. 7109 7110 * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_blksize, 7111 struct stat.st_blocks, and struct stat.st_rdev. 7112 * printstat.h (DO_PRINTSTAT): Do not check for 7113 HAVE_STRUCT_STAT_ST_BLKSIZE, HAVE_STRUCT_STAT_ST_BLOCKS, 7114 and HAVE_STRUCT_STAT_ST_RDEV. 7115 7116 2016-08-15 Dmitry V. Levin <ldv (a] altlinux.org> 7117 7118 tests: fix pause.test when pause syscall is not available. 7119 * tests/pause.c (main): Fix expected output when pause syscall 7120 is not available. 7121 7122 2016-08-14 Dmitry V. Levin <ldv (a] altlinux.org> 7123 7124 powerpc64, sparc64: fix redefinitions of ARCH_PC_REG. 7125 This fixes compilation warning that ARCH_PC_REG is redefined. 7126 7127 * linux/powerpc64/arch_regs.c (ARCH_PC_REG): Undefine before 7128 the new definition. 7129 * linux/sparc64/arch_regs.c (ARCH_PC_REG): Likewise. 7130 7131 2016-08-14 Dmitry V. Levin <ldv (a] altlinux.org> 7132 7133 s390x, x32: remove redundant definitions of ARCH_PC_REG. 7134 * linux/s390x/arch_regs.c (ARCH_PC_REG): Remove, it is already defined 7135 in just included linux/s390/arch_regs.c. 7136 * linux/x32/arch_regs.c (ARCH_PC_REG): Remove, it is already defined 7137 in just included linux/x86_64/arch_regs.c. 7138 7139 2016-08-13 Dmitry V. Levin <ldv (a] altlinux.org> 7140 7141 tests: check for leaks of placeholder descriptors. 7142 * tests/redirect-fds.c: New file. 7143 * tests/redirect-fds.test: New test. 7144 * tests/.gitignore: Add redirect-fds. 7145 * tests/Makefile.am (check_PROGRAMS): Likewise. 7146 (MISC_TESTS): Add redirect-fds.test. 7147 7148 tests/init.sh: print exit code of failed commands. 7149 * init.sh (run_prog, run_prog_skip_if_failed): When the program fails, 7150 add its exit code to the diagnostic message. 7151 (run_strace): When strace fails, add its exit code to the diagnostic 7152 message. 7153 (run_strace_merge): When strace-log-merge fails, add its exit code 7154 to the diagnostic message. 7155 7156 2016-08-13 Dmitry V. Levin <ldv (a] altlinux.org> 7157 7158 Fix leakage of placeholder descriptors to tracees. 7159 As a side effect of commit v4.11-211-g0736d4e, strace used to leak 7160 placeholders for standard descriptors to tracees thus affecting their 7161 behaviour. Fix this by setting close-on-exec flag on placeholder 7162 descriptors. 7163 7164 * strace.c (open_dummy_desc): Set close-on-exec flag on the descriptor 7165 that is going to be returned to the caller. 7166 (fd_is_placeholder): New array. 7167 (ensure_standard_fds_opened, redirect_standard_fds): New functions. 7168 (startup_child): Use redirect_standard_fds. 7169 (init): Use ensure_standard_fds_opened. 7170 7171 2016-08-12 Dmitry V. Levin <ldv (a] altlinux.org> 7172 7173 sparc64: fix decoding of uid and gid-related syscalls. 7174 sparc64 has no native 16-bit uid/gid syscalls. 7175 7176 * linux/sparc64/syscallent.h (chown, lchown, setuid, getuid, setgid, 7177 getgid, geteuid, getegid, getgroups, setgroups, fchown, setreuid, 7178 setregid, setfsuid, setfsgid): Change handlers from 16-bit to 32-bit. 7179 7180 2016-08-12 Dmitry V. Levin <ldv (a] altlinux.org> 7181 7182 tests: fix *stat64 tests on alpha. 7183 On some architectures including alpha, <asm/stat.h> provides a 7184 definition of struct stat that has no st_atime_nsec, st_mtime_nsec, and 7185 st_ctime_nsec fields. At the same time, struct stat64 always has these 7186 fields. Fix tests to take this difference into account. 7187 7188 * tests/fstat64.c (STRUCT_STAT_IS_STAT64): New macro, defined to 1. 7189 * tests/lstat64.c (STRUCT_STAT_IS_STAT64): Likewise. 7190 * tests/stat64.c (STRUCT_STAT_IS_STAT64): Likewise. 7191 * tests/xstatx.c [!STRUCT_STAT] (STRUCT_STAT_IS_STAT64): New macro, 7192 defined to 0. 7193 [USE_ASM_STAT && STRUCT_STAT_IS_STAT64]: 7194 (HAVE_STRUCT_STAT_ST_ATIME_NSEC, HAVE_STRUCT_STAT_ST_CTIME_NSEC, 7195 HAVE_STRUCT_STAT_ST_MTIME_NSEC): Redefine to 1. 7196 7197 2016-08-11 Dmitry V. Levin <ldv (a] altlinux.org> 7198 7199 tests: skip rt_tgsigqueueinfo.test when the syscall is not available. 7200 * tests/rt_tgsigqueueinfo.c (main): Skip the test when the syscall 7201 is not available. 7202 7203 2016-08-11 James Cowgill <james410 (a] cowgill.org.uk> 7204 7205 tests/fcntl.c: fix fcntl test on mips64. 7206 On mips64 the F_GETLK and F_SETLKW64 constants have identical values which 7207 causes the "wrong" constant to be printed by strace. 7208 7209 tests/fcntl.c (test_flock64): Do not test F_SETLKW64 on mips64. 7210 7211 2016-08-11 James Cowgill <james410 (a] cowgill.org.uk> 7212 7213 tests/nsyscalls.test: only trace the "syscall" syscall on mips o32. 7214 The "syscall" syscall only exists on o32 and causes strace to error out on 7215 64-bit mips ABIs. Pass MIPS_ABI from the configure script through to 7216 nsyscalls.test so the MIPS ABI can be checked. 7217 7218 * configure.ac (MIPS_ABI): Substitute into output files. 7219 * tests/Makefile.am (MIPS_ABI): Export via AM_TEST_LOG_FLAGS. 7220 * tests/nsyscalls.test: Restrict special mips handling to mips o32. 7221 7222 2016-08-11 James Cowgill <james410 (a] cowgill.org.uk> 7223 7224 tests/xstatx.c: fix stat syscall tests on mips64. 7225 For historical reasons the kernel struct stat represents times as unsigned 7226 32-bit integers on mips64. Therefore, while it's possible to give a file a 7227 timestamp before 1970 with futimens, reading the same timestamp through 7228 struct stat will give a positive time (around 2106). 7229 Workaround by using positive timestamps for testing on mips64. 7230 7231 * tests/xstatx.c (create_sample): Use positive timestamps on mips64. 7232 7233 2016-08-11 Dmitry V. Levin <ldv (a] altlinux.org> 7234 7235 tests/mlock2.c: fix test failure on mips64. 7236 * tests/mlock2.c (main): Pass unsigned long arguments to mlock2 syscall 7237 explicitly, to avoid unwanted sign extension issues. 7238 7239 Based on patch by James Cowgill <james410 (a] cowgill.org.uk> 7240 7241 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7242 7243 Use <asm/unistd.h> instead of <sys/syscall.h> 7244 There are no users of SYS_* macros provided by <sys/syscall.h>, 7245 and definitions of __NR_* macros could be obtained directly 7246 from <asm/unistd.h>. 7247 7248 * defs.h: Include <asm/unistd.h> instead of <sys/syscall.h>. 7249 * test/seccomp.c: Likewise. 7250 * test/threaded_execve.c: Likewise. 7251 * test/x32_lseek.c: Likewise. 7252 * test/x32_mmap.c: Likewise. 7253 * tests/_newselect.c: Likewise. 7254 * tests/access.c: Likewise. 7255 * tests/acct.c: Likewise. 7256 * tests/aio.c: Likewise. 7257 * tests/alarm.c: Likewise. 7258 * tests/attach-f-p.c: Likewise. 7259 * tests/bpf.c: Likewise. 7260 * tests/brk.c: Likewise. 7261 * tests/chmod.c: Likewise. 7262 * tests/chown.c: Likewise. 7263 * tests/chown32.c: Likewise. 7264 * tests/chroot.c: Likewise. 7265 * tests/clock_adjtime.c: Likewise. 7266 * tests/clock_nanosleep.c: Likewise. 7267 * tests/clock_xettime.c: Likewise. 7268 * tests/copy_file_range.c: Likewise. 7269 * tests/creat.c: Likewise. 7270 * tests/dup2.c: Likewise. 7271 * tests/dup3.c: Likewise. 7272 * tests/epoll_create.c: Likewise. 7273 * tests/epoll_create1.c: Likewise. 7274 * tests/epoll_ctl.c: Likewise. 7275 * tests/epoll_pwait.c: Likewise. 7276 * tests/epoll_wait.c: Likewise. 7277 * tests/eventfd.c: Likewise. 7278 * tests/execveat.c: Likewise. 7279 * tests/faccessat.c: Likewise. 7280 * tests/fchdir.c: Likewise. 7281 * tests/fchmod.c: Likewise. 7282 * tests/fchmodat.c: Likewise. 7283 * tests/fchown.c: Likewise. 7284 * tests/fchown32.c: Likewise. 7285 * tests/fchownat.c: Likewise. 7286 * tests/fcntl.c: Likewise. 7287 * tests/fcntl64.c: Likewise. 7288 * tests/fdatasync.c: Likewise. 7289 * tests/flock.c: Likewise. 7290 * tests/fstat.c: Likewise. 7291 * tests/fstat64.c: Likewise. 7292 * tests/fstatat64.c: Likewise. 7293 * tests/fstatfs.c: Likewise. 7294 * tests/fstatfs64.c: Likewise. 7295 * tests/fsync.c: Likewise. 7296 * tests/ftruncate.c: Likewise. 7297 * tests/ftruncate64.c: Likewise. 7298 * tests/futimesat.c: Likewise. 7299 * tests/get_mempolicy.c: Likewise. 7300 * tests/getcwd.c: Likewise. 7301 * tests/getdents.c: Likewise. 7302 * tests/getdents64.c: Likewise. 7303 * tests/getegid.c: Likewise. 7304 * tests/getegid32.c: Likewise. 7305 * tests/geteuid.c: Likewise. 7306 * tests/geteuid32.c: Likewise. 7307 * tests/getgid.c: Likewise. 7308 * tests/getgid32.c: Likewise. 7309 * tests/getgroups.c: Likewise. 7310 * tests/getgroups32.c: Likewise. 7311 * tests/getpgrp.c: Likewise. 7312 * tests/getrandom.c: Likewise. 7313 * tests/getresgid.c: Likewise. 7314 * tests/getresgid32.c: Likewise. 7315 * tests/getresuid.c: Likewise. 7316 * tests/getresuid32.c: Likewise. 7317 * tests/getrlimit.c: Likewise. 7318 * tests/getrusage.c: Likewise. 7319 * tests/getuid.c: Likewise. 7320 * tests/getuid32.c: Likewise. 7321 * tests/getxxid.c: Likewise. 7322 * tests/ioctl_uffdio.c: Likewise. 7323 * tests/ioperm.c: Likewise. 7324 * tests/iopl.c: Likewise. 7325 * tests/ipc.c: Likewise. 7326 * tests/kill.c: Likewise. 7327 * tests/lchown.c: Likewise. 7328 * tests/lchown32.c: Likewise. 7329 * tests/libmmsg.c: Likewise. 7330 * tests/libsocketcall.c: Likewise. 7331 * tests/link.c: Likewise. 7332 * tests/linkat.c: Likewise. 7333 * tests/llseek.c: Likewise. 7334 * tests/lseek.c: Likewise. 7335 * tests/lstat.c: Likewise. 7336 * tests/lstat64.c: Likewise. 7337 * tests/mbind.c: Likewise. 7338 * tests/membarrier.c: Likewise. 7339 * tests/memfd_create.c: Likewise. 7340 * tests/migrate_pages.c: Likewise. 7341 * tests/mkdir.c: Likewise. 7342 * tests/mkdirat.c: Likewise. 7343 * tests/mknod.c: Likewise. 7344 * tests/mknodat.c: Likewise. 7345 * tests/mlock.c: Likewise. 7346 * tests/mlock2.c: Likewise. 7347 * tests/move_pages.c: Likewise. 7348 * tests/newfstatat.c: Likewise. 7349 * tests/nsyscalls.c: Likewise. 7350 * tests/old_mmap.c: Likewise. 7351 * tests/oldselect.c: Likewise. 7352 * tests/open.c: Likewise. 7353 * tests/openat.c: Likewise. 7354 * tests/pause.c: Likewise. 7355 * tests/poll.c: Likewise. 7356 * tests/prctl-seccomp-filter-v.c: Likewise. 7357 * tests/prctl-seccomp-strict.c: Likewise. 7358 * tests/preadv2-pwritev2.c: Likewise. 7359 * tests/prlimit64.c: Likewise. 7360 * tests/pselect6.c: Likewise. 7361 * tests/ptrace.c: Likewise. 7362 * tests/readdir.c: Likewise. 7363 * tests/readlink.c: Likewise. 7364 * tests/readlinkat.c: Likewise. 7365 * tests/reboot.c: Likewise. 7366 * tests/remap_file_pages.c: Likewise. 7367 * tests/rename.c: Likewise. 7368 * tests/renameat.c: Likewise. 7369 * tests/renameat2.c: Likewise. 7370 * tests/rmdir.c: Likewise. 7371 * tests/rt_sigpending.c: Likewise. 7372 * tests/rt_sigprocmask.c: Likewise. 7373 * tests/rt_sigsuspend.c: Likewise. 7374 * tests/rt_sigtimedwait.c: Likewise. 7375 * tests/rt_tgsigqueueinfo.c: Likewise. 7376 * tests/sched_get_priority_mxx.c: Likewise. 7377 * tests/sched_rr_get_interval.c: Likewise. 7378 * tests/sched_xetaffinity.c: Likewise. 7379 * tests/sched_xetattr.c: Likewise. 7380 * tests/sched_xetparam.c: Likewise. 7381 * tests/sched_xetscheduler.c: Likewise. 7382 * tests/sched_yield.c: Likewise. 7383 * tests/seccomp-filter-v.c: Likewise. 7384 * tests/seccomp-filter.c: Likewise. 7385 * tests/seccomp-strict.c: Likewise. 7386 * tests/select.c: Likewise. 7387 * tests/sendfile.c: Likewise. 7388 * tests/sendfile64.c: Likewise. 7389 * tests/set_mempolicy.c: Likewise. 7390 * tests/setdomainname.c: Likewise. 7391 * tests/setfsgid.c: Likewise. 7392 * tests/setfsgid32.c: Likewise. 7393 * tests/setfsuid.c: Likewise. 7394 * tests/setfsuid32.c: Likewise. 7395 * tests/setgid.c: Likewise. 7396 * tests/setgid32.c: Likewise. 7397 * tests/setgroups.c: Likewise. 7398 * tests/setgroups32.c: Likewise. 7399 * tests/sethostname.c: Likewise. 7400 * tests/setregid.c: Likewise. 7401 * tests/setregid32.c: Likewise. 7402 * tests/setresgid.c: Likewise. 7403 * tests/setresgid32.c: Likewise. 7404 * tests/setresuid.c: Likewise. 7405 * tests/setresuid32.c: Likewise. 7406 * tests/setreuid.c: Likewise. 7407 * tests/setreuid32.c: Likewise. 7408 * tests/setrlimit.c: Likewise. 7409 * tests/setuid.c: Likewise. 7410 * tests/setuid32.c: Likewise. 7411 * tests/signalfd4.c: Likewise. 7412 * tests/socketcall.c: Likewise. 7413 * tests/splice.c: Likewise. 7414 * tests/stat.c: Likewise. 7415 * tests/stat64.c: Likewise. 7416 * tests/statfs.c: Likewise. 7417 * tests/statfs64.c: Likewise. 7418 * tests/swap.c: Likewise. 7419 * tests/symlink.c: Likewise. 7420 * tests/symlinkat.c: Likewise. 7421 * tests/sync.c: Likewise. 7422 * tests/sync_file_range.c: Likewise. 7423 * tests/sync_file_range2.c: Likewise. 7424 * tests/syslog.c: Likewise. 7425 * tests/tee.c: Likewise. 7426 * tests/time.c: Likewise. 7427 * tests/timer_create.c: Likewise. 7428 * tests/timer_xettime.c: Likewise. 7429 * tests/timerfd_xettime.c: Likewise. 7430 * tests/times-fail.c: Likewise. 7431 * tests/times.c: Likewise. 7432 * tests/truncate.c: Likewise. 7433 * tests/truncate64.c: Likewise. 7434 * tests/ugetrlimit.c: Likewise. 7435 * tests/umount.c: Likewise. 7436 * tests/umount2.c: Likewise. 7437 * tests/uname.c: Likewise. 7438 * tests/unix-pair-send-recv.c: Likewise. 7439 * tests/unlink.c: Likewise. 7440 * tests/unlinkat.c: Likewise. 7441 * tests/userfaultfd.c: Likewise. 7442 * tests/utimes.c: Likewise. 7443 * tests/vhangup.c: Likewise. 7444 * tests/vmsplice.c: Likewise. 7445 * tests/waitid.c: Likewise. 7446 * tests/waitpid.c: Likewise. 7447 * tests/xet_robust_list.c: Likewise. 7448 * tests/xetpgid.c: Likewise. 7449 * tests/xetpriority.c: Likewise. 7450 * tests/xettimeofday.c: Likewise. 7451 7452 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7453 7454 ia64: replace SYS_clone2 with __NR_clone2. 7455 Migrate to __NR_* the last user of SYS_* macros provided 7456 by <sys/syscall.h>. 7457 7458 * clone.c [IA64] (ARG_STACKSIZE, ARG_PTID, ARG_CTID, ARG_TLS): Replace 7459 SYS_clone2 with __NR_clone2. 7460 7461 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7462 7463 Make sure that tcp->s_ent and tcp->s_prev_ent do not point to freed memory 7464 This complements commit v4.13-33-g60d7ec8. 7465 7466 * syscall.c (sysent_buf): New structure. 7467 (free_sysent_buf): New function. 7468 (get_scno): Use them. 7469 7470 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7471 7472 file.c: move definitions of struct stat32 to separate files. 7473 * linux/aarch64/stat32.h: New file. 7474 * linux/powerpc64/stat32.h: Likewise. 7475 * linux/sparc64/stat32.h: Likewise. 7476 * linux/tile/stat32.h: Likewise. 7477 * linux/x32/stat32.h: Likewise. 7478 * linux/x86_64/stat32.h: Likewise. 7479 * Makefile.am (EXTRA_DIST): Add them. 7480 * file.c [SUPPORTED_PERSONALITIES > 1]: Remove arch specific definitions 7481 of struct stat32, include "stat32.h" instead. 7482 7483 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7484 7485 sparc, sparc64: remove obsolete code. 7486 Remove remains of solaris personality support. 7487 This complements commit v4.10-45-gdf4dd8b. 7488 7489 * file.c [SPARC || SPARC64]: Remove the code related to struct solstat. 7490 (printstat, printoldstat) [SPARC || SPARC64]: Remove. 7491 7492 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7493 7494 sparc64: fix decoding of stat family syscalls. 7495 This complements commit v4.13-28-gaebfe83. 7496 7497 * file.c [SPARC64]: Change STAT32_PERSONALITY to 1. 7498 7499 2016-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 7500 7501 Fix decoding of invalid syscalls mapped to indirect subcalls. 7502 When the syscall number returned by arch_get_scno is a mapped indirect 7503 subcall (i.e. mapped subcall of socketcall or ipc syscall), do not 7504 mistakenly treat it as a valid indirect subcall. 7505 7506 * defs.h (SCNO_IS_VALID): Treat scno with TRACE_INDIRECT_SUBCALL flag 7507 as invalid. 7508 * syscall.c (syscall_name): Do no shuffle scno. 7509 (trace_syscall_entering, trace_syscall_exiting): Use 7510 tcp->s_ent->sys_name instead of syscall_name. 7511 (get_scno): In case of invalid syscall, allocate a dynamic struct sysent 7512 containing an appropriate .sys_name. 7513 * tests/nsyscalls.c (main) [SYS_socket_subcall]: Check decoding 7514 of direct syscall number SYS_socket_subcall+1. 7515 (main) [SYS_ipc_subcall]: Check decoding of direct syscall number 7516 SYS_ipc_subcall+1. 7517 7518 2016-08-08 Dmitry V. Levin <ldv (a] altlinux.org> 7519 7520 linux/subcall.h: remove redundant definitions. 7521 * linux/subcall.h: Remove definitions of non-existent socket 7522 and ipc subcalls. 7523 7524 defs.h: simplify SUPPORTED_PERSONALITIES definition. 7525 * defs.h: Group definition of SUPPORTED_PERSONALITIES by value. 7526 7527 2016-08-08 Dmitry V. Levin <ldv (a] altlinux.org> 7528 7529 defs.h: simplify PERSONALITY1_WORDSIZE definition. 7530 Move definition of PERSONALITY1_WORDSIZE macro outside arch specific 7531 ifdefs. 7532 7533 * defs.h [SPARC64 || X86_64 || X32 || AARCH64 || POWERPC64 || TILE] 7534 (PERSONALITY1_WORDSIZE): Remove. 7535 [SUPPORTED_PERSONALITIES > 1] (PERSONALITY1_WORDSIZE): Define to 4 7536 unconditionally. 7537 7538 2016-08-08 Dmitry V. Levin <ldv (a] altlinux.org> 7539 7540 defs.h: simplify PERSONALITY0_WORDSIZE definition. 7541 Move definition of PERSONALITY0_WORDSIZE macro outside arch specific 7542 ifdefs. 7543 7544 * defs.h (PERSONALITY0_WORDSIZE): Define to SIZEOF_LONG unconditionally. 7545 7546 2016-08-08 Dmitry V. Levin <ldv (a] altlinux.org> 7547 7548 sparc64: swap personality numbers. 7549 Fix inconsistency between syscall and ioctl entries on sparc64. 7550 Make layout of personalities on sparc64 the same as on other 7551 architectures that support two personalities. 7552 7553 * defs.h [SPARC64] (PERSONALITY0_WORDSIZE): Change to 8. 7554 [SPARC64] (PERSONALITY1_WORDSIZE): Change to 4. 7555 * linux/sparc64/get_scno.c (arch_get_scno): Swap personality numbers. 7556 * linux/sparc64/ioctls_arch1.h: Rename to ioctls_arch0.h. 7557 * linux/sparc64/ioctls_arch0.h: Rename to ioctls_arch1.h. 7558 * linux/sparc64/ioctls_inc0.h: Rename to ioctls_inc1.h. 7559 * linux/sparc64/ioctls_inc1.h: Rename to ioctls_inc0.h. 7560 7561 2016-08-08 Dmitry V. Levin <ldv (a] altlinux.org> 7562 7563 defs.h: cleanup personality specific macro definitions. 7564 Move the code that defines PERSONALITY[12]_INCLUDE_FUNCS, 7565 PERSONALITY[12]_INCLUDE_PRINTERS_DECLS, 7566 PERSONALITY[12]_INCLUDE_PRINTERS_DEFS, and MPERS_{m,mx}32_IOCTL_MACROS 7567 macros outside arch specific ifdefs. 7568 7569 * defs.h [SPARC] (PERSONALITY0_WORDSIZE): Remove. 7570 [SPARC64 && HAVE_M32_MPERS]: Remove. 7571 [X86_64 && HAVE_M32_MPERS]: Remove. 7572 [X86_64 && HAVE_MX32_MPERS]: Remove. 7573 [X32 && HAVE_M32_MPERS]: Remove. 7574 [AARCH64 && HAVE_M32_MPERS]: Remove. 7575 [POWERPC64 && HAVE_M32_MPERS]: Remove. 7576 [TILE && HAVE_M32_MPERS]: Remove. 7577 (PERSONALITY0_INCLUDE_PRINTERS_DECLS, 7578 PERSONALITY0_INCLUDE_PRINTERS_DEFS): Define unconditionally. 7579 [SUPPORTED_PERSONALITIES > 1 && HAVE_M32_MPERS] 7580 (PERSONALITY1_INCLUDE_PRINTERS_DECLS, 7581 PERSONALITY1_INCLUDE_PRINTERS_DEFS, PERSONALITY1_INCLUDE_FUNCS, 7582 MPERS_m32_IOCTL_MACROS): Define for 7583 [SUPPORTED_PERSONALITIES > 1 && HAVE_M32_MPERS] case. 7584 (PERSONALITY2_INCLUDE_PRINTERS_DECLS, 7585 PERSONALITY2_INCLUDE_PRINTERS_DEFS, PERSONALITY2_INCLUDE_FUNCS, 7586 MPERS_mx32_IOCTL_MACROS): Define for 7587 [SUPPORTED_PERSONALITIES > 2 && HAVE_MX32_MPERS] case. 7588 7589 2016-08-07 Dmitry V. Levin <ldv (a] altlinux.org> 7590 7591 Change #include guard trailing part comments. 7592 * defs.h: Change comment of the trailing part of #include guard. 7593 * flock.h: Likewise. 7594 * gcc_compat.h: Likewise. 7595 * ipc_defs.h: Likewise. 7596 * kernel_types.h: Likewise. 7597 * mpers_type.h: Likewise. 7598 * msghdr.h: Likewise. 7599 * printsiginfo.h: Likewise. 7600 * ptrace.h: Likewise. 7601 * regs.h: Likewise. 7602 * seccomp_fprog.h: Likewise. 7603 * sigevent.h: Likewise. 7604 * statfs.h: Likewise. 7605 * xlat.h: Likewise. 7606 7607 2016-08-08 Eugene Syromyatnikov <evgsyr (a] gmail.com> 7608 7609 Unify usage of #include guards. 7610 This commit is an attempt to unify usage of include guards (in top-level 7611 headers, at least). As a side note, different files with *.h extension 7612 have different semantics: for example, printargs.h is included multiple 7613 times in order to generate slightly varying code depending on values of 7614 macro definitions - maybe it's better to change extension of such files 7615 to something like *.inc. 7616 7617 * defs.h: Add #include guard. 7618 * flock.h: Likewise. 7619 * ipc_defs.h: Likewise. 7620 * mpers_type.h: Likewise. 7621 * printsiginfo.h: Likewise. 7622 * ptrace.h: Likewise. 7623 * regs.h: Likewise. 7624 * seccomp_fprog.h: Likewise. 7625 * gcc_compat.h: Rename the macro used for #include guard. 7626 * msghdr.h: Likewise. 7627 * sigevent.h: Likewise. 7628 * kernel_types.h: Comment the trailing part of #include guard. 7629 * xlat.h: Add missing macro definition for #include guard. 7630 7631 2016-08-06 Dmitry V. Levin <ldv (a] altlinux.org> 7632 7633 tests: add #include guards. 7634 * tests/tests.h: Add #include guard. 7635 7636 2016-08-05 Dmitry V. Levin <ldv (a] altlinux.org> 7637 7638 linux: add #include guards. 7639 * linux/dummy.h: Add #include guard. 7640 * linux/inet_diag.h: Likewise. 7641 * linux/netlink_diag.h: Likewise. 7642 * linux/sock_diag.h: Likewise. 7643 * linux/syscall.h: Likewise. 7644 * linux/unix_diag.h: Likewise. 7645 7646 2016-08-04 Dmitry V. Levin <ldv (a] altlinux.org> 7647 7648 tests/umode_t.c: guard against libc printf format errors. 7649 * tests/umode_t.c (test_syscall): Use different printf format specifiers 7650 to detect libc printf format errors. 7651 7652 2016-08-04 Dmitry V. Levin <ldv (a] altlinux.org> 7653 7654 travis: use a suitable musl revision. 7655 There seems to be no readily available binary packages of musl that are 7656 sufficiently up to date to be used to build and test strace, so prepare 7657 a suitable musl from source. 7658 7659 * travis-install.sh (musl-gcc): Do not add an extra repository, 7660 do not install musl-tools and linux-musl-dev packages. 7661 Download, build, and install a suitable musl revision instead. 7662 7663 2016-08-03 Dmitry V. Levin <ldv (a] altlinux.org> 7664 7665 Fix printing of mode_t, umode_t, and umask types. 7666 Print numeric umode_t type using %#03ho format. 7667 Print return value of umask syscall using %#03lo format. 7668 When printing symbolic mode_t type, always print lower 9 bits, 7669 and print the numeric part using %#03o format. 7670 7671 * defs.h (sprintmode): Remove. 7672 (print_symbolic_mode_t, print_numeric_umode_t, 7673 print_numeric_long_umask): New prototypes. 7674 * printmode.c (sprintmode): Remove. 7675 (print_symbolic_mode_t, print_numeric_umode_t, 7676 print_numeric_long_umask): New functions. 7677 * chmod.c (decode_chmod): Use print_numeric_umode_t. 7678 * ipc_msg.c (SYS_FUNC(msgget)): Likewise. 7679 * ipc_msgctl.c (print_msqid_ds): Likewise. 7680 * ipc_sem.c (SYS_FUNC(semget)): Likewise. 7681 * ipc_shm.c (SYS_FUNC(shmget)): Likewise. 7682 * ipc_shmctl.c (print_shmid_ds): Likewise. 7683 * mq.c (SYS_FUNC(mq_open)): Likewise. 7684 * open.c (decode_open, SYS_FUNC(creat)): Likewise. 7685 * umask.c (SYS_FUNC(umask)): Likewise. 7686 * mknod.c (decode_mknod): Use print_symbolic_mode_t. 7687 * printstat.h (DO_PRINTSTAT): Likewise. 7688 * syscall.c (trace_syscall_exiting): Use print_numeric_long_umask. 7689 * tests/umode_t.c: New file. 7690 * tests/Makefile.am (EXTRA_DIST): Add it. 7691 * tests/creat.c: Rewrite as a thin wrapper around umode_t.c 7692 * tests/mkdir.c: Likewise. 7693 * tests/mkdirat.c: Likewise. 7694 * tests/mknod.c: Extend test coverage of mknod syscall. 7695 * tests/mknodat.c: Extend test coverage of mknodat syscall. 7696 * tests/umask.c: Extend test coverage of umask syscall. 7697 * tests/creat.test: Update the value specified for strace -a parameter. 7698 * tests/mkdir.test: Likewise. 7699 * tests/mkdirat.test: Likewise. 7700 * tests/mknodat.test: Likewise. 7701 7702 2016-08-02 Dmitry V. Levin <ldv (a] altlinux.org> 7703 7704 tests: simplify attach-f-p.test. 7705 * tests/attach-f-p.c Simplify communications between threads 7706 by replacing per-thread timers with pipes. 7707 * tests/attach-f-p.test: Do not ignore signals. 7708 7709 tests: cleanup attach-p-cmd.test. 7710 * tests/attach-p-cmd-cmd.c (main): Cleanup expected output. 7711 * tests/attach-p-cmd-p.c (main): Print expected output. 7712 * tests/attach-p-cmd.test: Do not print expected output. 7713 7714 ip_mreq.test: rewrite from match_grep to match_diff. 7715 * tests/ip_mreq.c (main): Print expected output. 7716 * tests/ip_mreq.test: Use run_strace_match_diff. 7717 * tests/ip_mreq.expected: Remove. 7718 * tests/Makefile.am (EXTRA_DIST): Remove it. 7719 7720 fanotify_mark.test: rewrite from match_grep to match_diff. 7721 * tests/fanotify_mark.c (main): Print expected output. 7722 * tests/fanotify_mark.test: Use run_strace_match_diff. 7723 * tests/fanotify_mark.expected: Remove. 7724 * tests/Makefile.am (EXTRA_DIST): Remove it. 7725 7726 signalfd4.test: rewrite from match_grep to match_diff. 7727 * tests/signalfd4.c (get_sigset_size): New function. 7728 (main): Use it. Print expected output. 7729 * tests/signalfd4.test: Use run_strace_match_diff. 7730 * tests/signalfd4.expected: Remove. 7731 * tests/Makefile.am (EXTRA_DIST): Remove it. 7732 7733 2016-07-31 Dmitry V. Levin <ldv (a] altlinux.org> 7734 7735 tests: rename signalfd.test to signalfd4.test. 7736 * tests/signalfd.c: Rename to signalfd4.c. 7737 * tests/signalfd.test: Rename to signalfd4.test. 7738 * tests/signalfd.expected: Rename to signalfd4.expected. 7739 * tests/.gitignore: Replace signalfd with signalfd4. 7740 * tests/Makefile.am (check_PROGRAMS): Likewise. 7741 (DECODER_TESTS): Replace signalfd.test with signalfd4.test. 7742 (EXTRA_DIST): Replace signalfd.expected with signalfd4.expected. 7743 7744 2016-07-30 Dmitry V. Levin <ldv (a] altlinux.org> 7745 7746 memfd_create.test: rewrite from match_grep to match_diff. 7747 * tests/memfd_create.c (main): Print expected output. 7748 * tests/memfd_create.test: Use run_strace_match_diff. 7749 * tests/memfd_create.expected: Remove. 7750 * tests/Makefile.am (EXTRA_DIST): Remove it. 7751 7752 2016-07-29 Dmitry V. Levin <ldv (a] altlinux.org> 7753 7754 Set exit status to 1 if strace has not traced any processes. 7755 * strace.c (main): Initialize exit_code with 1 when no processes 7756 has been attached. 7757 * strace.1: Document it. 7758 * NEWS: Mention this change. 7759 7760 Attach to the target process before attempting to attach to its siblings 7761 * strace.c (attach_tcb): Attach to tcp->pid first. 7762 7763 Report the name of ptrace command when ptrace_attach_or_seize fails. 7764 * strace.c (ptrace_attach_cmd): New variable. 7765 (ptrace_attach_or_seize): Save last ptrace command's name 7766 to ptrace_attach_cmd. 7767 (attach_tcb, startup_child): Use it in error diagnostics. 7768 7769 strace.c: refactor startup_attach. 7770 * strace.c (startup_attach): Move the inner part of the big loop 7771 over tcbtab elements ... 7772 (attach_tcb): ... to this new function. 7773 7774 startup_attach: do not use atoi. 7775 * strace.c (startup_attach): Replace atoi with string_to_uint. 7776 7777 2016-07-28 Dmitry V. Levin <ldv (a] altlinux.org> 7778 7779 Do not enable mpers runtime checks if mpers is not enabled. 7780 * m4/mpers.m4 (HAVE_RUNTIME): Enable iff both mpers and runtime 7781 work properly. 7782 7783 2016-07-28 Dmitry V. Levin <ldv (a] altlinux.org> 7784 7785 linux/dummy_check.sh: remove obsolete script. 7786 Starting with commit v4.10-62-ga0bd374, function prototypes 7787 of syscall parsers are generated at build time. 7788 7789 * linux/dummy_check.sh: Remove. 7790 7791 2016-07-28 Dmitry V. Levin <ldv (a] altlinux.org> 7792 7793 generate_xlat_in.sh: remove obsolete script. 7794 This script has been created by commit v4.8-180-g0ed617b 7795 for the one-shot job of automatic convertion of xlat structures 7796 from *.c files to xlat/*.in files. 7797 7798 * generate_xlat_in.sh: Remove. 7799 7800 2016-07-28 Dmitry V. Levin <ldv (a] altlinux.org> 7801 7802 tests: use terse notation in designated initializers where appropriate. 7803 * tests/btrfs.c (btrfs_test_dev_replace_ioctl): Initialize 7804 struct btrfs_ioctl_dev_replace_args using terse notation. 7805 * tests/clock_nanosleep.c (main): Initialize struct timespec 7806 using terse notation. 7807 * tests/nanosleep.c (main): Likewise. 7808 7809 2016-07-28 Dmitry V. Levin <ldv (a] altlinux.org> 7810 7811 Consistently use extended regular expressions where appropriate. 7812 When grep or sed is used with basic regular expressions containing 7813 '(', ')', '{', '}', '|', '?', and '+' special characters, convert them 7814 to extended regular expressions for better portability and readability. 7815 7816 * generate_mpers_am.sh: Convert grep and sed BREs to EREs. 7817 * Makefile.am (ioctl_redefs%.h, m%_type_defs.h, m%_funcs.h, 7818 mpers_printer_decl_pattern, printers.h, %_printer_decls.h, 7819 %_printer_defs.h): Convert sed BREs to EREs. 7820 * generate_sen.sh: Likewise. 7821 * linux/mips/genstub.sh: Likewise. 7822 * make-dsc: Likewise. 7823 * mpers.sh: Likewise. 7824 * xlat/gen.sh: Likewise. 7825 * tests/Makefile.am (ksysent.h): Likewise. 7826 * tests/ksysent.sed: Likewise. 7827 * tests/pc.test: Likewise. 7828 * tests/strace-S.test: Likewise. 7829 * tests/strace-V.test: Likewise. 7830 * tests/strace-k.test: Likewise. 7831 7832 2016-07-28 Dmitry V. Levin <ldv (a] altlinux.org> 7833 7834 tests: fix extended regexps. 7835 * tests/adjtimex.c (main): Consistently quote curly braces 7836 in expected output. 7837 * tests/uio.expected: Likewise. 7838 7839 2016-07-27 Dmitry V. Levin <ldv (a] altlinux.org> 7840 7841 Post-release administrivia. 7842 * NEWS: Add header line for the next release. 7843 * debian/changelog.in: Add a changelog entry for 4.13-1. 7844 * strace.spec.in: Likewise. 7845 7846 2016-07-26 Dmitry V. Levin <ldv (a] altlinux.org> 7847 7848 Prepare for 4.13 release. 7849 * NEWS: Update for 4.13 release. 7850 7851 Fix one more code pattern that might break gcc strict aliasing rules. 7852 * btrfs.c (btrfs_ioctl): Add one more expicit cast to "void *", 7853 to avoid breaking strict-aliasing rules reported by some gcc compilers. 7854 * syscall.c (decode_socket_subcall): Likewise. 7855 * util.c (next_set_bit): Likewise. 7856 * tests/btrfs.c (btrfs_test_send_ioctl): Likewise. 7857 7858 Fix casts of ptrace's third argument. 7859 * strace.c (maybe_allocate_tcb): Replace "(char *) 0" with NULL 7860 as ptrace's third argument. 7861 * linux/sparc64/get_scno.c (arch_get_scno): Cast third argument 7862 of ptrace to "void *'. 7863 * syscall.c (get_regs): Likewise. 7864 * upeek.c (upeek): Likewise. 7865 * util.c (umoven): Likewise. 7866 7867 tests/btrfs.c: do not include the same header file twice. 7868 * tests/btrfs.c: Do not include <sys/fcntl.h>, <fcntl.h> is enough. 7869 7870 tests: fix accept4.test on systems that lack SOCK_CLOEXEC definition. 7871 * tests/accept4.c: Check that O_CLOEXEC is defined. Use O_CLOEXEC 7872 instead of SOCK_CLOEXEC. 7873 7874 2016-07-26 Dmitry V. Levin <ldv (a] altlinux.org> 7875 7876 tests: fix vhangup.test. 7877 * tests/vhangup.c (main): Fix expected output for the case when 7878 the calling process has CAP_SYS_TTY_CONFIG capability. 7879 7880 Reported-by: Yun-Chih Chen <b03902074 (a] ntu.edu.tw> 7881 7882 2016-07-26 Dmitry V. Levin <ldv (a] altlinux.org> 7883 7884 tests: fix chown.test. 7885 * tests/chown.test: Fix the value specified for strace -a parameter. 7886 7887 Reported-by: Yun-Chih Chen <b03902074 (a] ntu.edu.tw> 7888 7889 2016-07-25 Dmitry V. Levin <ldv (a] altlinux.org> 7890 7891 x32: fix syscall entries for x86_64 variants of io_setup and io_submit. 7892 * linux/x32/syscallent.h (64:io_setup, 64:io_submit): Change handler 7893 to printargs. 7894 7895 tests/ipc.c: fix typo. 7896 7897 2016-07-24 Dmitry V. Levin <ldv (a] altlinux.org> 7898 7899 NEWS: Prepare for 4.13 release. 7900 7901 2016-07-23 Dmitry V. Levin <ldv (a] altlinux.org> 7902 7903 debian: add gcc-multilib to Build-Depends for relevant architectures. 7904 * debian/control (Build-Depends) [amd64, ppc64, sparc64, x32]: 7905 Add gcc-multilib to enable multiple personalities support. 7906 7907 2016-07-22 Dmitry V. Levin <ldv (a] altlinux.org> 7908 7909 tests: check decoding of ipc syscall. 7910 * tests/ipc.c: New file. 7911 * tests/ipc.test: New test. 7912 * tests/.gitignore: Add ipc. 7913 * tests/Makefile.am (check_PROGRAMS): Likewise. 7914 (DECODER_TESTS): Add ipc.test. 7915 7916 Fix corner cases of ipc syscall decoding. 7917 * xlat/ipccalls.in: New file. 7918 * ipc.c: New file. 7919 * Makefile.am (libstrace_a_SOURCES): Add it. 7920 * linux/dummy.h (sys_ipc): Remove stub alias. 7921 * syscall.c (decode_ipc_subcall): Treat 1st argument of ipc syscall 7922 as "unsigned int". 7923 [S390 || S390X]: Skip ipc cubcalls that have non-zero version. 7924 [SPARC64]: Likewise, for the native personality. 7925 Save ipc cubcall version for later use by specific ipc parsers. 7926 * ipc_msg.c (SYS_FUNC(msgrcv)): Handle non-zero ipc subcall version. 7927 [SPARC64]: Handle non-ipc_kludge case for the native personality. 7928 * linux/subcall.h (msgrcv): Change nargs from 4 to 5. 7929 * linux/s390/syscallent.h (ipc): Change nargs from 6 to 5. 7930 * linux/s390x/syscallent.h (ipc): Likewise. 7931 7932 2016-07-21 Dmitry V. Levin <ldv (a] altlinux.org> 7933 7934 tests: skip netlink_protocol.test on old systems. 7935 * tests/netlink_protocol.c: Check that HAVE_SYS_XATTR_H is defined. 7936 Include <stdlib.h> and <sys/xattr.h>. 7937 (main): Check that system.sockprotoname attribute is supported. 7938 7939 Do not print too many arguments of socketcall syscall. 7940 * socketcall.c (SYS_FUNC(socketcall)): Print just "call" and "args" 7941 syscall arguments. 7942 * tests/socketcall.c (test_socketcall): Update expected output. 7943 * tests/socketcall.test: Likewise. 7944 7945 2016-07-20 Dmitry V. Levin <ldv (a] altlinux.org> 7946 7947 tests/nsyscalls.c: change the type of syscall arguments to kernel_ulong_t 7948 As most syscalls on x32 and mips n32 are actually 64-bit, 7949 check that 64-bit syscall arguments are decoded properly. 7950 7951 This also workarounds x32 gcc sign extension bug 7952 reported by Eugene Syromyatnikov at 7953 https://sourceforge.net/p/strace/mailman/message/35150860/ 7954 7955 * tests/nsyscalls.c: Include "kernel_types.h". 7956 (main): Change the type of syscall arguments to kernel_ulong_t. 7957 7958 2016-07-20 Dmitry V. Levin <ldv (a] altlinux.org> 7959 7960 x32, mips n32: make printargs print full 64-bit syscall arguments. 7961 As most of x32 syscalls are regular x86_64 syscalls, they should be 7962 printed by default as 64-bit syscalls, and syscall parsers at their 7963 discretion might print syscalls differently. This is already 7964 implemented in 64-bit strace tracing x32 personality processes, 7965 and now x32 strace will also behave this way. 7966 7967 Similar reasoning applies to mips n32. 7968 7969 * util.c (printargs) [HAVE_STRUCT_TCB_EXT_ARG]: Print syscall arguments 7970 from ext_arg array using %llx format. 7971 7972 2016-07-20 Dmitry V. Levin <ldv (a] altlinux.org> 7973 7974 tests: check decoding of socketcall syscall. 7975 * tests/socketcall.c: New file. 7976 * tests/socketcall.test: New test. 7977 * tests/.gitignore: Add socketcall. 7978 * tests/Makefile.am (check_PROGRAMS): Likewise. 7979 (DECODER_TESTS): Add socketcall.test. 7980 7981 Fix corner cases of socketcall syscall. 7982 * xlat/socketcalls.in: New file. 7983 * socketcall.c: New file. 7984 * Makefile.am (libstrace_a_SOURCES): Add it. 7985 * linux/dummy.h (sys_socketcall): Remove stub alias. 7986 * syscall.c (decode_socket_subcall): Treat 1st argument of socketcall 7987 as "int". Do not substitute syscall until all socketcall arguments 7988 have been fetched successfully. 7989 7990 2016-07-19 Dmitry V. Levin <ldv (a] altlinux.org> 7991 7992 tests: check decoding and dumping of send and recv syscalls. 7993 * tests/unix-pair-send-recv.c: New file. 7994 * tests/unix-pair-send-recv.expected: Likewise. 7995 * tests/unix-pair-send-recv.test: New test. 7996 * tests/.gitignore: Add unix-pair-send-recv. 7997 * tests/Makefile.am (check_PROGRAMS): Likewise. 7998 (DECODER_TESTS): Add unix-pair-send-recv.test. 7999 (EXTRA_DIST): Add unix-pair-send-recv.expected. 8000 8001 tests: rename unix-pair-send-recv to unix-pair-sendto-recvfrom. 8002 * dumpio.expected: Rename to unix-pair-sendto-recvfrom.expected. 8003 * dumpio.test: Rename to unix-pair-sendto-recvfrom.test. 8004 * unix-pair-send-recv.c: Rename to unix-pair-sendto-recvfrom.c 8005 * .gitignore: Rename unix-pair-send-recv to unix-pair-sendto-recvfrom. 8006 * Makefile.am (check_PROGRAMS): Likewise. 8007 (DECODER_TESTS): Add unix-pair-sendto-recvfrom.test. 8008 (MISC_TESTS): Remove dumpio.test. 8009 (EXTRA_DIST): Rename dumpio.expected 8010 to unix-pair-sendto-recvfrom.expected. 8011 8012 tests: check decoding of shutdown syscall. 8013 * tests/shutdown.c: New file. 8014 * tests/shutdown.test: New test. 8015 * tests/.gitignore: Add shutdown. 8016 * tests/Makefile.am (check_PROGRAMS): Likewise. 8017 (DECODER_TESTS): Add shutdown.test. 8018 8019 xlat/shutdown_modes.in: convert to modern syntax. 8020 * xlat/shutdown_modes.in: Replace open-coded xlat table with a list 8021 of constants. 8022 8023 tests: check silent decoding of sendmmsg and recvmmsg syscalls. 8024 * tests/mmsg-silent.c: New file. 8025 * tests/mmsg-silent.test: New test. 8026 * tests/.gitignore: Add mmsg-silent. 8027 * tests/Makefile.am (check_PROGRAMS): Likewise. 8028 (DECODER_TESTS): Add mmsg-silent.test. 8029 8030 Print unsent messages of failed sendmmsg syscall. 8031 * mmsghdr.c (decode_mmsgvec): Clear syserror for the time of printing 8032 struct mmsghdr array in !use_msg_len case. 8033 (SYS_FUNC(sendmmsg)): As failed sendmmsg syscall does not 8034 set msg_len fields, tell this to decode_mmsgvec. 8035 * tests/mmsg_name.c (test_mmsg_name): Check it. 8036 8037 Print unsent messages of sendmmsg syscall. 8038 * defs.h (decode_mmsgvec): Add int argument. 8039 * mmsghdr.c (print_struct_mmsghdr_config): Add msg_len_vlen field. 8040 (print_struct_mmsghdr): Print struct mmsghdr.msg_len only for 8041 msg_len_vlen first elements of struct mmsghdr array. 8042 (decode_mmsgvec): Add msg_len_vlen argument. 8043 (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg)): Pass to decode_mmsgvec 8044 the number of elements of struct mmsghdr array that contain meaningful 8045 struct mmsghdr.msg_len. 8046 * tests/mmsg_name.c (test_mmsg_name): Check it. 8047 8048 tests: check verbose decoding of msg_name* fields of struct mmsghdr array 8049 * tests/mmsg_name-v.c: New file. 8050 * tests/mmsg_name-v.test: New test. 8051 * tests/.gitignore: Add mmsg_name-v. 8052 * tests/Makefile.am (check_PROGRAMS): Likewise. 8053 (DECODER_TESTS): Add mmsg_name-v.test. 8054 8055 tests: check decoding of msg_name* fields of struct mmsghdr array. 8056 * tests/mmsg_name.c: New file. 8057 * tests/mmsg_name.test: New test. 8058 * tests/.gitignore: Add mmsg_name. 8059 * tests/Makefile.am (check_PROGRAMS): Likewise. 8060 (DECODER_TESTS): Add mmsg_name.test. 8061 8062 2016-07-19 Dmitry V. Levin <ldv (a] altlinux.org> 8063 8064 Fix decoding of msg_name* fields of recvmmsg syscall's msghdr array argument 8065 As msg_namelen fields of recvmmsg syscall's struct msghdr array have 8066 the same read-write semantics as struct msghdr argument of recvmsg 8067 syscall, parser of recvmmsg syscall needs a similar fix. 8068 8069 * mmsghdr.c (print_struct_mmsghdr): Increment p_user_msg_namelen field. 8070 (mmsgvec_data): New structure. 8071 (free_mmsgvec_data, save_mmsgvec_namelen): New functions. 8072 (decode_mmsgvec): Take into account the data saved 8073 by save_mmsgvec_namelen function. 8074 (SYS_FUNC(recvmmsg)): Use save_mmsgvec_namelen. 8075 8076 2016-07-19 Dmitry V. Levin <ldv (a] altlinux.org> 8077 8078 mmsghdr.c: rewrite decode_mmsgvec using print_array. 8079 * fetch_struct_mmsghdr.c (sizeof_struct_mmsghdr): New mpers printer. 8080 * mmsghdr.c: Include <limits.h>. 8081 (print_struct_mmsghdr_config): New structure. 8082 (fetch_struct_mmsghdr_or_printaddr, print_struct_mmsghdr): New functions. 8083 (decode_mmsgvec): Rewrite using them and print_array. 8084 8085 tests: check decoding of timeout argument of recvmmsg syscall. 8086 * tests/recvmmsg-timeout.c: New file. 8087 * tests/recvmmsg-timeout.test: New test. 8088 * tests/.gitignore: Add recvmmsg-timeout. 8089 * tests/Makefile.am (check_PROGRAMS): Likewise. 8090 (DECODER_TESTS): Add recvmmsg-timeout.test. 8091 8092 Fix printing of remaining timeout of recvmmsg syscall. 8093 * mmsghdr.c (SYS_FUNC(recvmmsg)): Do not print remaining timeout 8094 when the 5th syscall argument is NULL. 8095 * tests/mmsg.c (main): Update expected output. 8096 8097 Remove configure checks for recvmmsg and sendmmsg. 8098 * configure.ac (AC_CHECK_FUNCS): Remove recvmmsg and sendmmsg. 8099 8100 tests: add recv_mmsg and send_mmsg functions to libtests. 8101 * tests/tests.h (recv_mmsg, send_mmsg): New prototype. 8102 * tests/libmmsg.c: New file. 8103 * tests/Makefile.am (libtests_a_SOURCES): Add it. 8104 * tests/mmsg.c Do not check for __NR_sendmmsg, __NR_recvmmsg, 8105 HAVE_SENDMMSG, and HAVE_RECVMMSG. Do not include unused headers. 8106 (recv_mmsg, send_mmsg): Remove. 8107 8108 tests: add socketcall function to libtests. 8109 * tests/tests.h (socketcall): New prototype. 8110 * tests/libsocketcall.c: New file. 8111 * tests/Makefile.am (libtests_a_SOURCES): Add it. 8112 8113 2016-07-18 Dmitry V. Levin <ldv (a] altlinux.org> 8114 8115 Use IOV_MAX instead of UIO_MAXIOV. 8116 IOV_MAX appears to be more portable than UIO_MAXIOV. 8117 8118 * msghdr.c: Include <limits.h>. Remove fallback defintion of UIO_MAXIOV. 8119 (get_optmem_max): Replace UIO_MAXIOV with IOV_MAX. 8120 * tests/msg_control.c: Likewise. 8121 8122 2016-07-18 Dmitry V. Levin <ldv (a] altlinux.org> 8123 8124 Unabuse struct tcb.auxstr. 8125 As we've got a proper mechanism that parsers can use for storing private 8126 data between entering and exiting stages, all cases of struct tcb.auxstr 8127 abuse should go. 8128 8129 * btrfs.c (btrfs_ioctl): Use set_tcb_priv_ulong and get_tcb_priv_ulong 8130 instead of abusing tcp->auxstr. 8131 * file_handle.c (SYS_FUNC(name_to_handle_at)): Likewise. 8132 * msghdr.c (SYS_FUNC(recvmsg)): Likewise. 8133 * net.c (decode_sockname, SYS_FUNC(recvfrom)): Likewise. 8134 * v4l2.c (print_v4l2_queryctrl): Likewise. 8135 8136 2016-07-18 Dmitry V. Levin <ldv (a] altlinux.org> 8137 8138 Fix race condition in decoding timeout argument of recvmmsg syscall. 8139 As the value returned by sprint_timespec points to a static area and may 8140 be overwritten by subsequent calls to sprint_timespec, it is not safe to 8141 save this value on entering syscall and use it later on exiting. 8142 8143 * mmsghdr.c (SYS_FUNC(recvmmsg)): On entering syscall, copy the value 8144 returned by sprint_timespec to a dynamically allocated memory, and save 8145 the pointer using set_tcb_priv_data. On exiting, restore it using 8146 get_tcb_priv_data. 8147 8148 2016-07-18 Dmitry V. Levin <ldv (a] altlinux.org> 8149 8150 Fix race condition in decoding rt_sigtimedwait's timeout argument. 8151 As the value returned by sprint_timespec points to a static area and may 8152 be overwritten by subsequent calls to sprint_timespec, it is not safe to 8153 save this value on entering syscall and use it later on exiting. 8154 8155 * signal.c (SYS_FUNC(rt_sigtimedwait)): On entering syscall, copy the 8156 value returned by sprint_timespec to a dynamically allocated memory, 8157 and save the pointer using set_tcb_priv_data. On exiting, restore it 8158 using get_tcb_priv_data. 8159 8160 2016-07-18 Patrik Jakobsson <patrik.jakobsson (a] linux.intel.com> 8161 8162 Add private data field to struct tcb. 8163 We need to be able to store private data in the struct tcb across it's 8164 lifetime. To ensure proper deallocation of this stored data a callback 8165 must be provided along with the data. The callback is executed 8166 automatically on exiting syscall, and when the life of the tcb ends. 8167 8168 * defs.h (struct tcb): Add _priv_data and _free_priv_data fields. 8169 (get_tcb_priv_data, set_tcb_priv_data, free_tcb_priv_data): 8170 New prototypes. 8171 (get_tcb_priv_ulong, set_tcb_priv_ulong): New static inline functions. 8172 * strace.c (get_tcb_priv_data, set_tcb_priv_data, free_tcb_priv_data): 8173 New functions. 8174 (droptcb): Call free_tcb_priv_data. 8175 * syscall.c (trace_syscall_exiting): Call free_tcb_priv_data 8176 when clearing TCB_INSYSCALL flag. 8177 8178 2016-07-18 Dmitry V. Levin <ldv (a] altlinux.org> 8179 8180 net.c: move parsers of sendmsg and recvmsg syscalls to msghdr.c. 8181 * defs.h (fetch_msghdr_namelen, decode_msghdr): Remove. 8182 * net.c (SYS_FUNC(sendmsg), SYS_FUNC(recvmsg)): Move ... 8183 * msghdr.c: ... here. 8184 (fetch_msghdr_namelen, decode_msghdr): Add static qualifier. 8185 8186 net.c: move parsers of sendmmsg and recvmmsg syscalls to mmsghdr.c. 8187 * defs.h (decode_mmsgvec): Remove. 8188 * net.c: Do not include "msghdr.h". 8189 (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg)): Move ... 8190 * mmsghdr.c: ... here. 8191 (decode_mmsgvec): Add static qualifier. 8192 8193 msghdr.c: move all mmsghdr parsers to a separate file. 8194 * msghdr.h (print_struct_msghdr): New prototype. 8195 * msghdr.c (print_msghdr): Rename to print_struct_msghdr, remove 8196 static qualifier, all callers changed. 8197 (decode_mmsghdr, decode_mmsgvec, dumpiov_in_mmsghdr): Move to ... 8198 * mmsghdr.c: ... new file. 8199 * Makefile.am (strace_SOURCES): Add it. 8200 8201 2016-07-14 Dmitry V. Levin <ldv (a] altlinux.org> 8202 8203 tests: disable part of msg_name test on non-glibc systems. 8204 Sadly, musl recvmsg wrapper blindly dereferences 2nd argument, 8205 so limit the affected part of the test to glibc that doesn't. 8206 8207 * tests/msg_name.c (test_msg_name) [!__GLIBC__]: Do not test 8208 with inaccessible 2nd argument. 8209 8210 2016-07-13 Dmitry V. Levin <ldv (a] altlinux.org> 8211 8212 Print struct iovec as a regular structure. 8213 * io.c (print_iovec): Print names of iov_base and iov_len fields. 8214 * tests/aio.c (main): Update expected output. 8215 * tests/inet-cmsg.c (main): Likewise. 8216 * tests/mmsg.c (main): Likewise. 8217 * tests/msg_name.c (test_msg_name): Likewise. 8218 * tests/preadv-pwritev.c (main): Likewise. 8219 * tests/preadv2-pwritev2.c (main): Likewise. 8220 * tests/preadv.c (main): Likewise. 8221 * tests/pwritev.c (main): Likewise. 8222 * tests/readv.c (main): Likewise. 8223 * tests/recvmsg.c (main): Likewise. 8224 * tests/vmsplice.c (main): Likewise. 8225 * tests/scm_rights-fd.test: Likewise. 8226 * tests/uio.expected: Likewise. 8227 8228 tests: check decoding of msghdr.msg_name* arguments of recvmsg syscall. 8229 * tests/msg_name.c: New file. 8230 * tests/msg_name.test: New test. 8231 * tests/.gitignore: Add msg_name. 8232 * tests/Makefile.am (check_PROGRAMS): Likewise. 8233 (DECODER_TESTS): Add msg_name.test. 8234 8235 2016-07-13 Dmitry V. Levin <ldv (a] altlinux.org> 8236 8237 Fix decoding of struct msghdr.msg_name* arguments of recvmsg syscall. 8238 As the msghdr.msg_namelen argument of recvmsg syscall has the same 8239 read-write semantics as the address length argument of recvfrom syscall, 8240 parser of recvmsg syscall needs a similar fix. 8241 8242 * defs.h (fetch_msghdr_namelen): New prototype. 8243 (decode_msghdr): Add "int *" argument. 8244 * msghdr.c (print_msghdr): Likewise. Treat it as a pointer to struct 8245 msghdr.msg_namelen passed to the kernel. Pass to decode_sockaddr 8246 the size of socket address actually returned by the kernel. 8247 Print both user and kernel address lengths when the value changes. 8248 (decode_msghdr, decode_mmsghdr): Add "int *" argument, 8249 forward it to print_msghdr. 8250 (decode_mmsgvec): Update decode_mmsghdr invocation. 8251 (fetch_msghdr_namelen): New function. 8252 * net.c (SYS_FUNC(sendmsg)): Update decode_msghdr invocation. 8253 (SYS_FUNC(recvmsg)): Use fetch_msghdr_namelen on entering to save 8254 struct msghdr.msg_namelen. On exiting, pass the saved value 8255 to decode_msghdr. 8256 8257 2016-07-12 Dmitry V. Levin <ldv (a] altlinux.org> 8258 8259 Update generic ioctl entries from linux 4.7. 8260 * linux/64/ioctls_inc.h: Update from linux v4.7 using ioctls_gen.sh. 8261 * linux/32/ioctls_inc_align32.h: Likewise. 8262 * linux/32/ioctls_inc_align64.h: Likewise. 8263 8264 2016-07-12 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 8265 8266 x32: update ioctl entries from linux 4.7. 8267 * linux/x32/ioctls_inc0.h: Update from linux v4.7 using ioctls_gen.sh. 8268 8269 maint: update for linux 4.7. 8270 * maint/ioctls_sym.sh: Drop obsolete workarounds for linux/btrfs.h. 8271 8272 2016-07-12 Dmitry V. Levin <ldv (a] altlinux.org> 8273 8274 block.c: remove BLKDAXGET support. 8275 BLKDAXGET was removed by linux kernel commit v4.7-rc1~78^2^2~4. 8276 8277 * block.c: Do not define BLKDAXGET. 8278 (block_ioctl): Remove BLKDAXGET support. 8279 * tests/ioctl_block.c (main): Remove BLKDAXGET test. 8280 8281 2016-07-12 Dmitry V. Levin <ldv (a] altlinux.org> 8282 8283 Fix printing of socklen argument of bind and sendto syscalls. 8284 * net.c (SYS_FUNC(bind)): Print 3rd syscall argument using %d format. 8285 (SYS_FUNC(sendto)): Print 6th syscall argument using %d format. 8286 8287 tests: check decoding of sockaddr related arguments of recvfrom syscall. 8288 * configure.ac (AC_CHECK_FUNCS): Add recvfrom. 8289 * tests/recvfrom.c: New file. 8290 * tests/recvfrom.test: New test. 8291 * tests/.gitignore: Add recvfrom. 8292 * tests/Makefile.am (check_PROGRAMS): Likewise. 8293 (DECODER_TESTS): Add recvfrom.test. 8294 8295 Fix decoding of sockaddr related arguments of recvfrom syscall. 8296 * net.c (SYS_FUNC(recvfrom)): Use fetch_socklen. Save the address 8297 length passed to the kernel and print it on error. Do not print more 8298 bytes of the socket address than actually returned by the kernel. 8299 Print both user and kernel address lengths when the returned address 8300 is truncated. 8301 8302 tests: check decoding of accept4 syscall. 8303 * configure.ac (AC_CHECK_FUNCS): Add accept4. 8304 * tests/accept4.c: New file. 8305 * tests/accept4.test: New test. 8306 * tests/.gitignore: Add accept4. 8307 * tests/Makefile.am (check_PROGRAMS): Likewise. 8308 (DECODER_TESTS): Add accept4.test. 8309 8310 tests: check decoding of accept syscall. 8311 * tests/accept.c: New file. 8312 * tests/accept.test: New test. 8313 * tests/.gitignore: Add accept. 8314 * tests/Makefile.am (check_PROGRAMS): Likewise. 8315 (DECODER_TESTS): Add accept.test. 8316 8317 tests: check decoding of getpeername syscall. 8318 * tests/getpeername.c: New file. 8319 * tests/getpeername.test: New test. 8320 * tests/.gitignore: Add getpeername. 8321 * tests/Makefile.am (check_PROGRAMS): Likewise. 8322 (DECODER_TESTS): Add getpeername.test. 8323 8324 tests: check decoding of getsockname syscall. 8325 * tests/getsockname.c: New file. 8326 * tests/getsockname.test: New test. 8327 * tests/sockname.c: New file. 8328 * tests/.gitignore: Add getsockname. 8329 * tests/Makefile.am (check_PROGRAMS): Likewise. 8330 (DECODER_TESTS): Add getsockname.test. 8331 (EXTRA_DIST): Add sockname.c. 8332 8333 Print both values of changing address length in sockname family syscalls 8334 * net.c (decode_sockname): Print both user and kernel address lengths 8335 when the value changes. 8336 * tests/net-y-unix.c (main): Update expected output. 8337 * tests/net-yy-unix.c (main): Likewise. 8338 * tests/net.expected: Likewise. 8339 8340 Enhance diagnostics of address truncation in sockname family syscalls. 8341 * net.c (decode_sockname): Print both user and kernel address lengths 8342 when the returned address is truncated. 8343 * tests/sun_path.expected: Update expected output. 8344 8345 Fix decoding of getsockname, getpeername, accept, and accept4 syscalls. 8346 * net.c (fetch_socklen): New function. 8347 (decode_sockname): Use it. On entering syscall, decode early 8348 and return RVAL_DECODED when possible. On error, print the address 8349 length passed to the kernel. Do not print more bytes of the socket 8350 address than actually returned by the kernel. 8351 8352 2016-07-11 Dmitry V. Levin <ldv (a] altlinux.org> 8353 8354 Prepare parsers of sockname family syscalls for the upcoming fix. 8355 * net.c (do_sockname): Rename to decode_sockname, drop second argument, 8356 do not print sock_type_flags, return RVAL_DECODED on exiting. 8357 (SYS_FUNC(accept), SYS_FUNC(getsockname)): Use decode_sockname instead 8358 of do_sockname, take its return code into account. 8359 (SYS_FUNC(accept4)): Likewise. Print sock_type_flags when 8360 decode_sockname returns RVAL_DECODED. 8361 8362 2016-07-08 Dmitry V. Levin <ldv (a] altlinux.org> 8363 8364 netlink: handle multipart netlink messages. 8365 Handle multipart netlink messages made of multiple struct nlmsghdr 8366 headers with associated payload in one byte stream. 8367 8368 * netlink.c (fetch_nlmsghdr, print_nlmsghdr, 8369 decode_nlmsghdr_with_payload): New functions. 8370 (decode_netlink): Use them. 8371 * tests/netlink_parsing.c (send_query): Check them. 8372 8373 2016-07-07 Dmitry V. Levin <ldv (a] altlinux.org> 8374 8375 tests: extend netlink protocol check. 8376 * tests/netlink_protocol.c (send_query): Check that no part 8377 of netlink message is fetched beyond the end of message. 8378 Check decoding of zero address and zero length messages. 8379 Check decoding of messages with nlmsg_len exceeding message length. 8380 8381 2016-07-07 Fabien Siron <fabien.siron (a] epita.fr> 8382 8383 tests: check decoding of netlink protocol. 8384 * tests/netlink_protocol.test: New test. 8385 * tests/netlink_protocol.c: New file. 8386 * tests/.gitignore: Add netlink_protocol. 8387 * tests/Makefile.am (check_PROGRAMS): Likewise. 8388 (DECODER_TESTS): Add netlink_protocol.test. 8389 8390 2016-07-07 Fabien Siron <fabien.siron (a] epita.fr> 8391 8392 Add a general netlink socket parser. 8393 Introduce a general socket netlink parser which prints the header and 8394 a string for the remaining part of the buffer. It doesn't handle all 8395 the netlink flags and types yet because the parser needs more 8396 information, this will be implemented later. 8397 8398 * net.c (decode_sockbuf): New function. 8399 (SYS_FUNC(send), SYS_FUNC(sendto), SYS_FUNC(recv), SYS_FUNC(recvfrom)): 8400 Use it instead of printstr. 8401 * msghdr.c (print_msghdr): Pass IOV_DECODE_NETLINK to tprint_iov_upto() 8402 for netlink sockets. 8403 * netlink.c: New file. 8404 * Makefile.am (strace_SOURCES): Add it. 8405 * defs.h (decode_netlink, getfdproto): New prototypes. 8406 (iov_decode): Add IOV_DECODER_NETLINK. 8407 * io.c (print_iovec): Use decode_netlink(). 8408 * util.c (getfdproto): Remove static keyword. 8409 * xlat/netlink_flags.in: New file. 8410 * xlat/netlink_types.in: New file. 8411 8412 2016-07-07 Dmitry V. Levin <ldv (a] altlinux.org> 8413 8414 Update sigaltstack SS_* constants. 8415 * xlat/sigaltstack_flags.in: Add SS_AUTODISARM introduced 8416 by linux kernel commit v4.7-rc1~195^2. 8417 8418 Update fs *_MAGIC constants. 8419 * xlat/fsmagic.in: Add NSFS_MAGIC, TRACEFS_MAGIC, BPF_FS_MAGIC, 8420 and UDF_SUPER_MAGIC introduced by linux kernel commits 8421 v3.19-rc1~53^2~7^2~1, v4.1-rc1~147^2~4, v4.4-rc1~141^2~17^2~1, 8422 and v4.7-rc1~161^2, respectively. 8423 8424 2016-07-05 Dmitry V. Levin <ldv (a] altlinux.org> 8425 8426 Update KEYCTL_* constants. 8427 * xlat/keyctl_commands.in: Add KEYCTL_DH_COMPUTE introduced 8428 by linux kernel commit v4.7-rc1~124^2~2^2~2^2. 8429 8430 Update input event constants. 8431 * xlat/evdev_keycode.in: Add KEY_* constants introduced 8432 by linux kernel commit v4.7-rc6~32^2~6^2. 8433 8434 2016-07-04 Dmitry V. Levin <ldv (a] altlinux.org> 8435 8436 Update RWF_* constants. 8437 * xlat/rwf_flags.in: Add RWF_DSYNC and RWF_SYNC introduced 8438 by linux kernel commit v4.7-rc1~158^2~1. 8439 8440 2016-07-07 Dmitry V. Levin <ldv (a] altlinux.org> 8441 8442 Update BPF_MAP_TYPE_* constants. 8443 * xlat/bpf_prog_types.in: Add BPF_PROG_TYPE_TRACEPOINT introduced 8444 by linux kernel commit v4.7-rc1~154^2~332^2~6. 8445 8446 2016-07-03 Dmitry V. Levin <ldv (a] altlinux.org> 8447 8448 msghdr.c: limit output when printing excessively large messages. 8449 Limit output of struct msghdr.msg_control when 8450 struct msghdr.msg_controllen is greater than the maximum ancillary 8451 buffer size specified in /proc/sys/net/core/optmem_max file. 8452 8453 * configure.ac (AC_CHECK_FUNCS): Add open64. 8454 * defs.h (read_int_from_file): New prototype. 8455 * util.c (read_int_from_file): New function. 8456 * msghdr.c (get_optmem_max): New function based on read_int_from_file. 8457 (decode_msg_control): Use it to check control_len argument. 8458 * tests/msg_control.c (test_big_len): New function. 8459 (main): Use it to test printing of excessively large messages. 8460 8461 2016-07-03 Dmitry V. Levin <ldv (a] altlinux.org> 8462 8463 tests: add read_int_from_file function to libtests. 8464 * tests/overflowuid.c (read_int_from_file): New function. 8465 (check_overflow_id): Use it. 8466 * tests/tests.h (read_int_from_file): New prototype. 8467 8468 2016-07-02 Dmitry V. Levin <ldv (a] altlinux.org> 8469 8470 msghdr.c: limit IP_RECVOPTS/IP_RETOPTS output in abbrev mode. 8471 * msghdr.c (print_cmsg_ip_opts): Do not print more than max_strlen 8472 bytes of ip options in abbrev mode. 8473 * tests/msg_control.c (print_ip_opts): Use DEFAULT_STRLEN. 8474 (test_sol_ip): Test IP_RETOPTS output in abbrev mode. 8475 8476 msghdr.c: limit SCM_RIGHTS output in abbrev mode. 8477 * msghdr.c (print_scm_rights): Do not print more than max_strlen 8478 descriptors in abbrev mode. 8479 * tests/msg_control.c (DEFAULT_STRLEN): New macro. 8480 (print_fds): Use it. 8481 (test_scm_rights3): New function. 8482 (main): Use it to test SCM_RIGHTS output in abbrev mode. 8483 * tests/msg_control-v.c: New file. 8484 * tests/msg_control-v.test: New test. 8485 * tests/.gitignore: Add msg_control-v. 8486 * tests/Makefile.am (check_PROGRAMS): Likewise. 8487 (DECODER_TESTS): Add msg_control-v.test. 8488 8489 2016-07-01 Dmitry V. Levin <ldv (a] altlinux.org> 8490 8491 tests: check decoding of struct msghdr ancillary data. 8492 * tests/msg_control.c: New file. 8493 * tests/msg_control.test: New test. 8494 * tests/.gitignore: Add msg_control. 8495 * tests/Makefile.am (check_PROGRAMS): Likewise. 8496 (DECODER_TESTS): Add msg_control.test. 8497 8498 2016-06-30 Dmitry V. Levin <ldv (a] altlinux.org> 8499 8500 msghdr.c: reorganize struct cmsghdr handler. 8501 * msghdr.c (sock_ee): New structure. 8502 (print_scm_rights, print_scm_creds, print_scm_security, 8503 print_cmsg_ip_pktinfo, print_cmsg_uint, print_cmsg_ip_opts, 8504 print_cmsg_ip_recverr, print_cmsg_ip_origdstaddr): Remove data_len 8505 argument validity check, don't print ", cmsg_data=" prefix here. 8506 (print_cmsg_ip_tos): Likewise. Rename to print_cmsg_uint8_t. 8507 (cmsg_printer): New type. 8508 (cmsg_socket_printers, cmsg_ip_printers): New arrays. 8509 (print_cmsg_type_data): Use them to handle struct cmsghdr 8510 and its cmsg_data. 8511 8512 msghdr.c: merge print_cmsg_ip_ttl and print_cmsg_ip_checksum. 8513 * msghdr.c (print_cmsg_ip_ttl): Rename to print_cmsg_uint. 8514 (print_cmsg_ip_checksum): Remove. 8515 (print_cmsg_type_data): Replace print_cmsg_ip_ttl 8516 and print_cmsg_ip_checksum with print_cmsg_uint. 8517 8518 msghdr.c: enhance representation of unprintable part of msg_control array 8519 * msghdr.c (decode_msg_control): When msg_control array has an 8520 unprintable part, print its address. 8521 8522 msghdr.c: apply a sane limit to the length of IP_ORIGDSTADDR address. 8523 * msghdr.c (print_cmsg_ip_origdstaddr): Limit address length to the size 8524 of struct sockaddr_storage. 8525 8526 msghdr.c: fix printing SCM_RIGHTS array. 8527 * msghdr.c (print_scm_rights): Do not print array elements outside 8528 bounds defined by struct cmsghdr.cmsg_len. 8529 8530 msghdr.c: print unrecognized struct cmsghdr.cmsg_type in hex. 8531 * msghdr.c (print_cmsg_type_data): Use %#x format when printing 8532 struct cmsghdr.cmsg_type as an integer. 8533 8534 msghdr.c: fix printing of struct in_pktinfo. 8535 * msghdr.c (print_cmsg_ip_pktinfo): Fix printing 8536 of struct in_pktinfo.ipi_addr. 8537 8538 msghdr.c: fix representation of struct cmsghdr.cmsg_data integer arrays. 8539 * msghdr.c (print_cmsg_ip_opts): Print struct cmsghdr.cmsg_data 8540 as an array of hexadecimal integers. 8541 * tests/inet-cmsg.c (print_opts): Update expected output. 8542 8543 msghdr.c: fix representation of integer struct cmsghdr.cmsg_data values. 8544 * msghdr.c (print_cmsg_ip_ttl, print_cmsg_ip_tos, 8545 print_cmsg_ip_checksum): Print struct cmsghdr.cmsg_data value as an 8546 array element. 8547 * tests/inet-cmsg.c (print_ttl, print_tos): Update expected output. 8548 8549 msghdr.c: when printing struct struct cmsghdr.cmsg_data, also print its name 8550 * msghdr.c (print_scm_rights, print_scm_creds, print_scm_security, 8551 print_cmsg_ip_pktinfo, print_cmsg_ip_ttl, print_cmsg_ip_tos, 8552 print_cmsg_ip_checksum, print_cmsg_ip_opts, print_cmsg_ip_recverr, 8553 print_cmsg_ip_origdstaddr): Print "cmsg_data=" before its contents. 8554 * tests/inet-cmsg.c (print_pktinfo, print_ttl, print_tos, print_opts, 8555 print_origdstaddr): Update expected output. 8556 * tests/scm_rights-fd.test: Likewise. 8557 8558 2016-06-27 Dmitry V. Levin <ldv (a] altlinux.org> 8559 8560 msghdr.c: print struct mmsghdr as a regular structure. 8561 * msghdr.c (decode_mmsghdr): Print names of msg_hdr and msg_len fields. 8562 * tests/mmsg.c (main): Update expected output. 8563 8564 net.c: move all msghdr and mmsghdr parsers to a separate file. 8565 * defs.h (msg_flags, socketlayers, decode_msghdr, decode_mmsg): 8566 New prototypes. 8567 * msghdr.c: New file. 8568 * Makefile.am (strace_SOURCES): Add it. 8569 * net.c: Move all msghdr and mmsghdr parsers to msghdr.c. 8570 8571 Mpersify fetchers of struct msghdr and struct mmsghdr. 8572 * fetch_struct_msghdr.c: New file. 8573 * fetch_struct_mmsghdr.c: Likewise. 8574 * Makefile.am (strace_SOURCES): Add them. 8575 * net.c (struct msghdr32, struct mmsghdr32, copy_from_msghdr32, 8576 fetch_msghdr, fetch_mmsghdr): Remove. 8577 (decode_msghdr, dumpiov_in_msghdr): Use fetch_struct_msghdr instead 8578 of fetch_msghdr. 8579 (decode_mmsghdr): Change msg_len argument to use_msg_len. 8580 Use fetch_struct_mmsghdr instead of fetch_mmsghdr. 8581 Return fetch_struct_mmsghdr's return code. 8582 (decode_mmsg): Rename to decode_mmsgvec. Take addr and len arguments. 8583 Do not print vlen and flags. Check decode_mmsghdr's return code. 8584 Print mmsghdr array using square brackets. 8585 (dumpiov_in_mmsghdr): Use fetch_struct_mmsghdr instead of fetch_mmsghdr. 8586 (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg)): Use decode_mmsgvec instead 8587 of decode_mmsg. Print vlen and flags. 8588 * tests/mmsg.c (main): Update expected output. 8589 8590 net.c: move fallback definition of struct mmsghdr to a separate file. 8591 * msghdr.h: New file. 8592 * Makefile.am (strace_SOURCES): Add it. 8593 * net.c: Include it. Move fallback definition of struct mmsghdr there. 8594 * tests/mmsg.c: Include "msghdr.h". Remove fallback definition 8595 of struct mmsghdr. 8596 8597 2016-06-26 Dmitry V. Levin <ldv (a] altlinux.org> 8598 8599 net.c: print struct msghdr as a regular structure. 8600 * net.c (print_msghdr): Print msg_name, msg_namelen, msg_iov, 8601 and msg_iovlen fields like other regular fields. 8602 * tests/inet-cmsg.c (main): Update expected output. 8603 * tests/mmsg.c (main): Likewise. 8604 * tests/recvmsg.c (main): Likewise. 8605 * tests/scm_rights-fd.test: Likewise. 8606 8607 net.c: rename some internal functions for consistency and readability. 8608 * net.c (printcmsghdr): Rename to decode_msg_control. 8609 (do_msghdr): Rename to print_msghdr. 8610 (extractmsghdr): Rename to fetch_msghdr. 8611 (extractmmsghdr): Rename to fetch_mmsghdr. 8612 (printmsghdr): Rename to decode_msghdr. 8613 (printmmsghdr): Rename to decode_mmsghdr. 8614 All callers updated. 8615 8616 net.c: when printing struct msghdr.msg_control, also print its name. 8617 * net.c (printcmsghdr): Skip control messages of zero length. 8618 Always print "msg_control=" before the control message. 8619 (do_msghdr): Print control message before its length, not after. 8620 * tests/inet-cmsg.c (main): Update expected output. 8621 * tests/scm_rights-fd.test: Likewise. 8622 8623 Assume that libc provides struct msghdr.msg_control. 8624 * configure.ac (AC_CHECK_MEMBERS): Remove struct msghdr.msg_control. 8625 * net.c (do_msghdr): Remove HAVE_STRUCT_MSGHDR_MSG_CONTROL check. 8626 8627 2016-06-25 Dmitry V. Levin <ldv (a] altlinux.org> 8628 8629 net.c: move all sockaddr parsers to a separate file. 8630 * sockaddr_ll.c: Rename to sockaddr.c 8631 (print_sockaddr_data_ll): Add static keyword. 8632 * Makefile.am (strace_SOURCES): Likewise. 8633 * defs.h (print_sockaddr_data_ll): Remove. 8634 (addrfams): New prototype. 8635 * net.c: Move all sockaddr parsers to sockaddr.c. 8636 8637 net.c: rename printsock to decode_sockaddr. 8638 * defs.h (printsock): Rename to decode_sockaddr. 8639 * net.c (printsock): Likewise. 8640 (do_msghdr, SYS_FUNC(bind), do_sockname, SYS_FUNC(sendto), 8641 SYS_FUNC(recvfrom)): Replace printsock with decode_sockaddr. 8642 8643 defs.h: remove unused prototype. 8644 * defs.h (print_sock_optmgmt): Remove. 8645 8646 tests: check decoding of sockaddr structures. 8647 * tests/net-sockaddr.c: New file. 8648 * tests/net-sockaddr.test: New test. 8649 * tests/.gitignore: Add net-sockaddr. 8650 * tests/Makefile.am (check_PROGRAMS): Likewise. 8651 (DECODER_TESTS): Add net-sockaddr.test. 8652 8653 2016-06-24 Dmitry V. Levin <ldv (a] altlinux.org> 8654 8655 net.c: fix printing AF_PACKET socket addresses. 8656 * defs.h (print_ifindex, print_sockaddr_data_ll): New prototypes. 8657 * net.c: Stop including "xlat/af_packet_types.h". 8658 (print_ifindex): Remove static keyword. 8659 (print_sockaddr_data_l): Remove. 8660 * sockaddr_ll.c: New file. 8661 * Makefile.am (strace_SOURCES): Add it. 8662 * xlat/arp_hardware_types.in: New file. 8663 * xlat/ethernet_protocols.in: Likewise. 8664 8665 net.c: skip details of too short socket addresses, part 2. 8666 * net.c (sa_printers): Add minimal address length for each socket family. 8667 (print_sockaddr): Call socket family specific sockaddr printer 8668 only when socket address length is greater or equal 8669 the minimal address length for the socket family. 8670 8671 net.c: fix printing AF_BLUETOOTH socket addresses. 8672 * xlat/hci_channels.in: New file. 8673 * net.c (print_sockaddr_data_raw): New function. 8674 (print_sockaddr): Use it. 8675 [HAVE_BLUETOOTH_BLUETOOTH_H]: Include "xlat/hci_channels.h". 8676 [HAVE_BLUETOOTH_BLUETOOTH_H] (print_sockaddr_data_bt): Fix printing 8677 sockaddr_hci, sockaddr_sco, sockaddr_rc, and sockaddr_l2 structures. 8678 8679 net.c: fix printing AF_IPX sockets addresses, part 2. 8680 * net.c (print_sockaddr_data_ipx): Print sockaddr_ipx.sipx_network 8681 using %#08x format. Print elements of sockaddr_ipx.sipx_node array 8682 and sockaddr_ipx.sipx_type using %#02x format. 8683 8684 2016-06-24 Dmitry V. Levin <ldv (a] altlinux.org> 8685 8686 net.c: fix printing AF_UNIX abstract socket addresses. 8687 AF_UNIX abstract socket address specified by sockaddr_un.sun_path 8688 is not a NUL-terminated string. 8689 8690 * net.c (SIZEOF_SA_FAMILY): New macro. 8691 (print_sockaddr_data_un): Use it. Specify actual address length 8692 in print_quoted_string calls. Do not set QUOTE_0_TERMINATED flag 8693 when printing an abstract socket address. 8694 8695 2016-06-24 Dmitry V. Levin <ldv (a] altlinux.org> 8696 8697 net.c: fix printing field names of struct sockaddr_nl. 8698 * net.c (print_sockaddr_data_nl): Change "pid" to "nl_pid", "groups" 8699 to "nl_groups". Print sockaddr_nl.nl_groups using %#08x format. 8700 * tests/net-yy-netlink.c (main): Update. 8701 8702 net.c: fix printing struct sockaddr_in6.sin6_flowinfo. 8703 * net.c (print_sockaddr_data_in6): Convert sockaddr_in6.sin6_flowinfo 8704 from network order to host order before printing. 8705 8706 2016-06-23 Dmitry V. Levin <ldv (a] altlinux.org> 8707 8708 net.c: do not print sockaddr_in6.sin6_scope_id unnecessarily. 8709 Prior to RFC2553, struct sockaddr_in6 had no sin6_scope_id field. 8710 As the kernel still accepts RFC2133 editions of struct sockaddr_in6, 8711 print sockaddr_in6.sin6_scope_id only when it is specified. 8712 8713 * net.c (SIN6_MIN_LEN): New macro. 8714 (print_sockaddr_data_in6): Print sockaddr_in6.sin6_scope_id only when 8715 socket address length exceeds SIN6_MIN_LEN. 8716 8717 2016-06-23 Dmitry V. Levin <ldv (a] altlinux.org> 8718 8719 net.c: fix printing raw data of socket addresses. 8720 * net.c (print_sockaddr): When printing socket address raw data, read 8721 exactly the number of data bytes specified for the socket addess. 8722 8723 net.c: skip details of too short socket addresses. 8724 * net.c (print_sockaddr): Print socket address details only when 8725 the address size is greater than sizeof(struct sockaddr.sa_family). 8726 (print_sockaddr_data_un): Remove handling of addrlen == 2. 8727 * tests/net-y-unix.c (main): Update expected pattern. 8728 * tests/net-yy-unix.c (main): Likewise. 8729 * tests/net.expected: Likewise. 8730 8731 2016-06-22 Dmitry V. Levin <ldv (a] altlinux.org> 8732 8733 Assume that libc provides struct sockaddr_in6.sin6_scope_id. 8734 * configure.ac (AC_CHECK_MEMBERS): Remove 8735 struct sockaddr_in6.sin6_scope_id. 8736 * net.c (print_sockaddr_data_in6): Remove 8737 HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID check. 8738 8739 Split print_sockaddr. 8740 * net.c (sockaddr_buf_t): Remove. 8741 (sockaddr_printer): New type. 8742 (sa_printers): New array of sockaddr_printer. 8743 (print_sockaddr): Use it. Move printers of family specific 8744 sockaddr data to separate funcions. 8745 8746 2016-06-22 Fabien Siron <fabien.siron (a] epita.fr> 8747 8748 Add a enum for decoding to tprint_iov() and tprint_iov_upto() 8749 Introduce a new type iov_decode which will be used instead of the integer 8750 "decode" as a parameter. 8751 8752 * defs.h (iov_decode): New enum. 8753 (tprint_iov, tprint_iov_upto): Change type of "decode_iov" to enum iov_decode. 8754 * aio.c (print_iocb): Change type of "decode_iov" to enum iov_decode in 8755 tprint_iov() call. 8756 * keyctl.c (keyctl_instantiate_key_iov): Likewise. 8757 * process.c (ptrace): Likewise. 8758 * process_vm.c (process_vm_readv, process_vm_writev): Likewise. 8759 * io.c (writev, do_pwritev, vmsplice): Likewise. 8760 (print_iovec): Replace the condition with a switch. 8761 (tprint_iov_upto): Change type of "decode_iov" to enum iov_decode. 8762 (readv, do_preadv): Change type of "decode_iov" to enum iov_decode in 8763 tprint_iov_upto() call. 8764 * scsi.c (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, 8765 print_sg_io_v4_res): Likewise. 8766 * net.c (do_msghdr): Adapt call of tprint_iov_upto(). 8767 8768 2016-06-22 Dmitry V. Levin <ldv (a] altlinux.org> 8769 8770 printsock: fix zero padding of sockaddr buffer. 8771 Before this change printsock used to erroneously clear the last byte 8772 of sockaddr buffer. 8773 8774 * net.c (printsock): Use struct sockaddr_storage as a sockaddr buffer. 8775 Reserve additional byte after the sockaddr buffer for zero padding. 8776 Do not clear memory that is going to be overwritten by umoven. 8777 Clear the tail of sockaddr buffer that was not overwritten by umoven. 8778 8779 2016-06-21 Fabien Siron <fabien.siron (a] epita.fr> 8780 8781 Change printsock to return socket family. 8782 * defs.h (printsock): Change return type to int. 8783 * net.c (printsock): Likewise. Return socket family on success 8784 and -1 in case of an error. 8785 8786 2016-06-21 Dmitry V. Levin <ldv (a] altlinux.org> 8787 8788 Unexport addrfams. 8789 * defs.h (addrfams): Remove. 8790 8791 sock.c: use print_sockaddr. 8792 * sock.c (print_ifreq_addr): Remove. 8793 (PRINT_IFREQ_ADDR): New macro. 8794 (print_ifreq, decode_ifconf): Use it instead of print_ifreq_addr. 8795 8796 Export print_sockaddr function. 8797 * defs.h (print_sockaddr): New prototype. 8798 * net.c (print_sockaddr): Remove static keyword. 8799 Change type of address pointer to "const void *". 8800 (print_cmsg_ip_recverr, print_group_req): Remove redundant casts 8801 in print_sockaddr invocations. 8802 8803 xlat/addrfams.in: provide fallback definitions. 8804 * xlat/addrfams.in: add fallback definitions for constants. 8805 8806 Update AF_* constants. 8807 * xlat/addrfams.in: Add AF_QIPCRTR. 8808 8809 Assume that libc provides inet_ntop and inet_pton. 8810 * configure.ac (AC_CHECK_FUNCS): Remove inet_ntop and inet_pton. 8811 * net.c (sockaddr_buf_t, print_sockaddr, print_mreq6): Remove 8812 HAVE_INET_NTOP checks. 8813 * tests/ip_mreq.c: Remove HAVE_INET_PTON check. 8814 8815 net.c: use SO_LINGER unconditionally. 8816 * net.c (print_linger, print_getsockopt, print_setsockopt): Do not check 8817 for SO_LINGER availability. 8818 8819 net.c: use AF_BLUETOOTH unconditionally. 8820 * net.c (print_sockaddr, SYS_FUNC(socket)): Do not check 8821 for AF_BLUETOOTH availability. 8822 8823 2016-06-20 Dmitry V. Levin <ldv (a] altlinux.org> 8824 8825 Consistently use AF_UNIX over AF_LOCAL. 8826 As these constants have the same value 1, let's use and print only one 8827 of them, e.g. AF_UNIX. 8828 8829 * xlat/addrfams.in (AF_LOCAL): Remove. 8830 * tests/net-accept-connect.c (main): Replace AF_LOCAL with AF_UNIX. 8831 * tests/net-y-unix.c: Likewise. 8832 * tests/net-yy-unix.c: Likewise. 8833 * tests/netlink_unix_diag.c: Likewise. 8834 8835 2016-06-19 Dmitry V. Levin <ldv (a] altlinux.org> 8836 8837 net.c: fix printing AF_IPX sockets. 8838 * net.c (print_sockaddr): Print sockaddr_ipx as a regular structure. 8839 (SYS_FUNC(socket)): Remove special handling of AF_IPX. 8840 8841 net.c: use AF_IPX unconditionally. 8842 * net.c (sockaddr_buf_t, print_sockaddr, SYS_FUNC(socket)): Do not check 8843 for AF_IPX availability. 8844 8845 Cleanup netipx/ipx.h availability check. 8846 * configure.ac (AC_CHECK_HEADERS): Add netipx/ipx.h. 8847 * net.c: Check for HAVE_NETIPX_IPX_H instead of __GLIBC__. 8848 8849 2016-06-19 Fabien Siron <fabien.siron (a] epita.fr> 8850 8851 Make getfdproto return enum instead of string. 8852 Introduce a new enum type sock_proto and use it instead of strings for socket 8853 protocols identification. 8854 8855 * defs.h (sock_proto): New enum. 8856 (get_proto_by_name): New function. 8857 * socketutils.c (protocols): New static table. 8858 (print_sockaddr_by_inode): Use it. Change type of "proto" argument 8859 to sock_proto. 8860 (get_proto_by_name): New function. 8861 * util.c (getfdproto): Use it. Change return type to sock_proto. 8862 (printfd): Update. 8863 8864 2016-06-18 Dmitry V. Levin <ldv (a] altlinux.org> 8865 8866 Split travis-ci.sh. 8867 * travis-ci.sh: Split into travis-build.sh, travis-install.sh, 8868 and travis-success.sh files. 8869 * .travis.yml (before_install, after_success, git): New mappings. 8870 (script): Change to travis-build.sh. 8871 (addons, install): Remove. 8872 (env): Remove matrix. 8873 (matrix): Replace exclude list with include list. 8874 8875 2016-06-17 Dmitry V. Levin <ldv (a] altlinux.org> 8876 8877 Introduce HAVE_STRUCT_TCB_EXT_ARG macro. 8878 Check for "if HAVE_STRUCT_TCB_EXT_ARG" instead of 8879 "if defined LINUX_MIPSN32 || defined X32". 8880 8881 * defs.h (HAVE_STRUCT_TCB_EXT_ARG): Define for LINUX_MIPSN32 || X32. 8882 (struct tcb): Check it instead of LINUX_MIPSN32 || X32. 8883 (RVAL_LUDECIMAL): Likewise. 8884 * io.c (print_lld_from_low_high_val): Likewise. 8885 * lseek.c (SYS_FUNC(lseek)): Likewise. 8886 * mem.c (SYS_FUNC(mmap)): Likewise. 8887 * syscall.c (trace_syscall_exiting): Likewise. 8888 * util.c (getllval): Likewise. 8889 8890 2016-06-17 Dmitry V. Levin <ldv (a] altlinux.org> 8891 8892 btrfs: fix build with fresh linux/btrfs.h. 8893 Fix build with fresh <linux/btrfs.h> that provides a slightly different 8894 definition of struct btrfs_ioctl_defrag_range_args. 8895 8896 * btrfs.c (btrfs_ioctl): Cast "len" member of 8897 struct btrfs_ioctl_defrag_range_args to uint64_t. 8898 * tests/btrfs.c (btrfs_print_defrag_range_args): Cast "start" and "len" 8899 members of struct btrfs_ioctl_defrag_range_args to uint64_t. 8900 8901 2016-06-17 Dmitry V. Levin <ldv (a] altlinux.org> 8902 8903 btrfs: provide fallback definitions for BTRFS_IOC_QUOTA_RESCAN* 8904 <linux/btrfs.h> was introduced in linux v3.9-rc1 while some 8905 of btrfs ioctls were added later, e.g. BTRFS_IOC_QUOTA_RESCAN 8906 and BTRFS_IOC_QUOTA_RESCAN_STATUS in v3.10-rc2, 8907 or BTRFS_IOC_QUOTA_RESCAN_WAIT in v3.11-rc1. 8908 8909 * btrfs.c [!BTRFS_IOC_QUOTA_RESCAN] 8910 (struct btrfs_ioctl_quota_rescan_args): New structure. 8911 (BTRFS_IOC_QUOTA_RESCAN, BTRFS_IOC_QUOTA_RESCAN_STATUS): New macros. 8912 [!BTRFS_IOC_QUOTA_RESCAN_WAIT] (BTRFS_IOC_QUOTA_RESCAN_WAIT): New macro. 8913 * tests/btrfs.c: Likewise. 8914 8915 Reported-by: Li Er <phoooyb (a] gmail.com> 8916 8917 2016-06-17 Dmitry V. Levin <ldv (a] altlinux.org> 8918 8919 configure.ac: fix checks for btrfs specific structures. 8920 * configure.ac (AC_CHECK_MEMBERS): Fix typo in the check for 8921 struct btrfs_ioctl_defrag_range_args.start and 8922 struct btrfs_ioctl_search_args_v2.buf_size. 8923 8924 2016-06-16 Elvira Khabirova <lineprinter0 (a] gmail.com> 8925 8926 README: add system requirements and beautify the file. 8927 8928 2016-06-16 Fei Jie <feij.fnst (a] cn.fujitsu.com> 8929 8930 tests: add signal_receive.test. 8931 * tests/signal_receive.c: New file. 8932 * tests/signal_receive.test: New test. 8933 * tests/.gitignore: Add signal_receive. 8934 * tests/Makefile.am (check_PROGRAMS): Likewise. 8935 (MISC_TESTS): Add signal_receive.test. 8936 8937 tests: add signal2name function to libtests. 8938 * tests/tests.h (signal2name): New prototype. 8939 * tests/signal2name.c: New file. 8940 * tests/Makefile.am (libtests_a_SOURCES): Add it. 8941 8942 2016-06-16 Dmitry V. Levin <ldv (a] altlinux.org> 8943 8944 net.c: use AF_INET6 unconditionally. 8945 * net.c (SYS_FUNC(socket)): Do not check for AF_INET6 availability. 8946 8947 2016-06-16 Dmitry V. Levin <ldv (a] altlinux.org> 8948 8949 configure.ac: do not check for linux/in6.h. 8950 The last user of <linux/in6.h> was removed by commit v4.9-252-gf362a33. 8951 8952 * configure.ac (AC_CHECK_HEADERS): Remove linux/in6.h. 8953 8954 2016-06-16 Dmitry V. Levin <ldv (a] altlinux.org> 8955 8956 net.c: use AF_PACKET unconditionally. 8957 * net.c: Do not check for AF_PACKET availability. 8958 8959 net.c: include <linux/if_packet.h> unconditionally. 8960 * configure.ac (AC_CHECK_HEADERS): Remove linux/if_packet.h. 8961 * net.c: Include <linux/if_packet.h> unconditionally. 8962 8963 net.c: use ICMP_FILTER unconditionally. 8964 * net.c: Do not check for ICMP_FILTER availability. 8965 8966 net.c: include <linux/icmp.h> unconditionally. 8967 * configure.ac (AC_CHECK_HEADERS): Remove linux/icmp.h. 8968 * net.c: Follow the example of tests/net-icmp_filter.c and include 8969 <linux/icmp.h> unconditionally. 8970 8971 2016-06-14 Dmitry V. Levin <ldv (a] altlinux.org> 8972 8973 net.c: use AF_NETLINK unconditionally. 8974 * net.c: Do not check for AF_NETLINK availability. 8975 8976 net.c: include <linux/netlink.h> unconditionally. 8977 * configure.ac (AC_CHECK_HEADERS): Remove linux/netlink.h. 8978 * net.c: Follow the example of socketutils.c and include 8979 <linux/netlink.h> unconditionally. 8980 8981 2016-06-14 Elvira Khabirova <lineprinter0 (a] gmail.com> 8982 8983 Remove UNDEFINED_SCNO. 8984 Since UNDEFINED_SCNO is set if and only if !SCNO_IS_VALID 8985 and since tcp->s_ent can only be set to &sysent[tcp->scno] 8986 (or to &unknown, but only when !SCNO_IS_VALID), there is no need 8987 to check for UNDEFINED_SCNO before calling syscall_name(tcp->scno). 8988 8989 * defs.h (UNDEFINED_SCNO): Remove. 8990 * syscall.c (get_scno, trace_syscall_entering, trace_syscall_exiting): 8991 Remove checks for UNDEFINED_SCNO. 8992 8993 2016-06-14 Dmitry V. Levin <ldv (a] altlinux.org> 8994 8995 tests/attach-f-p.c: fix typo in comment. 8996 8997 2016-06-14 Elvira Khabirova <lineprinter0 (a] gmail.com> 8998 8999 strace.c: fix style in function definition. 9000 * strace.c (kill_save_errno): Move the type of return value 9001 to another line. 9002 9003 Turn on more compiler warnings. 9004 * configure.ac (gl_WARN_ADD): Add -Wempty-body, -Wformat-security, 9005 -Wignored-qualifiers, -Winit-self, -Wlogical-op, 9006 -Wmissing-parameter-type, -Wnested-externs, -Wold-style-declaration, 9007 -Wold-style-definition, -Wtype-limits. 9008 9009 strace.c: fix a warning reported by -Wold-style-definition. 9010 * strace.c (usage): Add void to the list of function argments. 9011 9012 2016-06-14 Dmitry V. Levin <ldv (a] altlinux.org> 9013 9014 tests/ioctl_evdev.c: fix typo in comment. 9015 9016 2016-06-14 Elvira Khabirova <lineprinter0 (a] gmail.com> 9017 9018 Move printargs* functions to util.c. 9019 * syscall.c (printargs, printargs_u, printargs_d): Move ... 9020 * util.c: ... here. 9021 9022 tests/xgetrlimit.c: fix a warning reported by -Wtype-limits. 9023 * tests/xgetrlimit.c (sprint_rlim): Explicitly cast constants 9024 to the type of argument. 9025 9026 2016-06-11 Dmitry V. Levin <ldv (a] altlinux.org> 9027 9028 Consistently use printaddr for printing addresses. 9029 * bjm.c (SYS_FUNC(init_module)): Use printaddr. 9030 * clone.c (SYS_FUNC(clone)): Likewise. 9031 * evdev.c (ff_effect_ioctl): Likewise. 9032 * mtd.c (decode_mtd_oob_buf): Likewise. 9033 * net.c (SYS_FUNC(sendmmsg), SYS_FUNC(recvmmsg), SYS_FUNC(getsockopt)): 9034 Likewise. 9035 * print_sigevent.c (print_sigevent): Likewise. 9036 * printsiginfo.c (printsigval, print_si_info): Likewise. 9037 * signal.c (decode_new_sigaction): Likewise. 9038 * sysmips.c (SYS_FUNC(sysmips)): Likewise. 9039 * util.c (printpathn, printstr, umoven_or_printaddr): Likewise. 9040 * v4l2.c (print_v4l2_buffer, print_v4l2_framebuffer, 9041 umoven_or_printaddr_ignore_syserror): Likewise. 9042 * tests/net-icmp_filter.c (main): Update. 9043 9044 Based on patch by Eugene Syromyatnikov <evgsyr (a] gmail.com>. 9045 9046 2016-06-10 Dmitry V. Levin <ldv (a] altlinux.org> 9047 9048 tests/attach-p-cmd-p.c: cleanup. 9049 * attach-p-cmd-p.c (handler): Move code ... 9050 (main): ... here. Unblock SIGALRM only. 9051 Use alarm() instead of setitimer(). 9052 Replace endless loop with a pause() call. 9053 Check that chdir() returns ENOENT. 9054 9055 tests: enhance test coverage of SIGCHLD siginfo_t. 9056 * tests/siginfo.c: New file. 9057 * tests/siginfo.test: New test. 9058 * tests/wait.c: Remove. 9059 * tests/wait.expected: Remove. 9060 * tests/wait.test: Remove. 9061 * tests/.gitignore: Add siginfo, remove wait. 9062 * tests/Makefile.am (check_PROGRAMS): Likewise. 9063 (DECODER_TESTS): Add siginfo.test, remove wait.test. 9064 (EXTRA_DIST): Remove wait.expected. 9065 9066 tests: extend test coverage of waitid syscall. 9067 * tests/waitid.c: New file. 9068 * tests/waitid-v.c: Likewise. 9069 * tests/waitid.test: New test. 9070 * tests/waitid-v.test: Likewise. 9071 * tests/.gitignore: Add waitid and waitid-v. 9072 * tests/Makefile.am (check_PROGRAMS): Likewise. 9073 (DECODER_TESTS): Add waitid.test and waitid-v.test. 9074 9075 tests: extend test coverage of wait4 syscall. 9076 * tests/wait4.c: New file. 9077 * tests/wait4-v.c: Likewise. 9078 * tests/wait4.test: New test. 9079 * tests/wait4-v.test: Likewise. 9080 * tests/.gitignore: Add wait4 and wait4-v. 9081 * tests/Makefile.am (check_PROGRAMS): Likewise. 9082 (DECODER_TESTS): Add wait4.test and wait4-v.test. 9083 9084 tests: add widen_to_ull macro to tests.h. 9085 * tests.h (widen_to_ull): New macro, copied from defs.h 9086 9087 Fix sign extension issues in the parser of struct rusage. 9088 * printrusage.c (printrusage): Do not cast members of struct rusage 9089 to type long, use widen_to_ull instead. 9090 9091 2016-06-09 Dmitry V. Levin <ldv (a] altlinux.org> 9092 9093 tests: check decoding of waitpid syscall. 9094 * tests/waitpid.c: New file. 9095 * tests/waitpid.test: New test. 9096 * tests/.gitignore: Add waitpid. 9097 * tests/Makefile.am (check_PROGRAMS): Likewise. 9098 (DECODER_TESTS): Add waitpid.test. 9099 9100 2016-06-09 Fei Jie <feij.fnst (a] cn.fujitsu.com> 9101 9102 tests: add strace-E.test. 9103 * tests/strace-E.expected: New file. 9104 * tests/strace-E.test: New test. 9105 * tests/Makefile.am (MISC_TESTS): Add it. 9106 (EXTRA_DIST): Add strace-E.expected. 9107 9108 2016-06-08 Dmitry V. Levin <ldv (a] altlinux.org> 9109 9110 strace.spec.in: enable libunwind on more platforms. 9111 * strace.spec.in: Add libunwind-devel to BuildRequires for RHEL8 family. 9112 9113 2016-06-08 Dmitry V. Levin <ldv (a] altlinux.org> 9114 9115 make-dist: generate strace-*.tar.gz, strace.dsc, and strace.spec. 9116 Change make-dist to generate strace-*.tar.gz, strace.dsc, 9117 and strace.spec in addition to strace-*.tar.xz. 9118 9119 * configure.ac (AM_INIT_AUTOMAKE): Remove no-dist-gzip. 9120 * make-dsc: New file. 9121 * make-dist: Use it. 9122 * .gitignore: Add strace-*.tar.gz, strace.dsc, and strace.spec. 9123 9124 2016-06-08 Dmitry V. Levin <ldv (a] altlinux.org> 9125 9126 Parametrize debian/changelog. 9127 * configure.ac (CHANGELOGTIME): Rename to RPM_CHANGELOGTIME. 9128 (DEB_CHANGELOGTIME): New variable. 9129 (AC_CONFIG_FILES): Add debian/changelog. 9130 * strace.spec.in: Rename CHANGELOGTIME to RPM_CHANGELOGTIME. 9131 * debian/changelog: Rename to ... 9132 * debian/changelog.in: ... this file. Add parametrized entry. 9133 * debian/.gitignore: New file. 9134 9135 git-version-gen: replace '-' with '.' in generated version. 9136 * git-version-gen: Replace '-' with '.' so version conforms to policies 9137 * configure.ac (SPEC_VERSION): Remove. 9138 * strace.spec.in: Replace SPEC_VERSION with PACKAGE_VERSION. 9139 Remove %srcname. 9140 9141 2016-06-07 Dmitry V. Levin <ldv (a] altlinux.org> 9142 9143 Parametrize strace.spec. 9144 * configure.ac (SPEC_VERSION, CHANGELOGTIME): Define. 9145 (AC_CONFIG_FILES): Add strace.spec. 9146 * strace.spec: Rename to ... 9147 * strace.spec.in: ... this file. Parametrize Version, srcname, 9148 and the last %changelog entry. Initialize .tarball-version file. 9149 9150 strace.spec: adopt for OBS. 9151 * strace.spec: Parametrize libunwind-devel BRs, BuildRoot, and %defattr. 9152 9153 2016-06-07 Dmitry V. Levin <ldv (a] altlinux.org> 9154 9155 tests: remove obsolete strace-f.test. 9156 strace-f.test is too inexact while fork-f.test does the right thing. 9157 9158 * tests/strace-f.test: Remove. 9159 * tests/Makefile.am (MISC_TESTS): Remove it. 9160 * strace.spec (BuildRequires): Remove time. 9161 9162 2016-06-07 Dmitry V. Levin <ldv (a] altlinux.org> 9163 9164 tests: always distribute strace-k.test. 9165 Fix distribution of tests/strace-k.test file when configured 9166 without libunwind. 9167 9168 * tests/Makefile.am (EXTRA_DIST): Add strace-k.test. 9169 9170 2016-06-07 Dmitry V. Levin <ldv (a] altlinux.org> 9171 9172 make-dist: skip news-check for non-releases. 9173 * make-dist: Run news-check only when the commit being built 9174 matches a release tag. 9175 9176 2016-06-06 Dmitry V. Levin <ldv (a] altlinux.org> 9177 9178 tests: check decoding of setrlimit, getrlimit, and ugetrlimit syscalls. 9179 * tests/getrlimit.c: New file. 9180 * tests/setrlimit.c: Likewise. 9181 * tests/ugetrlimit.c: Likewise. 9182 * tests/xgetrlimit.c: Likewise. 9183 * tests/getrlimit.test: New test. 9184 * tests/setrlimit.test: Likewise. 9185 * tests/ugetrlimit.test: Likewise. 9186 * tests/.gitignore: Add getrlimit, setrlimit, and ugetrlimit. 9187 * tests/Makefile.am (check_PROGRAMS): Likewise. 9188 (DECODER_TESTS): Add getrlimit.test, setrlimit.test, 9189 and ugetrlimit.test. 9190 (EXTRA_DIST): Add xgetrlimit.c. 9191 9192 tests: check decoding of prlimit64 syscall. 9193 * tests/prlimit64.c: New file. 9194 * tests/prlimit64.test: New test. 9195 * tests/.gitignore: Add prlimit64. 9196 * tests/Makefile.am (check_PROGRAMS): Likewise. 9197 (DECODER_TESTS): Add prlimit64.test. 9198 9199 Fix decoding of pid_t argument of prlimit64 syscall. 9200 * resource.c (SYS_FUNC(prlimit64)): Print pid_t syscall 9201 argument using %d format. 9202 9203 2016-06-06 Dmitry V. Levin <ldv (a] altlinux.org> 9204 9205 Do not check for old sysctl enums. 9206 Assume that sysctl enums defined since linux v2.6 are always defined, 9207 with a signle exception: check for CTL_PROC which definition was removed 9208 in v2.6.18 and restored later in v2.6.23. 9209 9210 * configure.ac (AC_CHECK_DECLS): Remove old constants. 9211 * xlat/sysctl_kern.in: Mark constants older than KERN_PRINTK_RATELIMIT 9212 as unconditional. 9213 * xlat/sysctl_net.in: Mark constants older than NET_LLC 9214 as unconditional. 9215 * xlat/sysctl_net_core.in: Mark constants older than NET_CORE_BUDGET 9216 as unconditional. 9217 * xlat/sysctl_net_ipv4.in: Mark constants older than 9218 NET_IPV4_IGMP_MAX_MSF as unconditional. 9219 * xlat/sysctl_net_ipv4_conf.in: Mark constants older than 9220 NET_IPV4_CONF_FORCE_IGMP_VERSION as unconditional. 9221 * xlat/sysctl_net_ipv4_route.in: Mark constants older than 9222 NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS as unconditional. 9223 * xlat/sysctl_net_ipv6.in: Mark constants older than 9224 NET_IPV6_MLD_MAX_MSF as unconditional. 9225 * xlat/sysctl_net_ipv6_route.in: Mark constants older than 9226 NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS as unconditional. 9227 * xlat/sysctl_net_unix.in: Mark all constants as unconditional. 9228 * xlat/sysctl_root.in: Mark constants older than CTL_ARLAN 9229 as unconditional. 9230 * xlat/sysctl_vm.in: Mark constants older than VM_MAX_MAP_COUNT 9231 as unconditional. 9232 9233 2016-06-06 Dmitry V. Levin <ldv (a] altlinux.org> 9234 9235 xlat: extend syntax. 9236 * xlat/gen.sh: Implement #conditional directive that turns on 9237 preprocessor checks turned off earlier by #unconditional directive. 9238 9239 2016-06-06 Elvira Khabirova <lineprinter0 (a] gmail.com> 9240 9241 mpers.awk: remove unnecessary type attribute retrieval. 9242 * mpers.awk (what_is): Do not retrieve "type" attribute 9243 for "enumeration_type". 9244 9245 tests/ptrace.c: fix fork() return value check. 9246 * tests/ptrace.c (test_peeksiginfo): Explicitly cast fork() return value 9247 to pid_t. 9248 9249 .gitignore: add missing files that should be ignored. 9250 * .gitignore: Add ioctl_redefs[12].h and libstrace.a. 9251 9252 2016-06-06 Dmitry V. Levin <ldv (a] altlinux.org> 9253 9254 debian: sync with the package. 9255 * debian/control (Build-Depends) [amd64]: Remove libunwind-dev. 9256 * debian/changelog: Sync with 4.12-3. 9257 * debian/rules: Likewise. 9258 9259 2016-06-06 Dmitry V. Levin <ldv (a] altlinux.org> 9260 9261 tests/strace-S.test: fix testing 64-bit strace using a 32-bit userspace. 9262 * tests/strace-S.test: Measure wall clock time instead of system time. 9263 Use local "./readv" instead of system "date" as a sample executable. 9264 9265 Reported-by: Steve McIntyre <steve (a] einval.com> 9266 9267 2016-06-06 Dmitry V. Levin <ldv (a] altlinux.org> 9268 9269 tests/strace-S.test: enhance error diagnostics. 9270 * tests/strace-S.test: If strace output does not meet expectations, 9271 print the output. 9272 9273 2016-06-02 Dmitry V. Levin <ldv (a] altlinux.org> 9274 9275 .gitignore: sort the list of ignored patterns. 9276 * .gitignore: Sort. 9277 9278 2016-06-01 Dmitry V. Levin <ldv (a] altlinux.org> 9279 9280 maint: post-release administrivia. 9281 * NEWS: Add header line for the next release. 9282 9283 2016-05-31 Dmitry V. Levin <ldv (a] altlinux.org> 9284 9285 Prepare for 4.12 release. 9286 * NEWS: Update for 4.12 release. 9287 * debian/changelog: 4.12-1. 9288 * strace.spec: 4.12-1. 9289 9290 Sync strace.spec and debian/changelog with packages. 9291 * debian/changelog: Sync with 4.11-1. 9292 * strace.spec: Sync with 4.11.0.163.9720-2. 9293 9294 2016-05-30 Dmitry V. Levin <ldv (a] altlinux.org> 9295 9296 Mpersify hdio.c. 9297 * defs.h (hdio_ioctl): Remove. 9298 * hdio.c: Mpersify struct hd_geometry. 9299 (hdio_ioctl): Mpersify. 9300 9301 2016-05-29 Dmitry V. Levin <ldv (a] altlinux.org> 9302 9303 loop.c: decode LOOP_SET_DIRECT_IO. 9304 * loop.c (loop_ioctl) [LOOP_SET_DIRECT_IO] : Handle LOOP_SET_DIRECT_IO. 9305 9306 loop.c: fix printing of arrays. 9307 * loop.c (decode_loop_info): Use square brackets to print 9308 struct loop_info.lo_init and struct loop_info.reserved arrays. 9309 (decode_loop_info64): Use square brackets to print 9310 struct loop_info64.lo_init array. 9311 9312 loop.c: fix printing of structure members' names. 9313 * loop.c (decode_loop_info, decode_loop_info64): Do not strip "lo_" 9314 prefix from printed names. 9315 9316 loop.c: optimize decoding of paired ioctls. 9317 * loop.c (loop_ioctl): Optimize decoding of LOOP_[GS]ET_STATUS 9318 and LOOP_[GS]ET_STATUS64 ioctl pairs. 9319 9320 2016-05-28 Dmitry V. Levin <ldv (a] altlinux.org> 9321 9322 tests/ioctl_evdev.c: check EVIOCGUNIQ decoding. 9323 * tests/ioctl_evdev.c (main): Check EVIOCGUNIQ(0) decoding. 9324 9325 tests/ioctl_mtd.c: fix build with musl. 9326 * tests/ioctl_mtd.c: Include <linux/ioctl.h>. 9327 9328 tests: check decoding of 'M' type ioctls. 9329 * tests/ioctl_mtd.c: New file. 9330 * tests/ioctl_mtd.test: New test. 9331 * tests/.gitignore: Add ioctl_mtd. 9332 * tests/Makefile.am (check_PROGRAMS): Likewise. 9333 (DECODER_TESTS): Add ioctl_mtd.test. 9334 9335 Mpersify mtd.c. 9336 * defs.h (mtd_ioctl): Remove. 9337 * mtd.c: Mpersify struct mtd_oob_buf and ioctl numbers. 9338 (mtd_ioctl): Mpersify. 9339 9340 mtd.c: refactor. 9341 * mtd.c (mtd_ioctl): Move parsers of structures to separate functions. 9342 9343 Move parser of UBI_* ioctls to a separate file. 9344 * mtd.c (ubi_ioctl): Move to ... 9345 * ubi.c: ... new file. 9346 * Makefile.am (strace_SOURCES): Add it. 9347 9348 tests: check decoding of EVIOC* ioctls. 9349 * tests/ioctl_evdev.c: New file. 9350 * tests/ioctl_evdev-v.c: Likewise. 9351 * tests/ioctl_evdev.test: New test. 9352 * tests/ioctl_evdev-v.test: Likewise. 9353 * tests/.gitignore: Add ioctl_evdev and ioctl_evdev-v. 9354 * tests/Makefile.am (check_PROGRAMS): Likewise. 9355 (DECODER_TESTS): Add ioctl_evdev.test and ioctl_evdev-v.test. 9356 9357 Mpersify EVIOC* ioctl parser. 9358 * defs.h (evdev_abs): New xlat prototype. 9359 (evdev_ioctl): Remove. 9360 * evdev.c: Do not include "xlat/evdev_abs.h". 9361 Mpersify struct ff_effect and ioctl numbers. 9362 (evdev_ioctl): Mpersify. 9363 * NEWS: Mention this enhancement. 9364 9365 evdev.c: fix printing of unrecognized event type passed to EVIOCGBIT. 9366 * evdev.c (bit_ioctl): If event type is not unrecognized, 9367 print the argument as an address. 9368 9369 evdev.c: fix printing of EV_PWR's argument. 9370 * evdev.c (bit_ioctl): Fix printing of comma before EV_PWR's argument. 9371 9372 evdev.c: fix indentation. 9373 * evdev.c: Fix indentation of print formats. 9374 9375 evdev.c: fix decoding of EVIOCGNAME, EVIOCGPHYS, and EVIOCGUNIQ. 9376 * evdev.c (evdev_read_ioctl): Fix printing of the string returned 9377 in response to EVIOCGNAME, EVIOCGPHYS, and EVIOCGUNIQ requests. 9378 9379 evdev.c: fix EVIOCGVERSION decoding. 9380 * evdev.c (evdev_read_ioctl): Print EVIOCGVERSION's argument 9381 using #x format. 9382 9383 evdev.c: fix EVIOCGMTSLOTS decoding. 9384 * evdev.c (mtslots_ioctl): Use umove_or_printaddr. 9385 9386 evdev.c: fix bitset decoding. 9387 * evdev.c (decode_bitset): Use umove_or_printaddr. 9388 9389 evdev.c: fix decoding of struct input_id. 9390 * evdev.c (getid_ioctl): Use umove_or_printaddr. 9391 9392 evdev.c: fix decoding of struct input_keymap_entry. 9393 * evdev.c (keycode_V2_ioctl): Use umove_or_printaddr. 9394 9395 evdev.c: fix decoding of EVIOCGKEYCODE/EVIOCSKEYCODE. 9396 * evdev.c (keycode_ioctl): Use umove_or_printaddr. 9397 9398 evdev.c: fix decoding of struct input_absinfo. 9399 * evdev.c (abs_ioctl): Use umove_or_printaddr. 9400 9401 evdev.c: fix decoding of struct ff_effect. 9402 * evdev.c (ff_effect_ioctl): Use umove_or_printaddr. 9403 Fix printing of struct ff_effect.u member names. 9404 9405 evdev.c: fix printing of struct ff_envelope.fade_level. 9406 * evdev.c (decode_envelope): Print struct ff_envelope.fade_level 9407 using #x format. 9408 9409 evdev.c: fix decoding of EVIOCGRAB and EVIOCREVOKE. 9410 * evdev.c (evdev_write_ioctl): Print argument of EVIOCGRAB 9411 and EVIOCREVOKE as unsigned long. 9412 9413 evdev.c: fix EVIOCRMFF decoding. 9414 * evdev.c (evdev_write_ioctl): Print EVIOCRMFF's argument as int. 9415 9416 evdev.c: move handling of EVIOCGBIT to a separate function. 9417 * evdev.c (evdev_read_ioctl): Move EVIOCGBIT handling to ... 9418 (bit_ioctl): ... new function. 9419 9420 2016-05-28 Dmitry V. Levin <ldv (a] altlinux.org> 9421 9422 evdev.c: reorder ioctl command checks. 9423 Change the order of ioctl command cheks to match the kernel: 9424 1st, check for fixed-number fixed-length commands, 9425 2nd, check for fixed-number variable-length commands, 9426 3rd, check for multi-number fixed-length commands, 9427 4thm check for multi-number variable-length commands. 9428 9429 * evdev.c (evdev_read_ioctl, evdev_write_ioctl): Reorder 9430 ioctl command checks. 9431 9432 2016-05-28 Dmitry V. Levin <ldv (a] altlinux.org> 9433 9434 evdev.c: decode all directions except _IOC_READ on entering syscall. 9435 * evdev.c (evdev_write_ioctl): Remove exiting check. 9436 (evdev_read_ioctl): Move entering check ... 9437 (evdev_ioctl): ... here. Add RVAL_DECODED to return code in _IOC_WRITE 9438 and default cases. 9439 9440 evdev.c: fix indentation of preprocessor directives. 9441 * evdev.c: Fix indentation of preprocessor directives. 9442 Move inclusion of <linux/ioctl.h> into [HAVE_LINUX_INPUT_H]. 9443 9444 2016-05-28 Jeff Mahoney <jeffm (a] suse.com> 9445 9446 file_ioctl.c: print first two extents for FIDEDUPERANGE in abbrev mode. 9447 * file_ioctl.c (file_ioctl, print_file_dedupe_range_info): Print first 9448 two elements of info array in abbrev mode. 9449 * tests/btrfs.c (btrfs_test_extent_same_ioctl): Handle newly 9450 printed elements. 9451 9452 2016-05-27 Dmitry V. Levin <ldv (a] altlinux.org> 9453 9454 ioctl.c: fix typo in decoding of EVIOCSABS's parameter. 9455 * ioctl.c (evdev_decode_number): Fix typo in printxval default value. 9456 9457 2016-05-27 Jeff Mahoney <jeffm (a] suse.com> 9458 9459 tests: check decoding of btrfs RDWR ioctls returned data. 9460 * tests/btrfs-vw.test: New file. 9461 * tests/btrfs-w.test: New file. 9462 * tests/Makefile.am (DECODER_TESTS): Add them. 9463 9464 tests/btrfs.c: fix live btrfs_test_search_ioctls output. 9465 * tests/btrfs.c (btrfs_test_search_ioctls): Use print_tree_search_buf 9466 for BTRFS_IOC_TREE_SEARCH and fix missing whitespace. 9467 9468 btrfs.c: don't use print_array in btrfs_print_tree_search. 9469 * btrfs.c (btrfs_print_tree_search): Don't use print_array. The buffer 9470 represents a series of variable sized records, not an array. 9471 9472 btrfs.c: fix print_array usage in btrfs_print_logical_ino_container. 9473 * btrfs.c: (btrfs_print_logical_ino_container) Fix the element count 9474 to reflect the number of records rather than the number of items. 9475 9476 2016-05-26 Jeff Mahoney <jeffm (a] suse.com> 9477 9478 tests/btrfs.c: fix btrfs-v for BTRFS_IOC_TREE_SEARCH. 9479 * tests/btrfs.c (btrfs_test_send_ioctl): Assign key_reference 9480 to search_args for BTRFS_IOC_TREE_SEARCH ioctl tests. 9481 9482 2016-05-26 Fabien Siron <fabien.siron (a] epita.fr> 9483 9484 Fix -yy documentation. 9485 * strace.c (usage): Fix description of -yy option. 9486 * strace.1: Likewise. 9487 9488 2016-05-26 Dmitry V. Levin <ldv (a] altlinux.org> 9489 9490 tests/ioctl_block.c: tweak magic constants to make the test more reliable 9491 * tests/ioctl_block.c (main): Change bad pointer to make 9492 its lower 32-bit part closer to -1U. 9493 9494 tests/btrfs.c: check basic decoding of read-only ioctls. 9495 * tests/btrfs.c (btrfs_test_read_ioctls): New function. 9496 (main): Use it. 9497 9498 tests: check decoding of BLK* ioctls. 9499 * configure.ac (AC_CHECK_TYPES): Add struct blk_user_trace_setup. 9500 * tests/ioctl_block.c: New file. 9501 * tests/ioctl_block.test: New test. 9502 * tests/.gitignore: Add ioctl_block. 9503 * tests/Makefile.am (check_PROGRAMS): Likewise. 9504 (DECODER_TESTS): Add ioctl_block.test. 9505 9506 Mpersify BLK* ioctl parser. 9507 * defs.h (block_ioctl): Remove. 9508 * block.c: Mpersify struct blk_user_trace_setup, 9509 struct blkpg_ioctl_arg, struct blkpg_partition, and ioctl numbers. 9510 (block_ioctl): Mpersify. 9511 * NEWS: Mention this enhancement. 9512 9513 block.c: optimize decoding of paired ioctls. 9514 * block.c (block_ioctl): Optimize decoding of commands that return 9515 a signed int. 9516 9517 block.c: fix printing of uint64_t pairs. 9518 * block.c (block_ioctl): Print uint64_t values using PRIu64 format. 9519 9520 block.c: fix printing of struct blk_user_trace_setup. 9521 * block.c (block_ioctl): Fix printing of comma before 9522 struct blk_user_trace_setup.name on exiting syscall. 9523 9524 Move parser of 'X' type ioctls to a separate file. 9525 * fs_x_ioctl.c: New file. 9526 * Makefile.am (strace_SOURCES): Add it. 9527 * block.c: (block_ioctl): Move parser of FITRIM, FIFREEZE, and FITHAW 9528 to fs_x_ioctl.c. 9529 * defs.h (fs_x_ioctl): New prototype. 9530 * ioctl.c (ioctl_decode): Call fs_x_ioctl for ioctl type 'X'. 9531 9532 Move parser of HDIO_* ioctls to a separate file. 9533 * hdio.c: New file. 9534 * Makefile.am (strace_SOURCES): Add it. 9535 * block.c: Do not include <linux/hdreg.h>. 9536 (block_ioctl): Move parser of HDIO_GETGEO to hdio.c. 9537 * defs.h (hdio_ioctl): New prototype. 9538 * ioctl.c (ioctl_decode): Call hdio_ioctl for ioctl type 0x03. 9539 9540 Fix explicit casts of signed integer types to unsigned long long. 9541 * defs.h (widen_to_ull): New macro. 9542 * dirent.c (print_old_dirent, SYS_FUNC(getdents)): Use it in place 9543 of explicit casts to unsigned long long. 9544 * io.c (print_lld_from_low_high_val): Likewise. 9545 * lseek.c (SYS_FUNC(llseek)): Likewise. 9546 * printsiginfo.c (print_si_info): Likewise. 9547 * printstat.h (DO_PRINTSTAT): Likewise. 9548 * sysinfo.c (SYS_FUNC(sysinfo)): Likewise. 9549 * times.c (SYS_FUNC(times)): Likewise. 9550 * fetch_struct_statfs.c (ASSIGN_NUMBER): Remove. 9551 (fetch_struct_statfs, fetch_struct_statfs64): Replace ASSIGN_NUMBER 9552 with widen_to_ull. 9553 9554 scsi.c: print __u64 types using PRI__u64 format. 9555 * scsi.c (print_sg_io_v4_req, print_sg_io_v4_res): Remove explicit casts 9556 to unsigned long long, print fields of type __u64 using PRI__u64 format. 9557 9558 2016-05-25 Dmitry V. Levin <ldv (a] altlinux.org> 9559 9560 tests: check decoding of RTC_* ioctls. 9561 * configure.ac (AC_CHECK_FUNCS): Add ioctl_rtc. 9562 * tests/ioctl_rtc.c: New file. 9563 * tests/ioctl_rtc-v.c: Likewise. 9564 * tests/ioctl_rtc.test: New test. 9565 * tests/ioctl_rtc-v.test: Likewise. 9566 * tests/.gitignore: Add ioctl_rtc and ioctl_rtc-v. 9567 * tests/Makefile.am (check_PROGRAMS): Likewise. 9568 (DECODER_TESTS): Add ioctl_rtc.test and ioctl_rtc-v.test. 9569 9570 Mpersify RTC_* ioctl parser. 9571 * defs.h (rtc_ioctl): Remove. 9572 * rtc.c: Mpersify struct rtc_pll_info and ioctl numbers. 9573 (rtc_ioctl): Mpersify. 9574 * NEWS: Mention this enhancement. 9575 9576 rtc.c: fix decoding of struct rtc_wkalrm. 9577 * rtc.c (decode_rtc_wkalrm): Print field name of struct rtc_wkalrm.time. 9578 9579 file_ioctl.c: print file descriptors using printfd. 9580 * file_ioctl.c (print_file_dedupe_range_info): Print 9581 struct file_dedupe_range_info.dest_fd using printfd. 9582 (file_ioctl): Print struct file_clone_range.src_fd using printfd. 9583 9584 rtc.c: do not print argument of ioctls that have no arguments. 9585 * rtc.c (rtc_ioctl): Do not print argument of RTC_{A,U,P,W}IE_{ON,OFF} 9586 and RTC_VL_CLR ioctls. 9587 9588 rtc.c: decode RTC_PLL_GET and RTC_PLL_SET. 9589 * rtc.c (rtc_ioctl): Decode RTC_PLL_GET and RTC_PLL_SET 9590 9591 rtc.c: optimize decoding of paired ioctls. 9592 * rtc.c (rtc_ioctl): Optimize decoding of RTC_ALM_READ/RTC_ALM_SET, 9593 RTC_RD_TIME/RTC_SET_TIME, and RTC_WKALM_RD/RTC_WKALM_SET ioctl pairs. 9594 9595 block.c: handle BLKDAXGET. 9596 * block.c [!BLKDAXGET] (BLKDAXGET): Define. 9597 (block_ioctl): Handle it. 9598 9599 tests: check decoding of mount syscall. 9600 * tests/mount.c: New file. 9601 * tests/mount.test: New test. 9602 * tests/.gitignore: Add mount. 9603 * tests/Makefile.am (check_PROGRAMS): Likewise. 9604 (DECODER_TESTS): Add mount. 9605 9606 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9607 9608 tests/vhangup.c: diassociate from the controlling terminal first. 9609 * tests/vhangup.c (main): Call setsid before vhangup. 9610 9611 2016-05-24 Fei Jie <feij.fnst (a] cn.fujitsu.com> 9612 9613 tests: add vhangup.test. 9614 * tests/vhangup.c: New file. 9615 * tests/vhangup.test: New test. 9616 * tests/.gitignore: Add vhangup. 9617 * tests/Makefile.am (check_PROGRAMS): Likewise. 9618 (DECODER_TESTS): Add vhangup.test. 9619 9620 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9621 9622 NEWS: Prepare for 4.12 release. 9623 9624 2016-05-24 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 9625 9626 tests/btrfs.c: fix build on x32. 9627 * tests/btrfs.c (btrfs_test_ino_path_ioctls): Fix printing of st_ino. 9628 9629 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9630 9631 tests/btrfs.c: fix build with u64 based BTRFS_IOC_DEFAULT_SUBVOL. 9632 * tests/btrfs.c: Fix build on systems where BTRFS_IOC_DEFAULT_SUBVOL 9633 is defined using unexported type "u64". 9634 9635 btrfs.c: fix build on systems without BTRFS_IOC_FILE_EXTENT_SAME. 9636 * btrfs.c (btrfs_ioctl): Skip BTRFS_IOC_FILE_EXTENT_SAME case 9637 if this constant is not defined. 9638 * tests/btrfs.c (btrfs_test_extent_same_ioctl): Skip this part 9639 of the test if BTRFS_IOC_FILE_EXTENT_SAME is not defined. 9640 9641 tests/btrfs.c: fix printing struct btrfs_ioctl_clone_range_args. 9642 * tests/btrfs.c (btrfs_test_clone_ioctls): Print __u64 members 9643 of struct btrfs_ioctl_clone_range_args using PRI__u64 format. 9644 9645 tests/btrfs.c: tweak magic constants to make the test more reliable. 9646 * tests/btrfs.c (btrfs_test_sync_ioctls): Change u64val 9647 to 0xdeadbeefbadc0ded. 9648 (btrfs_test_subvol_ioctls): Likewise. Change bad_pointer 9649 to make their lower 32-bit parts closer to -1U. 9650 9651 btrfs.c: print file descriptors using printfd. 9652 * btrfs.c (btrfs_ioctl): Print struct btrfs_ioctl_send_args.send_fd, 9653 struct btrfs_ioctl_vol_args.fd, and struct btrfs_ioctl_vol_args_v2.fd 9654 using printfd. 9655 * tests/btrfs.c (btrfs_print_vol_args_v2, btrfs_test_subvol_ioctls, 9656 btrfs_test_device_ioctls, btrfs_test_clone_ioctls, 9657 btrfs_test_send_ioctl): Update. 9658 9659 tests/btrfs.c: do not print errno in case of fs type mismatch. 9660 * tests/btrfs.c (main): Use error_msg_and_fail instead of 9661 perror_msg_and_fail when the fs type of the given directory 9662 is not BTRFS_SUPER_MAGIC. 9663 9664 tests/btrfs.c: fix indentation. 9665 * tests/btrfs.c: Fix indentation of preprocessor directives 9666 and function prototypes. 9667 9668 tests/btrfs.c: sort included headers. 9669 * tests/btrfs.c: Sort included headers. 9670 9671 tests/btrfs.c: do not use alloca. 9672 * tests/btrfs.c: Don't include <alloca.h>. 9673 (btrfs_test_subvol_ioctls): Allocate 9674 struct btrfs_ioctl_vol_args_v2.qgroup_inherit using tail_alloc. 9675 9676 tests/btrfs.c: fix build on systems without <linux/btrfs.h> or <linux/fiemap.h> 9677 * tests/btrfs.c: Include "tests.h" first. 9678 Skip the test if [!HAVE_LINUX_BTRFS_H]. Skip parts of the test 9679 that use struct fiemap if [!HAVE_LINUX_FIEMAP_H]. 9680 9681 2016-05-24 Jeff Mahoney <jeffm (a] suse.com> 9682 9683 tests: add testing for btrfs ioctls. 9684 * tests/btrfs.c: New file. 9685 * tests/btrfs.test: New test. 9686 * tests/btrfs-v.test: Likewise. 9687 * tests/.gitignore: Add btrfs. 9688 * tests/Makefile.am (check_PROGRAMS): Likewise. 9689 (DECODER_TESTS): Add btrfs.test and btrfs-v.test. 9690 9691 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9692 9693 tests/file_ioctl.c: use tail_alloc. 9694 * tests/file_ioctl.c (main): Allocate struct fiemap using tail_alloc. 9695 9696 tests/file_ioctl.c: fix build on systems without <linux/fiemap.h> 9697 * tests/file_ioctl.c: Include "tests.h" first. 9698 Skip the test if [!HAVE_LINUX_FIEMAP_H]. 9699 9700 2016-05-24 Jeff Mahoney <jeffm (a] suse.com> 9701 9702 tests: add testing for FS_IOC_FIEMAP. 9703 This is limited to FIEMAP. FICLONE* and FIDEDUPERANGE originated in 9704 btrfs and will be tested there. 9705 9706 * tests/file_ioctl.c: New file. 9707 * tests/file_ioctl.test: New test. 9708 * tests/.gitignore: Add file_ioctl. 9709 * tests/Makefile.am (check_PROGRAMS): Likewise. 9710 (DECODER_TESTS): Add file_ioctl.test. 9711 9712 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9713 9714 Mpersify btrfs.c. 9715 * btrfs.c: Mpersify 3 arch-specific structures 9716 and corresponding ioctl numbers. 9717 (btrfs_ioctl): Mpersify. 9718 * defs.h (btrfs_ioctl): Remove. 9719 9720 btrfs.c: use print_array. 9721 * btrfs.c (print_btrfs_data_container_logical_ino, 9722 print_btrfs_data_container_ino_path, print_uint64, 9723 print_btrfs_ioctl_search_header, print_objectid_callback, 9724 print_btrfs_ioctl_space_info): New functions. 9725 (btrfs_print_logical_ino_container, btrfs_print_ino_path_container): 9726 Rewrite printers of struct btrfs_data_container.val array 9727 using print_array. 9728 (btrfs_print_qgroup_inherit): Rewrite printer of 9729 struct btrfs_qgroup_inherit.qgroups array using print_array. 9730 (btrfs_print_tree_search): Rewrite printer of 9731 struct btrfs_ioctl_search_header array using print_array. 9732 (btrfs_ioctl): Rewrite printer of 9733 struct btrfs_ioctl_send_args.clone_sources and 9734 struct btrfs_ioctl_space_args.spaces using print_array. 9735 9736 btrfs.c: simplify BTRFS_IOC_GET_FSLABEL parser. 9737 * btrfs.c (btrfs_ioctl): Share code of parser of BTRFS_IOC_SET_FSLABEL 9738 with parser of BTRFS_IOC_GET_FSLABEL only on BTRFS_IOC_GET_FSLABEL's 9739 entering. 9740 9741 btrfs.c: fix BTRFS_IOC_TREE_SEARCH_V2 output. 9742 * btrfs.c (btrfs_ioctl): Fix BTRFS_IOC_TREE_SEARCH_V2 output 9743 in case of EOVERFLOW and failed umove. 9744 9745 btrfs.c: cleanup use of tcp->auxstr. 9746 * btrfs.c (btrfs_ioctl): Reset tcp->auxstr only if it is set. 9747 9748 btrfs.c: cleanup struct btrfs_ioctl_get_dev_stats.nr_items check. 9749 * btrfs.c (btrfs_ioctl): Cleanup check of iterator of 9750 btrfs_ioctl_get_dev_stats.values array. 9751 9752 btrfs.c: do not use BTRFS_SUBVOL_NAME_MAX. 9753 * btrfs.c [BTRFS_SUBVOL_NAME_MAX]: Remove. 9754 (btrfs_ioctl): Use sizeof(struct btrfs_ioctl_vol_args_v2.name) 9755 instead of BTRFS_SUBVOL_NAME_MAX + 1. 9756 9757 btrfs.c: mark some function arguments as const. 9758 * btrfs.c (btrfs_print_balance_args, btrfs_print_features, 9759 btrfs_print_qgroup_limit, btrfs_print_data_container_header, 9760 btrfs_print_logical_ino_container, btrfs_print_ino_path_container, 9761 btrfs_print_qgroup_inherit): Mark some function arguments as const. 9762 9763 btrfs.c: use umove instead of umoven. 9764 * btrfs.c: Use umove instead of umoven and umove_or_printaddr 9765 instead of umoven_or_printaddr. 9766 9767 btrfs.c: remove unused variable. 9768 * btrfs.c (btrfs_ioctl): Remove "ret" variable. 9769 9770 btrfs.c: use printxval/printxval64 instead of printxvals. 9771 * btrfs.c (btrfs_ioctl): Do not call printxvals directly, 9772 use printxval/printxval64 wrappers that do the right thing. 9773 9774 btrfs.c: fix indentation. 9775 * btrfs.c: Fix indentation of preprocessor directives and print formats. 9776 9777 xlat/btrfs_dev_stats_values.in: cleanup. 9778 * xlat/btrfs_dev_stats_values.in: Remove HAVE_DECL_* defines, 9779 use #unconditional instead. 9780 9781 file_ioctl.c: use print_array. 9782 * file_ioctl.c (file_ioctl): Rewrite printers of 9783 struct file_dedupe_range_info and struct fiemap_extent arrays 9784 using print_array. 9785 9786 file_ioctl.c: fix indentation. 9787 * file_ioctl.c: Fix indentation of preprocessor directives 9788 and print formats. 9789 9790 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9791 9792 file_ioctl.c: include <linux/ioctl.h> instead of <sys/ioctl.h> 9793 Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings 9794 no benefits for this parser. 9795 9796 * file_ioctl.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. 9797 9798 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9799 9800 file_ioctl.c: fix build on systems without <linux/fiemap.h> 9801 * configure.ac (AC_CHECK_HEADERS): Add linux/fiemap.h. 9802 * file_ioctl.c: Do not include <linux/fiemap.h> and xlat/fiemap_*.h 9803 if [!HAVE_LINUX_FIEMAP_H]. 9804 (file_ioctl): Do not parse FS_IOC_FIEMAP if [!HAVE_LINUX_FIEMAP_H]. 9805 9806 ioctl.c: fix build. 9807 * ioctl.c (ioctl_decode): Move definition of "ret" variable 9808 to [ALPHA || POWERPC] case. 9809 [ALPHA || POWERPC]: Fix syntax error. 9810 9811 2016-05-24 Jeff Mahoney <jeffm (a] suse.com> 9812 9813 ioctl: add decoding for FS_IOC_FIEMAP. 9814 * file_ioctl.c: Include <linux/fiemap.h>, "xlat/fiemap_flags.h", 9815 and "xlat/fiemap_extent_flags.h". 9816 (file_ioctl): Handle FS_IOC_FIEMAP. 9817 * ioctl.c (ioctl_decode): Use file_ioctl for decoding 'f' code ioctls. 9818 9819 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9820 9821 Add xlat/fiemap_flags.in and xlat/fiemap_extent_flags.in. 9822 * xlat/fiemap_flags.in: New file. 9823 * xlat/fiemap_extent_flags.in: Likewise. 9824 9825 2016-05-24 Jeff Mahoney <jeffm (a] suse.com> 9826 9827 ioctl: add decoding support for btrfs ioctls. 9828 * btrfs.c: New file. 9829 * file_ioctl.c: Likewise. 9830 * Makefile.am (strace_SOURCES): Add them. 9831 * configure.ac (AC_CHECK_HEADERS): Add linux/btrfs.h. 9832 (AC_CHECK_MEMBERS): Add struct btrfs_ioctl_feature_flags.compat_flags, 9833 struct btrfs_ioctl_fs_info_args.nodesize, 9834 struct btrfs_ioctl_defrag_range_args.start, 9835 and struct btrfs_ioctl_search_args_v2.buf_size. 9836 (AC_CHECK_DECLS): Add BTRFS_COMPRESS_* enums. 9837 * defs.h (btrfs_ioctl, file_ioctl): New prototypes. 9838 * ioctl.c (ioctl_decode) [HAVE_LINUX_BTRFS_H]: Use btrfs_ioctl. 9839 * xlat/btrfs_balance_args.in: New file. 9840 * xlat/btrfs_balance_ctl_cmds.in: Likewise. 9841 * xlat/btrfs_balance_flags.in: Likewise. 9842 * xlat/btrfs_balance_state.in: Likewise. 9843 * xlat/btrfs_compress_types.in: Likewise. 9844 * xlat/btrfs_defrag_flags.in: Likewise. 9845 * xlat/btrfs_dev_replace_cmds.in: Likewise. 9846 * xlat/btrfs_dev_replace_results.in: Likewise. 9847 * xlat/btrfs_dev_replace_state.in: Likewise. 9848 * xlat/btrfs_dev_stats_flags.in: Likewise. 9849 * xlat/btrfs_dev_stats_values.in: Likewise. 9850 * xlat/btrfs_features_compat.in: Likewise. 9851 * xlat/btrfs_features_compat_ro.in: Likewise. 9852 * xlat/btrfs_features_incompat.in: Likewise. 9853 * xlat/btrfs_key_types.in: Likewise. 9854 * xlat/btrfs_qgroup_ctl_cmds.in: Likewise. 9855 * xlat/btrfs_qgroup_inherit_flags.in: Likewise. 9856 * xlat/btrfs_qgroup_limit_flags.in: Likewise. 9857 * xlat/btrfs_qgroup_status_flags.in: Likewise. 9858 * xlat/btrfs_scrub_flags.in: Likewise. 9859 * xlat/btrfs_send_flags.in: Likewise. 9860 * xlat/btrfs_snap_flags_v2.in: Likewise. 9861 * xlat/btrfs_space_info_flags.in: Likewise. 9862 * xlat/btrfs_tree_objectids.in: Likewise. 9863 9864 2016-05-24 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 9865 9866 x32: update ioctl entries from linux 4.6. 9867 * linux/x32/ioctls_inc0.h: Update from linux v4.6 using ioctls_gen.sh. 9868 9869 2016-05-24 Dmitry V. Levin <ldv (a] altlinux.org> 9870 9871 tests/attach-f-p.c: sleep a bit more to let the tracer catch up. 9872 On noticeably lagging systems, the parent process may invoke its chdir 9873 call before the tracer gets notified about completion of its last child 9874 process. Add extra sleep in the parent process to win the race. 9875 9876 * tests/attach-f-p.c (main): Change timerid into a static array. 9877 Arm a timer in the parent process and wait for it. 9878 9879 2016-05-23 Dmitry V. Levin <ldv (a] altlinux.org> 9880 9881 tests/attach-p-cmd-cmd.c: fix potential errno clobbering. 9882 * tests/attach-p-cmd-cmd.c (main): Call getpid before chdir. 9883 9884 tests/net-yy-netlink.c: robustify against libc specific issues. 9885 * tests/net-yy-netlink.c (main): Use getsockname instead of recvmsg 9886 as the latter has notible implementation differences that make 9887 the test unreliable. 9888 9889 tests/net-yy-netlink.c: robustify against os specific issues. 9890 * tests/net-yy-netlink.c (main): Pass a pointer to a real struct msghdr 9891 as NULL doesn't work well on some systems. 9892 9893 tests/net-yy-{inet,netlink}.test: cleanup. 9894 * tests/net-yy-inet.test: Do not pass arguments to net-yy-inet 9895 as the latter does not accept them. 9896 * tests/net-yy-netlink.test: Do not pass arguments to net-yy-netlink 9897 as the latter does not accept them. 9898 9899 2016-05-22 Jeff Mahoney <jeffm (a] suse.com> 9900 9901 tests: define PRI__[dux]64 macros to print __s64 and __u64 values. 9902 Rather than cast every __u64 or __s64 before printing, 9903 define printing helpers for those types directly. 9904 9905 This complements commit 1f3482bedad505a41caf1d61b3a4e7e09a2f4330. 9906 9907 * tests/tests.h (PRI__d64, PRI__u64, PRI__x64): New macros. 9908 9909 2016-05-22 Dmitry V. Levin <ldv (a] altlinux.org> 9910 9911 tests: remove manual creation of memory mapping holes. 9912 We used to call tail_alloc(1) to create memory mapping holes around 9913 regular tail_alloc allocations. This is no longer needed since regular 9914 tail_alloc allocations create additional memory mapping holes. 9915 9916 * tests/clock_adjtime.c (main): Remove creation of memory mapping holes 9917 using tail_alloc(1). 9918 * tests/futimesat.c (main): Likewise. 9919 * tests/get_mempolicy.c (print_nodes, main): Likewise. 9920 * tests/getgroups.c (main): Likewise. 9921 * tests/getresugid.c (main): Likewise. 9922 * tests/ioctl_uffdio.c (main): Likewise. 9923 * tests/ioctl_v4l2.c (main): Likewise. 9924 * tests/move_pages.c (main): Likewise. 9925 * tests/net-icmp_filter.c (main): Likewise. 9926 * tests/ptrace.c (test_peeksiginfo, main): Likewise. 9927 * tests/pwritev.c (main): Likewise. 9928 * tests/set_mempolicy.c (print_nodes): Likewise. 9929 * tests/setgroups.c (main): Likewise. 9930 * tests/umovestr3.c (main): Likewise. 9931 * tests/utimes.c (main): Likewise. 9932 * tests/xattr.c (main): Likewise. 9933 9934 2016-05-22 Dmitry V. Levin <ldv (a] altlinux.org> 9935 9936 tests: make tail_alloc create additional memory mapping holes. 9937 * tests/tail_alloc.c (tail_alloc): Create additional memory mapping 9938 holes before and after the allocated memory. 9939 9940 2016-05-21 Dmitry V. Levin <ldv (a] altlinux.org> 9941 9942 mpers: add support of conditionally compiled printers. 9943 We used to declare and define all printers marked with 9944 MPERS_PRINTER_DECL, including ifdef'ed ones. That approach left us 9945 no way to conditionally compile mpersified printers, which was not 9946 a problem until btrfs ioctls appeared on the horizon. 9947 9948 With this change, those mpersified printers that are not going 9949 to be compiled are also won't be declared and won't be added to 9950 struct_printers. 9951 9952 This is implemented by filtering all source files containing 9953 MPERS_PRINTER_DECL markers through CPP. As a nice side effect, this 9954 also lifts an ugly requirement of writing all MPERS_PRINTER_DECL 9955 declarations in a single line. 9956 9957 * README-mpers: Update description of MPERS_PRINTER_DECL syntax. 9958 * defs.h [IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into 9959 a recursive variadic macro. 9960 [!IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into a variadic macro. 9961 All callers changed. 9962 * Makefile.am (mpers_preproc_files, mpers_printer_decl_pattern): 9963 New variables. 9964 (CLEANFILES): Add $(mpers_preproc_files). 9965 (%.c.mpers.i): New rule. 9966 (printers.h, %_printer_decls.h, %_printer_defs.h): Use 9967 mpers_preproc_files instead of srcdir_mpers_source_files, 9968 use mpers_printer_decl_pattern. 9969 * .gitignore: Add /*.mpers.i. 9970 9971 2016-05-20 Dmitry V. Levin <ldv (a] altlinux.org> 9972 9973 Remove redundant declaration of v4l2_ioctl. 9974 There is no need to declare mpers printers in defs.h because 9975 they are already declared in printers.h or native_printer_decls.h. 9976 9977 This complements commit 1e56814f77594a22a74ddee629639eb0bb7edf3a. 9978 9979 * defs.h (v4l2_ioctl): Remove. 9980 9981 2016-05-21 Dmitry V. Levin <ldv (a] altlinux.org> 9982 9983 Fix one more code pattern that might break gcc strict aliasing rules. 9984 * socketutils.c (receive_responses): Turn static buffer into a union 9985 to avoid breaking of gcc strict aliasing rules. 9986 * tests/netlink_inet_diag.c (check_responses): Likewise. 9987 * tests/netlink_netlink_diag.c (check_responses): Likewise. 9988 * tests/netlink_unix_diag.c (check_responses): Likewise. 9989 9990 2016-05-21 Fabien Siron <fabien.siron (a] epita.fr> 9991 9992 tests: add check for netlink protocol decoding with -yy option. 9993 * tests/netlink_netlink_diag.c: New file. 9994 * tests/net-yy-netlink.c: New file. 9995 * tests/net-yy-netlink.test: New test. 9996 * tests/.gitignore: Add net-yy-netlink and netlink_netlink_diag 9997 * tests/Makefile.am (check_PROGRAMS): Likewise. 9998 (TESTS): Add net-yy-netlink.test. 9999 10000 2016-05-18 Fabien Siron <fabien.siron (a] epita.fr> 10001 10002 Add netlink domain sockets support to socketutils. 10003 * linux/netlink_diag.h: New file. 10004 * Makefile.am (EXTRA_DIST): Add it. 10005 * socketutils.c: Include it and "xlat/netlink_protocols.h". 10006 (netlink_send_query, netlink_parse_response, netlink_print): New 10007 functions. 10008 (print_sockaddr_by_inode): Hook up netlink_print. 10009 10010 2016-05-18 Dmitry V. Levin <ldv (a] altlinux.org> 10011 10012 tests/pread64-pwrite64.c: robustify against os specific issues. 10013 Do not assume that pwrite64 syscall fails when only part of the 10014 specified memory buffer is accessible. With some kernels, one 10015 accessible byte at the end of page is enough for pwrite64 syscall 10016 to return 1. 10017 10018 * tests/pread64-pwrite64.c (main): Tweak the test that can lead 10019 to a partial write. 10020 10021 2016-05-18 Dmitry V. Levin <ldv (a] altlinux.org> 10022 10023 tests/read-write.c: robustify against os specific issues. 10024 Do not assume that write syscall fails when only part of the specified 10025 memory buffer is accessible. With some kernels, one accessible byte 10026 at the end of page is enough for write syscall to return 1. 10027 10028 * tests/read-write.c (main): Tweak the test that can lead to a partial 10029 write. 10030 10031 2016-05-18 Dmitry V. Levin <ldv (a] altlinux.org> 10032 10033 umovestr3.test: extend test coverage. 10034 * tests/umovestr3.c: Include <sys/param.h>. 10035 (main): Test with each number between PATH_MAX-1 and 0. 10036 10037 tests/timer_create.c: robustify against os specific issues. 10038 * tests/timer_create.c (main): Do not assume any specific error code 10039 returned by timer_create, print whatever it is. 10040 10041 Fix some compilation warnings on older systems. 10042 * print_statfs.c (print_statfs_flags): Define only 10043 for [HAVE_STRUCT_STATFS_F_FLAGS || HAVE_STRUCT_STATFS64_F_FLAGS]. 10044 * tests/inet-cmsg.c (print_origdstaddr): Define only 10045 for [IP_ORIGDSTADDR]. 10046 10047 Update generic ioctl entries from linux 4.6. 10048 * linux/64/ioctls_inc.h: Update from linux v4.6 using ioctls_gen.sh. 10049 * linux/32/ioctls_inc_align32.h: Likewise. 10050 * linux/32/ioctls_inc_align64.h: Likewise. 10051 * NEWS: Mention this. 10052 10053 maint: update for linux 4.6. 10054 * maint/ioctls_sym.sh: Update workarounds for linux/kvm.h. 10055 10056 Update SOL_* constants. 10057 * xlat/socketlayers.in: Add SOL_KCM. 10058 10059 Update MSG_* constants. 10060 * xlat/msg_flags.in: Add MSG_BATCH. 10061 10062 Update AF_* constants. 10063 * xlat/addrfams.in: Add AF_KCM. 10064 10065 2016-05-17 Fei Jie <feij.fnst (a] cn.fujitsu.com> 10066 10067 tests: add brk.test. 10068 * tests/brk.c: New file. 10069 * tests/brk.test: New test. 10070 * tests/.gitignore: Add brk. 10071 * tests/Makefile.am (check_PROGRAMS): Likewise. 10072 (DECODER_TESTS): Add brk.test. 10073 10074 2016-05-17 Dmitry V. Levin <ldv (a] altlinux.org> 10075 10076 Fix printing of invalid arguments of term ioctls. 10077 * term.c (term_ioctl): Print arguments of TCXONC and TCFLSH ioctls 10078 using printxval_long. 10079 10080 mips: fix printing of invalid operations argument of sysmips syscall. 10081 * sysmips.c (SYS_FUNC(sysmips)): Print 1st argument of syscall using 10082 printxval_long. 10083 10084 bfin: fix printing of invalid flags argument of sram_alloc syscall. 10085 * sram_alloc.c (SYS_FUNC(sram_alloc)): Print 2nd argument using 10086 printflags_long. 10087 10088 2016-05-16 Dmitry V. Levin <ldv (a] altlinux.org> 10089 10090 Fix printing of invalid arguments of prctl syscall. 10091 * prctl.c (SYS_FUNC(prctl)): Print 2nd syscall argument 10092 of PR_CAPBSET_DROP, PR_CAPBSET_READ, PR_CAP_AMBIENT, PR_MCE_KILL, 10093 and PR_SET_SECCOMP using printxval_long. 10094 Print 2nd syscall argument of PR_SET_SECUREBITS using printflags_long. 10095 Print 3rd syscall argument of PR_CAP_AMBIENT and PR_MCE_KILL using 10096 printxval_long. 10097 * tests/prctl-seccomp-strict.c (main): Update. 10098 10099 Fix printing of invalid flags argument of perf_event_open syscall. 10100 * numa.c (SYS_FUNC(perf_event_open)): Print 5th argument of syscall 10101 using printflags_long. 10102 10103 or1k: fix printing of invalid 1st argument of or1k_atomic syscall. 10104 * or1k_atomic.c (SYS_FUNC(or1k_atomic)): Print 1st argument using 10105 printxval_long. 10106 10107 Fix printing of invalid flags argument of get_mempolicy syscall. 10108 * numa.c (SYS_FUNC(get_mempolicy)): Print 5th argument of syscall 10109 using printxval_long. 10110 10111 Fix printing of invalid mode argument of mbind syscall. 10112 * numa.c (SYS_FUNC(mbind)): Print 3rd argument of syscall 10113 using printxval_long. 10114 * tests/mbind.c (main): Update. 10115 10116 Fix printing of invalid argument of MTDFILEMODE ioctl. 10117 * mtd.c (mtd_ioctl): Print 3rd argument of MTDFILEMODE ioctl 10118 using printflags_long. 10119 10120 Fix printing of invalid flags argument of mount syscall. 10121 * mount.c (SYS_FUNC(mount)): Print 1st argument using printflags_long. 10122 10123 Fix printing of invalid arguments of memory mapping related syscalls. 10124 * mem.c (print_mmap): Print 3rd and 4th arguments of syscall 10125 using printflags_long. 10126 (SYS_FUNC(mprotect)): Print 3rd argument of syscall using 10127 printflags_long. 10128 (SYS_FUNC(mremap)): Print 4th argument of syscall using printflags_long. 10129 (SYS_FUNC(remap_file_pages)): Print 3rd and 4th arguments of syscall 10130 using printflags_long. 10131 * tests/remap_file_pages.c (main): Update. 10132 10133 Fix printing of invalid flags argument of kexec_load and kexec_file_load 10134 * kexec.c (SYS_FUNC(kexec_load), SYS_FUNC(kexec_file_load)): Print 10135 flags argument using printflags_long. 10136 10137 Fix printing of invalid 3rd argument of fcntl/fcntl64 syscall. 10138 * fcntl.c (print_fcntl): Print 3rd argument of F_NOTIFY, F_SETLEASE, and 10139 F_ADD_SEALS operations using printflags_long. 10140 10141 Fix printing of invalid flags argument of unshare syscall. 10142 * clone.c (SYS_FUNC(unshare)): Print 1st argument using printflags_long. 10143 10144 Introduce printflags_long and printxval_long. 10145 * defs.h (printflags_long, printxval_long): New static inline functions. 10146 10147 Fix printing of invalid struct xfs_dqblk.d_flags. 10148 * quota.c (decode_cmd_data): Explicitly cast struct xfs_dqblk.d_flags 10149 to uint8_t to avoid potential sign-extension bug when printing 10150 invalid struct xfs_dqblk.d_flags. 10151 10152 Fix printing of invalid struct ubi_mkvol_req.vol_type. 10153 * mtd.c (ubi_ioctl): Explicitly cast struct ubi_mkvol_req.vol_type 10154 to unsigned short to avoid potential sign-extension bug when printing 10155 invalid struct ubi_mkvol_req.vol_type. 10156 10157 2016-05-16 Dmitry V. Levin <ldv (a] altlinux.org> 10158 10159 Fix decoding of prctl/arch_prctl operation argument. 10160 Consistently treat operation argument of prctl/arch_prctl syscalls 10161 as int to match the kernel behaviour. 10162 10163 * prctl.c (SYS_FUNC(prctl), SYS_FUNC(arch_prctl)): Assign 1st argument 10164 of syscalls to a variable of type unsigned int and use it in all 10165 subsequent checks and lookups. 10166 10167 2016-05-16 Dmitry V. Levin <ldv (a] altlinux.org> 10168 10169 Fix printing of struct sched_attr.sched_flags. 10170 * sched.c (print_sched_attr): Print sched_flags using printflags64. 10171 10172 Fix printing of struct statfs.f_flags. 10173 * print_statfs.c (print_statfs_flags): Print flags using printflags64. 10174 10175 Fix printing of invalid struct ifreq.ifr_flags. 10176 * sock.c (print_ifreq): Explicitly cast struct ifreq.ifr_flags 10177 to unsigned short to avoid potential sign-extension bug when printing 10178 invalid struct ifreq.ifr_flags. 10179 10180 Fix printing of invalid struct pollfd.events. 10181 * poll.c (print_pollfd): Explicitly cast struct pollfd.events 10182 to unsigned short to avoid potential sign-extension bug when printing 10183 invalid struct pollfd.events. 10184 10185 Fix printing of invalid struct sembuf.sem_flg. 10186 * ipc_sem.c (print_sembuf): Explicitly cast struct sembuf.sem_flg 10187 to unsigned short to avoid potential sign-extension bug when printing 10188 invalid struct sembuf.sem_flg. 10189 10190 Fix printing of invalid l_type and l_whence in fcntl/fcntl64 syscalls. 10191 * fcntl.c (print_struct_flock64): Explicitly cast l_type and l_whence 10192 fields to unsigned short to avoid potential sign-extension bug when 10193 printing invalid l_type or l_whence fields. 10194 10195 Fix printing of fanotify_mark mask argument. 10196 * fanotify.c (SYS_FUNC(fanotify_mark)): Print mask using printflags64. 10197 10198 2016-05-16 Dmitry V. Levin <ldv (a] altlinux.org> 10199 10200 Fix decoding of epoll_ctl operation argument. 10201 Consistently treat operation argument of epoll_ctl syscall as int 10202 to match the kernel behaviour. 10203 10204 * epoll.c (SYS_FUNC(epoll_ctl)): Assign 2nd argument of syscall 10205 to a variable of type unsigned int and use it in all subsequent 10206 checks and lookups. 10207 * tests/epoll_ctl.c (invoke_syscall): New function. 10208 (main): Use it. 10209 10210 2016-05-16 Dmitry V. Levin <ldv (a] altlinux.org> 10211 10212 Fix printing of invalid d_type in getdents syscall. 10213 * dirent.c (SYS_FUNC(getdents)): Treat d_type as unsigned char to avoid 10214 potential sign-extension bug when printing invalid d_type. 10215 10216 bfin: fix decoding of cacheflush syscall. 10217 * cacheflush.c (SYS_FUNC(cacheflush)): Print 2nd argument 10218 using %lu format. Print 3rd argument as flags. 10219 10220 Fix decoding of BPF_MAP_UPDATE_ELEM flags. 10221 * bpf.c (bpf_map_update_elem): Print attr.flags using printxval64. 10222 10223 2016-05-16 Dmitry V. Levin <ldv (a] altlinux.org> 10224 10225 Fix decoding of fcntl/fcntl64 operation argument. 10226 Consistently treat operation argument of fcntl/fcntl64 syscalls as int 10227 to match the kernel behaviour. 10228 10229 * fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Assign 10230 2nd argument of syscall to a variable of type unsigned int 10231 and use it in all subsequent checks and lookups. 10232 * tests/struct_flock.c (invoke_test_syscall): New function. 10233 (test_flock_einval, test_flock): Use it. 10234 * tests/fcntl.c (test_flock64_einval): Use it. 10235 * tests/fcntl64.c (test_flock64_einval, test_flock64): Use it. 10236 10237 2016-05-15 Dmitry V. Levin <ldv (a] altlinux.org> 10238 10239 Rename sprintflags64 to sprintflags. 10240 * defs.h (sprintflags): Remove. 10241 (sprintflags64): Rename to sprintflags. 10242 * util.c (sprintflags64): Rename to sprintflags. 10243 10244 Prepare for transition from sprintflags64 to sprintflags. 10245 * fcntl.c (print_fcntl): Cast 3rd argument of sprintflags 10246 to unsigned long. 10247 * membarrier.c (SYS_FUNC(membarrier)): Likewise. 10248 * prctl.c (SYS_FUNC(prctl)): Likewise. 10249 * poll.c (decode_poll_exiting): Cast 3rd argument of sprintflags 10250 to unsigned short. 10251 10252 2016-05-14 Dmitry V. Levin <ldv (a] altlinux.org> 10253 10254 Rename xlookup64 to xlookup. 10255 * defs.h (xlookup): Remove. 10256 (xlookup64): Rename to xlookup. 10257 * util.c (xlookup64): Rename to xlookup. 10258 10259 Prepare for transition from xlookup64 to xlookup. 10260 * fcntl.c (print_fcntl, SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): 10261 Cast 2nd argument of xlookup to unsigned long. 10262 * prctl.c (SYS_FUNC(prctl)): Likewise. 10263 * sched.c (SYS_FUNC(sched_getscheduler)): Likewise. 10264 * time.c (do_adjtimex): Likewise. 10265 * ioprio.c (sprint_ioprio): Change type of the argument 10266 and local variables from int to unsigned int. 10267 * keyctl.c (print_keyring_serial_number): Cast 2nd argument 10268 of xlookup to unsigned int. 10269 * net.c (tprint_sock_type): Change type of the argument to unsigned int. 10270 * printmode.c (sprintmode): Likewise. 10271 * printsiginfo.c (printsigval): Change type of si_code argument 10272 to unsigned int. 10273 10274 2016-05-14 Dmitry V. Levin <ldv (a] altlinux.org> 10275 10276 v4l2: fix build with old kernel headers. 10277 Prior to v2.6.25-rc3, <linux/videodev2.h> didn't include all 10278 required headers, resulting to omission of V4L2_* constants. 10279 10280 This issue doesn't arise in v4l2.c and tests/ioctl_v4l2.c files 10281 because they already include all necessary headers themselves. 10282 10283 * configure.ac (AC_CHECK_DECLS): Include <sys/time.h>, <linux/ioctl.h>, 10284 and <linux/types.h> before <linux/videodev2.h>. 10285 10286 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10287 10288 configure.ac: do not check for sys/ioctl.h and ioctls.h. 10289 Since sys/ioctl.h is included unconditionally when needed 10290 and ioctls.h doesn't exist, these checks are redundant. 10291 10292 * configure.ac (AC_CHECK_HEADERS): Remove ioctls.h and sys/ioctl.h. 10293 10294 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10295 10296 sock.c: include <linux/ioctl.h> instead of <sys/ioctl.h> or <ioctls.h> 10297 Include <linux/ioctl.h> for <linux/sockios.h> on alpha, sh, and sh64 10298 architectures because their <asm/sockios.h> use _IOR and _IOW macros 10299 but don't include anything that would define these macros. 10300 10301 Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings 10302 no benefits in this case. <ioctls.h> simply doesn't exist. 10303 10304 * sock.c [ALPHA || SH || SH64]: Include <linux/ioctl.h> 10305 instead of <sys/ioctl.h> or <ioctls.h>. 10306 10307 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10308 10309 v4l2: include <linux/ioctl.h> instead of <sys/ioctl.h> 10310 Being a wrapper around <linux/ioctl.h>, <sys/ioctl.h> brings 10311 no benefits for parser of VIDIOC_* ioctls. 10312 10313 * v4l2.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. 10314 10315 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10316 10317 printsiginfo: remove "verbose" argument. 10318 Remove erroneous use of verbose(tcp) as a printing limit 10319 for already fetched members of siginfo_t structure. 10320 10321 * printsiginfo.h (printsiginfo): Remove boolean argument. 10322 * printsiginfo.c (printsigval): Remove boolean argument, print 10323 si_int and si_ptr members unconditionally. All callers changed. 10324 (print_si_info): Remove boolean argument, print si_utime and si_stime 10325 members unconditionally. All callers changed. 10326 (printsiginfo): Remove boolean argument. All callers changed. 10327 10328 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10329 10330 tests/ptrace.c: tweak magic constants to make the test more reliable. 10331 * tests/ptrace.c (main): Change bad_request and bad_data to make they 10332 lower 32-bit parts closer to -1U. 10333 10334 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10335 10336 tests/ioctl_v4l2.c: fix build on older systems. 10337 Fix build on systems without HAVE_DECL_V4L2_CTRL_TYPE_STRING or 10338 V4L2_CTRL_CLASS_CAMERA. 10339 10340 * tests/ioctl_v4l2.c (main) [VIDIOC_S_EXT_CTRLS]: Disable part of the 10341 test if [!HAVE_DECL_V4L2_CTRL_TYPE_STRING]. 10342 Replace V4L2_CTRL_CLASS_CAMERA with V4L2_CTRL_CLASS_USER. 10343 10344 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10345 10346 Do not use htole32 function. 10347 htole32 function is not portable enough. 10348 10349 * v4l2.c (print_pixelformat): Rewrite initialization of pixel format 10350 union without using of htole32. 10351 * tests/ioctl_v4l2.c (main): Likewise. 10352 10353 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10354 10355 tests/ioctl_v4l2.c: fix typo. 10356 * tests/ioctl_v4l2.c (main) 10357 [!HAVE_DECL_V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE]: Fix typo in expected 10358 output string. 10359 10360 tests: check decoding of ptrace syscall. 10361 * tests/ptrace.c: New file. 10362 * tests/ptrace.test: New test. 10363 * tests/.gitignore: Add ptrace. 10364 * tests/Makefile.am (check_PROGRAMS): Likewise. 10365 (DECODER_TESTS): Add ptrace. 10366 10367 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10368 10369 ptrace: decode data argument of PTRACE_PEEKSIGINFO request. 10370 The data argument of PTRACE_PEEKSIGINFO request is a pointer 10371 to siginfo_t array. 10372 10373 * printsiginfo.c (print_siginfo_t): New function. 10374 (print_siginfo_array): New mpers printer. 10375 * process.c (SYS_FUNC(ptrace)): Print data argument of 10376 PTRACE_PEEKSIGINFO request using print_siginfo_array. 10377 10378 2016-05-13 Dmitry V. Levin <ldv (a] altlinux.org> 10379 10380 ptrace: decode data argument of PTRACE_SECCOMP_GET_FILTER request. 10381 * process.c (SYS_FUNC(ptrace)): Print data argument of 10382 PTRACE_SECCOMP_GET_FILTER request on exiting using print_seccomp_fprog. 10383 10384 ptrace: decode argument of PTRACE_GETEVENTMSG request. 10385 * process.c (SYS_FUNC(ptrace)): Print data argument of 10386 PTRACE_GETEVENTMSG request on exiting using printnum_ulong. 10387 10388 ptrace: decode arguments of PTRACE_[GS]ETSIGMASK requests. 10389 * process.c (SYS_FUNC(ptrace)): Print arguments of PTRACE_GETSIGMASK 10390 and PTRACE_SETSIGMASK requests using print_sigset_addr_len. 10391 10392 ptrace: return RVAL_DECODED for requests decoded on entering. 10393 * process.c (SYS_FUNC(ptrace)): Return RVAL_DECODED on entering for all 10394 ptrace requests except those that are partially decoded in exiting, 10395 10396 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10397 10398 ptrace: print PTRACE_O_* flags using printflags64. 10399 As flags argument has a long integer type, print it using printflags64 10400 because printflags takes unsigned int argument. 10401 10402 * process.c (SYS_FUNC(ptrace)): Print PTRACE_O_* flags 10403 using printflags64. 10404 10405 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10406 10407 ptrace: print data argument of PTRACE_SEIZE et al requests as flags. 10408 * process.c (SYS_FUNC(ptrace)): Print data argument of 10409 PTRACE_SEIZE and PTRACE_OLDSETOPTIONS as PTRACE_O_* flags. 10410 10411 ptrace: print data argument of PTRACE_SINGLEBLOCK et al requests as signo 10412 * process.c (SYS_FUNC(ptrace)): Print data argument of 10413 PTRACE_SINGLEBLOCK, PTRACE_SYSEMU, and PTRACE_SYSEMU_SINGLESTEP requests 10414 as a signal number. 10415 10416 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10417 10418 ptrace: decode addr argument of PTRACE_PEEKSIGINFO request. 10419 The addr argument of PTRACE_PEEKSIGINFO request is a pointer to 10420 a struct ptrace_peeksiginfo_args. 10421 10422 * process.c: Include "xlat/ptrace_peeksiginfo_flags.h". 10423 (SYS_FUNC(ptrace)): Print addr argument of PTRACE_PEEKSIGINFO request 10424 as a struct ptrace_peeksiginfo_args. 10425 * xlat/ptrace_peeksiginfo_flags.in: New file. 10426 10427 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10428 10429 ptrace: fix printing addr argument of PTRACE_GETSIGMASK et al requests. 10430 For PTRACE_GETSIGMASK and PTRACE_SETSIGMASK requests, addr argument 10431 contains the size of the buffer pointed to by data argument. 10432 For PTRACE_SECCOMP_GET_FILTER request, addr argument contains 10433 an offset counter. 10434 10435 * process.c (SYS_FUNC(ptrace)): Print addr argument of 10436 PTRACE_GETSIGMASK, PTRACE_SETSIGMASK, and PTRACE_SECCOMP_GET_FILTER 10437 requests using %lu format. 10438 10439 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10440 10441 ptrace: do not print data argument of some requests on sparc. 10442 On sparc, kernel ignores data argument of PTRACE_GETREGS, 10443 PTRACE_SETREGS, PTRACE_GETFPREGS, and PTRACE_SETFPREGS requests. 10444 10445 * process.c (SYS_FUNC(ptrace)) [SPARC || SPARC64]: Return RVAL_DECODED 10446 right after printing addr argument if request is one of PTRACE_GETREGS, 10447 PTRACE_SETREGS, PTRACE_GETFPREGS, or PTRACE_SETFPREGS. 10448 10449 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10450 10451 ptrace: do not print addr and data arguments of PTRACE_ATTACH-like requests 10452 As kernel ignores addr and data arguments of PTRACE_ATTACH, 10453 PTRACE_INTERRUPT, PTRACE_KILL, and PTRACE_LISTEN request, 10454 we do not print them either. 10455 10456 * process.c (SYS_FUNC(ptrace)): After printing pid argument, return 10457 RVAL_DECODED if request is one of PTRACE_ATTACH, PTRACE_INTERRUPT, 10458 PTRACE_KILL, or PTRACE_LISTEN. 10459 10460 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10461 10462 ptrace: do not print arguments of PTRACE_TRACEME request. 10463 As kernel ignores arguments of PTRACE_TRACEME request, 10464 we do not print them either. 10465 10466 * process.c (SYS_FUNC(ptrace)): If request is PTRACE_TRACEME, 10467 return early with RVAL_DECODED. 10468 10469 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10470 10471 ptrace: print request using printxval64. 10472 As first argument of ptrace syscall has a long integer type, print 10473 it using printxval64 because printxval takes unsigned int argument. 10474 10475 * process.c (SYS_FUNC(ptrace)): Change type of "request" variable 10476 from "long" to "unsigned long", print it using printxval64 instead 10477 of printxval. 10478 10479 2016-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 10480 10481 Do not sign-extend siginfo_t.si_syscall. 10482 * printsiginfo.c (print_si_info): Explicitly cast si_syscall member 10483 of siginfo_t that has type "int" to "unsigned int", to avoid sign 10484 extension when passed to syscall_name function. 10485 10486 Export print_seccomp_fprog for further use in parser of ptrace syscall. 10487 * defs.h (print_seccomp_fprog): New prototype. 10488 * seccomp.c (print_seccomp_fprog): Remove "static" keyword. 10489 Move printing of struct seccomp_fprog fields ... 10490 (print_seccomp_filter): ... here. 10491 10492 2016-05-11 Fei Jie <feij.fnst (a] cn.fujitsu.com> 10493 10494 tests: add munlockall.test. 10495 * tests/munlockall.c: New file. 10496 * tests/munlockall.test: New test. 10497 * tests/.gitignore: Add munlockall. 10498 * tests/Makefile.am (check_PROGRAMS): Likewise. 10499 (DECODER_TESTS): Add munlockall.test. 10500 10501 tests: add link.test. 10502 * tests/link.c: New file. 10503 * tests/link.test: New test. 10504 * tests/.gitignore: Add link. 10505 * tests/Makefile.am (check_PROGRAMS): Likewise. 10506 (DECODER_TESTS): Add link.test. 10507 10508 2016-05-11 Dmitry V. Levin <ldv (a] altlinux.org> 10509 10510 tests: check decoding and dumping of preadv2 and pwritev2 syscalls. 10511 * tests/preadv2-pwritev2.c: New file. 10512 * tests/preadv2-pwritev2.test: New test. 10513 * tests/.gitignore: Add preadv2-pwritev2. 10514 * tests/Makefile.am (check_PROGRAMS): Likewise. 10515 (DECODER_TESTS): Add preadv2-pwritev2. 10516 10517 Implement decoding of preadv2 and pwritev2 syscalls. 10518 * io.c: Include "xlat/rwf_flags.h". 10519 (do_preadv, do_pwritev, SYS_FUNC(preadv2), SYS_FUNC(pwritev2)): 10520 New functions. 10521 (SYS_FUNC(preadv)): Use do_preadv. 10522 (SYS_FUNC(pwritev)): Use do_pwritev. 10523 * linux/32/syscallent.h (preadv2, pwritev2): New entries. 10524 * linux/64/syscallent.h: Likewise. 10525 * linux/arm/syscallent.h: Likewise. 10526 * linux/hppa/syscallent.h: Likewise. 10527 * linux/i386/syscallent.h: Likewise. 10528 * linux/ia64/syscallent.h: Likewise. 10529 * linux/m68k/syscallent.h: Likewise. 10530 * linux/mips/syscallent-n32.h: Likewise. 10531 * linux/mips/syscallent-n64.h: Likewise. 10532 * linux/mips/syscallent-o32.h: Likewise. 10533 * linux/powerpc/syscallent.h: Likewise. 10534 * linux/powerpc64/syscallent.h: Likewise. 10535 * linux/s390/syscallent.h: Likewise. 10536 * linux/s390x/syscallent.h: Likewise. 10537 * linux/sparc/syscallent.h: Likewise. 10538 * linux/sparc64/syscallent.h: Likewise. 10539 * linux/x32/syscallent.h: Likewise. 10540 * linux/x86_64/syscallent.h: Likewise. 10541 * syscall.c (dumpio): Handle SEN_preadv2 and SEN_pwritev2. 10542 * xlat/rwf_flags.in: New file. 10543 * NEWS: Mention parsers of new syscalls. 10544 10545 2016-05-10 Dmitry V. Levin <ldv (a] altlinux.org> 10546 10547 tests: extend test coverage of xattr family syscalls. 10548 * tests/xattr.c: Check decoding of all xattr family syscalls. 10549 * tests/xattr.test: Use run_strace_match_diff. 10550 * tests/xattr.expected: Remove. 10551 * tests/Makefile.am (EXTRA_DIST): Remove it. 10552 10553 tests: add print_quoted_memory function to libtests. 10554 * tests/print_quoted_string.c (print_quoted_memory): New function. 10555 (print_quoted_string): Use it. 10556 * tests/tests.h (print_quoted_memory): New prototype. 10557 10558 Fix corner cases of xattr family syscalls decoding. 10559 * xattr.c (print_xattr_val): Do not take insize into account, print it 10560 as unsigned long. 10561 Do not decode xattr values of size larger than XATTR_SIZE_MAX. 10562 Use static buffer for fetching xattr values. 10563 (print_xattr_list): Do not decode string when size is zero. 10564 10565 2016-05-10 Dr. David Alan Gilbert <dgilbert (a] redhat.com> 10566 10567 userfaultfd: Add ioctl tests. 10568 * tests/ioctl_uffdio.c: New file. 10569 * tests/ioctl_uffdio.test: New test. 10570 * tests/.gitignore: Add ioctl_uffdio. 10571 * tests/Makefile.am (check_PROGRAMS): Likewise. 10572 (DECODER_TESTS): Add ioctl_uffdio.test. 10573 10574 2016-05-10 Dr. David Alan Gilbert <dgilbert (a] redhat.com> 10575 10576 Decode UFFDIO_* ioctls. 10577 Decode the ioctls associated with the userfaultfd fd. 10578 Note that they tend to read from and also return result in it's data 10579 structure. 10580 10581 * configure.ac (AC_CHECK_HEADERS): Add linux/userfaultfd.h. 10582 * userfaultfd.c [HAVE_LINUX_USERFAULTFD_H]: Add ioctl decoder. 10583 * defs.h (uffdio_ioctl): New prototype. 10584 * ioctl.c (ioctl_decode) [HAVE_LINUX_USERFAULTFD_H]: Wire in 10585 uffdio_ioctl. 10586 * xlat/uffd_*.in: Create flag xlat for all the IOCTLs. 10587 10588 2016-05-10 Dmitry V. Levin <ldv (a] altlinux.org> 10589 10590 Update AX_CODE_COVERAGE. 10591 * m4/ax_code_coverage.m4: Update to serial 16. 10592 * Makefile.am (CODE_COVERAGE_LCOV_OPTIONS): Remove. 10593 (CODE_COVERAGE_GENHTML_OPTIONS): Update, add prefix. 10594 (CODE_COVERAGE_BRANCH_COVERAGE): Set to 1. 10595 10596 strace-ff.test: fix race condition. 10597 * tests/strace-ff.test: Wait for completion of PR_SET_PTRACER command. 10598 10599 tests/epoll_pwait.c: fix for x32. 10600 * tests/epoll_pwait.c (main): Explicitly cast last syscall argument 10601 to kernel_ulong_t. 10602 10603 strace-S.test: check "-S name" 10604 * tests/strace-S.test: Add a check for "-c -S name" output. 10605 10606 Fix NULL dereference in "-S name" when syscall table has holes. 10607 * count.c (syscall_cmp): Do not pass NULL to strcmp. 10608 10609 strace-S.test: cleanup. 10610 * tests/strace-S.test: Rewrite using sed. 10611 10612 2016-05-09 Fei Jie <feij.fnst (a] cn.fujitsu.com> 10613 10614 tests: add strace-S.test. 10615 * tests/strace-S.test: New test. 10616 * tests/Makefile.am (MISC_TESTS): Add it. 10617 10618 2016-05-09 Dmitry V. Levin <ldv (a] altlinux.org> 10619 10620 strace-ff.test: check that -ff does not create unexpected output files. 10621 * tests/strace-ff.expected: New file. 10622 * tests/Makefile.am (EXTRA_DIST): Add it. 10623 * tests/strace-ff.test: Use it. Check that no other output files 10624 have been created. 10625 10626 2016-05-09 Fei Jie <feij.fnst (a] cn.fujitsu.com> 10627 10628 tests: add strace-ff.test. 10629 * tests/strace-ff.test: New test. 10630 * tests/Makefile.am (MISC_TESTS): Add it. 10631 10632 2016-05-09 Dmitry V. Levin <ldv (a] altlinux.org> 10633 10634 strace-V.test: cleanup. 10635 * tests/strace-V.test: Move config.h parser to a function. 10636 Rename $OUT to $EXP, swap arguments passed to match_diff. 10637 10638 2016-05-09 Fei Jie <feij.fnst (a] cn.fujitsu.com> 10639 10640 tests: add strace-V.test. 10641 * tests/strace-V.test: New test. 10642 * tests/Makefile.am (MISC_TESTS): Add it. 10643 10644 2016-05-09 Dmitry V. Levin <ldv (a] altlinux.org> 10645 10646 tests: check decoding of epoll_pwait syscall. 10647 * tests/epoll_pwait.c: New file. 10648 * tests/epoll_pwait.test: New test. 10649 * tests/.gitignore: Add epoll_pwait. 10650 * tests/Makefile.am (check_PROGRAMS): Likewise. 10651 (DECODER_TESTS): Add epoll_pwait.test. 10652 10653 2016-05-09 Dmitry V. Levin <ldv (a] altlinux.org> 10654 10655 Assume that sys/epoll.h exists. 10656 This header file was added in glibc-2.3.2, 10657 so it's safe to assume its availability. 10658 10659 * configure.ac (AC_CHECK_HEADERS): Remove sys/epoll.h. 10660 * epoll.c: Include <sys/epoll.h> unconditionally. 10661 Compile [HAVE_SYS_EPOLL_H] code unconditionally. 10662 * tests/epoll_ctl.c: Do not check for HAVE_SYS_EPOLL_H. 10663 * tests/epoll_wait.c: Likewise. 10664 10665 2016-05-08 Fabien Siron <fabien.siron (a] epita.fr> 10666 10667 Factorize send_query functions. 10668 * socketutils.c (send_query): New function. 10669 (inet_send_query, unix_send_query): Use it. 10670 10671 2016-05-08 Dmitry V. Levin <ldv (a] altlinux.org> 10672 10673 tests: relax timings. 10674 Allow nanosleep(2) to spend 10% more time to make the test suite 10675 more reliable on slow systems. 10676 10677 * tests/count.test: Treat 1.1 seconds as valid output. 10678 * tests/strace-T.expected: Likewise. 10679 * tests/strace-r.expected: Likewise. 10680 10681 2016-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 10682 10683 tests/attach-f-p.c: increase timeouts. 10684 Increase timeouts to make the test more reliable on slow systems. 10685 10686 * tests/attach-f-p.c (its): Increase timeouts to 1, 2, and 3 seconds, 10687 respectively. 10688 10689 2016-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 10690 10691 Remove unused functions. 10692 * defs.h (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr): 10693 Remove. 10694 * util.c (umove_ulong_or_printaddr, umove_ulong_array_or_printaddr): 10695 Likewise. 10696 10697 v4l2.c: use print_array function. 10698 * v4l2.c (print_v4l2_ext_control, umoven_or_printaddr_ignore_syserror): 10699 New functions. 10700 (print_v4l2_ext_controls): Use them via print_array. 10701 10702 uid.c: use print_array function. 10703 * uid.c (print_gid): New function. 10704 (print_groups): Use it via print_array. 10705 10706 seccomp.c: use print_array function. 10707 * seccomp.c (decode_filter, decode_seccomp_fprog): Remove. 10708 (print_bpf_filter): New function. 10709 (print_seccomp_fprog): Use it via print_array. 10710 * tests/seccomp-filter-v.c (main): Update. 10711 10712 scsi.c: use print_array function. 10713 * scsi.c (print_uchar): New function. 10714 (print_sg_io_buffer): Use it via print_array. 10715 10716 poll.c: use print_array function. 10717 * poll.c (print_pollfd): Change for use as print_array callback. 10718 (decode_poll_entering): Use print_array. 10719 * tests/poll.c: Update. 10720 * tests/poll.test: Update. 10721 10722 numa.c: use print_array function. 10723 * numa.c (print_node): New function. 10724 (print_nodemask): Use it via print_array. 10725 (print_page_array, print_int_array): Remove. 10726 (print_addr): New function. 10727 (print_status, print_int): Change for use as print_array callback. 10728 (SYS_FUNC(move_pages)): Use print_addr, print_int, and print_status 10729 via print_array. 10730 * tests/move_pages.c: Update. 10731 * tests/set_mempolicy.c: Likewise. 10732 * tests/set_mempolicy.test: Likewise. 10733 10734 mem.c: use print_array function. 10735 * mem.c [POWERPC] (print_protmap_entry): New function. 10736 [POWERPC] (SYS_FUNC(subpage_prot)): Use it via print_array. 10737 10738 kexec.c: use print_array function. 10739 * kexec.c (print_seg): Change for use as print_array callback. 10740 (print_kexec_segments): Use print_array. 10741 10742 ipc_sem.c: use print_array function. 10743 * ipc_sem.c (tprint_sembuf): Rename to print_sembuf, change signature 10744 for use as print_array callback. 10745 (tprint_sembuf_array): Use print_array. 10746 10747 io.c: use print_array function. 10748 * io.c (print_iovec_config): New structure. 10749 (print_iovec): New function. 10750 (tprint_iov_upto): Use print_array. 10751 * tests/preadv.c (main): Update. 10752 * tests/pwritev.c (print_iovec, main): Likewise. 10753 10754 epoll.c: use print_array function. 10755 * epoll.c (print_epoll_event): Change signature for use as print_array 10756 callback, all users updated. 10757 (print_epoll_event_array): Remove. 10758 (epoll_wait_common): Change to use print_array instead 10759 of print_epoll_event_array. 10760 10761 aio.c: use print_array function. 10762 * aio.c (print_iocbp): New function. 10763 (SYS_FUNC(io_submit)): Use it via print_array. Use widen_to_long 10764 to process long int argument. 10765 (print_io_event): Change to print struct io_event fetched elsewhere. 10766 (SYS_FUNC(io_cancel)): Update use of print_io_event. 10767 (SYS_FUNC(io_getevents)): Use print_io_event via print_array. 10768 Use widen_to_long to print long int arguments. 10769 * tests/aio.c (main): Check decoding of io_submit with negative "nr". 10770 10771 Introduce print_array function for consistent decoding of arrays. 10772 * defs.h (print_array): New prototype. 10773 * util.c (print_array): New function. 10774 10775 2016-05-06 Dmitry V. Levin <ldv (a] altlinux.org> 10776 10777 Fix corner cases of ICMP_FILTER decoding. 10778 * net.c (print_icmp_filter): Print icmp_filter for any positive length. 10779 * tests/net-icmp_filter.c: New file. 10780 * tests/net-icmp_filter.test: New test. 10781 * tests/.gitignore: Add net-icmp_filter. 10782 * tests/Makefile.am (check_PROGRAMS): Likewise. 10783 (DECODER_TESTS): Add net-icmp_filter.test. 10784 10785 2016-05-05 Dmitry V. Levin <ldv (a] altlinux.org> 10786 10787 xlat: do not strip "1<<" prefix from xlat strings. 10788 * xlat/gen.sh (cond_xlat, gen_header): Do not strip "1<<" prefix 10789 from xlat strings to fix incorrect output. 10790 * tests/caps.awk: Update. 10791 10792 Reported-by: Dr. David Alan Gilbert <dgilbert (a] redhat.com> 10793 10794 2016-05-05 Dmitry V. Levin <ldv (a] altlinux.org> 10795 10796 tests/xstatfsx.c: fix mips o32 support. 10797 mips o32 differs from all other 32-bit architectures by defining 10798 __kernel_fsid_t structure as an array of long ints. 10799 10800 * tests/xstatfsx.c (print_statfs): Explicitly cast elements 10801 of PRINT_F_FSID array to unsigned int. 10802 10803 2016-05-05 Dmitry V. Levin <ldv (a] altlinux.org> 10804 10805 Mpersify VIDIOC_* ioctl parser. 10806 * v4l2.c: Mpersify arch-specific structures. 10807 (v4l2_ioctl): Mpersify. 10808 * tests/ioctl_v4l2.c: New file. 10809 * tests/ioctl_v4l2.test: New test. 10810 * tests/.gitignore: Add ioctl_v4l2. 10811 * tests/Makefile.am (check_PROGRAMS): Likewise. 10812 (DECODER_TESTS): Add ioctl_v4l2.test. 10813 10814 2016-05-05 Dmitry V. Levin <ldv (a] altlinux.org> 10815 10816 Mpersify ioctl macros. 10817 As values of some ioctl macros differ between personalities, these 10818 personality specific ioctl macros should be properly defined for 10819 mpersified code. Implement this by redefining personality specific 10820 ioctl macros from ioctlent*.h for each file that includes MPERS_DEFS. 10821 10822 * Makefile.am (ioctl_macros_h): New variable. 10823 (ioctl_macros%.h): New rule. 10824 (BUILT_SOURCES, CLEANFILES): Add $(ioctl_macros_h). 10825 (m%_type_defs.h): #include MPERS_$(mpers_PREFIX)IOCTL_MACROS. 10826 * defs.h [HAVE_M32_MPERS] (MPERS_m32_IOCTL_MACROS): New macro. 10827 [HAVE_MX32_MPERS] (MPERS_mx32_IOCTL_MACROS): Likewise. 10828 10829 Acked-by: Elvira Khabirova <lineprinter0 (a] gmail.com> 10830 10831 2016-05-05 Dmitry V. Levin <ldv (a] altlinux.org> 10832 10833 Fix decoding of VIDIOC_* ioctls. 10834 * v4l2.c: Fix numerous bugs in decoding of VIDIOC_* ioctls. 10835 * tests/ioctl.c (main): Update. 10836 10837 2016-05-05 Dmitry V. Levin <ldv (a] altlinux.org> 10838 10839 nsyscalls.test: add mips o32 support. 10840 Out-of-range syscalls looks differently on mips o32. 10841 10842 * tests/nsyscalls.c (main): Handle LINUX_MIPSO32. 10843 * tests/nsyscalls.test: Trace syscall called "syscall" on mips. 10844 10845 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10846 10847 Remove initialization of big holes in syscallent.h files. 10848 There is no need to explicitly initialize big holes after conversion 10849 of syscallent.h files to use designated initializers. For architectures 10850 that have some data at the end of syscallent.h this initialization of 10851 big holes is no-op, for others it just inflates the table unnecessarily. 10852 10853 * linux/arc/syscallent.h: Remove initialization of arch specific block 10854 at the end of table. 10855 * linux/metag/syscallent.h: Likewise. 10856 * linux/nios2/syscallent.h: Likewise. 10857 * linux/or1k/syscallent.h: Likewise. 10858 * linux/tile/syscallent.h: Likewise. 10859 * linux/tile/syscallent1.h: Likewise. 10860 * linux/arm/syscallent.h: Remove explicit initialization of a big hole 10861 before socket subcalls. 10862 * linux/i386/syscallent.h: Likewise. 10863 * linux/m68k/syscallent.h: Likewise. 10864 * linux/mips/syscallent-n32.h: Likewise. 10865 * linux/powerpc/syscallent.h: Likewise. 10866 * linux/powerpc64/syscallent.h: Likewise. 10867 * linux/s390/syscallent.h: Likewise. 10868 * linux/s390x/syscallent.h: Likewise. 10869 * linux/sh/syscallent.h: Likewise. 10870 * linux/sh64/syscallent.h: Likewise. 10871 * linux/sparc/syscallent.h: Likewise. 10872 * linux/sparc64/syscallent.h: Likewise. 10873 * linux/mips/syscallent-compat.h: Remove explicit initialization 10874 of big holes between different mips ABIs. 10875 * linux/mips/syscallent-n64.h: Remove explicit initialization 10876 of big holes before socket subcalls and between different mips ABIs. 10877 * linux/mips/syscallent-o32.h: Likewise. 10878 10879 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10880 10881 xlat: make "1<<val" syntax work with 64-bit values. 10882 * xlat/gen.sh(cond_xlat, gen_header): Generate 1UUL<<val 10883 for 1<<val syntax. 10884 10885 Reported-by: Dr. David Alan Gilbert <dgilbert (a] redhat.com> 10886 10887 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10888 10889 Fix typo in XLAT_TYPE_PAIR. 10890 * xlat.h (XLAT_TYPE_PAIR): Take "type" parameter. 10891 10892 Reported-by: Dr. David Alan Gilbert <dgilbert (a] redhat.com> 10893 10894 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10895 10896 Fix decoding of move_pages syscall. 10897 * numa.c (print_page_array, print_status, print_int, print_int_array): 10898 New functions. 10899 (SYS_FUNC(move_pages)): Rewrite using these functions. 10900 * tests/move_pages.c: New file. 10901 * tests/move_pages.test: New test. 10902 * tests/.gitignore: Add move_pages. 10903 * tests/Makefile.am (check_PROGRAMS): Likewise. 10904 (DECODER_TESTS): Add move_pages.test. 10905 10906 tests: check decoding of mbind syscall. 10907 * tests/mbind.c: New file. 10908 * tests/mbind.test: New test. 10909 * tests/.gitignore: Add mbind. 10910 * tests/Makefile.am (check_PROGRAMS): Likewise. 10911 (DECODER_TESTS): Add mbind.test. 10912 10913 2016-04-29 Jeff Mahoney <jeffm (a] suse.com> 10914 10915 Change type of struct xlat.val to uint64_t. 10916 Some ioctls have flags fields that are 64-bit. A 32-bit val means 10917 these flags will never be matched or printed. 10918 10919 * xlat.h: Include <stdint.h>. 10920 (struct xlat): Change type of val to uint64_t. 10921 10922 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10923 10924 xlat: extend syntax with #val_type directive. 10925 When #val_type directive is encountered, gen.sh starts using 10926 XLAT_TYPE/XLAT_TYPE_PAIR macros instead of XLAT/XLAT_PAIR, 10927 with #val_type's argument as a type. 10928 10929 For example, "#val_type uint64_t" means values of type uint64_t. 10930 10931 * xlat/gen.sh (gen_header, print_xlat, print_xlat_pair): 10932 Add val_type support. 10933 10934 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10935 10936 xlat/gen.sh: prepare for adding #val_type directive support. 10937 This is essentially a no-op change that makes the following change 10938 easier to read. 10939 10940 * xlat/gen.sh (print_xlat, print_xlat_pair): New functions. 10941 (cond_xlat, gen_header): Use them. 10942 10943 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10944 10945 Introduce XLAT_TYPE and XLAT_TYPE_PAIR macros. 10946 * xlat.h (XLAT_TYPE): New macro, similar to XLAT but casts 10947 to the specified type instead of unsigned int. 10948 (XLAT_TYPE_PAIR): New macro, similar to XLAT_PAIR but casts 10949 to the specified type instead of unsigned int. 10950 10951 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10952 10953 xlat: generate xlat pairs using new XLAT_PAIR macro. 10954 Before this change there were two forms of xlat entries: those that use XLAT 10955 or XLAT_END macros, and others verbatim entries. This change converts 10956 the latter to use new XLAT_PAIR macro. 10957 10958 This is necessary for the upcoming change of xlat.val type. 10959 10960 * xlat.h (XLAT_PAIR): New macro. 10961 * xlat/gen.sh (cond_xlat, gen_header): Use it. 10962 10963 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10964 10965 Explicitly cast argument of XLAT macro to unsigned int. 10966 This is necessary for the upcoming change of xlat.val type. 10967 10968 * xlat.h (XLAT): Cast the argument to unsigned int. 10969 10970 2016-04-29 Dmitry V. Levin <ldv (a] altlinux.org> 10971 10972 Change type of {s,t}print_open_modes's argument to unsigned. 10973 As "flags" argument of sprint_open_modes and tprint_open_modes is 10974 involved only in bit operations, change its type to unsigned. 10975 10976 * defs.h.c (sprint_open_modes, tprint_open_modes): Change type 10977 to unsigned int. 10978 * open.c (sprint_open_modes, tprint_open_modes): Likewise. 10979 10980 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 10981 10982 tests/remap_file_pages.c: fix for the upcoming change of xlat.val type. 10983 The "flags" argument of remap_file_page syscall has type "unsigned 10984 long", so it is not correct to load most significant bits with garbage 10985 ans assume they are going to be ignored. 10986 10987 * tests/remap_file_pages.c (main): Remove artificial garbage from flags. 10988 10989 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 10990 10991 Introduce printflags64 function. 10992 This is necessary for the upcoming change of xlat.val type. 10993 10994 * defs.h (printflags): Rename to printflags64, change type of integer 10995 argument to uint64_t. 10996 (printflags): New static inline function. 10997 * util.c (printflags): Rename to printflags64, change type of integer 10998 argument to uint64_t. Print it using PRIx64 format. 10999 Based on patch by Jeff Mahoney <jeffm (a] suse.com>. 11000 11001 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11002 11003 Introduce sprintflags64 function. 11004 This is necessary for the upcoming change of xlat.val type. 11005 11006 * defs.h (sprintflags): Rename to sprintflags64, change type of integer 11007 argument to uint64_t. 11008 (sprintflags): New static inline function. 11009 * util.c (sprintflags): Rename to sprintflags64, change type of integer 11010 argument to uint64_t. Print it using PRIx64 format. 11011 Based on patch by Jeff Mahoney <jeffm (a] suse.com>. 11012 11013 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11014 11015 printxvals: change type of integer argument to uint64_t. 11016 This is necessary for the upcoming change of xlat.val type. 11017 All users of printxvals are already prepared for this change. 11018 11019 * defs.h (printxvals): Change type of integer argument to uint64_t. 11020 * util.c (printxvals): Likewise. Print it using PRIx64 format. 11021 Patch by Jeff Mahoney <jeffm (a] suse.com>. 11022 11023 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11024 11025 xlat_search: change type of integer argument to uint64_t. 11026 This is necessary for the upcoming change of xlat.val type. 11027 All users of addflags are already prepared for this change. 11028 11029 * defs.h (xlat_search): Change type of integer argument to uint64_t. 11030 * util.c (xlat_search): Likewise. Pass it by pointer. 11031 (xlat_bsearch_compare): Treat first argument as a pointer. 11032 Patch by Jeff Mahoney <jeffm (a] suse.com>. 11033 11034 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11035 11036 Introduce xlookup64 function. 11037 This is necessary for the upcoming change of xlat.val type. 11038 11039 * defs.h (xlookup): Rename to xlookup64, change type of integer argument 11040 to uint64_t. 11041 (xlookup): New static inline function. 11042 * util.c (xlookup): Rename to xlookup64, change type of integer 11043 argument to uint64_t. 11044 Based on patch by Jeff Mahoney <jeffm (a] suse.com>. 11045 11046 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11047 11048 addflags: change type of integer argument to uint64_t. 11049 This is necessary for the upcoming change of xlat.val type. 11050 All users of addflags are already prepared for this change. 11051 11052 * defs.h (addflags): Change type of integer argument to uint64_t. 11053 * util.c (addflags): Likewise. Print it using PRIx64 format. 11054 Based on patch by Jeff Mahoney <jeffm (a] suse.com>. 11055 11056 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11057 11058 Introduce printxval64 wrapper. 11059 This is necessary for the upcoming change of xlat.val type. 11060 11061 * defs.h (printxval64): New static inline function. 11062 11063 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11064 11065 Turn printxval macro into a static inline function. 11066 This is necessary for the upcoming change of xlat.val type. 11067 11068 * defs.h (printxval): Change to static inline function. 11069 11070 2016-04-28 Dmitry V. Levin <ldv (a] altlinux.org> 11071 11072 tests: check decoding of migrate_pages syscall. 11073 * tests/migrate_pages.c: New file. 11074 * tests/migrate_pages.test: New test. 11075 * tests/.gitignore: Add migrate_pages. 11076 * tests/Makefile.am (check_PROGRAMS): Likewise. 11077 (DECODER_TESTS): Add migrate_pages.test. 11078 11079 Fix decoding of migrate_pages syscall. 11080 * numa.c (SYS_FUNC(migrate_pages)): Print syscall arguments 11081 in the right order. 11082 11083 tests: check decoding of set_mempolicy syscall. 11084 * tests/set_mempolicy.c: New file. 11085 * tests/set_mempolicy.test: New test. 11086 * tests/.gitignore: Add set_mempolicy. 11087 * tests/Makefile.am (check_PROGRAMS): Likewise. 11088 (DECODER_TESTS): Add set_mempolicy.test. 11089 11090 tests: check decoding of get_mempolicy syscall. 11091 * tests/get_mempolicy.c: New file. 11092 * tests/get_mempolicy.test: New test. 11093 * tests/.gitignore: Add get_mempolicy. 11094 * tests/Makefile.am (check_PROGRAMS): Likewise. 11095 (DECODER_TESTS): Add get_mempolicy.test. 11096 11097 numa: fix decoding of nodemask arrays. 11098 * numa.c (get_nodes): Rewrite an rename to print_nodemask. 11099 All callers updated. 11100 (SYS_FUNC(mbind), SYS_FUNC(set_mempolicy), SYS_FUNC(get_mempolicy)): 11101 Print a delimiter before nodemask argument. 11102 11103 2016-04-27 Dmitry V. Levin <ldv (a] altlinux.org> 11104 11105 Fix decoding of policy argument of get_mempolicy syscall. 11106 * numa.c (SYS_FUNC(get_mempolicy)): Print policy argument in square 11107 brackets to indicate indirect access. 11108 11109 Fix decoding of pid_t argument of migrate_pages syscall. 11110 * numa.c (SYS_FUNC(migrate_pages)): Print pid_t syscall 11111 argument using %d format. 11112 11113 tests: add printxval function to libtests. 11114 * tests/tests.h (printxval): New prototype. 11115 * tests/printxval.c: New file. 11116 * tests/Makefile.am (libtests_a_SOURCES): Add it. 11117 11118 tests: check decoding of remap_file_pages syscall. 11119 * tests/remap_file_pages.c: New file. 11120 * tests/remap_file_pages.test: New test. 11121 * tests/.gitignore: Add remap_file_pages. 11122 * tests/Makefile.am (check_PROGRAMS): Likewise. 11123 (DECODER_TESTS): Add remap_file_pages.test. 11124 11125 2016-04-27 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11126 11127 tests: add pause.test. 11128 * tests/pause.c: New file. 11129 * tests/pause.test: New test. 11130 * tests/.gitignore: Add pause. 11131 * tests/Makefile.am (check_PROGRAMS): Likewise. 11132 (DECODER_TESTS): Add pause.test. 11133 11134 tests: add kill.test. 11135 * tests/kill.c: New file. 11136 * tests/kill.test: New test. 11137 * tests/.gitignore: Add kill. 11138 * tests/Makefile.am (check_PROGRAMS): Likewise. 11139 (DECODER_TESTS): Add kill.test. 11140 11141 2016-04-27 Dmitry V. Levin <ldv (a] altlinux.org> 11142 11143 Fix decoding of pid_t arguments of kill and tgkill syscalls. 11144 * signal.c (SYS_FUNC(kill), SYS_FUNC(tgkill)): Print pid_t syscall 11145 arguments using %d format. 11146 11147 2016-04-27 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11148 11149 tests: add mlock.test. 11150 * tests/mlock.c: New file. 11151 * tests/mlock.test: New test. 11152 * tests/.gitignore: Add mlock. 11153 * tests/Makefile.am (check_PROGRAMS): Likewise. 11154 (DECODER_TESTS): Add mlock.test. 11155 11156 2016-04-27 Dmitry V. Levin <ldv (a] altlinux.org> 11157 11158 Move parsers of NUMA related syscalls to numa.c. 11159 * mem.c (get_nodes, SYS_FUNC(mbind), SYS_FUNC(set_mempolicy), 11160 SYS_FUNC(get_mempolicy), SYS_FUNC(migrate_pages), SYS_FUNC(move_pages)): 11161 Move ... 11162 * numa.c: ... here. 11163 * Makefile.am (strace_SOURCES): Add numa.c 11164 11165 tests/umovestr3.c: robustify against os specific issues. 11166 * tests/umovestr3.c (main): Create extra gap before unreadable page. 11167 11168 tests: extend test coverage of umovestr short read condition. 11169 * tests/umovestr3.c: New file. 11170 * tests/umovestr3.test: New test. 11171 * tests/.gitignore: Add umovestr3. 11172 * tests/Makefile.am (check_PROGRAMS): Likewise. 11173 (DECODER_TESTS): Add umovestr3.test. 11174 11175 tests: check decoding of out-of-range syscalls. 11176 * tests/nsyscalls.c: New file. 11177 * tests/nsyscalls.test: New test. 11178 * tests/.gitignore: Add nsyscalls. 11179 * tests/Makefile.am (check_PROGRAMS): Likewise. 11180 (DECODER_TESTS): Add nsyscalls.test. 11181 11182 2016-04-26 Dmitry V. Levin <ldv (a] altlinux.org> 11183 11184 Fix decoding of 3rd argument of getdents/getdents64 syscalls. 11185 * dirent.c (SYS_FUNC(getdents)): Always print 3rd syscall argument 11186 as unsigned int. 11187 * dirent64.c (SYS_FUNC(getdents64)): Likewise. 11188 * tests/getdents.c (main): Check it. 11189 * tests/getdents64.c (main): Likewise. 11190 11191 Fix decoding of LINUX_REBOOT_CMD_RESTART2 argument. 11192 * reboot.c (SYS_FUNC(reboot)): Cast numeric arguments to unsigned int. 11193 11194 2016-04-26 Dmitry V. Levin <ldv (a] altlinux.org> 11195 11196 .travis.yml: raise sleep delay. 11197 Previous sleep delay value seems to be not enough nowadays. 11198 11199 .travis.yml (SLEEP_A_BIT): Raise sleep delay. 11200 11201 2016-04-26 Dmitry V. Levin <ldv (a] altlinux.org> 11202 11203 Move definitions of MPOL_* constants to xlat files. 11204 * mem.c (MPOL_DEFAULT, MPOL_PREFERRED, MPOL_BIND, MPOL_INTERLEAVE): 11205 Move to xlat/policies.in. 11206 (MPOL_F_NODE, MPOL_F_ADDR): Move to xlat/mempolicyflags.in. 11207 (MPOL_MF_STRICT, MPOL_MF_MOVE, MPOL_MF_MOVE_ALL): Move 11208 to xlat/mbindflags.in. 11209 11210 tests: check decoding of renameat2 syscall. 11211 * tests/renameat2.c: New file. 11212 * tests/renameat2.test: New test. 11213 * tests/.gitignore: Add renameat2. 11214 * tests/Makefile.am (check_PROGRAMS): Likewise. 11215 (DECODER_TESTS): Add renameat2.test. 11216 11217 Add default values for RENAME_* constants. 11218 * xlat/rename_flags.in: Add default values. 11219 11220 tests: check decoding of utimes syscall. 11221 * tests/utimes.c: New file. 11222 * tests/utimes.test: New test. 11223 * tests/.gitignore: Add utimes. 11224 * tests/Makefile.am (check_PROGRAMS): Likewise. 11225 (DECODER_TESTS): Add utimes.test. 11226 11227 tests: check decoding of futimesat syscall. 11228 * tests/futimesat.c: New file. 11229 * tests/futimesat.test: New test. 11230 * tests/.gitignore: Add futimesat. 11231 * tests/Makefile.am (check_PROGRAMS): Likewise. 11232 (DECODER_TESTS): Add futimesat.test. 11233 11234 tests: extend test coverage of mknod syscall. 11235 * mknod.c (main): Check more corner cases of mode_t parser. 11236 * mknod.test: Update. 11237 11238 2016-04-26 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11239 11240 tests: add sched_yield.test. 11241 * tests/sched_yield.c: New file. 11242 * tests/sched_yield.test: New test. 11243 * tests/.gitignore: Add sched_yield. 11244 * tests/Makefile.am (check_PROGRAMS): Likewise. 11245 (DECODER_TESTS): Add sched_yield.test. 11246 11247 tests: add sync.test. 11248 * tests/sync.c: New file. 11249 * tests/sync.test: New test. 11250 * tests/.gitignore: Add sync. 11251 * tests/Makefile.am (check_PROGRAMS): Likewise. 11252 (DECODER_TESTS): Add sync.test. 11253 11254 tests: add mknodat.test. 11255 * tests/mknodat.c: New file. 11256 * tests/mknodat.test: New test. 11257 * tests/.gitignore: Add mknodat. 11258 * tests/Makefile.am (check_PROGRAMS): Likewise. 11259 (DECODER_TESTS): Add mknodat.test. 11260 11261 tests: add unlink.test. 11262 * tests/unlink.c: New file. 11263 * tests/unlink.test: New test. 11264 * tests/.gitignore: Add unlink. 11265 * tests/Makefile.am (check_PROGRAMS): Likewise. 11266 (DECODER_TESTS): Add unlink.test. 11267 11268 tests: add reboot.test. 11269 * tests/reboot.c: New file. 11270 * tests/reboot.test: New test. 11271 * tests/.gitignore: Add reboot. 11272 * tests/Makefile.am (check_PROGRAMS): Likewise. 11273 (DECODER_TESTS): Add reboot.test. 11274 11275 2016-04-26 Dmitry V. Levin <ldv (a] altlinux.org> 11276 11277 Fix decoding of statfs family syscalls. 11278 Fix decoders of fstatfs, fstatfs64, statfs, and statfs64 syscalls 11279 by rewriting them using mpers infrastructure. 11280 11281 * fetch_struct_statfs.c: New file. 11282 * fstatfs.c: Likewise. 11283 * fstatfs64.c: Likewise. 11284 * print_statfs.c: Likewise. 11285 * statfs.h: Likewise. 11286 * statfs64.c: Likewise. 11287 * statfs.c: Remove everything except SYS_FUNC(statfs). 11288 * configure.ac: Remove the check for struct statfs64 in <sys/vfs.h>. 11289 Add checks for struct statfs and struct statfs64 in <asm/statfs.h>. 11290 Add checks for f_frsize and f_flags members of these structures. 11291 * defs.h (struct strace_statfs): New forward declaration. 11292 (print_struct_statfs, print_struct_statfs64): New prototypes. 11293 * Makefile.am (libstrace_a_SOURCES): Add fstatfs.c, fstatfs64.c, 11294 statfs.c, and statfs64.c. 11295 (strace_SOURCES): Add fetch_struct_statfs.c, print_statfs.c, 11296 and statfs.h. 11297 * NEWS: Mention this fix. 11298 * tests/fstatfs.c: New file. 11299 * tests/fstatfs64.c: Likewise. 11300 * tests/statfs64.c: Likewise. 11301 * tests/xstatfs.c: Likewise. 11302 * tests/xstatfs64.c: Likewise. 11303 * tests/xstatfsx.c: Likewise. 11304 * tests/fstatfs.test: New test. 11305 * tests/fstatfs64.test: Likewise. 11306 * tests/statfs64.test: Likewise. 11307 * tests/statfs.c: Rewrite using xstatfs.c. 11308 * tests/statfs.test: Update. 11309 * tests/.gitignore: Add fstatfs, fstatfs64, and statfs64. 11310 * tests/Makefile.am (check_PROGRAMS): Likewise. 11311 (DECODER_TESTS): Add fstatfs.test, fstatfs64.test, and statfs64.test. 11312 (EXTRA_DIST): Add xstatfs.c, xstatfs64.c, and xstatfsx.c. 11313 11314 2016-04-26 Dmitry V. Levin <ldv (a] altlinux.org> 11315 11316 tests: add printflags function to libtests. 11317 * tests/printflags.c: New file. 11318 * tests/tests.h (printflags): New prototype. 11319 * tests/Makefile.am (libtests_a_SOURCES): Add it. 11320 11321 2016-04-26 Dmitry V. Levin <ldv (a] altlinux.org> 11322 11323 Move definition of struct xlat to a separate header file. 11324 Define struct xlat in a separate file so that it could be used later by 11325 tests without inclusion of defs.h header file. 11326 11327 * defs.h (struct xlat, XLAT, XLAT_END): Move ... 11328 * xlat.h: ... here. 11329 * Makefile.am (strace_SOURCES): Add xlat.h. 11330 11331 2016-04-25 Dmitry V. Levin <ldv (a] altlinux.org> 11332 11333 alpha: decode osf_statfs64 and osf_fstatfs64 syscalls. 11334 * linux/alpha/syscallent.h (osf_statfs64, osf_fstatfs64): Set nargs 11335 and handler. 11336 11337 2016-04-25 Dmitry V. Levin <ldv (a] altlinux.org> 11338 11339 alpha: fix decoding of osf_statfs and osf_fstatfs syscalls. 11340 Do not attempt to print struct osf_statfs as if it was the same as 11341 struct statfs. Since struct osf_statfs has never been decoded properly, 11342 it is probably too late to implement a decoder, so let's just print the 11343 pointer. 11344 11345 * statfs.c [ALPHA] (SYS_FUNC(osf_statfs), SYS_FUNC(osf_fstatfs)): Move ... 11346 * alpha.c: ... here. Replace printstatfs with printaddr. 11347 11348 2016-04-25 Dmitry V. Levin <ldv (a] altlinux.org> 11349 11350 statfs: print f_flags field only when ST_VALID flag is set. 11351 * statfs.c (print_statfs_flags): New function. 11352 (printstatfs, printstatfs64, printcompat_statfs64): Use it. 11353 * xlat/statfs_flags.in (ST_VALID): Move to the head of the list. 11354 * tests/statfs.expected: Update. 11355 11356 2016-04-25 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11357 11358 tests: add symlink.test. 11359 * tests/symlink.c: New file. 11360 * tests/symlink.test: New test. 11361 * tests/.gitignore: Add symlink. 11362 * tests/Makefile.am (check_PROGRAMS): Likewise. 11363 (DECODER_TESTS): Add symlink.test. 11364 11365 tests: add rmdir.test. 11366 * tests/rmdir.c: New file. 11367 * tests/rmdir.test: New test. 11368 * tests/.gitignore: Add rmdir. 11369 * tests/Makefile.am (check_PROGRAMS): Likewise. 11370 (DECODER_TESTS): Add rmdir.test. 11371 11372 tests: add setdomainname.test. 11373 * tests/setdomainname.c: New file. 11374 * tests/setdomainname.test: New test. 11375 * tests/.gitignore: Add setdomainname. 11376 * tests/Makefile.am (check_PROGRAMS): Likewise. 11377 (DECODER_TESTS): Add setdomainname.test. 11378 11379 tests: add sched_rr_get_interval.test. 11380 * tests/sched_rr_get_interval.c: New file. 11381 * tests/sched_rr_get_interval.test: New test. 11382 * tests/.gitignore: Add sched_rr_get_interval. 11383 * tests/Makefile.am (check_PROGRAMS): Likewise. 11384 (DECODER_TESTS): Add sched_rr_get_interval.test. 11385 11386 2016-04-25 Dmitry V. Levin <ldv (a] altlinux.org> 11387 11388 statfs: decode f_flags field of struct statfs. 11389 * xlat/statfs_flags.in: New file. 11390 * statfs.c: Include "xlat/statfs_flags.h". 11391 (printstatfs) [_STATFS_F_FLAGS]: Print statbuf.f_flags as flags. 11392 (printstatfs64) [_STATFS_F_FLAGS]: Likewise. 11393 (printcompat_statfs64): Likewise. 11394 * tests/statfs.expected: Update. 11395 11396 2016-04-25 Zev Weiss <zev (a] bewilderbeest.net> 11397 11398 statfs: don't quote f_type macro names. 11399 * statfs.c (sprintfstype): Don't add double-quotes to fs magic macros. 11400 * tests/statfs.expected: Remove double-quotes. 11401 11402 2016-04-25 Dmitry V. Levin <ldv (a] altlinux.org> 11403 11404 tests/shmxt.c: robustify against arch specific issues. 11405 Do not treat failed shmat(SHM_RND) as a test failure. 11406 This change partially reverts commit 11407 bea707377d2ee3e1950bfa43537ef928163a5fa6. 11408 11409 * tests/shmxt.c (main): Use SHM_RND in the second shmat call, 11410 do not treat its potential error as a test failure. 11411 11412 2016-04-23 Dmitry V. Levin <ldv (a] altlinux.org> 11413 11414 Rename PRI__s64 to PRI__d64. 11415 As PRI__*64 macros mirror PRI*64 macros from inttypes.h, follow the 11416 principle of least astonishment and name these macros the same way. 11417 11418 * defs.h (PRI__s64): Rename to PRI__d64. 11419 11420 2016-04-23 Dmitry V. Levin <ldv (a] altlinux.org> 11421 11422 Fix old_mmap output when mmap arguments are unfetchable. 11423 * mem.c (SYS_FUNC(old_mmap)): Use umove_or_printaddr instead of umoven 11424 to fetch mmap arguments, return RVAL_DECODED when umove_or_printaddr 11425 fails. 11426 * tests/old_mmap.c (main): Check it. 11427 11428 2016-04-22 Dmitry V. Levin <ldv (a] altlinux.org> 11429 11430 aarch64: fix old_mmap output for arm personality. 11431 * mem.c (SYS_FUNC(old_mmap)) [AARCH64]: Fetch mmap arguments 11432 as 32-bit integers. 11433 11434 Define old_mmap parser only on architectures that use it. 11435 * mem.c (SYS_FUNC(old_mmap)): Define only on AARCH64, ARM, I386, X86_64, 11436 X32, M68K, S390, and S390X. 11437 11438 2016-04-22 Dmitry V. Levin <ldv (a] altlinux.org> 11439 11440 tests: extend test coverage of mmap syscall. 11441 Check decoding of "old mmap" edition of mmap syscall 11442 on those architectures that define it. 11443 11444 * tests/old_mmap.c: New file. 11445 * tests/old_mmap.test: New test. 11446 * tests/.gitignore: Add old_mmap. 11447 * tests/Makefile.am (check_PROGRAMS): Likewise. 11448 (DECODER_TESTS): Add old_mmap.test. 11449 11450 2016-04-22 Dmitry V. Levin <ldv (a] altlinux.org> 11451 11452 tests: extend test coverage of mincore syscall. 11453 * tests/mincore.c (print_mincore): New function. 11454 (test_mincore): Use it. Check mincore with invalid vec address. 11455 Check mincore with length argument not a multiple of the page size. 11456 (main): Check with DEFAULT_STRLEN pages. 11457 11458 2016-04-22 Dmitry V. Levin <ldv (a] altlinux.org> 11459 11460 Move parsers of sync_file_range and sync_file_range2 syscalls to libstrace 11461 For each given architecture only one of these two syscalls has a 11462 syscallent entry. When each parser is placed into a separate file, 11463 moving to libstrace ensures that only one of them that is need 11464 is linked into strace executable. 11465 11466 * sync_file_range.c (SYS_FUNC(sync_file_range2)): Move ... 11467 * sync_file_range2.c: ... here. 11468 * Makefile.am (strace_SOURCES): Move sync_file_range.c ... 11469 (libstrace_a_SOURCES): ... here. Add sync_file_range2.c. 11470 (strace_SOURCES_c): Add filtered libstrace_a_SOURCES. 11471 11472 2016-04-22 Dmitry V. Levin <ldv (a] altlinux.org> 11473 11474 tests: check decoding of clock_adjtime syscall. 11475 * tests/clock_adjtime.c: New file. 11476 * tests/clock_adjtime.test: New test. 11477 * tests/.gitignore: Add clock_adjtime. 11478 * tests/Makefile.am (check_PROGRAMS): Likewise. 11479 (DECODER_TESTS): Add clock_adjtime.test. 11480 11481 2016-04-21 Dmitry V. Levin <ldv (a] altlinux.org> 11482 11483 tests: do not include <assert.h> unnecessarily. 11484 Automatically change tests/*.c files using the following script: 11485 11486 for f in tests/*.c; do 11487 grep -q '\<assert(' "$f" || 11488 sed -i '/# *include *<assert\.h>/d' "$f" 11489 done 11490 11491 2016-04-21 Dmitry V. Levin <ldv (a] altlinux.org> 11492 11493 tests: do not include <errno.h> unnecessarily. 11494 Automatically change tests/*.c files using the following script: 11495 11496 for f in tests/*.c; do 11497 grep -Fv errno.h "$f" | 11498 grep -Ewq '(si_)?errno|SOCK_FILTER_DENY_SYSCALL' || 11499 sed -i '/# *include *<errno\.h>/d' "$f" 11500 done 11501 11502 2016-04-21 Dmitry V. Levin <ldv (a] altlinux.org> 11503 11504 tests/xetpriority.c: print syscall() result using %ld format. 11505 11506 tests/xetpgid.c: print syscall() result using %ld format. 11507 11508 tests/xchownx.c: use errno2name. 11509 11510 tests/userfaultfd.c: stop using assert. 11511 11512 tests/unlinkat.c: print syscall() result using %ld format. 11513 11514 tests/umount.c: use errno2name. 11515 11516 tests/truncate64.c: cleanup. 11517 * tests/truncate64.c (main): Use errno2name, stop using assert. 11518 11519 tests/truncate.c: cleanup. 11520 * tests/truncate.c (main): Use errno2name, stop using assert. 11521 11522 tests/tee.c: stop using assert. 11523 11524 tests/syslog.c: use errno2name. 11525 11526 tests/sync_file_range2.c: stop using assert. 11527 11528 tests/sync_file_range.c: stop using assert. 11529 11530 tests/symlinkat.c: cleanup. 11531 11532 tests/swap.c: cleanup. 11533 * tests/swap.c (error_msg): Remove. 11534 (main): Use errno2name. 11535 11536 tests/splice.c: stop using assert. 11537 11538 tests/setugid.c: cleanup. 11539 11540 tests/sethostname.c: use errno2name. 11541 11542 tests/setgroups.c: use errno2name. 11543 * tests/setgroups.c (errno2str): Remove. 11544 (main): Use errno2name. 11545 11546 tests/seccomp-strict.c: cleanup. 11547 * tests/seccomp-strict.c (main): Use errno2name, stop using assert. 11548 11549 tests/seccomp-filter.c: cleanup. 11550 * tests/seccomp-filter.c (main): Use errno2name, stop using assert. 11551 11552 tests/sched_xetscheduler.c: print syscall() result using %ld format. 11553 11554 tests/sched_xetparam.c: print syscall() result using %ld format. 11555 11556 tests/renameat.c: print syscall() result using %ld format. 11557 11558 tests/rename.c: print syscall() result using %ld format. 11559 11560 tests/readv.c: cleanup. 11561 11562 tests/pwritev.c: use errno2name. 11563 11564 tests/preadv-pwritev.c: cleanup. 11565 11566 tests/prctl-seccomp-strict.c: cleanup. 11567 * tests/prctl-seccomp-strict.c (main): Use errno2name, 11568 stop using assert. 11569 11570 tests/openat.c: use errno2name. 11571 11572 tests/open.c: use errno2name. 11573 11574 tests/mlockall.c: cleanup. 11575 11576 tests/mlock2.c: stop using assert. 11577 11578 tests/mknod.c: print syscall() result using %ld format. 11579 11580 tests/mkdirat.c: print syscall() result using %ld format. 11581 11582 tests/lseek.c: cleanup. 11583 * tests/lseek.c (main): Use errno2name, stop using assert. 11584 11585 tests/llseek.c: cleanup. 11586 * tests/llseek.c (main): Use errno2name, stop using assert. 11587 11588 tests/linkat.c: print syscall() result using %ld format. 11589 11590 tests/iopl.c: use errno2name. 11591 11592 tests/ioperm.c: use errno2name. 11593 11594 tests/getgroups.c: use errno2name. 11595 * tests/getgroups.c (errno2str): Remove. 11596 (main): Use errno2name. 11597 11598 tests/ftruncate64.c: cleanup. 11599 * tests/ftruncate64.c (main): Use errno2name, stop using assert. 11600 11601 tests/ftruncate.c: cleanup. 11602 * tests/ftruncate.c (main): Use errno2name, stop using assert. 11603 11604 tests/fsync.c: print syscall() result using %ld format. 11605 11606 tests/flock.c: print syscall() result using %ld format. 11607 11608 tests/file_handle.c: use errno2name. 11609 11610 tests/fdatasync.c: print syscall() result using %ld format. 11611 11612 tests/fchownat.c: use errno2name. 11613 11614 tests/fchmodat.c: use errno2name. 11615 11616 tests/fchmod.c: use errno2name. 11617 11618 tests/faccessat.c: print syscall() result using %ld format. 11619 11620 tests/epoll_wait.c: print syscall() result using %ld format. 11621 11622 tests/epoll_ctl.c: print syscall() result using %ld format. 11623 11624 tests/epoll_create1.c: cleanup. 11625 * tests/epoll_create1.c (main): Use errno2name, stop using assert. 11626 11627 tests/epoll_create.c: print syscall() result using %ld format. 11628 11629 tests/dup3.c: print syscall() result using %ld format. 11630 11631 tests/dup2.c: print syscall() result using %ld format. 11632 11633 tests/dup.c: cleanup. 11634 11635 tests/creat.c: stop using sys/stat.h. 11636 11637 tests/copy_file_range.c: stop using assert. 11638 11639 tests/chroot.c: use errno2name. 11640 11641 tests/aio.c: use errno2name. 11642 11643 tests: cleanup acct.test. 11644 * tests/acct.c (main): Use errno2name, stop using assert, 11645 change sample file name. 11646 * tests/acct.test: Update. 11647 11648 tests: use errno2name() 11649 Automatically change tests/*.c files using the following sed regexp: 11650 sed -i 's/errno == E[[:alnum:]]\+ ? "E[[:alnum:]]\+" : "E[[:alnum:]]\+"/errno2name()/g' 11651 11652 tests/dup.c: include "tests.h" 11653 This is going to be necessary for the following commit. 11654 11655 2016-04-21 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11656 11657 tests: add getpgrp.test. 11658 * tests/getpgrp.c: New file. 11659 * tests/getpgrp.test: New test. 11660 * tests/.gitignore: Add getpgrp. 11661 * tests/Makefile.am (check_PROGRAMS): Likewise. 11662 (DECODER_TESTS): Add getpgrp.test. 11663 11664 tests: add access.test. 11665 * tests/access.c: New file. 11666 * tests/access.test: New test. 11667 * tests/.gitignore: Add access. 11668 * tests/Makefile.am (check_PROGRAMS): Likewise. 11669 (DECODER_TESTS): Add access.test. 11670 11671 tests: add fchdir.test. 11672 * tests/fchdir.c: New file. 11673 * tests/fchdir.test: New test. 11674 * tests/.gitignore: Add fchdir. 11675 * tests/Makefile.am (check_PROGRAMS): Likewise. 11676 (DECODER_TESTS): Add fchdir.test. 11677 11678 tests: add mkdir.test. 11679 * tests/mkdir.c: New file. 11680 * tests/mkdir.test: New test. 11681 * tests/.gitignore: Add mkdir. 11682 * tests/Makefile.am (check_PROGRAMS): Likewise. 11683 (DECODER_TESTS): Add mkdir.test. 11684 11685 tests: add getsid.test. 11686 * tests/getsid.c: New file. 11687 * tests/getsid.test: New test. 11688 * tests/.gitignore: Add getsid. 11689 * tests/Makefile.am (check_PROGRAMS): Likewise. 11690 (DECODER_TESTS): Add getsid.test. 11691 11692 2016-04-21 Dmitry V. Levin <ldv (a] altlinux.org> 11693 11694 tests: add errno2name function to libtests. 11695 Add a simple translator of errno to its name, so one could 11696 simply use errno2name() instead of complex expressions like 11697 errno == EINVAL ? "EINVAL" : "EFAULT". 11698 11699 * tests.h (errno2name): New prototype. 11700 * errno2name.c: New file. 11701 * Makefile.am (libtests_a_SOURCES): Add it. 11702 11703 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11704 11705 hppa: rename ECANCELLED to ECANCELED. 11706 hppa seems to be the only architecture that defines ECANCELLED synonym 11707 for ECANCELED constant, other architectures just define ECANCELED. 11708 Change the way how this constant is printed on hppa to be in line 11709 with other architectures. 11710 11711 * linux/hppa/errnoent.h [253]: Rename ECANCELLED to ECANCELED. 11712 11713 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11714 11715 Remove parser of unimplemented timerfd syscall. 11716 timerfd syscall was introduced in v2.6.22-rc1, but in v2.6.25-rc1 11717 it was replaced by timerfd_* syscall family. 11718 11719 * linux/avr32/syscallent.h (timerfd): Fix nargs. 11720 * linux/dummy.h (sys_timerfd): Add stub alias. 11721 * time.c (SYS_FUNC(timerfd)): Remove. 11722 11723 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11724 11725 tests: workaround kernel bugs in seccomp-strict.test and prctl-seccomp-strict.test 11726 If kernel implementation of strict seccomp mode is buggy, test programs 11727 will be killed by SIGKILL. This is a known problem at least on 11728 x32 and mips. Skip affected tests if this is the case. 11729 11730 This change partially revert commit 9c1a72cd3f3d52d573876ce474b620a5f141fb1b. 11731 11732 * tests/seccomp-strict.c (main): Remove workaround for x32. 11733 * tests/prctl-seccomp-strict.c: Likewise. 11734 * tests/seccomp-strict.test: Skip the test if the test program 11735 has been killed by SIGKILL. 11736 * tests/prctl-seccomp-strict.test: Likewise. 11737 11738 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11739 11740 tests/shmxt.c: do not use SHM_RND, it is unreliable. 11741 * tests/shmxt.c (main): Do not set SHM_RND flag. 11742 11743 tests/rt_sigpending.c: fix for systems where _NSIG > 16 * sizeof(long) 11744 * tests/rt_sigsuspend.c (iterate): Do not assume that size will be less 11745 than sizeof(long) on the second iteration. 11746 11747 prctl-seccomp-strict.test: robustify against unrelated prctl invocations 11748 * tests/prctl-seccomp-strict.test: Filter out PR_GET_* prctl calls. 11749 11750 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11751 11752 tests: adjust rt_sigpending to older kernels. 11753 With linux kernels older than v3.9-rc1, compat rt_sigpending syscall 11754 could fail with EFAULT in cases where on later kernels it succeeds. 11755 Adjust the test to handle both cases properly. 11756 11757 * tests/rt_sigpending.c (iterate): Stop iterations if rt_sigpending 11758 failed with EFAULT. 11759 11760 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11761 11762 tests: adjust readv/writev and preadv/pwritev tests to older kernels. 11763 With linux kernels older than v3.16-rc1, iovec based compat syscalls may 11764 return EINVAL in some cases where on later kernels they return EFAULT. 11765 Adjust tests to handle both cases properly. 11766 11767 * tests/preadv-pwritev.c: Include <errno.h>. 11768 (main): Print either "EINVAL" or "EFAULT" depending on errno. 11769 * tests/pwritev.c: Likewise. 11770 * tests/readv.c: Likewise. 11771 11772 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11773 11774 tests: remove obsolete non-strict uid tests. 11775 Recently added strict tests for uid/gid related syscalls 11776 made old uid tests obsolete. 11777 11778 * tests/uid.awk: Remove. 11779 * tests/uid.c: Remove. 11780 * tests/uid.test: Remove. 11781 * tests/uid16.c: Remove. 11782 * tests/uid16.test: Remove. 11783 * tests/uid32.c: Remove. 11784 * tests/uid32.test: Remove. 11785 * tests/.gitignore: Remove uid, uid16, and uid32. 11786 * tests/Makefile.am (check_PROGRAMS): Likewise. 11787 (DECODER_TESTS): Remove uid.test, uid16.test, and uid32.test. 11788 (EXTRA_DIST): Remove uid.awk. 11789 11790 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11791 11792 tests: extend test coverage of getuid/getgid family syscalls. 11793 Add strict tests for getuid, getuid32, getgid, getgid32, geteuid, 11794 geteuid32, getegid, and getegid32 syscalls. 11795 11796 * tests/getegid.c: New file. 11797 * tests/getegid.test: New test. 11798 * tests/getegid32.c: New file. 11799 * tests/getegid32.test: New test. 11800 * tests/geteuid.c: New file. 11801 * tests/geteuid.test: New test. 11802 * tests/geteuid32.c: New file. 11803 * tests/geteuid32.test: New test. 11804 * tests/getgid.c: New file. 11805 * tests/getgid.test: New test. 11806 * tests/getgid32.c: New file. 11807 * tests/getgid32.test: New test. 11808 * tests/getuid.c: New file. 11809 * tests/getuid.test: New test. 11810 * tests/getuid32.c: New file. 11811 * tests/getuid32.test: New test. 11812 * tests/.gitignore: Add getuid, getuid32, getgid, getgid32, geteuid, 11813 * geteuid32, getegid, and getegid32. 11814 * tests/Makefile.am (check_PROGRAMS): Likewise. 11815 (DECODER_TESTS): Add getegid.test, getegid32.test, geteuid.test, 11816 geteuid32.test, getgid.test, getgid32.test, getuid.test, 11817 and getuid32.test. 11818 11819 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11820 11821 tests: extend test coverage of getresgid32 syscall. 11822 * tests/getresgid32.c: New file. 11823 * tests/getresgid32.test: New test. 11824 * tests/.gitignore: Add getresgid32. 11825 * tests/Makefile.am (check_PROGRAMS): Likewise. 11826 (DECODER_TESTS): Add getresgid32.test. 11827 11828 tests: extend test coverage of getresgid syscall. 11829 * tests/getresgid.c: New file. 11830 * tests/getresgid.test: New test. 11831 * tests/.gitignore: Add getresgid. 11832 * tests/Makefile.am (check_PROGRAMS): Likewise. 11833 (DECODER_TESTS): Add getresgid.test. 11834 11835 tests: extend test coverage of getresuid32 syscall. 11836 * tests/getresuid32.c: New file. 11837 * tests/getresuid32.test: New test. 11838 * tests/.gitignore: Add getresuid32. 11839 * tests/Makefile.am (check_PROGRAMS): Likewise. 11840 (DECODER_TESTS): Add getresuid32.test. 11841 11842 tests: extend test coverage of getresuid syscall. 11843 * tests/getresugid.c: New file. 11844 * tests/getresuid.c: New file. 11845 * tests/getresuid.test: New test. 11846 * tests/.gitignore: Add getresuid. 11847 * tests/Makefile.am (check_PROGRAMS): Likewise. 11848 (DECODER_TESTS): Add getresuid.test. 11849 (EXTRA_DIST): Add getresugid.c. 11850 11851 2016-04-20 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11852 11853 tests: add symlinkat.test. 11854 * tests/symlinkat.c: New file. 11855 * tests/symlinkat.test: New test. 11856 * tests/.gitignore: Add symlinkat. 11857 * tests/Makefile.am (check_PROGRAMS): Likewise. 11858 (DECODER_TESTS): Add symlinkat.test. 11859 11860 tests: add iopl.test. 11861 * tests/iopl.c: New file. 11862 * tests/iopl.test: New test. 11863 * tests/.gitignore: Add iopl. 11864 * tests/Makefile.am (check_PROGRAMS): Likewise. 11865 (DECODER_TESTS): Add iopl.test. 11866 11867 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11868 11869 mips o32, powerpc, powerpc64: fix decoding of iopl syscall. 11870 * linux/mips/syscallent-o32.h (iopl): Fix nargs. 11871 * linux/powerpc/syscallent.h (iopl): Fix nargs and sys_func. 11872 * linux/powerpc64/syscallent.h (iopl): Likewise. 11873 11874 2016-04-20 Fei Jie <feij.fnst (a] cn.fujitsu.com> 11875 11876 tests: add ioperm.test. 11877 * tests/ioperm.c: New file. 11878 * tests/ioperm.test: New test. 11879 * tests/.gitignore: Add ioperm. 11880 * tests/Makefile.am (check_PROGRAMS): Likewise. 11881 (DECODER_TESTS): Add ioperm.test. 11882 11883 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 11884 11885 Fix corner cases of getgroups and setgroups syscall decoders. 11886 * uid.c (print_groups): New function. 11887 (SYS_FUNC(setgroups), SYS_FUNC(getgroups)): Use it. 11888 Print first syscall argument using %u format. 11889 * tests/getgroups.c: New file. 11890 * tests/getgroups.test: New test. 11891 * tests/getgroups32.c: New file. 11892 * tests/getgroups32.test: New test. 11893 * tests/setgroups.c: New file. 11894 * tests/setgroups.test: New test. 11895 * tests/setgroups32.c: New file. 11896 * tests/setgroups32.test: New test. 11897 * tests/.gitignore: Add getgroups, getgroups32, setgroups, 11898 and setgroups32. 11899 * tests/Makefile.am (check_PROGRAMS): Likewise. 11900 (DECODER_TESTS): Add getgroups.test, getgroups32.test, 11901 setgroups.test, and setgroups32.test. 11902 11903 Cleanup setfsuid syscall decoder. 11904 * uid.c (SYS_FUNC(setfsuid)): Remove redundant check. 11905 11906 tests: check decoding of setfsgid32 syscall. 11907 * tests/setfsgid32.c: New file. 11908 * tests/setfsgid32.test: New test. 11909 * tests/.gitignore: Add setfsgid32. 11910 * tests/Makefile.am (check_PROGRAMS): Likewise. 11911 (DECODER_TESTS): Add setfsgid32.test. 11912 11913 tests: check decoding of setfsgid syscall. 11914 * tests/setfsugid.c: New file. 11915 * tests/setfsgid.c: New file. 11916 * tests/setfsgid.test: New test. 11917 * tests/.gitignore: Add setfsgid. 11918 * tests/Makefile.am (check_PROGRAMS): Likewise. 11919 (DECODER_TESTS): Add setfsgid.test. 11920 (EXTRA_DIST): Add setfsugid.c. 11921 11922 tests: check decoding of setfsuid32 syscall. 11923 * tests/setfsuid32.c: New file. 11924 * tests/setfsuid32.test: New test. 11925 * tests/.gitignore: Add setfsuid32. 11926 * tests/Makefile.am (check_PROGRAMS): Likewise. 11927 (DECODER_TESTS): Add setfsuid32.test. 11928 11929 tests: check decoding of setfsuid syscall. 11930 * tests/setfsugid.c: New file. 11931 * tests/setfsuid.c: New file. 11932 * tests/setfsuid.test: New test. 11933 * tests/.gitignore: Add setfsuid. 11934 * tests/Makefile.am (check_PROGRAMS): Likewise. 11935 (DECODER_TESTS): Add setfsuid.test. 11936 (EXTRA_DIST): Add setfsugid.c. 11937 11938 tests: extend test coverage of setresgid32 syscall. 11939 * tests/setresgid32.c: New file. 11940 * tests/setresgid32.test: New test. 11941 * tests/.gitignore: Add setresgid32. 11942 * tests/Makefile.am (check_PROGRAMS): Likewise. 11943 (DECODER_TESTS): Add setresgid32.test. 11944 11945 tests: extend test coverage of setresgid syscall. 11946 * tests/setresgid.c: New file. 11947 * tests/setresgid.test: New test. 11948 * tests/.gitignore: Add setresgid. 11949 * tests/Makefile.am (check_PROGRAMS): Likewise. 11950 (DECODER_TESTS): Add setresgid.test. 11951 11952 tests: extend test coverage of setresuid32 syscall. 11953 * tests/setresuid32.c: New file. 11954 * tests/setresuid32.test: New test. 11955 * tests/.gitignore: Add setresuid32. 11956 * tests/Makefile.am (check_PROGRAMS): Likewise. 11957 (DECODER_TESTS): Add setresuid32.test. 11958 11959 tests: extend test coverage of setresuid syscall. 11960 * tests/setresugid.c: New file. 11961 * tests/setresuid.c: New file. 11962 * tests/setresuid.test: New test. 11963 * tests/.gitignore: Add setresuid. 11964 * tests/Makefile.am (check_PROGRAMS): Likewise. 11965 (DECODER_TESTS): Add setresuid.test. 11966 (EXTRA_DIST): Add setresugid.c. 11967 11968 tests: extend test coverage of setregid32 syscall. 11969 * tests/setregid32.c: New file. 11970 * tests/setregid32.test: New test. 11971 * tests/.gitignore: Add setregid32. 11972 * tests/Makefile.am (check_PROGRAMS): Likewise. 11973 (DECODER_TESTS): Add setregid32.test. 11974 11975 tests: extend test coverage of setregid syscall. 11976 * tests/setregid.c: New file. 11977 * tests/setregid.test: New test. 11978 * tests/.gitignore: Add setregid. 11979 * tests/Makefile.am (check_PROGRAMS): Likewise. 11980 (DECODER_TESTS): Add setregid.test. 11981 11982 tests: extend test coverage of setreuid32 syscall. 11983 * tests/setreuid32.c: New file. 11984 * tests/setreuid32.test: New test. 11985 * tests/.gitignore: Add setreuid32. 11986 * tests/Makefile.am (check_PROGRAMS): Likewise. 11987 (DECODER_TESTS): Add setreuid32.test. 11988 11989 tests: extend test coverage of setreuid syscall. 11990 * tests/setreugid.c: New file. 11991 * tests/setreuid.c: New file. 11992 * tests/setreuid.test: New test. 11993 * tests/.gitignore: Add setreuid. 11994 * tests/Makefile.am (check_PROGRAMS): Likewise. 11995 (DECODER_TESTS): Add setreuid.test. 11996 (EXTRA_DIST): Add setreugid.c. 11997 11998 tests: extend test coverage of setgid32 syscall. 11999 * tests/setgid32.c: New file. 12000 * tests/setgid32.test: New test. 12001 * tests/.gitignore: Add setgid32. 12002 * tests/Makefile.am (check_PROGRAMS): Likewise. 12003 (DECODER_TESTS): Add setgid32.test. 12004 12005 tests: extend test coverage of setgid syscall. 12006 * tests/setgid.c: New file. 12007 * tests/setgid.test: New test. 12008 * tests/.gitignore: Add setgid. 12009 * tests/Makefile.am (check_PROGRAMS): Likewise. 12010 (DECODER_TESTS): Add setgid.test. 12011 12012 tests: extend test coverage of setuid32 syscall. 12013 * tests/setuid32.c: New file. 12014 * tests/setuid32.test: New test. 12015 * tests/.gitignore: Add setuid32. 12016 * tests/Makefile.am (check_PROGRAMS): Likewise. 12017 (DECODER_TESTS): Add setuid32.test. 12018 12019 tests: extend test coverage of setuid syscall. 12020 * tests/setugid.c: New file. 12021 * tests/setuid.c: New file. 12022 * tests/setuid.test: New test. 12023 * tests/.gitignore: Add setuid. 12024 * tests/Makefile.am (check_PROGRAMS): Likewise. 12025 (DECODER_TESTS): Add setuid.test. 12026 (EXTRA_DIST): Add setugid.c. 12027 12028 2016-04-20 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12029 12030 tests: add shmxt.test. 12031 * tests/shmxt.c: New file. 12032 * tests/shmxt.test: New test. 12033 * tests/.gitignore: Add shmxt. 12034 * tests/Makefile.am (check_PROGRAMS): Likewise. 12035 (DECODER_TESTS): Add shmxt.test. 12036 12037 2016-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 12038 12039 alpha: fix decoding of shmat syscall. 12040 On alpha, shmat syscall is known as osf_shmat. 12041 12042 * linux/alpha/syscallent.h (osf_shmat): Fix sys_flags and sys_func. 12043 12044 2016-04-20 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12045 12046 tests: add semop.test. 12047 * tests/semop.c: New file. 12048 * tests/semop.test: New test. 12049 * tests/.gitignore: Add semop. 12050 * tests/Makefile.am (check_PROGRAMS): Likewise. 12051 (DECODER_TESTS): Add semop.test. 12052 12053 2016-04-18 Dmitry V. Levin <ldv (a] altlinux.org> 12054 12055 prctl-seccomp-filter-v.test: robustify against unrelated prctl invocations 12056 * tests/prctl-seccomp-filter-v.test: Filter out PR_GET_* prctl calls. 12057 12058 Reported-by: Steve McIntyre <steve (a] einval.com> 12059 12060 2016-04-18 Dmitry V. Levin <ldv (a] altlinux.org> 12061 12062 tests/pselect6.c: fix potential output mismatch. 12063 * tests/pselect6.c (main): In the last case of printing pselect6 12064 syscall, print the last argument the same way as in other cases. 12065 12066 Reported-by: Steve McIntyre <steve (a] einval.com> 12067 12068 2016-04-18 Dmitry V. Levin <ldv (a] altlinux.org> 12069 12070 tests: check decoding of fchown32 syscall. 12071 * tests/fchown32.c: New file. 12072 * tests/fchown32.test: New test. 12073 * tests/.gitignore: Add fchown32. 12074 * tests/Makefile.am (check_PROGRAMS): Likewise. 12075 (DECODER_TESTS): Add fchown32.test. 12076 12077 tests: check decoding of fchown syscall. 12078 * tests/fchown.c: New file. 12079 * tests/fchown.test: New test. 12080 * tests/.gitignore: Add fchown. 12081 * tests/Makefile.am (check_PROGRAMS): Likewise. 12082 (DECODER_TESTS): Add fchown.test. 12083 12084 tests: check decoding of lchown32 syscall. 12085 * tests/lchown32.c: New file. 12086 * tests/lchown32.test: New test. 12087 * tests/.gitignore: Add lchown32. 12088 * tests/Makefile.am (check_PROGRAMS): Likewise. 12089 (DECODER_TESTS): Add lchown32.test. 12090 12091 tests: check decoding of lchown syscall. 12092 * tests/lchown.c: New file. 12093 * tests/lchown.test: New test. 12094 * tests/.gitignore: Add lchown. 12095 * tests/Makefile.am (check_PROGRAMS): Likewise. 12096 (DECODER_TESTS): Add lchown.test. 12097 12098 tests: check decoding of chown32 syscall. 12099 * tests/chown32.c: New file. 12100 * tests/chown32.test: New test. 12101 * tests/.gitignore: Add chown32. 12102 * tests/Makefile.am (check_PROGRAMS): Likewise. 12103 (DECODER_TESTS): Add chown32.test. 12104 12105 tests: check decoding of chown syscall. 12106 * tests/chown.c: New file. 12107 * tests/chown.test: New test. 12108 * tests/xchownx.c: New file. 12109 * tests/.gitignore: Add chown. 12110 * tests/Makefile.am (check_PROGRAMS): Likewise. 12111 (DECODER_TESTS): Add chown.test. 12112 (EXTRA_DIST): Add xchownx.c. 12113 12114 Fix decoding of 16-bit uid_t/git_t. 12115 * uid.c (printuid): Always cast value to uid_t. 12116 12117 2016-04-18 Dmitry V. Levin <ldv (a] altlinux.org> 12118 12119 tests: move kernel uid overflow check to libtests. 12120 This code used in two different places, so move it to the library. 12121 12122 * tests/overflowuid.c: New file. 12123 * tests/Makefile.am (libtests_a_SOURCES): Add it. 12124 * tests/tests.h (check_overflowuid, check_overflowgid): New prototypes. 12125 * tests/uid.c (main): Use check_overflowuid. 12126 * tests/uid16.c (main): Likewise. 12127 12128 2016-04-12 Dmitry V. Levin <ldv (a] altlinux.org> 12129 12130 tests: skip seccomp-strict.test and prctl-seccomp-strict.test on x32. 12131 As x86_64 kernel does not support x32 syscall numbers in 12132 SECCOMP_MODE_STRICT, skip affected tests on x32. 12133 12134 * tests/seccomp-strict.c (main) [__x86_64__ && __ILP32__]: Bail out 12135 using error_msg_and_skip. 12136 * tests/prctl-seccomp-strict.c: Likewise. 12137 12138 2016-04-12 Dmitry V. Levin <ldv (a] altlinux.org> 12139 12140 tests: add seccomp-filter.test. 12141 * tests/seccomp-filter.c: New file. 12142 * tests/seccomp-filter.test: New test. 12143 * tests/.gitignore: Add seccomp-filter. 12144 * tests/Makefile.am (check_PROGRAMS): Likewise. 12145 (DECODER_TESTS): Add seccomp-filter.test. 12146 12147 2016-04-12 Dmitry V. Levin <ldv (a] altlinux.org> 12148 12149 seccomp: fix decoding of sock_fprog and sock_filter structures. 12150 Always print struct sock_fprog.len. 12151 Fix printing of unfetchable elements in sock_filter array. 12152 Fix printing of large sock_filter arrays. 12153 12154 * seccomp.c (decode_fprog): Rewrite into decode_seccomp_fprog and 12155 print_seccomp_fprog. 12156 (print_seccomp_filter): Replace decode_fprog with print_seccomp_fprog. 12157 * tests/prctl-seccomp-filter-v.c (main): Update. 12158 * tests/seccomp-filter-v.c: New file. 12159 * tests/seccomp-filter-v.test: New test. 12160 * tests/.gitignore: Add seccomp-filter-v. 12161 * tests/Makefile.am (check_PROGRAMS): Likewise. 12162 (DECODER_TESTS): Add seccomp-filter-v.test. 12163 12164 2016-04-11 Dmitry V. Levin <ldv (a] altlinux.org> 12165 12166 seccomp: print SECCOMP_* and BPF_* constants in a more compact way. 12167 * seccomp.c (decode_bpf_code, decode_bpf_stmt): Replace " | " with "|". 12168 * tests/prctl-seccomp-filter-v.c: Update. 12169 12170 tests: rename seccomp.test to prctl-seccomp-filter-v.test. 12171 * tests/.gitignore: Replace seccomp with prctl-seccomp-filter-v. 12172 * tests/Makefile.am (check_PROGRAMS): Likewise. 12173 (DECODER_TESTS): Replace seccomp.test with prctl-seccomp-filter-v.test. 12174 * tests/seccomp.c: Rename to tests/prctl-seccomp-filter-v.c. 12175 * tests/seccomp.test: Rename to tests/prctl-seccomp-filter-v.test. 12176 12177 tests: add seccomp-strict.test. 12178 * tests/seccomp-strict.c: New file. 12179 * tests/seccomp-strict.test: New test. 12180 * tests/.gitignore: Add seccomp-strict. 12181 * tests/Makefile.am (check_PROGRAMS): Likewise. 12182 (DECODER_TESTS): Add seccomp-strict.test. 12183 12184 tests: add prctl-seccomp-strict.test. 12185 * tests/prctl-seccomp-strict.c: New file. 12186 * tests/prctl-seccomp-strict.test: New test. 12187 * tests/.gitignore: Add prctl-seccomp-strict. 12188 * tests/Makefile.am (check_PROGRAMS): Likewise. 12189 (DECODER_TESTS): Add prctl-seccomp-strict.test. 12190 12191 tests: bring lists back to the sorted order. 12192 12193 2016-04-10 Dmitry V. Levin <ldv (a] altlinux.org> 12194 12195 tests/epoll_create1.c: extend for the case of ENOSYS. 12196 * epoll_create1.c: Make the test work in case of epoll_create1 12197 returning ENOSYS. 12198 12199 tests/epoll_ctl.c: extend epoll_ctl coverage. 12200 * tests/epoll_ctl.c (main): Check EPOLL_CTL_DEL decoding. Check 12201 decoding of long int descriptors and NULL struct epoll_event pointer. 12202 12203 2016-04-09 Dmitry V. Levin <ldv (a] altlinux.org> 12204 12205 tests: add mlockall.test. 12206 * tests/mlockall.c: New file. 12207 * tests/mlockall.test: New test. 12208 * tests/.gitignore: Add mlockall. 12209 * tests/Makefile.am (check_PROGRAMS): Likewise. 12210 (DECODER_TESTS): Add mlockall.test. 12211 12212 2016-04-08 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12213 12214 tests: add epoll_wait.test. 12215 * tests/epoll_wait.c: New file. 12216 * tests/epoll_wait.test: New test. 12217 * tests/.gitignore: Add epoll_wait. 12218 * tests/Makefile.am (check_PROGRAMS): Likewise. 12219 (DECODER_TESTS): Add epoll_wait.test. 12220 12221 tests: add epoll_ctl.test. 12222 * tests/epoll_ctl.c: New file. 12223 * tests/epoll_ctl.test: New test. 12224 * tests/.gitignore: Add epoll_ctl. 12225 * tests/Makefile.am (check_PROGRAMS): Likewise. 12226 (DECODER_TESTS): Add epoll_ctl.test. 12227 12228 tests: add epoll_create.test. 12229 * tests/epoll_create.c: New file. 12230 * tests/epoll_create.test: New test. 12231 * tests/.gitignore: Add epoll_create. 12232 * tests/Makefile.am (check_PROGRAMS): Likewise. 12233 (DECODER_TESTS): Add epoll_create.test. 12234 12235 2016-04-08 Dmitry V. Levin <ldv (a] altlinux.org> 12236 12237 tests/pread64-pwrite64.c: minor cleanup. 12238 * tests/pread64-pwrite64.c: Do not include <sys/uio.h>. 12239 12240 2016-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 12241 12242 Fix decoding of swapon flags. 12243 * swapon.c (SYS_FUNC(swapon)): Print priority regardless 12244 of SWAP_FLAG_PREFER flag being set. 12245 * tests/swap.c (error_msg): Handle EINVAL. 12246 (main): Check decoding of swapon flags. 12247 12248 tests/unlinkat.c: check AT_* decoding. 12249 * tests/unlinkat.c (main): Check decoding of AT_* constants. 12250 12251 tests/linkat.c: check AT_* decoding. 12252 * tests/linkat.c (main): Check decoding of AT_* constants. 12253 12254 2016-04-06 Elliott Hughes <enh (a] google.com> 12255 12256 Improve decoding of Android's PR_SET_VMA prctl. 12257 Before: 12258 12259 prctl(0x53564d41 /* PR_??? */, 0, 0x7f8ab53000, 4096, 12260 "atexit handlers") = 0 12261 12262 After: 12263 12264 prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, 0x7fa8cbd000, 4096, 12265 "atexit handlers") = 0 12266 12267 * prctl.c (SYS_FUNC(prctl)) [__ANDROID__]: Do not define PR_SET_VMA. 12268 * Hard-code PR_SET_VMA_ANON_NAME, the only current sub-option. 12269 * xlat/prctl_options.in: Add PR_SET_VMA. 12270 12271 2016-04-06 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12272 12273 tests: add mkdirat.test. 12274 * tests/mkdirat.c: New file. 12275 * tests/mkdirat.test: New test. 12276 * tests/.gitignore: Add mkdirat. 12277 * tests/Makefile.am (check_PROGRAMS): Likewise. 12278 (DECODER_TESTS): Add mkdirat.test. 12279 12280 tests: add swap.test. 12281 * tests/swap.c: New file. 12282 * tests/swap.test: New test. 12283 * tests/.gitignore: Add swap. 12284 * tests/Makefile.am (check_PROGRAMS): Likewise. 12285 (DECODER_TESTS): Add swap.test. 12286 12287 tests: add unlinkat.test. 12288 * tests/unlinkat.c: New file. 12289 * tests/unlinkat.test: New test. 12290 * tests/.gitignore: Add unlinkat. 12291 * tests/Makefile.am (check_PROGRAMS): Likewise. 12292 (DECODER_TESTS): Add unlinkat.test. 12293 12294 tests: add linkat.test. 12295 * tests/linkat.c: New file. 12296 * tests/linkat.test: New test. 12297 * tests/.gitignore: Add linkat. 12298 * tests/Makefile.am (check_PROGRAMS): Likewise. 12299 (DECODER_TESTS): Add linkat.test. 12300 12301 2016-04-06 Dmitry V. Levin <ldv (a] altlinux.org> 12302 12303 tests: add sync_file_range.test and sync_file_range2.test. 12304 * configure.ac (AC_CHECK_FUNCS): Add sync_file_range. 12305 * tests/sync_file_range.c: New file. 12306 * tests/sync_file_range2.c: Likewise. 12307 * tests/sync_file_range.test: New test. 12308 * tests/sync_file_range2.test: Likewise. 12309 * tests/.gitignore: Add sync_file_range and sync_file_range2. 12310 * tests/Makefile.am (check_PROGRAMS): Likewise. 12311 (DECODER_TESTS): Add sync_file_range.test and sync_file_range2.test. 12312 12313 2016-04-05 Dmitry V. Levin <ldv (a] altlinux.org> 12314 12315 Add default values for SYNC_FILE_RANGE_* constants. 12316 * xlat/sync_file_range_flags.in: Add default values. 12317 12318 2016-04-05 Elliott Hughes <enh (a] google.com> 12319 12320 Fix sync_file_range2 output. 12321 Before: 12322 12323 sync_file_range2(3SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| 12324 SYNC_FILE_RANGE_WAIT_AFTER|0xfffffff8, 0, 0, ) 12325 12326 After: 12327 12328 sync_file_range2(3, SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| 12329 SYNC_FILE_RANGE_WAIT_AFTER|0xfffffff8, 0, 0) 12330 12331 * sync_file_range.c (SYS_FUNC(sync_file_range2)): Output the ", " 12332 in the right place. 12333 12334 2016-04-04 Dmitry V. Levin <ldv (a] altlinux.org> 12335 12336 Replace PF_* constants with AF_* 12337 AF_* constants appear to be more standardized, and in practice there's 12338 always a one to one relationship between AF_* and PF_*, so let's 12339 use AF_* instead of PF_*. 12340 12341 * xlat/domains.in: Remove. 12342 * net.c: Do not define PF_UNSPEC. Stop including "xlat/domains.h". 12343 Replace PF_* with AF_*. Replace domains with addrfams. 12344 * tests/inet-cmsg.c: Replace PF_INET with AF_INET. 12345 * tests/net-yy-inet.c: Likewise. 12346 * tests/netlink_inet_diag.c: Likewise. 12347 * tests/net-accept-connect.c: Replace PF_LOCAL with AF_LOCAL. 12348 * tests/net-y-unix.c: Likewise. 12349 * tests/net-yy-unix.c: Likewise. 12350 * tests/netlink_unix_diag.c: Likewise. 12351 * tests/net.expected: Replace PF_ with AF_. 12352 12353 2016-04-03 Dmitry V. Levin <ldv (a] altlinux.org> 12354 12355 tests: add read-write.test. 12356 * tests/read-write.c: New file. 12357 * tests/read-write.test: New test. 12358 * tests/.gitignore: Add read-write. 12359 * tests/Makefile.am (check_PROGRAMS): Likewise. 12360 (DECODER_TESTS): Add read-write.test. 12361 12362 2016-04-02 Dmitry V. Levin <ldv (a] altlinux.org> 12363 12364 tests/pread64-pwrite64.test: extend dumpio coverage. 12365 * tests/pread64-pwrite64.c (dump_str, print_hex, test_dump): 12366 New functions. 12367 (main): Use them to test dumping of various data. 12368 * tests/pread64-pwrite64.test: Update. 12369 12370 tests: add hexdump_memdup function to libtests. 12371 * tests/hexdump_strdup.c (hexdump_memdup): New function. 12372 (hexdump_strdup): Use it. 12373 * tests/tests.h (hexdump_memdup): New prototype. 12374 12375 tests: add fchownat.test. 12376 * tests/fchownat.c: New file. 12377 * tests/fchownat.test: New test. 12378 * tests/.gitignore: Add fchownat. 12379 * tests/Makefile.am (check_PROGRAMS): Likewise. 12380 (DECODER_TESTS): Add fchownat.test. 12381 12382 tests: add fchmodat.test. 12383 * tests/fchmodat.c: New file. 12384 * tests/fchmodat.test: New test. 12385 * tests/.gitignore: Add fchmodat. 12386 * tests/Makefile.am (check_PROGRAMS): Likewise. 12387 (DECODER_TESTS): Add fchmodat.test. 12388 12389 Fix printing of negative offsets in pread64 and pwrite64 syscalls. 12390 * io.c (SYS_FUNC(pread), SYS_FUNC(pwrite)): Print offset 12391 using %lld format string. 12392 * tests/pread64-pwrite64.c: New file. 12393 * tests/pread64-pwrite64.test: New test. 12394 * tests/.gitignore: Add pread64-pwrite64. 12395 * tests/Makefile.am (check_PROGRAMS): Likewise. 12396 (pread64_pwrite64_CPPFLAGS): New variable. 12397 (DECODER_TESTS): Add pread64-pwrite64. 12398 12399 tests/hexdump_strdup.c: add support for longer strings. 12400 * tests/hexdump_strdup.c (hexdump_strdup): Output extra space character 12401 before hexdumping of the 9th symbol. 12402 12403 tests/preadv-pwritev.c: fix typo in error diagnostics. 12404 * tests/preadv-pwritev.c (main): Fix typo in error message. 12405 12406 2016-04-01 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12407 12408 tests: add chroot.test. 12409 * tests/chroot.c: New file. 12410 * tests/chroot.test: New test. 12411 * tests/.gitignore: Add chroot. 12412 * tests/Makefile.am (check_PROGRAMS): Likewise. 12413 (DECODER_TESTS): Add chroot.test. 12414 12415 tests: add fdatasync.test. 12416 * tests/fdatasync.c: New file. 12417 * tests/fdatasync.test: New test. 12418 * tests/.gitignore: Add fdatasync. 12419 * tests/Makefile.am (check_PROGRAMS): Likewise. 12420 (DECODER_TESTS): Add fdatasync.test. 12421 12422 tests: add fsync.test. 12423 * tests/fsync.c: New file. 12424 * tests/fsync.test: New test. 12425 * tests/.gitignore: Add fsync. 12426 * tests/Makefile.am (check_PROGRAMS): Likewise. 12427 (DECODER_TESTS): Add fsync.test. 12428 12429 tests: add sethostname.test. 12430 * tests/sethostname.c: New file. 12431 * tests/sethostname.test: New test. 12432 * tests/.gitignore: Add sethostname. 12433 * tests/Makefile.am (check_PROGRAMS): Likewise. 12434 (DECODER_TESTS): Add sethostname.test. 12435 12436 2016-04-01 Dmitry V. Levin <ldv (a] altlinux.org> 12437 12438 Consistently handle unsigned arguments of mmap* and remap_file_pages. 12439 Explicitly declare first 4 arguments of mmap* and all remap_file_pages 12440 arguments as unsigned to avoid potential sign extension issues. 12441 12442 * mem.c (print_mmap, SYS_FUNC(remap_file_pages)): Assign syscall 12443 arguments to local variables of appropriate types. 12444 12445 2016-04-01 Dmitry V. Levin <ldv (a] altlinux.org> 12446 12447 Consistently handle 2nd and 3rd arguments of [gs]etsockopt as unsigned. 12448 The second (level) and third (optname) arguments of getsockopt and 12449 setsockopt syscalls are enums, so treat them consistently as enums: 12450 use "unsigned int" type to avoid potential sign extension issues. 12451 12452 * net.c (print_sockopt_fd_level_name, print_getsockopt, 12453 print_setsockopt): Change type of "level" and "name" arguments 12454 from "int" to "unsigned int". 12455 12456 2016-04-01 Dmitry V. Levin <ldv (a] altlinux.org> 12457 12458 Add sentinel attribute to printxvals. 12459 * gcc_compat.h (ATTRIBUTE_SENTINEL): New macro. 12460 * defs.h (printxvals): Add ATTRIBUTE_SENTINEL. 12461 12462 Cleanup parser of ptrace syscall. 12463 * process.c (print_user_offset_addr): New function for printing offset 12464 address in the tracee's USER area. 12465 (SYS_FUNC(ptrace)): Assign syscall arguments to local variables with 12466 appropriate types. Print pid argument as int. Use switch statement 12467 in the code that handles address argument. Use print_user_offset_addr 12468 to print address in PTRACE_PEEKUSER and PTRACE_POKEUSER requests. 12469 12470 2016-03-31 Jeff Mahoney <jeffm (a] suse.com> 12471 12472 Define PRI__[uxs]64 macros to print __s64 and __u64 values. 12473 Rather than cast every __u64 or __s64 before printing, 12474 define printing helpers for those types directly. 12475 12476 * defs.h (PRI__s64, PRI__u64, PRI__x64): New macros. 12477 12478 2016-03-31 Dmitry V. Levin <ldv (a] altlinux.org> 12479 12480 Implement dumping of preadv and pwritev syscalls. 12481 * syscall.c (dumpio): Add SEN_preadv and SEN_pwritev. 12482 * NEWS: Mention this. 12483 * tests/preadv-pwritev.c: New file. 12484 * tests/preadv-pwritev.test: New test. 12485 * tests/.gitignore: Add preadv-pwritev. 12486 * tests/Makefile.am (check_PROGRAMS): Likewise. 12487 (preadv_pwritev_CPPFLAGS): New variable. 12488 (DECODER_TESTS): Add preadv-pwritev. 12489 12490 2016-03-30 Dmitry V. Levin <ldv (a] altlinux.org> 12491 12492 Fix decoding of preadv syscall in case of short read. 12493 * io.c (SYS_FUNC(preadv)): Call tprint_iov_upto instead 12494 of tprint_iov and specify syscall return value as a data size limit. 12495 * NEWS: Mention it. 12496 * tests/preadv.c (main): Add a test case for preadv short read. 12497 12498 Fix printing of negative offsets in preadv and pwritev syscalls. 12499 * io.c (print_llu_from_low_high_val): Rename to 12500 print_lld_from_low_high_val, all callers changed. 12501 Print value as a signed integer. 12502 * tests/preadv.c: New file. 12503 * tests/preadv.test: New test. 12504 * tests/pwritev.c: New file. 12505 * tests/pwritev.test: New test. 12506 * tests/.gitignore: Add preadv and pwritev. 12507 * tests/Makefile.am (check_PROGRAMS): Likewise. 12508 (preadv_CPPFLAGS, pwritev_CPPFLAGS): New variables. 12509 (DECODER_TESTS): Add preadv.test and pwritev.test. 12510 12511 Fix printing of unreadable struct iovec. 12512 * io.c (tprint_iov_upto): If the first element of iovec array is 12513 unreadable, print its address without array markup. 12514 * tests/readv.c (main): Check it. 12515 12516 tests: factor out a part common to many simply organized test scripts. 12517 * tests/init.sh (run_strace_match_diff): New function. 12518 * tests/acct.test: Rewrite using run_strace_match_diff. 12519 * tests/aio.test: Likewise. 12520 * tests/alarm.test: Likewise. 12521 * tests/chmod.test: Likewise. 12522 * tests/clock_nanosleep.test: Likewise. 12523 * tests/clock_xettime.test: Likewise. 12524 * tests/copy_file_range.test: Likewise. 12525 * tests/creat.test: Likewise. 12526 * tests/dup.test: Likewise. 12527 * tests/dup2.test: Likewise. 12528 * tests/dup3.test: Likewise. 12529 * tests/epoll_create1.test: Likewise. 12530 * tests/execveat-v.test: Likewise. 12531 * tests/execveat.test: Likewise. 12532 * tests/fchmod.test: Likewise. 12533 * tests/fcntl.test: Likewise. 12534 * tests/file_handle.test: Likewise. 12535 * tests/flock.test: Likewise. 12536 * tests/fork-f.test: Likewise. 12537 * tests/ftruncate.test: Likewise. 12538 * tests/ftruncate64.test: Likewise. 12539 * tests/getcwd.test: Likewise. 12540 * tests/getdents.test: Likewise. 12541 * tests/getdents64.test: Likewise. 12542 * tests/getrandom.test: Likewise. 12543 * tests/getrusage.test: Likewise. 12544 * tests/getxxid.test: Likewise. 12545 * tests/inet-cmsg.test: Likewise. 12546 * tests/init.sh: Likewise. 12547 * tests/membarrier.test: Likewise. 12548 * tests/mincore.test: Likewise. 12549 * tests/mknod.test: Likewise. 12550 * tests/mlock2.test: Likewise. 12551 * tests/mmsg.test: Likewise. 12552 * tests/nanosleep.test: Likewise. 12553 * tests/open.test: Likewise. 12554 * tests/openat.test: Likewise. 12555 * tests/pselect6.test: Likewise. 12556 * tests/readdir.test: Likewise. 12557 * tests/readlink.test: Likewise. 12558 * tests/readv.test: Likewise. 12559 * tests/recvmsg.test: Likewise. 12560 * tests/rename.test: Likewise. 12561 * tests/renameat.test: Likewise. 12562 * tests/rt_sigpending.test: Likewise. 12563 * tests/rt_sigprocmask.test: Likewise. 12564 * tests/rt_sigqueueinfo.test: Likewise. 12565 * tests/rt_sigsuspend.test: Likewise. 12566 * tests/rt_sigtimedwait.test: Likewise. 12567 * tests/rt_tgsigqueueinfo.test: Likewise. 12568 * tests/sched_get_priority_mxx.test: Likewise. 12569 * tests/sched_xetaffinity.test: Likewise. 12570 * tests/sched_xetparam.test: Likewise. 12571 * tests/sched_xetscheduler.test: Likewise. 12572 * tests/seccomp.test: Likewise. 12573 * tests/select.test: Likewise. 12574 * tests/sendfile.test: Likewise. 12575 * tests/sendfile64.test: Likewise. 12576 * tests/splice.test: Likewise. 12577 * tests/statx.sh: Likewise. 12578 * tests/sysinfo.test: Likewise. 12579 * tests/syslog.test: Likewise. 12580 * tests/tee.test: Likewise. 12581 * tests/time.test: Likewise. 12582 * tests/timer_create.test: Likewise. 12583 * tests/timer_xettime.test: Likewise. 12584 * tests/timerfd_xettime.test: Likewise. 12585 * tests/times-fail.test: Likewise. 12586 * tests/times.test: Likewise. 12587 * tests/truncate.test: Likewise. 12588 * tests/truncate64.test: Likewise. 12589 * tests/umask.test: Likewise. 12590 * tests/umount.test: Likewise. 12591 * tests/umount2.test: Likewise. 12592 * tests/userfaultfd.test: Likewise. 12593 * tests/vmsplice.test: Likewise. 12594 * tests/xet_robust_list.test: Likewise. 12595 * tests/xetitimer.test: Likewise. 12596 * tests/xetpgid.test: Likewise. 12597 * tests/xetpriority.test: Likewise. 12598 * tests/xettimeofday.test: Likewise. 12599 12600 tests: introduce $NAME. 12601 * tests/init.sh (NAME): New variable, defined to ${ME_%.test}. 12602 (run_prog, match_awk, match_diff, match_grep): Replace ${ME_%.test} 12603 with $NAME. 12604 * tests/fcntl.test: Likewise. 12605 * tests/fstat.test: Likewise. 12606 * tests/mmap.test: Likewise. 12607 * tests/net-y-unix.test: Likewise. 12608 * tests/net-yy-inet.test: Likewise. 12609 * tests/net-yy-unix.test: Likewise. 12610 * tests/open.test: Likewise. 12611 * tests/openat.test: Likewise. 12612 * tests/poll.test: Likewise. 12613 * tests/ppoll.test: Likewise. 12614 * tests/readlink.test: Likewise. 12615 * tests/select.test: Likewise. 12616 * tests/statx.sh: Likewise. 12617 * tests/uname.test: Likewise. 12618 12619 2016-03-30 Dmitry V. Levin <ldv (a] altlinux.org> 12620 12621 tests: move definitions of $OUT and $ERR to init.sh. 12622 As virtually every test defines either one or both of OUT and ERR 12623 variables and these definitions are exactly the same, move definitions 12624 of these variables from individual tests to init.sh. 12625 12626 * tests/init.sh (OUT, ERR): New variables. 12627 * tests/ipc.sh: Remove initialization of OUT variable. 12628 * tests/statx.sh: Likewise. 12629 * tests/*.test: Remove initialization of OUT and ERR variables. 12630 12631 2016-03-29 Dmitry V. Levin <ldv (a] altlinux.org> 12632 12633 tests: simplify sendfile.test and sendfile64.test. 12634 Use the executable itself for input by default. 12635 12636 * tests/sendfile.c (main): Use av[0] instead of av[1] for input. 12637 * tests/sendfile64.c (main): Likewise. 12638 * tests/sendfile.test: Invoke run_prog without arguments. 12639 * tests/sendfile64.test: Likewise. 12640 12641 2016-03-29 Dmitry V. Levin <ldv (a] altlinux.org> 12642 12643 open.test, openat.test: lift /proc requirement. 12644 While -P option needs /proc to match descriptors, it does not use 12645 /proc to match pathnames. As these tests do not need descriptor 12646 match, the /proc requirement can be safely lifted. 12647 12648 * tests/open.test: Lift /proc/self/fd/ requirement. 12649 * tests/openat.test: Likewise. 12650 12651 2016-03-29 Dmitry V. Levin <ldv (a] altlinux.org> 12652 12653 quotactl: add decoding of Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA. 12654 * quota.c (if_nextdqblk): New structure. 12655 (decode_cmd_data): Handle Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA. 12656 12657 Update Q_* constants. 12658 * xlat/quotacmds.in: Add Q_GETNEXTQUOTA and Q_XGETNEXTQUOTA introduced 12659 by linux kernel commits v4.6-rc1~65^2~9^2~5 and v4.6-rc1~65^2~9^2~6. 12660 12661 Update CLONE_* constants. 12662 * xlat/clone_flags.in: Rename CLONE_STOPPED to CLONE_NEWCGROUP. 12663 The former was removed by linux kernel commit v2.6.38-rc1~217. 12664 The latter was introduced by linux kernel commit v4.6-rc1~67^2~8. 12665 12666 Update BPF_MAP_TYPE_* constants. 12667 * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_PERCPU_HASH, 12668 BPF_MAP_TYPE_PERCPU_ARRAY, and BPF_MAP_TYPE_STACK_TRACE introduced by 12669 linux kernel commits v4.6-rc1~91^2~326^2~5, v4.6-rc1~91^2~326^2~4, and 12670 v4.6-rc1~91^2~212^2~1, respectively. 12671 12672 Update SO_* constants. 12673 * xlat/sockoptions.in: Add SO_CNX_ADVICE introduced by linux kernel 12674 commit v4.6-rc1~91^2~176. 12675 12676 Update SEGV_* constants. 12677 * xlat/sigsegv_codes.in: Add SEGV_PKUERR introduced by linux kernel 12678 commit v4.6-rc1~68^2~23. 12679 12680 avr32: wire up copy_file_range syscall. 12681 * linux/avr32/syscallent.h [325]: Add copy_file_range entry. 12682 12683 2016-03-28 JayRJoshi <jay.r.joshi100 (a] gmail.com> 12684 12685 tests/uname.test: check abbreviated output, use print_quoted_string. 12686 * tests/uname.c (main): Use print_quoted_string to print 12687 utsname members. Add abbrev check. 12688 * tests/uname.test: Add abbrev check. 12689 12690 2016-03-28 Dmitry V. Levin <ldv (a] altlinux.org> 12691 12692 faccessat.test: robustify against libcs invoking faccessat syscall on their own 12693 * tests/faccessat.c (TMP_FILE): Rename to sample, change its value 12694 to "faccessat.sample". 12695 * tests/faccessat.test: Rewrite using openat.test. 12696 12697 openat.test: robustify against libcs invoking openat syscall on their own 12698 * tests/openat.c (main): Rename fname to sample, change its value 12699 to "openat.sample". 12700 * tests/openat.test: Use -P option to filter out openat syscalls 12701 made by libc and dynamic linker. 12702 12703 tests: add open.test. 12704 * tests/open.c: New file. 12705 * tests/open.test: New test. 12706 * tests/.gitignore: Add open. 12707 * tests/Makefile.am (check_PROGRAMS): Likewise. 12708 (DECODER_TESTS): Add open.test. 12709 12710 2016-03-27 Dmitry V. Levin <ldv (a] altlinux.org> 12711 12712 Update generic ioctl entries from linux 4.5. 12713 * linux/64/ioctls_inc.h: Update from linux v4.5 using ioctls_gen.sh. 12714 * linux/32/ioctls_inc_align32.h: Likewise. 12715 * linux/32/ioctls_inc_align64.h: Likewise. 12716 * NEWS: Mention this. 12717 12718 2016-03-26 Dmitry V. Levin <ldv (a] altlinux.org> 12719 12720 maint: update for linux 4.5. 12721 * maint/ioctls_sym.sh: Update workarounds for drm/*_drm.h files. 12722 Add workarounds for xen/gntdev.h and net/nfc/nci_core.h files. 12723 Update path of saa6588.h and exynos-fimc.h files. 12724 12725 2016-03-25 Dmitry V. Levin <ldv (a] altlinux.org> 12726 12727 Fix decoding of device numbers in mknod and mknodat syscalls. 12728 * mknod.c (decode_mknod): Treat device number argument as unsigned int. 12729 * tests/mknod.c: Include <sys/sysmacros.h> or <sys/mkdev.h> 12730 for definition of makedev macro. 12731 (main): Add a check for a character special file. 12732 12733 2016-03-25 Dmitry V. Levin <ldv (a] altlinux.org> 12734 12735 sparc64: fix decoding of mknod and mknodat syscalls for sparc personality 12736 Remove remnants of solaris personality support in mknod parser 12737 that resulted to sparc personality being decoded as old solaris 12738 personality. This complements commit v4.10-45-gdf4dd8b and fixes 12739 commit v4.10-46-g588a90f. 12740 12741 * mknod.c (decode_mknod) [SPARC || SPARC64]: Remove. 12742 12743 2016-03-25 Katerina Koukiou <k.koukiou (a] googlemail.com> 12744 12745 tests: add openat.test. 12746 * tests/openat.c: New file. 12747 * tests/openat.test: New test. 12748 * tests/.gitignore: Add openat. 12749 * tests/Makefile.am (check_PROGRAMS): Likewise. 12750 (DECODER_TESTS): Add openat.test. 12751 12752 2016-03-25 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12753 12754 tests: add renameat.test. 12755 * tests/renameat.c: New file. 12756 * tests/renameat.test: New test. 12757 * tests/.gitignore: Add renameat. 12758 * tests/Makefile.am (check_PROGRAMS): Likewise. 12759 (DECODER_TESTS): Add renameat.test. 12760 12761 tests: add faccessat.test. 12762 * tests/faccessat.c: New file. 12763 * tests/faccessat.test: New test. 12764 * tests/.gitignore: Add faccessat. 12765 * tests/Makefile.am (check_PROGRAMS): Likewise. 12766 (DECODER_TESTS): Add faccessat.test. 12767 12768 tests: add creat.test. 12769 * tests/creat.c: New file. 12770 * tests/creat.test: New test. 12771 * tests/.gitignore: Add creat. 12772 * tests/Makefile.am (check_PROGRAMS): Likewise. 12773 (DECODER_TESTS): Add creat.test. 12774 12775 tests: add mknod.test. 12776 * tests/mknod.c: New file. 12777 * tests/mknod.test: New test. 12778 * tests/.gitignore: Add mknod. 12779 * tests/Makefile.am (check_PROGRAMS): Likewise. 12780 (DECODER_TESTS): Add mknod.test. 12781 12782 tests: add syslog.test. 12783 * tests/syslog.c: New file. 12784 * tests/syslog.test: New test. 12785 * tests/.gitignore: Add syslog. 12786 * tests/Makefile.am (check_PROGRAMS): Likewise. 12787 (DECODER_TESTS): Add syslog.test. 12788 12789 2016-03-23 JayRJoshi <jay.r.joshi100 (a] gmail.com> 12790 12791 tests/scm_rights-fd.test: fix pathname regex. 12792 Pathname containing >, }, or non-printable characters was resulting 12793 in failing of the test. 12794 12795 * tests/scm_rights-fd.test: Fix pathname regex and simplify things. 12796 12797 2016-03-24 Dmitry V. Levin <ldv (a] altlinux.org> 12798 12799 tests: add strace-r.test. 12800 * tests/strace-r.expected: New file. 12801 * tests/strace-r.test: New test. 12802 * tests/Makefile.am (MISC_TESTS): Add it. 12803 (EXTRA_DIST): Add strace-r.expected. 12804 12805 tests: add strace-ttt.test. 12806 * tests/strace-ttt.test: New test. 12807 * tests/Makefile.am (MISC_TESTS): Add it. 12808 12809 tests: add strace-tt.test. 12810 * tests/strace-tt.test: New test. 12811 * tests/Makefile.am (MISC_TESTS): Add it. 12812 12813 tests: add strace-t.test. 12814 * tests/strace-t.test: New test. 12815 * tests/Makefile.am (MISC_TESTS): Add it. 12816 12817 tests: add strace-T.test. 12818 * tests/strace-T.expected: New file. 12819 * tests/strace-T.test: New test. 12820 * tests/Makefile.am (MISC_TESTS): Add it. 12821 (EXTRA_DIST): Add strace-T.expected. 12822 12823 2016-03-23 Dmitry V. Levin <ldv (a] altlinux.org> 12824 12825 tests: split out tests of specific decoders. 12826 Split TESTS into three groups: tests of specific decoders, libunwind 12827 tests, and all other tests. 12828 12829 * tests/Makefile.am (TESTS): Move attach-f-p.test, attach-p-cmd.test, 12830 bexecve.test, count-f.test, count.test, detach-running.test, 12831 detach-sleeping.test, detach-stopped.test, dumpio.test, 12832 filter-unavailable.test, fork-f.test, ksysent.test, opipe.test, 12833 pc.test, qual_syscall.test, redirect.test, restart_syscall.test, 12834 strace-f.test, and vfork-f.test to MISC_TESTS. 12835 Move remaining tests except $(LIBUNWIND_TESTS) to DECODER_TESTS. 12836 Add $(DECODER_TESTS) and $(MISC_TESTS). 12837 12838 2016-03-23 JayRJoshi <jay.r.joshi100 (a] gmail.com> 12839 12840 tests: add getcwd.test. 12841 * tests/getcwd.c: New file. 12842 * tests/getcwd.test: New test. 12843 * tests/.gitignore: Add getcwd. 12844 * tests/Makefile.am (check_PROGRAMS): Likewise. 12845 (TESTS): Add getcwd.test. 12846 12847 tests: add print_quoted_string function to libtests. 12848 * tests/tests.h (print_quoted_string): New prototype. 12849 * tests/print_quoted_string.c: New file. 12850 * tests/Makefile.am (libtests_a_SOURCES): Add it. 12851 12852 2016-03-17 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12853 12854 tests: add xetpriority.test. 12855 * resource.c (SYS_FUNC(getpriority), SYS_FUNC(setpriority)): Print 12856 the second syscall argument using %d format. 12857 * tests/xetpriority.c: New file. 12858 * tests/xetpriority.test: New test. 12859 * tests/.gitignore: Add xetpriority. 12860 * tests/Makefile.am (check_PROGRAMS): Likewise. 12861 (TESTS): Add xetpriority.test. 12862 12863 2016-03-15 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12864 12865 tests: add flock.test. 12866 * tests/flock.c: New file. 12867 * tests/flock.test: New test. 12868 * tests/.gitignore: Add flock. 12869 * tests/Makefile.am (check_PROGRAMS): Likewise. 12870 (TESTS): Add flock.test. 12871 12872 tests: add sched_xetscheduler.test. 12873 * tests/sched_xetscheduler.c: New file. 12874 * tests/sched_xetscheduler.test: New test. 12875 * tests/.gitignore: Add sched_xetscheduler. 12876 * tests/Makefile.am (check_PROGRAMS): Likewise. 12877 (TESTS): Add sched_xetscheduler.test. 12878 12879 2016-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 12880 12881 alpha: fix SOCK_DIAG_BY_FAMILY tests. 12882 This complements commit v4.9-368-g301c65c. 12883 12884 * tests/netlink_inet_diag.c (check_responses): Align "buf" 12885 on sizeof(long) boundary. 12886 * tests/netlink_unix_diag.c (check_responses): Likewise. 12887 12888 2016-03-14 Dmitry V. Levin <ldv (a] altlinux.org> 12889 12890 Update EPOLL* constants. 12891 * xlat/epollevents.in: Add EPOLLWAKEUP and EPOLLEXCLUSIVE. 12892 12893 2016-03-12 Dmitry V. Levin <ldv (a] altlinux.org> 12894 12895 tests: add count-f.test. 12896 * tests/count-f.c: New file. 12897 * tests/count-f.expected: Likewise. 12898 * tests/count-f.test: New test. 12899 * tests/.gitignore: Add count-f. 12900 * tests/Makefile.am (check_PROGRAMS): Likewise. 12901 (count_f_LDADD): New variable. 12902 (EXTRA_DIST): Add count-f.expected. 12903 (TESTS): Add count-f.test. 12904 12905 2016-02-21 Dmitry V. Levin <ldv (a] altlinux.org> 12906 12907 hppa: wire up copy_file_range syscall. 12908 * linux/hppa/syscallent.h [346]: Add copy_file_range entry. 12909 12910 2016-03-11 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12911 12912 tests: filter strace output in uname test. 12913 * tests/uname.test: Use uniq to filter strace output. 12914 12915 2016-03-10 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12916 12917 tests: add sched_xetparam.test. 12918 * tests/sched_xetparam.c: New file. 12919 * tests/sched_xetparam.test: New test. 12920 * tests/.gitignore: Add sched_xetparam. 12921 * tests/Makefile.am (check_PROGRAMS): Likewise. 12922 (TESTS): Add sched_xetparam.test. 12923 12924 tests: add sched_get_priority_mxx.test. 12925 * tests/sched_get_priority_mxx.c: New file. 12926 * tests/sched_get_priority_mxx.test: New test. 12927 * tests/.gitignore: Add sched_get_priority_mxx. 12928 * tests/Makefile.am (check_PROGRAMS): Likewise. 12929 (TESTS): Add sched_get_priority_mxx.test. 12930 12931 tests: add dup.test, dup2.test, and dup3.test. 12932 * tests/dup.c: New file. 12933 * tests/dup.test: New test. 12934 * tests/dup2.c: New file. 12935 * tests/dup2.test: New test. 12936 * tests/dup3.c: New file. 12937 * tests/dup3.test: New test. 12938 * tests/.gitignore: Add dup, dup2, and dup3. 12939 * tests/Makefile.am (check_PROGRAMS): Likewise. 12940 (TESTS): Add dup.test, dup2.test, and dup3.test. 12941 12942 2016-03-10 Fabien Siron <fabien.siron (a] epita.fr> 12943 12944 tests: add fchmod.test. 12945 * tests/fchmod.c: New file. 12946 * tests/fchmod.test: New test. 12947 * tests/.gitignore: Add fchmod. 12948 * tests/Makefile.am (check_PROGRAMS): Likewise. 12949 (TESTS): Add fchmod.test. 12950 12951 2016-03-09 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12952 12953 tests: add acct.test. 12954 * tests/acct.c: New file. 12955 * tests/acct.test: New test. 12956 * tests/.gitignore: Add acct. 12957 * tests/Makefile.am (check_PROGRAMS): Likewise. 12958 (TESTS): Add acct.test. 12959 12960 2016-03-07 Anchit Jain <anchitjain1234 (a] gmail.com> 12961 12962 tests: add chmod.test. 12963 * tests/chmod.c: New file. 12964 * tests/chmod.test: New test. 12965 * tests/.gitignore: Add chmod. 12966 * tests/Makefile.am (check_PROGRAMS): Likewise. 12967 (TESTS): Add chmod.test. 12968 12969 2016-03-05 Nahim El Atmani <naam (a] lse.epita.fr> 12970 12971 Reduce memory usage while managing tcbs allocation. 12972 * strace.c (init): Remove initial memory allocation for tcbtab. 12973 (expand_tcbtab): Do initial memory allocation when tcbtabsize == 0. 12974 12975 Reviewed-By: Gabriel Laskar <gabriel (a] lse.epita.fr> 12976 Reported-by: haris iqbal <haris.phnx (a] gmail.com> 12977 12978 2016-03-01 Fei Jie <feij.fnst (a] cn.fujitsu.com> 12979 12980 tests: add umask.test. 12981 * tests/umask.c: New file. 12982 * tests/umask.test: New test. 12983 * tests/.gitignore: Add umask. 12984 * tests/Makefile.am (check_PROGRAMS): Likewise. 12985 (TESTS): Add umask.test. 12986 12987 tests: add rename.test. 12988 * tests/rename.c: New file. 12989 * tests/rename.test: New test. 12990 * tests/.gitignore: Add rename. 12991 * tests/Makefile.am (check_PROGRAMS): Likewise. 12992 (TESTS): Add rename.test. 12993 12994 tests: add uname.test. 12995 * tests/uname.c: New file. 12996 * tests/uname.test: New test. 12997 * tests/.gitignore: Add uname. 12998 * tests/Makefile.am (check_PROGRAMS): Likewise. 12999 (TESTS): Add uname.test. 13000 13001 2016-02-20 Dmitry V. Levin <ldv (a] altlinux.org> 13002 13003 mips: wire up copy_file_range syscall. 13004 * linux/mips/syscallent-n32.h [6324]: Add copy_file_range entry. 13005 * linux/mips/syscallent-n64.h [5320]: Likewise. 13006 * linux/mips/syscallent-o32.h [4360]: Likewise. 13007 13008 2016-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 13009 13010 tests: add rt_sigsuspend.test. 13011 * tests/rt_sigsuspend.c: New file. 13012 * tests/rt_sigsuspend.test: New test. 13013 * tests/.gitignore: Add rt_sigsuspend. 13014 * tests/Makefile.am (check_PROGRAMS): Likewise. 13015 (TESTS): Add rt_sigsuspend.test. 13016 13017 Print pid_t arguments of rt_sigqueueinfo and rt_tgsigqueueinfo as int. 13018 * signal.c (SYS_FUNC(rt_sigqueueinfo)): Print first syscall argument 13019 using %d format. 13020 (SYS_FUNC(rt_tgsigqueueinfo)): Print first and second syscall arguments 13021 using %d format. 13022 * tests/rt_tgsigqueueinfo.c: New file. 13023 * tests/rt_tgsigqueueinfo.test: New test. 13024 * tests/.gitignore: Add rt_tgsigqueueinfo. 13025 * tests/Makefile.am (check_PROGRAMS): Likewise. 13026 (TESTS): Add rt_tgsigqueueinfo.test. 13027 13028 getrusage.test: fix build on x32. 13029 * tests/getrusage.c: Include <stdint.h> 13030 (main): Print members of struct timeval using %ju format. 13031 13032 2016-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 13033 13034 getrusage.test: check that getrusage parser does not access extra memory 13035 Place struct rusage at the end of an allocated memory page followed by 13036 an inaccessible page. 13037 13038 * tests/getrusage.c (main): Use tail_alloc. 13039 13040 2016-02-19 Fei Jie <feij.fnst (a] cn.fujitsu.com> 13041 13042 tests: add getrusage.test. 13043 * tests/getrusage.c: New file. 13044 * tests/getrusage.test: New test. 13045 * tests/.gitignore: Add getrusage. 13046 * tests/Makefile.am (check_PROGRAMS): Likewise. 13047 (TESTS): Add getrusage.test. 13048 13049 2016-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 13050 13051 Print rt_sigtimedwait return value as a signal name. 13052 * signal.c (SYS_FUNC(rt_sigtimedwait)): Decode return value. 13053 * tests/rt_sigtimedwait.c: New file. 13054 * tests/rt_sigtimedwait.test: New test. 13055 * tests/.gitignore: Add rt_sigtimedwait. 13056 * tests/Makefile.am (check_PROGRAMS): Likewise. 13057 (TESTS): Add rt_sigtimedwait.test. 13058 13059 tests: add rt_sigprocmask.test. 13060 * tests/rt_sigprocmask.c: New file. 13061 * tests/rt_sigprocmask.test: New test. 13062 * tests/.gitignore: Add rt_sigprocmask. 13063 * tests/Makefile.am (check_PROGRAMS): Likewise. 13064 (TESTS): Add rt_sigprocmask.test. 13065 13066 Fix corner cases of rt_sigpending syscall decoder. 13067 * signal (print_sigset_addr_len_limit): New function, cloned from 13068 print_sigset_addr_len with added minimal length argument. 13069 Treat length less than minimal length or greater than NSIG/8 as invalid. 13070 Do not align length to 4-byte boundary. Align destination buffer 13071 to 4-byte boundary and initialize it with zeroes so that subsequent 13072 call to sprintsigmask_n will not access uninitialized data. 13073 (print_sigset_addr_len): Turn into a wrapper around 13074 print_sigset_addr_len_limit with current_wordsize 13075 as a minimal length argument. 13076 (SYS_FUNC(rt_sigpending)): Call print_sigset_addr_len_limit 13077 instead of print_sigset_addr_len with 1 as a minimal length argument. 13078 * tests/rt_sigpending.c: New file. 13079 * tests/rt_sigpending.test: New test. 13080 * tests/.gitignore: Add rt_sigpending. 13081 * tests/Makefile.am (check_PROGRAMS): Likewise. 13082 (TESTS): Add rt_sigpending.test. 13083 13084 2016-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 13085 13086 Change unix_diag requests back to use full dump instead of exact match. 13087 Unfortunately, 64-bit linux kernel has a bug in matching inode numbers 13088 greater than INT_MAX, so unix_diag exact match is not reliable. 13089 13090 This partially reverts commit 69bfc89770152033d4aa0bc5673fc46e65d89838. 13091 13092 * socketutils.c (unix_send_query): Add NLM_F_DUMP to nlmsg_flags, 13093 remove initialization of udiag_cookie. 13094 * tests/netlink_unix_diag.c (send_query): Remove "inode" argument, 13095 add NLM_F_DUMP to nlmsg_flags, remove initialization of udiag_ino 13096 and udiag_cookie. 13097 (check_responses): Remove "inode" argument and its use. 13098 (main): Remove invocation of inode_of_sockfd and passing of listening 13099 socket inode to send_query and check_responses. 13100 13101 2016-02-19 Michael Shigorin <mike (a] altlinux.org> 13102 13103 tests: avoid using cpp -dD. 13104 -dD is less portable across some peculiar preprocessors. 13105 13106 tests/Makefile.am (ksysent.h): Use cpp -dM instead of cpp -dD. 13107 13108 2016-02-16 Dmitry V. Levin <ldv (a] altlinux.org> 13109 13110 tests: add poll.test. 13111 * tests/poll.c: New file. 13112 * tests/poll.test: New test. 13113 * tests/.gitignore: Add poll. 13114 * tests/Makefile.am (check_PROGRAMS): Likewise. 13115 (TESTS): Add poll.test. 13116 13117 Fix abbreviated output of poll and ppoll decoders. 13118 * poll.c (decode_poll_entering, decode_poll_exiting): Fix corner cases 13119 of abbreviated output. 13120 * tests/ppoll-v.expected: Update. 13121 * tests/ppoll.expected: Update. 13122 * tests/ppoll.test: Update. 13123 13124 Print unfetchable address in poll and ppoll decoders. 13125 * poll.c (decode_poll_entering): Replace umove call with 13126 umove_or_printaddr. 13127 (decode_poll_exiting): Print unfetchable address when umove call fails. 13128 13129 Print offsets in lseek and _llseek syscalls as signed integers. 13130 * lseek.c (SYS_FUNC(lseek)): Print offset using %lld format. 13131 (SYS_FUNC(llseek)): Likewise. Treat high and low components of offset 13132 as unsigned long integers. 13133 * tests/llseek.c (main): Check that negative offset is printed properly. 13134 * tests/lseek.c (main): Likewise. 13135 13136 2016-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 13137 13138 tests: add xetpgid.test. 13139 * tests/xetpgid.c: New file. 13140 * tests/xetpgid.test: New test. 13141 * tests/.gitignore: Add xetpgid. 13142 * tests/Makefile.am (check_PROGRAMS): Likewise. 13143 (TESTS): Add xetpgid.test. 13144 13145 tests: add alarm.test. 13146 * tests/alarm.c: New file. 13147 * tests/alarm.test: New test. 13148 * tests/.gitignore: Add alarm. 13149 * tests/Makefile.am (check_PROGRAMS): Likewise. 13150 (TESTS): Add alarm.test. 13151 13152 Replace printargs_lu and printargs_ld with printargs_u and printargs_d. 13153 * defs.h (printargs_lu): Rename to printargs_u. 13154 (printargs_ld): Rename to printargs_d. 13155 * syscall.c (printargs_lu): Rename to printargs_u. Replace %lu with %u. 13156 (printargs_ld): Rename to printargs_d. Replace %ld with %d. 13157 * linux/dummy.h (sys_getpgrp): Change to printargs. 13158 (sys_alarm): Change to printargs_u. 13159 (sys_getpgid, sys_getsid, sys_nice, sys_setpgid, sys_setpgrp, 13160 sys_timer_delete, sys_timer_getoverrun): Change to printargs_d. 13161 13162 Change printargs_lu and printargs_ld to return RVAL_DECODED. 13163 * syscall.c (printargs_lu, printargs_ld): Return RVAL_DECODED. 13164 13165 redirect.test: fix the way how strace output is discarded. 13166 * tests/redirect.test: Disable tracing of syscalls, signals, 13167 and exit status instead of redirecting strace output to /dev/null. 13168 13169 tests: extend coverage of struct iovec arrays. 13170 * tests/readv.c (main): Check decoding of empty, inaccessible, 13171 and partially inaccessible iovec arrays. 13172 * tests/readv.test: Update. 13173 13174 Implement dumping of vmsplice syscall. 13175 * syscall.c (dumpio): Add SEN_vmsplice. 13176 * NEWS: Mention this. 13177 * tests/vmsplice.c: New file. 13178 * tests/vmsplice.test: New test. 13179 * tests/.gitignore: Add vmsplice. 13180 * tests/Makefile.am (check_PROGRAMS): Likewise. 13181 (TESTS): Add vmsplice.test. 13182 13183 tests: add tee.test. 13184 * tests/tee.c: New file. 13185 * tests/tee.test: New test. 13186 * tests/.gitignore: Add tee. 13187 * tests/Makefile.am (check_PROGRAMS): Likewise. 13188 (TESTS): Add tee.test. 13189 13190 Fix printing of negative offsets in splice syscall. 13191 * io.c (SYS_FUNC(splice)): Use PRId64 instead of PRIu64 for printing 13192 offsets. 13193 * tests/splice.c: New file. 13194 * tests/splice.test: New test. 13195 * tests/.gitignore: Add splice. 13196 * tests/Makefile.am (check_PROGRAMS): Likewise. 13197 (TESTS): Add splice.test. 13198 13199 Implement copy_file_range syscall decoding. 13200 * copy_file_range.c: New file. 13201 * Makefile.am (strace_SOURCES): Add it. 13202 * linux/32/syscallent.h (copy_file_range): New entry. 13203 * linux/64/syscallent.h: Likewise. 13204 * linux/arm/syscallent.h: Likewise. 13205 * linux/i386/syscallent.h: Likewise. 13206 * linux/ia64/syscallent.h: Likewise. 13207 * linux/m68k/syscallent.h: Likewise. 13208 * linux/powerpc/syscallent.h: Likewise. 13209 * linux/powerpc64/syscallent.h: Likewise. 13210 * linux/s390/syscallent.h: Likewise. 13211 * linux/s390x/syscallent.h: Likewise. 13212 * linux/sparc/syscallent.h: Likewise. 13213 * linux/sparc64/syscallent.h: Likewise. 13214 * linux/x32/syscallent.h: Likewise. 13215 * linux/x86_64/syscallent.h: Likewise. 13216 * pathtrace.c (pathtrace_match): Add SEN_copy_file_range. 13217 * NEWS: Mention new syscall parser. 13218 * tests/copy_file_range.c: New file. 13219 * tests/copy_file_range.test: New test. 13220 * tests/.gitignore: Add copy_file_range. 13221 * tests/Makefile.am (check_PROGRAMS): Likewise. 13222 (TESTS): Add copy_file_range.test. 13223 13224 Update fs *_MAGIC constants. 13225 * xlat/fsmagic.in: Add CGROUP2_SUPER_MAGIC and OVERLAYFS_SUPER_MAGIC. 13226 13227 Update IPV6_* constants. 13228 * xlat/sockipv6options.in: Add IPV6_HDRINCL. 13229 13230 Update SO_* constants. 13231 * xlat/sockoptions.in: Add SO_ATTACH_REUSEPORT_CBPF 13232 and SO_ATTACH_REUSEPORT_EBPF. 13233 13234 Update MADV_* constants. 13235 * xlat/madvise_cmds.in: Add MAD_FREE. 13236 13237 2016-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 13238 13239 tests: robustify execve and execveat tests. 13240 * tests/execve.c (main): Use one page gap between two mapped regions 13241 for an address that is more likely to be not yet mapped. 13242 * tests/execveat.c (main): Likewise. 13243 13244 tests: simplify execve test. 13245 * tests/execve.c (main): Simplify the test assuming that execve syscall 13246 never returns ENOSYS. 13247 13248 2016-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 13249 13250 Fix numbers of syscall arguments in syscall tables. 13251 This semi-automatic change brings syscall tables in sync with kernel's 13252 include/linux/syscalls.h file. 13253 13254 * linux/aarch64/syscallent.h (recv): Fix nargs. 13255 * linux/alpha/syscallent.h (sigaltstack, init_module, 13256 sched_getscheduler, settimeofday): Likewise. 13257 * linux/arm/syscallent.h (signal, pciconfig_iobase, msgrcv, msgctl, 13258 shmat, shmdt, shmctl, semtimedop, get_mempolicy, set_mempolicy, 13259 timerfd_create): Likewise. 13260 * linux/bfin/syscallent.h (signal, delete_module): Likewise. 13261 * linux/hppa/syscallent.h (init_module, munlockall, sched_getscheduler, 13262 io_cancel, set_tid_address, listxattr, llistxattr, flistxattr, 13263 removexattr, lremovexattr, fremovexattr): Likewise. 13264 * linux/i386/syscallent.h (signal, mmap): Likewise. 13265 * linux/ia64/syscallent.h (init_module, readv, writev, 13266 sched_getscheduler): Likewise. 13267 * linux/m68k/syscallent.h (signal, request_key): Likewise. 13268 * linux/microblaze/syscallent.h (signal, clone, fstatfs64, vmsplice): 13269 Likewise. 13270 * linux/mips/syscallent-n32.h (getpgid, statfs, fstatfs, init_module, 13271 delete_module): Likewise. 13272 * linux/mips/syscallent-n64.h (getpgid, statfs, fstatfs, init_module, 13273 delete_module): Likewise. 13274 * linux/mips/syscallent-o32.h (signal, statfs, fstatfs, ioperm, 13275 fstatfs64): Likewise. 13276 * linux/powerpc/syscallent.h (signal, spu_run, spu_create): Likewise. 13277 * linux/powerpc64/syscallent.h (signal, pread64, pwrite64, readahead, 13278 fadvise64, lookup_dcookie, spu_run, spu_create, sync_file_range2, 13279 fallocate, preadv, pwritev, fanotify_mark): Likewise. 13280 * linux/s390/syscallent.h (signal, mmap, lookup_dcookie, ipc): Likewise. 13281 * linux/s390x/syscallent.h (signal, ipc): Likewise. 13282 * linux/sh/syscallent.h (signal, ipc, munlockall, fstatfs64, vmsplice): 13283 Likewise. 13284 * linux/sh64/syscallent.h (signal, ipc, msgrcv, msgctl, shmat, shmdt, 13285 shmctl, fstatfs64, vmsplice): Likewise. 13286 * linux/sparc/syscallent.h (ptrace, dup, signal, ipc): Likewise. 13287 * linux/sparc64/syscallent.h (ptrace, dup, signal, pread64, pwrite64, 13288 readahead, lookup_dcookie, fadvise64, fadvise64_64, ipc, 13289 sync_file_range, fallocate, preadv, pwritev, fanotify_mark): Likewise. 13290 * linux/x32/syscallent.h (64:recvmsg): Likewise. 13291 * linux/xtensa/syscallent.h (mremap, futex, reboot, init_module, 13292 delete_module, request_key, getcpu, ioprio_set, ioprio_get, utimensat, 13293 futimesat, fchmodat, faccessat): Likewise. 13294 * NEWS: Mention this fix. 13295 13296 2016-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 13297 13298 s390: decode fadvise64 and fadvise64_64. 13299 * linux/s390/syscallent.h (fadvise64): Set sys_func. 13300 (fadvise64_64): Set nargs and sys_func. 13301 13302 mips n64: use the most optimal parser for fadvise64 syscall. 13303 * linux/mips/syscallent-n64.h (fadvise64): Replace SEN(fadvise64_64) 13304 with SEN(fadvise64). 13305 13306 ia64: decode fstatfs64 and statfs64. 13307 * linux/ia64/syscallent.h (fstatfs64, statfs64): Set nargs and sys_func. 13308 13309 2016-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 13310 13311 alpha, ia64, mips, sh, sh64: fix the number of pipe syscall arguments. 13312 On alpha, ia64, mips, sh, sh64, sparc, and sparc64 architectures 13313 pipe syscall does not take arguments. 13314 13315 * linux/alpha/syscallent.h (pipe): Change nargs to 0. 13316 * linux/ia64/syscallent.h (pipe): Likewise. 13317 * linux/mips/syscallent-n32.h (pipe): Likewise. 13318 * linux/mips/syscallent-n64.h (pipe): Likewise. 13319 * linux/mips/syscallent-o32.h (pipe): Likewise. 13320 * linux/sh/syscallent.h (pipe): Likewise. 13321 * linux/sh64/syscallent.h (pipe): Likewise. 13322 13323 2016-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 13324 13325 alpha, ia64, mips, sh*, sparc*: fix error path decoding of pipe syscall. 13326 * net.c (do_pipe) [HAVE_GETRVAL2]: Remove. 13327 Always call decode_pair_fd on exiting. 13328 (SYS_FUNC(pipe)) [HAVE_GETRVAL2]: Call printpair_fd instead of do_pipe. 13329 13330 Fix pathtrace match for pipe2 syscall. 13331 * pathtrace.c (pathtrace_match): As pipe2 syscall has no descriptors 13332 or paths to test, move SEN_pipe2 to the appropriate category. 13333 13334 avr32: wire up missing syscalls. 13335 * linux/avr32/syscallent.h [322..324]: Add userfaultfd, membarrier, 13336 and mlock2 entries. 13337 13338 2016-02-12 Dmitry V. Levin <ldv (a] altlinux.org> 13339 13340 tests: check decoding of madvise, mlockall, mremap, and msync syscalls. 13341 * tests/mmap.c (main): Change output format from regexp to verbatim. 13342 Add tests for madvise, mlockall, mremap, and msync syscalls. 13343 * tests/mmap.test: Convert from match_grep to match_diff. 13344 Add madvise, mlockall, mremap, and msync syscalls to syscall filter. 13345 13346 2016-02-11 Dmitry V. Levin <ldv (a] altlinux.org> 13347 13348 Simplify decoding of waitpid and wait4 syscalls. 13349 * wait.c (printwaitn): Replace "n" and "bitness" integer arguments 13350 with a single print_rusage function pointer. All callers updated. 13351 13352 waitid: print pid argument as int. 13353 * wait.c (SYS_FUNC(waitid)): As the type of second syscall argument 13354 in the kernel is pid_t, print it as int. 13355 13356 waitid: always print 5th argument. 13357 * wait.c (SYS_FUNC(waitid)): Do not check for tcp->s_ent->nargs 13358 as waitid syscall has 5 arguments. 13359 13360 socketutils: add const qualifier to variables. 13361 * socketutils.c (cache_and_print_inode_details): Make "details" 13362 parameter const. 13363 (print_sockaddr_by_inode_cached): Make "e" variable const. 13364 (inet_send_query): Make struct nlmsghdr and struct inet_diag_req_v2 13365 members const. Make "msg" variable const. 13366 (inet_parse_response): Make "data" parameter and diag_msg variable const. 13367 (receive_responses): Make "h" and "rc" variables const. 13368 (unix_send_query): Make struct nlmsghdr and struct unix_diag_req 13369 members const. Make "msg" variable const. 13370 (unix_print): Make all parameters const. 13371 (print_sockaddr_by_inode): Make proto_name parameter const. 13372 13373 print_sockaddr_by_inode: cleanup protocol lookup. 13374 * socketutils.c (tcp_v4_print, udp_v4_print, tcp_v6_print, 13375 udp_v6_print): New functions. 13376 (print_sockaddr_by_inode): Make "protocols" array static, replace 13377 "family" and "protocol" members with "print" in its underlying 13378 structure. Iterate through protocols array when the protocol name 13379 is specified. 13380 13381 2016-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 13382 13383 tests: check that -f -p attaches to threads properly. 13384 Check that -f -p attaches and follows all threads of the given pid. 13385 13386 * tests/attach-f-p.c: New file. 13387 * tests/attach-f-p.test: New test. 13388 * tests/.gitignore: Add attach-f-p. 13389 * tests/Makefile.am (check_PROGRAMS): Likewise. 13390 (attach_f_p_LDADD): New variable. 13391 (TESTS): Add attach-f-p.test. 13392 13393 2016-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 13394 13395 Introduce libstrace.a for potentially conditional compilation units. 13396 Some files are used conditionally depending on architecture and 13397 configuration. Create a library for the purpose of keeping such 13398 compilation units. 13399 13400 * Makefile.am (strace_LDADD, noinst_LIBRARIES): Add libstrace.a. 13401 (libstrace_a_CPPFLAGS): New variable, set to $(strace_CPPFLAGS). 13402 (libstrace_a_CFLAGS): New variable, set to $(strace_CFLAGS). 13403 (libstrace_a_SOURCES): New variable, set to upeek.c. 13404 * util.c (upeek): Move ... 13405 * upeek.c: ... here. 13406 13407 2016-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 13408 13409 travis-ci: pass more gcov arguments to codecov. 13410 13411 tests: extend coverage of struct itimerspec. 13412 * tests/timer_xettime.c (main): Check decoding of NULL struct itimerspec 13413 pointer. 13414 13415 tests: extend coverage of utimensat syscall. 13416 * tests/utimensat.c (main): Check decoding of NULL struct timespec 13417 pointer. 13418 13419 tests: extend coverage of time syscall. 13420 * tests/time.c (main): Check decoding of NULL time_t pointer. 13421 13422 tests: extend coverage of struct sigevent. 13423 * tests/timer_create.c (main): Check decoding of NULL struct sigevent 13424 pointer. Check decoding of invalid sigev_notify value. 13425 13426 2016-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 13427 13428 tests: extend coverage of execve and execveat syscalls. 13429 Check decoding of inaccessible or partially inaccessible arrays. 13430 13431 * tests/execve-v.c: New file. 13432 * tests/execveat-v.c: Likewise. 13433 * tests/execve-v.test: New test. 13434 * tests/execveat-v.test: Likewise. 13435 * tests/execve.c: Rewrite. 13436 * tests/execveat.c: Likewise. 13437 * tests/execve.test: Likewise. 13438 * tests/execveat.test: Likewise. 13439 * tests/execve.expected: Remove. 13440 * tests/execve-v.expected: Likewise. 13441 * tests/execveat.expected: Likewise. 13442 * tests/execveat-v.expected: Likewise. 13443 * tests/.gitignore: Add execve-v and execveat-v. 13444 * tests/Makefile.am (check_PROGRAMS): Likewise. 13445 (TESTS): Add execve-v.test and execveat-v.test. 13446 (EXTRA_DIST): Remove execve.expected, execve-v.expected, 13447 execveat.expected, and execveat-v.expected. 13448 13449 2016-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 13450 13451 Fix decoding of execve and execveat syscalls with invalid input. 13452 * execve.c (printargv): Fix decoding of inaccessible or partially 13453 inaccessible array. 13454 (printargc): Diagnose inaccessible or partially inaccessible array. 13455 (decode_execve, SYS_FUNC(execv)): Update printargv and printargc callers. 13456 13457 tests: extend coverage of capget syscall. 13458 * tests/caps.c (main): Check decoding of inaccessible cap_user_header_t 13459 and/or cap_user_data_t. 13460 * tests/caps.awk: Update match patterns. 13461 * tests/caps.test: Update. 13462 13463 tests: extend coverage of sched_getaffinity syscall. 13464 * tests/sched_xetaffinity.c (main): Check decoding of pointer 13465 to inaccessible cpu_set_t. 13466 13467 tests: extend coverage of utime syscall. 13468 * tests/utime.c (main): Check decoding of NULL struct utimbuf pointer. 13469 Check decoding of struct utimbuf located at the end of page boundary. 13470 * tests/utime.test: Update. 13471 13472 tests: extend coverage of sysinfo syscall. 13473 * tests/sysinfo.c (main): Check decoding of NULL struct sysinfo pointer. 13474 Check decoding of struct sysinfo located at the end of page boundary. 13475 * tests/sysinfo.test: Update. 13476 13477 tests: extend coverage of adjtimex syscall. 13478 * tests/adjtimex.c (main): Check decoding of NULL struct timex pointer. 13479 Check decoding of struct timex located at the end of page boundary. 13480 * tests/adjtimex.test: Update. 13481 13482 tests: check that strace does not retain stdin and stdout descriptors. 13483 * tests/redirect.test: New test. 13484 * tests/Makefile.am (TESTS): Add it. 13485 13486 Create a dummy pipe descriptor instead of opening /dev/null. 13487 * strace.c (open_dev_null): Rename to open_dummy_desc. All callers 13488 changed. Create a pipe and return its first descriptor instead of 13489 opening /dev/null. 13490 13491 2016-02-08 Denys Vlasenko <dvlasenk (a] redhat.com> 13492 13493 If stdin/stdout aren't open on startup, open them to /dev/null. 13494 Otherwise, -oLOGFILE may end up using one of them. This conflicts 13495 with the previous change, which closes stdin/out in strace. 13496 13497 * strace.c (init): If fcntl(F_GETFD) fails on stdin or stdout, 13498 sanitize them: open /dev/null and dup it until fds 0,1,2 13499 are all used up. 13500 13501 2016-02-08 Denys Vlasenko <dvlasenk (a] redhat.com> 13502 13503 Close stdin/out after child is forked. 13504 Testcase: 13505 13506 { sleep 1; yes | head -n99999; } | strace -o/dev/null sh -c 'exec <&-; sleep 9' 13507 13508 The writer (head) will be able to perform writes to write end of the pipe. 13509 With strace call removed, head will immediately get SIGPIPE. 13510 13511 This change fixes this: now writer immediately gets SIGPIPE with strace too. 13512 13513 * strace.c (startup_child): Close stdin/out and reopen them to /dev/null. 13514 13515 2016-02-05 Dmitry V. Levin <ldv (a] altlinux.org> 13516 13517 tests: add opipe.test. 13518 Check that -o |pipe_command works. In particular, check that 13519 strace waits for completion of piped command. 13520 13521 * tests/opipe.test: New test. 13522 * tests/Makefile.am (TESTS): Add it. 13523 13524 2016-02-05 Keith Owens <kaos.ocs (a] gmail.com> 13525 13526 strace-graph: print the pid in the graph. 13527 * strace-graph: Prefix each command with its pid. 13528 13529 strace-graph: cope with clone immediately followed by exit. 13530 * strace-graph: A clone() followed by exit() with no intervening fork 13531 or execve resulted in the new pid having no seq key. That breaks when 13532 trying to use seq as an array reference. Ensure that clone populates 13533 the new pid with an empty seq entry. 13534 13535 strace-graph: handle recent strace output. 13536 * strace-graph: Fix regex for --SIG. Ignore '+++ exited with <n> +++' 13537 lines. Handle exit_group syscall as well as _exit. 13538 13539 strace-graph: handle strace -T. 13540 * strace-graph: Ignore extra ' <time.spent>' field added by strace -T. 13541 13542 strace-graph: use "strict" and "warnings" pragmas. 13543 * strace-graph: Set "use strict" and "use warnings" options. Fix errors 13544 detected by strict/warnings. $result is really a string, it can be "-1" 13545 followed by an error text. 13546 13547 2016-02-04 Dmitry V. Levin <ldv (a] altlinux.org> 13548 13549 Add README.md file with links to build status and test coverage. 13550 13551 travis-ci: prepare and submit test coverage report. 13552 13553 tests: extend readlink and readlinkat coverage. 13554 * tests/readlink.c (PREFIX, TARGET, LINKPATH): New macros. 13555 (main): Allocate memory for string and buffer passed to the syscall 13556 being tested using tail_alloc mechanism. Create and cleanup test 13557 symlink. Test syscall error path output. Print hexquoted strings 13558 using hexquote_strndup. 13559 * tests/readlinkat.c: Likewise. 13560 * tests/readlink.test: Remove creation and cleanup of test symlinks. 13561 13562 tests: add hexquote_strndup function to libtests. 13563 * tests/tests.h (hexquote_strndup): New prototype. 13564 * tests/hexquote_strndup.c: New file. 13565 * tests/Makefile.am (libtests_a_SOURCES): Add it. 13566 13567 readlinkat.test: use readlink.test. 13568 * tests/readlink.test (syscall): Initialize from $0. 13569 * tests/readlinkat.test: Source readlink.test. 13570 13571 2016-02-04 Gabriel Laskar <gabriel (a] lse.epita.fr> 13572 13573 Add configure --enable-code-coverage option. 13574 * m4/ax_code_coverage.m4: New file. 13575 * configure.ac: Use AX_CODE_COVERAGE. 13576 * Makefile.am: Add @CODE_COVERAGE_RULES@. 13577 (CODE_COVERAGE_LCOV_OPTIONS, CODE_COVERAGE_GENHTML_OPTIONS, 13578 CODE_COVERAGE_IGNORE_PATTERN): New variables. 13579 (strace_CPPFLAGS): Add $(CODE_COVERAGE_CPPFLAGS). 13580 (strace_CFLAGS): Add $(CODE_COVERAGE_CFLAGS). 13581 (strace_LDADD): Add $(CODE_COVERAGE_LDFLAGS). 13582 * .gitignore: Add *.gcda and *.gcno. 13583 13584 2016-02-03 Dmitry V. Levin <ldv (a] altlinux.org> 13585 13586 Makefile.am: introduce strace_CFLAGS and derivatives. 13587 * Makefile.am (strace_CFLAGS): New variable, set to $(AM_CFLAGS). 13588 (libmpers_CFLAGS): New variable, set to $(strace_CFLAGS). 13589 (libmpers_m32_a_CFLAGS, libmpers_mx32_a_CFLAGS): New variables, 13590 set to $(libmpers_CFLAGS). 13591 13592 Makefile.am: use strace_CPPFLAGS consistently. 13593 * Makefile.am (libmpers_CPPFLAGS): Replace $(AM_CPPFLAGS) 13594 with $(strace_CPPFLAGS). 13595 13596 2016-02-03 Dmitry V. Levin <ldv (a] altlinux.org> 13597 13598 tests: replace net-fd.test with net-y-unix.test. 13599 Unlike the former test that was based on match_grep, 13600 the new one uses match_diff and does more rigorous testing. 13601 13602 * tests/net-y-unix.c: New file. 13603 * tests/net-y-unix.test: New test. 13604 * tests/net-fd.test: Remove. 13605 * tests/net-fd.expected: Remove. 13606 * tests/.gitignore: Add net-y-unix. 13607 * tests/Makefile.am (check_PROGRAMS): Likewise. 13608 (TESTS): Replace net-fd.test with net-y-unix.test. 13609 (net-fd.log): Remove. 13610 (EXTRA_DIST): Remove net-fd.expected. 13611 13612 2016-02-03 Dmitry V. Levin <ldv (a] altlinux.org> 13613 13614 Implement caching of print_sockaddr_by_inode. 13615 As -yy parser, compared to -y, needs to do at least 5 extra syscalls 13616 (getxattr, socket, sendmsg, recvmsg, close) to print socket details, 13617 caching results of netlink conversations between strace and kernel 13618 noticeably reduces amount of system time spent by strace. 13619 13620 The caching is safe since sockets do not change their addresses after 13621 successful bind or connect syscall. 13622 13623 * defs.h (string_quote, print_sockaddr_by_inode_cached): New prototypes. 13624 * socketutils.c (cache_entry): New type. 13625 (CACHE_SIZE, CACHE_MASK): New macros. 13626 (cache): New static array. 13627 (cache_and_print_inode_details): New static function. 13628 (print_sockaddr_by_inode_cached): New function. 13629 (inet_parse_response, unix_parse_response): Use 13630 cache_and_print_inode_details. 13631 * util.c (printfd): Use string_quote and print_sockaddr_by_inode_cached. 13632 (string_quote): Remove static qualifier. 13633 * NEWS: Mention this improvement. 13634 * tests/unix-yy.c (main): Update. 13635 13636 2016-02-03 Dmitry V. Levin <ldv (a] altlinux.org> 13637 13638 Change unix_diag requests to use exact match instead of full dump. 13639 * socketutils.c (unix_send_query): Remove NLM_F_DUMP from nlmsg_flags, 13640 initialize udiag_cookie. 13641 * tests/netlink_unix_diag.c (send_query): Remove "family" and "proto" 13642 arguments, add "inode" argument, remove NLM_F_DUMP from nlmsg_flags, 13643 initialize udiag_ino and udiag_cookie. 13644 (check_responses): Add "inode" argument, check inode match. 13645 (main): Pass listening socket inode to send_query and check_responses. 13646 13647 Robustify netlink response parsers. 13648 * socketutils.c (inet_parse_response, unix_parse_response): Change 13649 return type from bool to int, return -1 on all parse errors except 13650 inode mismatch. 13651 (receive_responses): Stop on the first nlmsg_type that is not 13652 SOCK_DIAG_BY_FAMILY, also stop when the parser returns -1. 13653 * tests/netlink_inet_diag.c (check_responses): Stop on short messages, 13654 on first nlmsg_type that is not SOCK_DIAG_BY_FAMILY, print more verbose 13655 diagnostics for NLMSG_ERROR. 13656 * tests/netlink_unix_diag.c (check_responses): Likewise. 13657 13658 inet_parse_response: add a safety check. 13659 * socketutils.c (inet_parse_response): Check that netlink message 13660 is large enough to contain a inet_diag_msg structure. 13661 13662 receive_responses: avoid potential hangup. 13663 * socketutils.c (receive_responses): Pass MSG_DONTWAIT to recvmsg after 13664 the first recvmsg call to avoid potential hangup. 13665 13666 2016-02-03 Dmitry V. Levin <ldv (a] altlinux.org> 13667 13668 tests: replace net-yy.test with net-yy-inet.test. 13669 Unlike the former test that was based on match_awk, 13670 the new one uses match_diff and does more rigorous testing. 13671 13672 * tests/net-yy-inet.c: New file. 13673 * tests/net-yy-inet.test: New test. 13674 * tests/net-yy.test: Remove. 13675 * tests/net-yy-accept.awk: Remove. 13676 * tests/net-yy-connect.awk: Remove. 13677 * tests/inet-accept-connect-send-recv.c: Remove. 13678 * tests/.gitignore: Replace inet-accept-connect-send-recv 13679 with net-yy-inet. 13680 * tests/Makefile.am (check_PROGRAMS): Likewise. 13681 (TESTS): Replace net-yy.test with net-yy-inet.test. 13682 (EXTRA_DIST): Remove net-yy-accept.awk and net-yy-connect.awk. 13683 13684 2016-02-03 Dmitry V. Levin <ldv (a] altlinux.org> 13685 13686 tests: replace unix-yy.test with net-yy-unix.test. 13687 Unlike the former test that was based on match_awk, 13688 the new one uses match_diff and does more rigorous testing. 13689 13690 * tests/net-yy-unix.c: New file. 13691 * tests/net-yy-unix.test: New test. 13692 * tests/unix-yy.test: Remove. 13693 * tests/unix-yy-accept.awk: Remove. 13694 * tests/unix-yy-connect.awk: Remove. 13695 * tests/.gitignore: Add net-yy-unix. 13696 * tests/Makefile.am (check_PROGRAMS): Likewise. 13697 (TESTS): Replace unix-yy.test with net-yy-unix.test. 13698 (EXTRA_DIST): Remove unix-yy-accept.awk and unix-yy-connect.awk. 13699 13700 2016-02-02 Dmitry V. Levin <ldv (a] altlinux.org> 13701 13702 tests: add inode_of_sockfd function to libtests. 13703 * tests/tests.h (inode_of_sockfd): New prototype. 13704 * tests/inode_of_sockfd.c: New file. 13705 * tests/Makefile.am (libtests_a_SOURCES): Add it. 13706 13707 unix_parse_response: add a safety check. 13708 * socketutils.c (unix_parse_response): Check that netlink message 13709 is large enough to contain a unix_diag_msg structure. 13710 13711 2016-01-29 Dmitry V. Levin <ldv (a] altlinux.org> 13712 13713 Fixed decoding of mincore syscall's last argument. 13714 * mem.c (SYS_FUNC(mincore)): Print only those bytes of the vector 13715 that were written by the kernel. 13716 * NEWS: Mention this fix. 13717 * tests/mincore.c: New file. 13718 * tests/mincore.test: New test. 13719 * tests/Makefile.am (check_PROGRAMS): Add mincore. 13720 (TESTS): Add mincore.test. 13721 * tests/.gitignore: Add mincore. 13722 13723 2016-01-23 Dmitry V. Levin <ldv (a] altlinux.org> 13724 13725 Move fallback -yy socket print from printfd to print_sockaddr_by_inode. 13726 * util.c (printfd): In -yy mode, move fallback print of proto:[inode] ... 13727 * socketutils.c (to print_sockaddr_by_inode): ... here. 13728 13729 2016-01-22 Dmitry V. Levin <ldv (a] altlinux.org> 13730 13731 Implement simultaneous use of -p option and tracing of a command. 13732 * strace.c (init): Allow -p option along with a command. 13733 (startup_child): In -D mode, record the parent of the tracer process 13734 as strace_child. 13735 (startup_attach): Save trace_tracer_pid before -D mode fork. 13736 When tracing a command in -f mode, do not check for the command's 13737 threads as it has no threads at this moment. 13738 Never attach to the tracer process. 13739 In -D mode, never attach to the parent of the tracer process, 13740 terminate that process only once at the end of startup_attach, 13741 and reset strace_child. 13742 * strace.1: Document that -p option can be used along with tracing 13743 of a command. 13744 * NEWS: Mention it. 13745 * tests/attach-p-cmd-cmd.c: New file. 13746 * tests/attach-p-cmd-p.c: Likewise. 13747 * tests/attach-p-cmd.test: New test. 13748 * tests/.gitignore: Add attach-p-cmd-cmd and attach-p-cmd-p. 13749 * tests/Makefile.am (check_PROGRAMS): Likewise. 13750 (TESTS): Add attach-p-cmd.test. 13751 13752 This fixes Debian bug #549942. 13753 13754 2016-01-22 Dmitry V. Levin <ldv (a] altlinux.org> 13755 13756 strace.1: fix format of -P description. 13757 * strace.1 (-P): Write trailing using regular font. 13758 13759 2016-01-21 Dmitry V. Levin <ldv (a] altlinux.org> 13760 13761 tests: use local nanosleep based sleep utility replacement. 13762 * tests/sleep.c: New file. 13763 * tests/.gitignore: Add sleep. 13764 * tests/Makefile.am (check_PROGRAMS): Likewise. 13765 * tests/count.test: Use it instead of system sleep utility. 13766 13767 tests: add error_msg_and_fail function to libtests. 13768 * tests/tests.h (error_msg_and_fail): New prototype. 13769 * tests/error_msg.c (error_msg_and_fail): New function. 13770 13771 2016-01-20 Dmitry V. Levin <ldv (a] altlinux.org> 13772 13773 Fix dumping of recvmmsg syscall in case of short read. 13774 * net.c (dumpiov_in_mmsghdr): Call dumpiov_upto instead of dumpiov, 13775 pass data size limit to dumpiov_upto. 13776 * NEWS: Mention this fix. 13777 * tests/mmsg.c (main): Update. 13778 13779 Fix dumping of recvmsg syscall in case of short read. 13780 * defs.h (dumpiov_in_msghdr): Add unsigned long argument. 13781 * net.c (dumpiov_in_msghdr): Add data_size argument. Call dumpiov_upto 13782 instead of dumpiov, pass data_size to dumpiov_upto. 13783 * syscall.c (dumpio): Pass data size limit to dumpiov_in_msghdr. 13784 * NEWS: Mention this fix. 13785 * tests/recvmsg.c: New file. 13786 * tests/recvmsg.test: New test. 13787 * tests/Makefile.am (check_PROGRAMS): Add recvmsg. 13788 (TESTS): Add recvmsg.test. 13789 * tests/.gitignore: Add recvmsg. 13790 13791 Fix decoding and dumping of readv syscall in case of short read. 13792 * defs.h (dumpiov_upto): New prototype. 13793 (dumpiov): Change to a wrapper around dumpiov_upto. 13794 * util.c (dumpiov): Rename to dumpiov_upto, add and check data_size 13795 argument. 13796 * io.c (SYS_FUNC(readv)): Call tprint_iov_upto instead 13797 of tprint_iov and specify syscall return value as a data size limit. 13798 * syscall.c (dumpio): In case of SEN_readv, call dumpiov_upto instead 13799 of dumpiov and specify syscall return value as a data size limit. 13800 * NEWS: Mention this fix. 13801 * tests/readv.c: New file. 13802 * tests/readv.test: New test. 13803 * tests/Makefile.am (check_PROGRAMS): Add readv. 13804 (TESTS): Add readv.test. 13805 * tests/.gitignore: Add readv. 13806 13807 tests/tests.h: add ARRAY_SIZE and LENGTH_OF macros. 13808 * tests/tests.h (ARRAY_SIZE, LENGTH_OF): New macros. 13809 * tests/aio.c (ARRAY_SIZE): Remove. 13810 * tests/mmsg.c (LENGTH_OF): Remove. 13811 13812 tests: add hexdump_strdup function to libtests. 13813 * tests/tests.h (hexdump_strdup): New prototype. 13814 * tests/hexdump_strdup.c: New file. 13815 * tests/Makefile.am (libtests_a_SOURCES): Add it. 13816 13817 tests: add tprintf function to libtests. 13818 * tests/tests.h (tprintf): New prototype. 13819 * tests/tprintf.c: New file. 13820 * tests/Makefile.am (libtests_a_SOURCES): Add it. 13821 * tests/mmsg.c: Use tprintf. 13822 13823 2016-01-19 Dmitry V. Levin <ldv (a] altlinux.org> 13824 13825 quotactl: add Q_XGETQSTATV command decoding. 13826 * quota.c (fs_qfilestatv, fs_quota_statv): New structures. 13827 (decode_cmd_data): Handle Q_XGETQSTATV case. 13828 13829 quotactl: add decoding of if_dqinfo.dqi_flags constants. 13830 * xlat/if_dqinfo_flags.in: New file. 13831 * quota.c: Include "xlat/if_dqinfo_flags.h". 13832 (decode_cmd_data): Print struct if_dqinfo.dqi_flags using printflags. 13833 13834 quotactl: consistenly decode all write and unknown commands on entering. 13835 * quota.c (decode_cmd_data): Change return type to int. 13836 Return 0 on entering Q_GETQUOTA, Q_V1_GETQUOTA, Q_V2_GETQUOTA, 13837 Q_XGETQUOTA, Q_GETFMT, Q_GETINFO, Q_V2_GETINFO, Q_V1_GETSTATS, 13838 Q_V2_GETSTATS, and Q_XGETQSTAT commands, return RVAL_DECODED 13839 for any other command. 13840 (SYS_FUNC(quotactl)): On entering, print third argument of any command. 13841 For any command except Q_QUOTAON and Q_V1_QUOTAON, call decode_cmd_data 13842 and forward its return value. 13843 13844 quotactl: fix Q_QUOTAON command decoding. 13845 * quota.c (SYS_FUNC(quotactl)): Print Q_QUOTAON 4th argument as a path. 13846 13847 quotactl: print third argument as unsigned int. 13848 * quota.c (SYS_FUNC(quotactl)): Consistently print the third 13849 argument using "%u" format. 13850 13851 quotactl: fix Q_XQUOTAOFF command decoding. 13852 * quota.c (decode_cmd_data): Print xfs quota flags argument. 13853 13854 quotactl: fix Q_GETFMT and Q_XQUOTAON commands decoding. 13855 * quota.c (decode_cmd_data): As quota format value and xfs quota flags 13856 are in-memory constants, print it like an array of one element instead 13857 of a structure. 13858 13859 2016-01-17 Dmitry V. Levin <ldv (a] altlinux.org> 13860 13861 Update quotactl constants. 13862 * xlat/quota_formats.in: Add QFMT_OCFS2 and QFMT_VFS_V1. 13863 * xlat/quotacmds.in: Add Q_XGETQSTATV. 13864 * xlat/quotatypes.in: Add PRJQUOTA. 13865 * xlat/xfs_quota_flags.in: Add FS_QUOTA_PDQ_ACCT and FS_QUOTA_PDQ_ENFD. 13866 13867 2016-01-19 Dmitry V. Levin <ldv (a] altlinux.org> 13868 13869 Replace u_int{8,16,32,64} with uint{8,16,32,64} 13870 * util.c: Replace u_int{32,64} with uint{32,64}. 13871 * quota.c: Replace u_int{8,16,32,64} with uint{8,16,32,64}. 13872 13873 Move definitions of quotactl constants to xlat files. 13874 * quota.c (Q_*): Move to xlat/quotacmds.in. 13875 (USRQUOTA, GRPQUOTA): Move to xlat/quotatypes.in. 13876 (QFMT_VFS_OLD, QFMT_VFS_V0): Move to xlat/quota_formats.in. 13877 (XFS_QUOTA_*): Move to xlat/xfs_quota_flags.in. 13878 (XFS_*_QUOTA): Move to xlat/xfs_dqblk_flags.in. 13879 (QIF_*): Move to xlat/if_dqblk_valid.in. 13880 (IIF_*): Move to xlat/if_dqinfo_valid.in. 13881 13882 2016-01-15 Dmitry V. Levin <ldv (a] altlinux.org> 13883 13884 llseek.test: robustify against libcs invoking _llseek syscall on their own 13885 * tests/llseek.test: Filter out _llseek calls made with non-negative 13886 descriptor arguments. 13887 13888 lseek.test: robustify against libcs invoking lseek syscall on their own. 13889 * tests/lseek.test: Filter out lseek calls made with non-negative 13890 descriptor arguments. 13891 13892 2016-01-14 Dmitry V. Levin <ldv (a] altlinux.org> 13893 13894 mmsg.test: fix regression introduced by commit v4.11-138-g6e815ce. 13895 This fixes the test on platforms where both __NR_sendmmsg and 13896 HAVE_SENDMMSG are defined but the former is not implemented by the 13897 kernel and the second is implemented as an indirect syscall. 13898 13899 * tests/mmsg.c (LENGTH_OF): New macro. 13900 (send_mmsg, recv_mmsg): Print expected output in case of ENOSYS. 13901 (main): Redirect stdout to a new descriptor. Use LENGTH_OF. 13902 Print expected output. 13903 * tests/mmsg.test: Update. 13904 * tests/mmsg.expected: Remove. 13905 * tests/Makefile.am (EXTRA_DIST): Remove mmsg.expected. 13906 13907 2016-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 13908 13909 aio.test: check memory access by aio decoders. 13910 * tests/aio.c (main): Place all objects passed to io_* syscalls 13911 at the end of memory pages followed by inaccessible pages. 13912 13913 2016-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 13914 13915 s390, s390x: fix printing of syscalls unknown to the kernel. 13916 On s390/s390x, syscalls with NR up to 255 can be implemented 13917 directly using "svc NR", for NR >= 256 "svc 0" with %r1=NR is used. 13918 The latter method is allowed for NR < 256, too. 13919 13920 When the syscall number specified directly or indirectly is recognized 13921 by the kernel, i.e. it is less than its NR_syscalls value, it is stored 13922 in %r2 and is available to arch_get_scno via s390_regset.gprs[2]. 13923 For syscall numbers >= NR_syscalls this register is set to 0, 13924 but %r1 remains unchanged and could be used by arch_get_scno 13925 via s390_regset.gprs[1] to decide what the syscall number is. 13926 13927 * linux/s390/get_scno.c (arch_get_scno): If s390_regset.gprs[2] is zero, 13928 take syscall number from s390_regset.gprs[1]. 13929 * NEWS: Mention this fix. 13930 13931 This fixes Debian bug #485979 and Fedora bug #1298294. 13932 13933 2016-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 13934 13935 s390, s390x: print all syscall arguments for syscall number 0. 13936 * linux/s390/syscallent.h [0]: Set nargs to MA. 13937 * linux/s390x/syscallent.h: Likewise. 13938 13939 mips o32: alias sys_syscall to printargs. 13940 * linux/dummy.h (sys_syscall): Alias to printargs. 13941 * syscall.c [LINUX_MIPSO32] (SYS_FUNC(syscall)): Remove. 13942 13943 2016-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 13944 13945 travis-ci: update build matrix. 13946 Add clang-3.6/x86_64, clang-3.6/x86, and musl-gcc/x86_64 to the matrix. 13947 13948 * .travis.yml (compiler): Add gcc, clang-3.6, and musl-gcc. 13949 (env): Add matrix, remove global ENABLE_GCC_WERROR. 13950 (matrix): Add exclude, remove include. 13951 * travis-ci.sh: Add support for clang and musl-gcc. 13952 Use --enable-gcc-Werror for gcc build unconditionally. 13953 13954 2016-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 13955 13956 mpers.awk: add support for DWARF files generated by clang. 13957 * mpers.awk: Define default_pointer_size. Initialize byte_size 13958 for DW_TAG_pointer_type to default_pointer_size. Set parent 13959 for DW_TAG_member only. Handle DW_AT_count as an alternative 13960 to DW_AT_upper_bound. 13961 13962 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 13963 13964 configure.ac: reorder some statements for better readability. 13965 * configure.ac: Sort and group together AC_PROG_*, AC_C_*, AC_TYPE_*, 13966 AC_HEADER_*, AC_CHECK_FUNCS, AC_CHECK_TYPES, AC_CHECK_MEMBERS, 13967 and AC_CHECK_HEADERS. 13968 13969 scm_rights-fd.test: rewrite without fork. 13970 * tests/scm_rights.c (main): Rewrite without fork. 13971 Place all objects passed to sendmsg and recvmsg at the end 13972 of memory pages followed by inaccessible pages. 13973 * tests/scm_rights-fd.test: Update. 13974 13975 tests: fix clang "duplicate 'const' declaration specifier" warnings. 13976 * tests/ksysent.c (pstr_t): Remove second const specifier. 13977 * tests/mmsg.c (main): Remove second const specifier from one[], two[], 13978 and three[]. 13979 13980 tests/times.c: fix clang compilation warning. 13981 * tests/times.c (main): Initialize dummy variable. 13982 13983 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 13984 13985 tests/mmsg.c: fix build on rhel6/ppc. 13986 There are weird platforms that define __NR_sendmmsg but at the same time 13987 do not define __NR_recvmmsg. Add a workaround for them. 13988 13989 * configure.ac (AC_CHECK_FUNCS): Add recvmmsg. 13990 * tests/mmsg.c: Check for __NR_recvmmsg || HAVE_RECVMMSG. 13991 13992 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 13993 13994 s390: fix sigreturn decoding on recent kernels. 13995 Linux kernel commit v4.3-rc1-50-g8d4bd0e corrected uc_sigmask 13996 of the compat signal frame, so remove the old workaround. 13997 13998 * linux/s390/arch_sigreturn.c (arch_sigreturn) [S390]: Remove. 13999 14000 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14001 14002 Update PTRACE_* constants. 14003 * ptrace.h (PTRACE_SECCOMP_GET_FILTER): Define. 14004 * xlat/ptrace_cmds.in: Add PTRACE_SECCOMP_GET_FILTER. 14005 14006 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14007 14008 Fix struct sigevent decoding for musl. 14009 Do not rely on "struct sigevent.__pad" being located at the same address 14010 as "struct sigevent.sigev_notify_thread_id", it's not the case with musl 14011 libc. Do not rely on struct sigevent definition at all to access 14012 sigev_notify_thread_id. 14013 14014 * configure.ac (AC_CHECK_MEMBERS): Remove struct sigevent._sigev_un._pad 14015 and struct sigevent.__pad. 14016 * sigevent.h: New file. 14017 * Makefile.am (strace_SOURCES): Add it. 14018 * print_sigevent.c: Include it. 14019 * print_sigevent.c (struct_sigevent): Remove. 14020 (print_sigevent): Update all struct_sigevent users. 14021 * tests/timer_create.c: Include "sigevent.h". 14022 (main): Use struct_sigevent instead of struct sigevent, 14023 all struct sigevent clients changed. 14024 14025 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14026 14027 syscall.c: include <signal.h> 14028 All users of NSIG macro must include <signal.h>. 14029 This complements commit v4.10-184-g0e946ab. 14030 14031 * syscall.c: Include <signal.h>. 14032 14033 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14034 14035 signal.c: fix musl libc compilation warning. 14036 musl libc defines SIGRTMAX to a function that returns signed int, 14037 which obviously makes gcc -Wsign-compare unhappy. 14038 14039 * signal.c (signame): Cast ASM_SIGRTMAX to unsigned int. 14040 14041 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14042 14043 tests: fix TEST_SYSCALL_{NR,STR} and STRUCT_STAT_STR macros for musl. 14044 The contents of TEST_SYSCALL_NAME and STRUCT_STAT macros was subject 14045 to macro expansion when used in definitions of TEST_SYSCALL_NR, 14046 TEST_SYSCALL_STR, and STRUCT_STAT_STR macros. 14047 14048 As some libcs, e.g. musl libc, define lfs64 names as macros 14049 (stat64 as stat, lstat64 as lstat, etc.), this might result to incorrect 14050 expansion of TEST_SYSCALL_NR, TEST_SYSCALL_STR, and STRUCT_STAT_STR 14051 macros. To avoid this problem, define these macros directly and remove 14052 TEST_SYSCALL_NAME macro. 14053 14054 * tests/_newselect.c (TEST_SYSCALL_NAME): Remove. 14055 (TEST_SYSCALL_NR, TEST_SYSCALL_STR): New macros. 14056 * tests/fcntl.c: Likewise. 14057 * tests/fcntl64.c: Likewise. 14058 * tests/fstat.c: Likewise. 14059 * tests/fstatat64.c: Likewise. 14060 * tests/lstat.c: Likewise. 14061 * tests/newfstatat.c: Likewise. 14062 * tests/select.c: Likewise. 14063 * tests/stat.c: Likewise. 14064 * tests/fstat64.c (TEST_SYSCALL_NAME): Remove. 14065 (TEST_SYSCALL_NR, TEST_SYSCALL_STR, STRUCT_STAT_STR): New macros. 14066 * tests/lstat64.c: Likewise. 14067 * tests/stat64.c: Likewise. 14068 * tests/fstatx.c (TEST_SYSCALL_NR, nrify, nrify_): Remove. 14069 * tests/lstatx.c: Likewise. 14070 * tests/struct_flock.c (TEST_SYSCALL_NR, TEST_SYSCALL_STR, nrify, 14071 nrify_, stringify, stringify_): Remove. 14072 * tests/xselect.c: Likewise. 14073 * tests/xstatx.c: Check TEST_SYSCALL_STR instead of TEST_SYSCALL_NAME. 14074 (STRUCT_STAT_STR, TEST_SYSCALL_STR, stringify, stringify_): Remove. 14075 [!STRUCT_STAT] (STRUCT_STAT_STR): New macro. 14076 14077 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14078 14079 tests/struct_flock.c: fix musl libc compilation warnings. 14080 The size of off_t is not something one can rely upon. For example, 14081 musl libc unconditionally defines it as an int64_t type on x86. 14082 A cast to the target type helps to avoid these libc differences. 14083 14084 * configure.ac: Call AC_C_TYPEOF. 14085 * tests/struct_flock.c (TYPEOF_FLOCK_OFF_T): New macro. 14086 (test_flock_einval): Use it instead of off_t. 14087 14088 2016-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 14089 14090 tests/inet-cmsg.c: fix musl libc compilation warnings. 14091 The types that are used to define msg_namelen member of struct msghdr 14092 and cmsg_len member of struct cmsghdr differ between libcs. 14093 For example, glibc defines them as size_t, while musl libc - as type 14094 socklen_t. Print these fields using %lu format to avoid issues caused 14095 by libc differences. 14096 14097 * tests/inet-cmsg.c (main): Cast mh.msg_controllen and c->cmsg_len 14098 to unsigned long and print them using %lu format. 14099 14100 2016-01-11 Dmitry V. Levin <ldv (a] altlinux.org> 14101 14102 aio.test: include <fcntl.h> instead of <sys/fcntl.h> 14103 * tests/aio.c: Include <fcntl.h> instead of <sys/fcntl.h>. 14104 14105 mmsg.test: check memory access by sendmmsg and recvmmsg decoders. 14106 * tests/tests.h (tail_memdup): New prototype. 14107 * tests/tail_alloc.c (tail_memdup): New function. 14108 * tests/mmsg.c (main): Place all objects passed to sendmmsg and recvmmsg 14109 at the end of memory pages followed by inaccessible pages. 14110 14111 mmsg.test: check decoding of flags passed to sendmmsg and recvmmsg. 14112 * tests/mmsg.c (main): Pass MSG_DONTROUTE|MSG_NOSIGNAL to sendmmsg. 14113 Pass MSG_DONTWAIT to recvmmsg. 14114 * tests/mmsg.expected: Update. 14115 14116 2016-01-11 Dmitry V. Levin <ldv (a] altlinux.org> 14117 14118 mmsg.test: prefer direct sendmmsg/recvmmsg syscalls to libc wrappers. 14119 * tests/mmsg.c: Include <sys/syscall.h>. 14120 Check for __NR_sendmmsg as an alternative to HAVE_SENDMMSG. 14121 [!HAVE_STRUCT_MMSGHDR] (struct mmsghdr): Define. 14122 (send_mmsg, recv_mmsg): New functions. 14123 (main): Use them instead of sendmmsg and recvmmsg. 14124 14125 Reported-by: Szabolcs Nagy <nsz (a] port70.net> 14126 14127 2016-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 14128 14129 sigreturn.test: use RT_5 signal number instead of RT_2. 14130 Make the test compatible with musl libc that uses RT_2 internally. 14131 14132 * tests/sigreturn.c (main): Replace RT_2 with RT_5. 14133 * tests/sigreturn.test: Likewise. 14134 14135 Reported-by: Szabolcs Nagy <nsz (a] port70.net> 14136 14137 2016-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 14138 14139 avr32: wire up accept4 syscall. 14140 * linux/avr32/syscallent.h [321]: Add accept4 entry. 14141 14142 2016-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 14143 14144 sparc64: fix names of {s,g}etres{u,g}id syscalls. 14145 * linux/sparc64/syscallent.h [108 ... 111]: Use sparc64 syscall names. 14146 14147 sparc64: remove sparc32 syscall entries. 14148 * linux/sparc64/syscallent.h [31, 32, 35, 44, 53, 56, 69, 70, 72, 77, 14149 82, 84, 87, 89, 91, 94, 112, 115, 155, 231]: Unassign. 14150 14151 sparc: remove sparc64 syscall entries. 14152 * linux/sparc/syscallent.h [52, 163]: Unassign. 14153 14154 sparc64: clone syscallent.h from sparc. 14155 * linux/sparc64/syscallent.h: Clone from linux/sparc/syscallent.h. 14156 14157 sparc: fix mlock2 sysentry, wire up bind, listen, and setsockopt syscalls 14158 * linux/sparc/syscallent.h [353]: Move mlock2 entry to 356. 14159 [353, 354, 355]: Add bind, listen, and setsockopt entries. 14160 * NEWS: Mention this. 14161 14162 2016-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 14163 14164 tests: do not use settimeofday wrapper provided by libc. 14165 Workaround limitations of settimeofday wrapper provided by musl libc. 14166 14167 * tests/xettimeofday.c (main): Call settimeofday using syscall(). 14168 14169 Reported-by: Szabolcs Nagy <nsz (a] port70.net> 14170 14171 2016-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 14172 14173 ioctl.test: robustify against libcs invoking ioctl syscall on their own. 14174 * tests/ioctl.test: Filter out from the log ioctl calls with standard 14175 descriptor arguments. 14176 14177 Reported-by: Szabolcs Nagy <nsz (a] port70.net> 14178 14179 2016-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 14180 14181 alpha: enhance decoding of getxpid, getxuid, and getxgid syscalls. 14182 Print the second return value of getxpid, getxuid, and getxgid syscalls 14183 that return a pair of values using the same mechanism as pipe syscall. 14184 14185 * alpha.c: New file. 14186 * Makefile.am (strace_SOURCES): Add it. 14187 * linux/alpha/syscallent.h [20]: Change SEN(getpid) to SEN(getxpid). 14188 [24]: Change SEN(getuid) to SEN(getxuid). 14189 [47]: Change SEN(getgid) to SEN(getxgid). 14190 * NEWS: Mention this enhancement. 14191 * tests/uid.awk: Update for getxgid output change. 14192 * tests/uid.test: Cleanup. 14193 * tests/getxxid.c: New file. 14194 * tests/getxxid.test: New test. 14195 * tests/Makefile.am (check_PROGRAMS): Add getxxid. 14196 (TESTS): Add getxxid.test. 14197 * tests/.gitignore: Add getxxid. 14198 14199 2016-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 14200 14201 Cleanup parser of getpagesize syscall. 14202 * mem.c (SYS_FUNC(getpagesize)): Decode on entering syscall. 14203 14204 alpha: alias getdtablesize to printargs. 14205 * linux/dummy.h [ALPHA] (sys_getdtablesize): Alias to printargs. 14206 * desc.c [ALPHA] (SYS_FUNC(getdtablesize)): Remove. 14207 14208 2016-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 14209 14210 tests: change text marker in fork-f and vfork-f tests. 14211 Use chdir syscalls instead of pwrite64 syscalls as a method of inserting 14212 text markers into strace output because the former are more portable. 14213 14214 * tests/fork-f.c (logit): Rename to logit_. Use chdir instead of pwrite. 14215 (logit): New macro wrapper around logit_. 14216 (main): Update expected output. 14217 * tests/vfork-f.c: Likewise. 14218 * tests/fork-f.test: Update. 14219 14220 2016-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 14221 14222 Fix printing of 32-bit times syscall return value on 64-bit architectures 14223 This change complements commit v4.9-359-gd93d9f8 by fixing 14224 RVAL_UDECIMAL case. 14225 The only syscall that appears to be affected is the times syscall. 14226 14227 * syscall.c (trace_syscall_exiting): In case of RVAL_UDECIMAL, 14228 when current personality is 32-bit, print 32-bit return code. 14229 * NEWS: Mention this fix. 14230 14231 Reported-by: Steve McIntyre <steve (a] einval.com> 14232 14233 2016-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 14234 14235 tests/vfork-f.c: support platforms without vfork. 14236 On some platforms, e.g. hppa glibc, vfork() is implemented using fork 14237 syscall, so the test cannot rely on the parent process remaining blocked 14238 until the child process either terminates or calls execve. 14239 14240 * tests/vfork-f.c (main): Explicitly block the parent until the child 14241 either terminates or calls execve. 14242 14243 2016-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 14244 14245 Fix and enhance decoding of sched_[gs]etaffinity syscalls. 14246 Print cpu_set_t as a set of integers, similar to the way 14247 fd_set is printed as a set of descriptors. 14248 14249 * affinity.c: Include <sched.h>. 14250 (get_cpuset_size): New function. 14251 (print_affinitylist): Rewrite using get_cpuset_size and next_set_bit. 14252 (sched_getaffinity, sched_setaffinity): Print first two args as ints. 14253 * NEWS: Mention this enhancement. 14254 * tests/sched_xetaffinity.c: New file. 14255 * tests/sched_xetaffinity.test: New test. 14256 * tests/Makefile.am (check_PROGRAMS): Add sched_xetaffinity. 14257 (TESTS): Add sched_xetaffinity.test. 14258 * tests/.gitignore: Add sched_xetaffinity. 14259 14260 Reported-by: Joe Korty <joe.korty (a] ccur.com> 14261 14262 2016-01-06 Dmitry V. Levin <ldv (a] altlinux.org> 14263 14264 tests: convert epoll_create1.test from match_grep to match_diff. 14265 * tests/epoll_create1.c (main): Print expected output. 14266 * tests/epoll_create1.test: Use match_diff instead of match_grep. 14267 * tests/epoll_create1.expected: Remove. 14268 * tests/Makefile.am (EXTRA_DIST): Remove epoll_create1.expected. 14269 14270 tests/struct_flock.c: use libtests. 14271 * tests/struct_flock.c (create_sample): Return void, 14272 all callers changed. Use perror_msg_and_fail. 14273 * tests/fcntl.c: Use SKIP_MAIN_UNDEFINED. 14274 * tests/fcntl64.c: Likewise. 14275 14276 tests/file_handle.c: use libtests. 14277 * tests/file_handle.c: Use SKIP_MAIN_UNDEFINED. 14278 (main): Use assert and perror_msg_and_skip. 14279 14280 tests/uid32.c: use libtests. 14281 * tests/uid32.c: Use SKIP_MAIN_UNDEFINED. 14282 14283 tests/uid16.c: use libtests. 14284 * tests/uid16.c: Use SKIP_MAIN_UNDEFINED. 14285 (main): Use perror_msg_and_skip. 14286 14287 tests/uid.c: use libtests. 14288 * tests/uid.c: Use SKIP_MAIN_UNDEFINED. 14289 (main): Use perror_msg_and_skip. 14290 14291 tests/netlink_unix_diag.c: use libtests. 14292 * tests/netlink_unix_diag.c (send_query, check_responses, main): 14293 Use perror_msg_and_skip. 14294 14295 tests/netlink_inet_diag.c: use libtests. 14296 * tests/netlink_inet_diag.c (send_query, check_responses, main): 14297 Use perror_msg_and_skip. 14298 14299 tests/readdir.c: use libtests. 14300 * tests/readdir.c: Use SKIP_MAIN_UNDEFINED. 14301 (main): Use perror_msg_and_skip. 14302 14303 tests/getdents64.c: use libtests. 14304 * tests/getdents64.c: Use SKIP_MAIN_UNDEFINED. 14305 (main): Use perror_msg_and_skip. 14306 14307 tests/getdents.c: use libtests. 14308 * tests/getdents.c: Use SKIP_MAIN_UNDEFINED. 14309 (main): Use perror_msg_and_skip. 14310 14311 tests/ipc_shm.c: use libtests. 14312 * tests/ipc_shm.c (cleanup): New function. 14313 (main): Use it and perror_msg_and_skip. 14314 14315 tests/ipc_sem.c: use libtests. 14316 * tests/ipc_sem.c (cleanup): New function. 14317 (main): Use it and perror_msg_and_skip. 14318 14319 tests/ipc_msg.c: use libtests. 14320 * tests/ipc_msg.c (cleanup): New function. 14321 (main): Use it and perror_msg_and_skip. 14322 14323 tests/ipc_msgbuf.c: use libtests. 14324 * tests/ipc_msgbuf.c (cleanup): New function. 14325 (main): Use it and perror_msg_and_skip. 14326 14327 tests/mq.c: use libtests. 14328 * tests/mq.c: Use SKIP_MAIN_UNDEFINED. 14329 (main): Use perror_msg_and_skip. 14330 14331 tests/utimensat.c: use libtests. 14332 * tests/utimensat.c: Use SKIP_MAIN_UNDEFINED. 14333 (main): Use assert and perror_msg_and_skip. 14334 14335 tests/ppoll.c: use libtests. 14336 * tests/ppoll.c (main): Use assert, perror_msg_and_skip, 14337 and perror_msg_and_fail. 14338 14339 tests/mmsg.c: use libtests. 14340 * tests/mmsg.c: Use SKIP_MAIN_UNDEFINED. 14341 (main): Use perror_msg_and_skip. 14342 14343 tests/ip_mreq.c: use libtests. 14344 * tests/ip_mreq.c: Use SKIP_MAIN_UNDEFINED. 14345 (main): Use perror_msg_and_skip. 14346 14347 tests/ioctl.c: use libtests. 14348 * tests/ioctl.c: Use SKIP_MAIN_UNDEFINED. 14349 (main): Use %m printf format specifier. 14350 14351 tests/pipe.c: use libtests. 14352 * tests/pipe.c: Use SKIP_MAIN_UNDEFINED. 14353 (main): Use perror_msg_and_fail and perror_msg_and_skip. 14354 14355 tests/getrandom.c: use libtests. 14356 * tests/getrandom.c: Use SKIP_MAIN_UNDEFINED. 14357 (main): Use perror_msg_and_skip. 14358 14359 tests/signalfd.c: use libtests. 14360 * tests/signalfd.c: Use SKIP_MAIN_UNDEFINED. 14361 (main): Use perror_msg_and_skip. 14362 14363 tests/pc.c: use libtests. 14364 * tests/pc.c (main): Use assert, get_page_size, perror_msg_and_fail, 14365 and perror_msg_and_skip. 14366 14367 tests/uio.c: use libtests. 14368 * tests/uio.c: Use SKIP_MAIN_UNDEFINED. 14369 14370 tests/bpf.c: use libtests. 14371 * tests/bpf.c: Use SKIP_MAIN_UNDEFINED. 14372 (main) Use perror_msg_and_skip. 14373 14374 tests/aio.c: use libtests. 14375 * tests/aio.c: Use SKIP_MAIN_UNDEFINED. 14376 (main) Use perror_msg_and_skip. 14377 14378 tests/sched_xetattr.c: use libtests. 14379 * tests/sched_xetattr.c: Use SKIP_MAIN_UNDEFINED. 14380 (main) Use perror_msg_and_skip. 14381 14382 tests/wait.c: use libtests. 14383 * tests/wait.c (main): Use perror_msg_and_fail. 14384 14385 tests/vfork-f.c: use libtests. 14386 * tests/vfork-f.c (main): Use assert and perror_msg_and_fail. 14387 14388 tests/fork-f.c: use libtests. 14389 * tests/fork-f.c (main): Use assert and perror_msg_and_fail. 14390 14391 tests/userfaultfd.c: use libtests. 14392 * tests/userfaultfd.c: Use SKIP_MAIN_UNDEFINED. 14393 (main): Use assert. 14394 14395 tests/mlock2.c: use libtests. 14396 * tests/mlock2.c: Use SKIP_MAIN_UNDEFINED. 14397 (main): Use assert. 14398 14399 tests/membarrier.c: use libtests. 14400 * tests/membarrier.c: Use SKIP_MAIN_UNDEFINED. 14401 (main): Use assert. 14402 14403 tests/nanosleep.c: use libtests. 14404 * tests/nanosleep.c (main): Use assert, perror_msg_and_fail, 14405 and perror_msg_and_skip. 14406 14407 tests/timerfd_xettime.c: use libtests. 14408 * tests/timerfd_xettime.c: Use SKIP_MAIN_UNDEFINED. 14409 (main): Use perror_msg_and_skip. 14410 14411 tests/timer_xettime.c: use libtests. 14412 * tests/timer_xettime.c: Use SKIP_MAIN_UNDEFINED. 14413 (main): Use perror_msg_and_skip. 14414 14415 tests/timer_create.c: use libtests. 14416 * tests/timer_create.c: Use SKIP_MAIN_UNDEFINED. 14417 (main): Use perror_msg_and_skip. 14418 14419 tests/clock_xettime.c: use libtests. 14420 * tests/clock_xettime.c: Use SKIP_MAIN_UNDEFINED. 14421 (main): Use perror_msg_and_skip. 14422 14423 tests/clock_nanosleep.c: use libtests. 14424 * tests/clock_nanosleep.c (main): Use assert and perror_msg_and_skip. 14425 14426 tests/truncate64.c: use libtests. 14427 * tests/truncate64.c: Use SKIP_MAIN_UNDEFINED. 14428 (main): Use assert and perror_msg_and_skip. 14429 14430 tests/truncate.c: use libtests. 14431 * tests/truncate.c: Use SKIP_MAIN_UNDEFINED. 14432 (main): Use assert and perror_msg_and_skip. 14433 14434 tests/ftruncate64.c: use libtests. 14435 * tests/ftruncate64.c: Use SKIP_MAIN_UNDEFINED. 14436 (main): Use assert and perror_msg_and_skip. 14437 14438 tests/ftruncate.c: use libtests. 14439 * tests/ftruncate.c: Use SKIP_MAIN_UNDEFINED. 14440 (main): Use assert and perror_msg_and_skip. 14441 14442 2016-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 14443 14444 tests/llseek.c: use libtests. 14445 * tests/llseek.c: Use SKIP_MAIN_UNDEFINED. 14446 (main): Use assert and perror_msg_and_skip. 14447 14448 tests/lseek.c: use libtests. 14449 * tests/lseek.c: Use SKIP_MAIN_UNDEFINED. 14450 (main): Use assert and perror_msg_and_skip. 14451 14452 tests/readlinkat.c: use libtests. 14453 * tests/readlinkat.c: Use SKIP_MAIN_UNDEFINED. 14454 (main): Use perror_msg_and_skip. 14455 14456 tests/readlink.c: use libtests. 14457 * tests/readlink.c: Use SKIP_MAIN_UNDEFINED. 14458 (main): Use perror_msg_and_skip. 14459 14460 tests/xattr.c: use libtests. 14461 * tests/xattr.c: Use SKIP_MAIN_UNDEFINED. 14462 (main): Use perror_msg_and_skip. 14463 14464 tests/seccomp.c: use libtests. 14465 * tests/seccomp.c: Use SKIP_MAIN_UNDEFINED. 14466 (main): Use perror_msg_and_fail and perror_msg_and_skip. 14467 14468 tests/restart_syscall.c: use libtests. 14469 * tests/restart_syscall.c (main): Use assert, perror_msg_and_fail, 14470 and perror_msg_and_skip. 14471 14472 tests/inet-cmsg.c: use libtests. 14473 * tests/inet-cmsg.c (main): Use perror_msg_and_skip. 14474 14475 tests/eventfd.c: use libtests. 14476 * tests/eventfd.c: Use SKIP_MAIN_UNDEFINED. 14477 (main): Use perror_msg_and_skip. 14478 14479 tests/epoll_create1.c: use libtests. 14480 * tests/epoll_create1.c: Use SKIP_MAIN_UNDEFINED. 14481 (main): Use assert and perror_msg_and_skip. 14482 14483 tests/mmap.c: use libtests. 14484 * tests/mmap.c (main): Use get_page_size and perror_msg_and_fail. 14485 14486 tests/fanotify_mark.c: use libtests. 14487 * tests/fanotify_mark.c: Use SKIP_MAIN_UNDEFINED. 14488 14489 tests/inet-accept-connect-send-recv.c: use libtests. 14490 * tests/inet-accept-connect-send-recv.c (main): Use perror_msg_and_skip 14491 and perror_msg_and_fail. 14492 14493 tests/net-accept-connect.c: use libtests. 14494 * tests/net-accept-connect.c (main): Use perror_msg_and_skip 14495 and perror_msg_and_fail. 14496 14497 tests/unix-pair-send-recv.c: use libtests. 14498 * tests/unix-pair-send-recv.c (main): Use perror_msg_and_skip 14499 and perror_msg_and_fail. 14500 14501 2016-01-06 Dmitry V. Levin <ldv (a] altlinux.org> 14502 14503 tests/xselect.c: use libtests. 14504 * tests/xselect.c (main): Use assert, perror_msg_and_fail, 14505 and perror_msg_and_skip. 14506 14507 tests/pselect6.c: use libtests. 14508 * tests/pselect6.c: Use SKIP_MAIN_UNDEFINED. 14509 (main): Use assert, perror_msg_and_fail, and perror_msg_and_skip. 14510 14511 2016-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 14512 14513 tests/oldselect.c: use libtests. 14514 * tests/oldselect.c: Use SKIP_MAIN_UNDEFINED. 14515 (main): Use perror_msg_and_fail and perror_msg_and_skip. 14516 14517 tests/select.c: use libtests. 14518 * tests/select.c: Use SKIP_MAIN_UNDEFINED. 14519 14520 tests/_newselect.c: use libtests. 14521 * tests/_newselect.c: Use SKIP_MAIN_UNDEFINED. 14522 14523 tests/fstatat.c: use libtests. 14524 * tests/fstatat.c: Use SKIP_MAIN_UNDEFINED. 14525 14526 tests/newfstatat.c: use libtests. 14527 * tests/newfstatat.c: Use SKIP_MAIN_UNDEFINED. 14528 14529 tests/fstatat64.c: use libtests. 14530 * tests/fstatat64.c: Use SKIP_MAIN_UNDEFINED. 14531 14532 tests/xstatx.c: use libtests. 14533 * tests/xstatx.c: Use SKIP_MAIN_UNDEFINED. 14534 14535 tests/stat64.c: use libtests. 14536 * tests/stat64.c: Use SKIP_MAIN_UNDEFINED. 14537 14538 tests/stat.c: use libtests. 14539 * tests/stat.c: Use SKIP_MAIN_UNDEFINED. 14540 14541 tests/lstat64.c: use libtests. 14542 * tests/lstat64.c: Use SKIP_MAIN_UNDEFINED. 14543 14544 tests/lstat.c: use libtests. 14545 * tests/lstat.c: Use SKIP_MAIN_UNDEFINED. 14546 14547 tests/fstat64.c: use libtests. 14548 * tests/fstat64.c: Use SKIP_MAIN_UNDEFINED. 14549 14550 tests/fstat.c: use libtests. 14551 * tests/fstat.c: Use SKIP_MAIN_UNDEFINED. 14552 14553 tests/statfs.c: use libtests. 14554 * tests/statfs.c (main): Use perror_msg_and_fail. 14555 14556 2016-01-06 Dmitry V. Levin <ldv (a] altlinux.org> 14557 14558 tests/xettimeofday.c: use libtests. 14559 * tests/xettimeofday.c (main): Use assert and perror_msg_and_skip. 14560 14561 tests/utime.c: use libtests. 14562 * tests/utime.c (main): Use assert and perror_msg_and_skip. 14563 14564 tests/filter-unavailable.c: use libtests. 14565 * tests/filter-unavailable.c (main): Use perror_msg_and_fail. 14566 14567 tests/scm_rights.c: use libtests. 14568 * tests/scm_rights.c (main): Use perror_msg_and_fail and perror_msg_and_skip. 14569 14570 tests/caps.c: use libtests. 14571 * tests/caps.c (main): Use perror_msg_and_skip. 14572 14573 tests/rt_sigqueueinfo.c: use libtests. 14574 * tests/rt_sigqueueinfo.c (main): Use assert and perror_msg_and_skip. 14575 14576 tests/umount.c: use libtests. 14577 * tests/umount.c: Use SKIP_MAIN_UNDEFINED. 14578 (main): Use perror_msg_and_fail. 14579 14580 tests/umount2.c: use libtests. 14581 * tests/umount2.c (main): Use perror_msg_and_fail. 14582 14583 2016-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 14584 14585 tests/times.c: use libtests. 14586 * tests/times.c (main): Use perror_msg_and_fail and perror_msg_and_skip. 14587 14588 2016-01-04 Dmitry V. Levin <ldv (a] altlinux.org> 14589 14590 tests/times-fail.c: use assert. 14591 * tests/times-fail.c (main): Use assert. 14592 14593 tests/memfd_create.c: use libtests. 14594 * tests/memfd_create.c: Use SKIP_MAIN_UNDEFINED. 14595 14596 tests/execveat.c: use libtests. 14597 * tests/execveat.c: Use SKIP_MAIN_UNDEFINED. 14598 14599 tests/xetitimer.c: use libtests. 14600 * tests/xetitimer.c (main): Use perror_msg_and_skip. 14601 14602 2016-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 14603 14604 tests/sysinfo.c: use libtests. 14605 * tests/sysinfo.c (main): Use perror_msg_and_skip. 14606 14607 tests/sigaltstack.c: use libtests. 14608 * tests/sigaltstack.c (main): Use perror_msg_and_skip. 14609 14610 tests/adjtimex.c: use libtests. 14611 * tests/adjtimex.c (main): Use perror_msg_and_skip. 14612 14613 tests/xet_robust_list.c: use libtests. 14614 * tests/xet_robust_list.c: Use SKIP_MAIN_UNDEFINED. 14615 (main): Use perror_msg_and_skip and tail_alloc. 14616 14617 tests/umovestr2.c: use libtests. 14618 * tests/umovestr2.c (main): Use get_page_size and tail_alloc. 14619 14620 tests/umovestr.c: use libtests. 14621 * tests/umovestr.c (main): Use perror_msg_and_skip and tail_alloc. 14622 14623 tests/time.c: use libtests. 14624 * tests/time.c: Use SKIP_MAIN_UNDEFINED. 14625 (main): Use perror_msg_and_skip and tail_alloc. 14626 14627 tests/sendfile64.c: use libtests. 14628 * tests/sendfile64.c: Use SKIP_MAIN_UNDEFINED. 14629 (main): Use assert, perror_msg_and_fail, perror_msg_and_skip, 14630 and tail_alloc. 14631 14632 tests/sendfile.c: use libtests. 14633 * tests/sendfile.c: Use SKIP_MAIN_UNDEFINED. 14634 (main): Use assert, perror_msg_and_fail, perror_msg_and_skip, 14635 and tail_alloc. 14636 14637 2016-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 14638 14639 tests: include tests.h instead of config.h. 14640 Automatically edit tests/*.c files using the following perl one-liner: 14641 14642 perl -0777 -pi -e \ 14643 's/#ifdef HAVE_CONFIG_H\n# include "config\.h"\n#endif\n*/#include "tests.h"\n/' \ 14644 tests/*.c 14645 14646 2016-01-05 Dmitry V. Levin <ldv (a] altlinux.org> 14647 14648 tests: introduce libtests. 14649 Introduce tests/libtests.a with common functions for use in tests. 14650 14651 * tests/tests.h: New file. 14652 * tests/error_msg.c: Likewise. 14653 * tests/tail_alloc.c: Likewise. 14654 * tests/get_page_size.c: Likewise. 14655 * tests/Makefile.am (libtests_a_SOURCES, libtests_a_CPPFLAGS, 14656 check_LIBRARIES, LDADD): New variables. 14657 (clock_xettime_LDADD, filter_unavailable_LDADD, mq_LDADD, 14658 pc_LDADD, times_LDADD): Add $(LDADD). 14659 * tests/.gitignore: Add libtests.a. 14660 14661 2016-01-01 Dmitry V. Levin <ldv (a] altlinux.org> 14662 14663 tests: enable strace-k.test only for --with-libunwind configurations. 14664 Also, since -k option does not support multiple personalities, 14665 add strace-k.test to XFAIL_TESTS when running mpers tests. 14666 14667 * tests/Makefile.am (MPERS_NAME, LIBUNWIND_TESTS, XFAIL_TESTS_, 14668 XFAIL_TESTS_m32, XFAIL_TESTS_mx32, XFAIL_TESTS): New variables. 14669 [USE_LIBUNWIND] (LIBUNWIND_TESTS): Add strace-k.test. 14670 (TESTS): Replace strace-k.test with $(LIBUNWIND_TESTS). 14671 * bootstrap: Substitute MPERS_NAME variable in tests-*/Makefile.am. 14672 * tests/strace-k.test: Do not check for -k option availability. 14673 14674 2016-01-02 Dmitry V. Levin <ldv (a] altlinux.org> 14675 14676 Move gcc compat macros to gcc_compat.h. 14677 * defs.h: Include "gcc_compat.h". 14678 (GNUC_PREREQ, ATTRIBUTE_NORETURN, ATTRIBUTE_FORMAT, 14679 ATTRIBUTE_ALIGNED, ATTRIBUTE_PACKED, ATTRIBUTE_MALLOC, 14680 ATTRIBUTE_NOINLINE, ATTRIBUTE_ALLOC_SIZE): Move ... 14681 * gcc_compat.h: ... here. 14682 * Makefile.am (strace_SOURCES): Add gcc_compat.h. 14683 14684 2015-12-31 Dmitry V. Levin <ldv (a] altlinux.org> 14685 14686 Move defs.h from noinst_HEADERS to strace_SOURCES. 14687 * Makefile.am (noinst_HEADERS): Move defs.h ... 14688 (strace_SOURCES): ... here. 14689 14690 2015-12-30 Dmitry V. Levin <ldv (a] altlinux.org> 14691 14692 test: remove fork.c and vfork.c. 14693 These manual tests are obsoleted by fork-f.test and vfork-f.test. 14694 14695 * test/fork.c: Remove. 14696 * test/vfork.c: Remove. 14697 * test/Makefile (PROGS): Remove fork and vfork. 14698 * test/.gitignore: Remove fork and vfork. 14699 14700 2015-12-30 Dmitry V. Levin <ldv (a] altlinux.org> 14701 14702 tests: add fork-f.test and vfork-f.test. 14703 Check how strace -f follows fork and vfork syscalls. 14704 14705 * tests/fork-f.c: New file. 14706 * tests/fork-f.test: New test. 14707 * tests/vfork-f.c: New file. 14708 * tests/vfork-f.test: New test. 14709 * tests/Makefile.am (check_PROGRAMS): Add fork-f and vfork-f. 14710 (TESTS): Add fork-f.test and vfork-f.test. 14711 * tests/.gitignore: Add fork-f and vfork-f. 14712 14713 2015-12-29 Dmitry V. Levin <ldv (a] altlinux.org> 14714 14715 Set SYSCALL_NEVER_FAILS flag for getpid, getppid and gettid syscall. 14716 * linux/*/syscallent*.h (getpid, getppid, gettid): Set NF flag. 14717 14718 2015-12-29 Dmitry V. Levin <ldv (a] altlinux.org> 14719 14720 Set SYSCALL_NEVER_FAILS flag for umask syscall. 14721 Linux kernel always ANDs umask argument with 0700 and therefore 14722 this syscall never fails. 14723 14724 * linux/*/syscallent*.h (umask): Set NF flag. 14725 14726 2015-12-27 Dmitry V. Levin <ldv (a] altlinux.org> 14727 14728 alpha, ia64, mips, nios2, powerpc, sparc: always check for syscall error 14729 On architectures that use dedicated registers to report syscall errors, 14730 check for syscall error condition regardless of SYSCALL_NEVER_FAILS flag 14731 in the syscall entry. On architectures that use negated errno 14732 semantics, there is no way to distinguish a syscall error from a valid 14733 return code that looks like a syscall error, and the check for 14734 SYSCALL_NEVER_FAILS flag remains the only way to tell one case 14735 from another. 14736 14737 * linux/alpha/get_error.c (get_error): Ignore check_errno. 14738 * linux/ia64/get_error.c: Likewise. 14739 * linux/mips/get_error.c: Likewise. 14740 * linux/nios2/get_error.c: Likewise. 14741 * linux/powerpc/get_error.c: Likewise. 14742 * linux/sparc/get_error.c: Likewise. 14743 * linux/sparc64/get_error.c: Likewise. 14744 14745 2015-12-27 Dmitry V. Levin <ldv (a] altlinux.org> 14746 14747 Handle unlikely errors from personality syscall. 14748 Despite being marked as SYSCALL_NEVER_FAILS, personality syscall still 14749 might report a failure on some architectures due to obscure kernel 14750 bugs. Check for this unlikely case and let users know that their 14751 kernel has gone bananas. 14752 14753 * personality.c (SYS_FUNC(personality)): Do not parse syscall return 14754 value in case of syserror. 14755 14756 2015-12-27 Dmitry V. Levin <ldv (a] altlinux.org> 14757 14758 Do not truncate return value of get{,e}[ug]id and setfs[ug]id syscalls. 14759 This should not be a user visible change unless the kernel does 14760 something completely unexpected. In the latter case, let user see 14761 what is going on. 14762 14763 * uid.c (SYS_FUNC(getuid), SYS_FUNC(setfsuid)): Do not truncate 14764 tcp->u_rval to uid_t on exiting syscall, return RVAL_DECODED. 14765 14766 2015-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 14767 14768 Enhance personality syscall decoding. 14769 * xlat/personality_options.in: Split into ... 14770 * xlat/personality_types.in: ... personality types and ... 14771 * xlat/personality_flags.in: ... personality flags. 14772 * personality.c: Include "xlat/personality_types.h" 14773 and "xlat/personality_flags.h" instead of "xlat/personality_options.h". 14774 (SYS_FUNC(personality)): Print PER_MASK part of personality as 14775 a symbolic value, and the rest of personality as a set of flags. 14776 * tests/personality.c (main): Add more test cases. 14777 * tests/personality.test: Update. 14778 14779 2015-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 14780 14781 sh, sh64: fix syscall flags in several syscall entries. 14782 * linux/sh/syscallent.h (geteuid32, getegid32, setfsuid32, setfsgid32): 14783 Set SYSCALL_NEVER_FAILS flag. 14784 (fchown32): Set TRACE_DESC flag. 14785 * linux/sh64/syscallent.h: Likewise. 14786 14787 2015-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 14788 14789 Print personality value 0xffffffff properly. 14790 Value 0xffffffff of personality syscall first argument has a special 14791 meaning, it is not a set of personality flags. 14792 14793 * personality.c (SYS_FUNC(personality)): If personality equals 14794 to 0xffffffff, print it verbatim. 14795 * tests/personality.c (main): Test it. 14796 14797 2015-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 14798 14799 tests: add personality.test. 14800 * tests/personality.c: New file. 14801 * tests/personality.test: New test. 14802 * tests/Makefile.am (check_PROGRAMS): Add personality. 14803 (TESTS): Add personality.test. 14804 * tests/.gitignore: Add personality. 14805 14806 Enhance personality syscall decoding. 14807 * personality.c (SYS_FUNC(personality)): On entering syscall, 14808 print first argument not as a hex value but as a set of flags. 14809 On exiting syscall, print return code as a set of flags. 14810 * NEWS: Mention this enhancement. 14811 14812 2015-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 14813 14814 Set SYSCALL_NEVER_FAILS flag for personality syscall. 14815 Starting with commit 14816 v2.6.29-6609-g11d06b2a1e5658f448a308aa3beb97bacd64a940, personality 14817 syscall never fails to set the personality, but before commit 14818 v2.6.35-rc1-372-g485d527 it still could return an error. 14819 Starting with that commit, personality syscall never returns an error. 14820 14821 * linux/*/syscallent.h: Set SYSCALL_NEVER_FAILS flag in personality 14822 syscall entries. 14823 14824 2015-12-24 Dmitry V. Levin <ldv (a] altlinux.org> 14825 14826 Add personality emulation flags. 14827 * xlat/personality_options.in: Add UNAME26, ADDR_NO_RANDOMIZE, 14828 FDPIC_FUNCPTRS, MMAP_PAGE_ZERO, ADDR_COMPAT_LAYOUT, READ_IMPLIES_EXEC, 14829 ADDR_LIMIT_32BIT, SHORT_INODE, WHOLE_SECONDS, STICKY_TIMEOUTS, 14830 and ADDR_LIMIT_3GB. 14831 14832 2015-12-24 Dmitry V. Levin <ldv (a] altlinux.org> 14833 14834 arc, metag, nios2, or1k, tile: fix build. 14835 Fix build regression introduced by commit 14836 34683e3926d8c2daa368afb805da422ee7043396. 14837 14838 * linux/32/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap. 14839 * linux/arc/syscallent.h: Add sys_ prefix to ARCH_mmap and mmap_pgoff. 14840 * linux/nios2/syscallent.h: Likewise. 14841 * linux/or1k/syscallent.h: Likewise. 14842 * linux/tile/syscallent1.h: Add sys_ prefix to ARCH_mmap and sys_mmap_4koff. 14843 * pathtrace.c (pathtrace_match): Handle SEN_ARCH_mmap. 14844 * NEWS: Mention this build fix. 14845 14846 Reported-by: Alexey Brodkin <Alexey.Brodkin (a] synopsys.com> 14847 14848 2015-12-24 Dmitry V. Levin <ldv (a] altlinux.org> 14849 14850 packages: remove acl development library from build dependencies. 14851 Starting with commit v4.9-46-g681452b that removed all references 14852 to acl.h, we no longer use acl development library. 14853 14854 * .travis.yml (addons.apt.packages): Remove libacl1-dev. 14855 * strace.spec (BuildRequires): Remove libacl-devel. 14856 14857 2015-12-23 Dmitry V. Levin <ldv (a] altlinux.org> 14858 14859 packages/x86_64: enable experimental -k option. 14860 * debian/control (Build-Depends) [amd64]: Add libunwind-dev. 14861 * strace.spec (BuildRequires) [x86_64]: Add libunwind-devel. 14862 14863 maint: post-release administrivia. 14864 * NEWS: Add header line for the next release. 14865 14866 2015-12-21 Dmitry V. Levin <ldv (a] altlinux.org> 14867 14868 Prepare for 4.11 release. 14869 * NEWS: Update for 4.11 release. 14870 * debian/changelog: 4.11-1. 14871 * strace.spec: 4.11-1. 14872 14873 2015-12-20 Dmitry V. Levin <ldv (a] altlinux.org> 14874 14875 Sync strace.spec and debian/ with packages. 14876 * debian/changelog: Sync with 4.10-3. 14877 * debian/control: Likewise. 14878 * debian/rules: Likewise. 14879 * strace.spec: Sync with 4.10-3. 14880 14881 .mailmap: add addresses of Kirill A. Shutemov. 14882 * .mailmap: Add both addresses of Kirill A. Shutemov here 14883 to avoid duplications in CREDITS file. 14884 14885 2015-12-19 Dmitry V. Levin <ldv (a] altlinux.org> 14886 14887 NEWS: Prepare for 4.11 release. 14888 14889 2015-12-18 Dmitry V. Levin <ldv (a] altlinux.org> 14890 14891 ia64: wire up mlock2 syscall. 14892 * linux/ia64/syscallent.h [1346]: Add mlock2 entry. 14893 14894 2015-12-17 Dmitry V. Levin <ldv (a] altlinux.org> 14895 14896 Add copyright headers to some files which lack them. 14897 Before this change, all files that exist since 20th century had 14898 copyright headers, while most files that appeared later didn't. This 14899 change fixes the inconsistency by adding missing copyright headers. 14900 14901 It doesn't mean that copyright headers became maintained. In my view, 14902 git history provides much better information on this subject and is much 14903 more accurate than copyright headers. 14904 14905 2015-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 14906 14907 tests/aio.c: include <time.h> 14908 * tests/aio.c: Include <time.h> for struct timespec. 14909 14910 Reported-by: Szabolcs Nagy <nsz (a] port70.net> 14911 14912 2015-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 14913 14914 mpers.sh: switch to DWARF version 2 format for better portability. 14915 * mpers.sh (CFLAGS): Replace -gdwarf-4 with -gdwarf-2. 14916 14917 mpers.awk: add support for DWARF version 2 format. 14918 * mpers.awk: Handle DW_AT_data_member_location in DWARF v2 format. 14919 14920 2015-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 14921 14922 Replace %Ld/%Lu printf format specifiers with %lld/%llu. 14923 As %Ld and %Lu printf format specifiers are not quite portable, 14924 replace them with %lld and %llu, respectively. 14925 14926 * desc.c (SYS_FUNC(pselect6)): Replace %Lu with %llu. 14927 * dirent.c (print_old_dirent, SYS_FUNC(getdents)): Likewise. 14928 * times.c (SYS_FUNC(times)): Likewise. 14929 * fcntl.c (print_struct_flock64): Replace %Ld with %lld. 14930 * tests/ftruncate.c (main): Replace %Lu with %llu. 14931 * tests/ftruncate64.c (main): Likewise. 14932 * tests/getdents.c (print_dirent): Likewise. 14933 * tests/llseek.c (main): Likewise. 14934 * tests/lseek.c (main): Likewise. 14935 * tests/truncate.c (main): Likewise. 14936 * tests/truncate64.c (main): Likewise. 14937 * tests/xstatx.c (main): Likewise. 14938 * tests/pselect6.c (main): Replace %Ld with %lld. 14939 * tests/xselect.c(main): Likewise. 14940 14941 Reported-by: Szabolcs Nagy <nsz (a] port70.net> 14942 14943 2015-12-16 Szabolcs Nagy <nsz (a] port70.net> 14944 14945 Fix SYS_FUNC and SEN macros for musl. 14946 The syscall_name argument was subject to macro expansion because 14947 it was passed down to other macros before it was prefixed. 14948 14949 musl libc defines lfs64 names as macros (e.g. fstat64 as fstat) 14950 so SYS_FUNC(fstat64) was expanded to sys_fstat. 14951 14952 This change adds the prefix before the name is passed to other macros, 14953 i.e. the argument of SYS_FUNC_NAME is already prefixed with sys_. 14954 14955 * defs.h (SYS_FUNC): Add sys_ prefix to SYS_FUNC_NAME's argument. 14956 (SYS_FUNC_NAME): Do not add sys_ prefix to MPERS_FUNC_NAME's argument. 14957 * linux/ia64/syscallent.h (SYS_FUNC_NAME): Do not add sys_ prefix 14958 to MPERS_FUNC_NAME's argument. 14959 * syscall.c (SEN_NAME): Remove. 14960 (SEN): Replace SEN_NAME call with its definition. Add sys_ prefix 14961 to SYS_FUNC_NAME's argument. 14962 14963 2015-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 14964 14965 tests/times.test: workaround libc bug on x32. 14966 As glibc times wrapper on x32 is known to wrongly truncate and then sign 14967 extend the syscall return value, invoke the syscall directly on x32. 14968 14969 * tests/times.c (main) [__NR_times && __x86_64__ && __ILP32__]: 14970 Invoke times syscall using inline asm. 14971 14972 2015-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 14973 14974 mpers.awk: make fillers added to the output structure more predictable. 14975 * mpers.awk (array_seq): New function. 14976 (what_is): Use it for printing filler names. Tweak return types. 14977 * mpers_test.sh: Use a more complicated sample type to test mpers 14978 machinery. 14979 14980 2015-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 14981 14982 Robustify mpers.awk against input containing index loops. 14983 Make mpers.awk check for potential index loops. Such loops should not 14984 normally happen, but mpers.awk will not go into infinite recursion if 14985 they do. 14986 14987 * mpers.awk (enter, leave): New functions. 14988 (what_is): Use them. 14989 14990 2015-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 14991 14992 Robustify mpers.awk against invalid input. 14993 Make mpers.awk check that accessed elements of the main array that 14994 are expected to have non-empty values really meet this requirement. 14995 14996 * mpers.awk (array_get): New function. 14997 (what_is, END): Use it. 14998 * mpers_test.sh: Use a more complicated type to test mpers machinery. 14999 15000 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 15001 15002 2015-12-14 Dmitry V. Levin <ldv (a] altlinux.org> 15003 15004 Replace HAVE_LITTLE_ENDIAN_LONG_LONG with WORDS_BIGENDIAN. 15005 * defs.h: Use WORDS_BIGENDIAN instead of HAVE_LITTLE_ENDIAN_LONG_LONG. 15006 * configure.ac (AC_LITTLE_ENDIAN_LONG_LONG): Remove. 15007 * m4/long_long.m4: Remove. 15008 15009 2015-12-14 Dmitry V. Levin <ldv (a] altlinux.org> 15010 15011 Remove unused parser of xmknod syscall. 15012 The last reference to this parser was removed by commit 15013 v4.10-45-gdf4dd8b. 15014 15015 * mknod.c [SPARC || SPARC64] (SYS_FUNC(xmknod)): Remove. 15016 15017 2015-12-13 Dmitry V. Levin <ldv (a] altlinux.org> 15018 15019 tests/restart_syscall: add a workaround for old arm kernels. 15020 As arm kernels used to overwrite ARM_r0 with -EINTR after 15021 ERESTART_RESTARTBLOCK, update regexp to workaround this. 15022 15023 * tests/restart_syscall.c (main) [__arm__]: Add 0xfffffffc as a valid 15024 alternative value for the first argument of restarted nanosleep syscall. 15025 15026 2015-12-12 Dmitry V. Levin <ldv (a] altlinux.org> 15027 15028 tests/.gitignore: add ksysent.h. 15029 tests/ksysent.h is a generated file listed in CLEANFILES. 15030 This change complements commit v4.10-566-gbab4ef4. 15031 15032 * tests/.gitignore: Add ksysent.h. 15033 15034 2015-12-11 Dmitry V. Levin <ldv (a] altlinux.org> 15035 15036 aarch64: make arm registers unsigned. 15037 Follow the x86_64 example and define registers in arm_pt_regs 15038 as unsigned, to avoid potential sign extension bugs. 15039 15040 This also fixes --enable-gcc-Werror build. 15041 15042 * linux/aarch64/arch_regs.c (arm_pt_regs): Change uregs's type 15043 from int to uint32_t. 15044 15045 Reported-by: Sergey Bolshakov <sbolshakov (a] altlinux.org> 15046 15047 2015-12-10 Dmitry V. Levin <ldv (a] altlinux.org> 15048 15049 tests: add ksysent.test. 15050 Check that syscall names and numbers defined in syscallent files 15051 match kernel __NR_* constants defined by <asm/unistd.h>. 15052 15053 Tested on various platforms, including the following combinations 15054 of architectures and kernel headers: 15055 15056 x86_64: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.12, 3.11, 15057 3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel 15058 i386: 4.4-rc, 4.3, 4.2, 4.1, 3.19, 3.17, 3.16, 3.11, 15059 3.10-rhel, 2.6.32-rhel, 2.6.27-sle, 2.6.18-rhel 15060 aarch64: 4.4-rc 15061 alpha: 4.3 15062 arm eabi: 4.4-rc, 4.2, 4.1 15063 hppa: 3.18 15064 ia64: 3.18 15065 mips o32: 4.1 15066 ppc: 3.18 15067 ppc64: 3.10-rhel, 2.6.32-rhel 15068 s390: 3.18 15069 s390x: 3.18 15070 sparc: 4.1 15071 sparc: 3.18 15072 x32: 3.19 15073 15074 The only platform which is known at this moment to fail the test 15075 is CentOS-5 provided by OBS. On x86_64 instance it fails with 15076 error: "prlimit64" syscall #300 is "fanotify_init" in syscallent.h 15077 and on i586 it similarly fails with 15078 error: "prlimit64" syscall #338 is "fanotify_init" in syscallent.h 15079 So this is a real platform bug that is not likely to be worked around 15080 on the strace side. 15081 15082 * tests/ksysent.c: New file. 15083 * tests/ksysent.sed: Likewise. 15084 * tests/ksysent.test: New test. 15085 * tests/Makefile.am (AM_CPPFLAGS): Add -I$(builddir). 15086 (check_PROGRAMS): Add ksysent. 15087 (TESTS): Add ksysent.test. 15088 (EXTRA_DIST): Add ksysent.sed. 15089 (ksysent.h): New rule. 15090 (BUILT_SOURCES, CLEANFILES): Add ksysent.h. 15091 * tests/.gitignore: Add ksysent. 15092 15093 2015-12-09 Dmitry V. Levin <ldv (a] altlinux.org> 15094 15095 Document that syscall names match kernel __NR_* constants. 15096 * strace.1: Note syscall naming difference between architectures 15097 and the rule of choosing the right syscall name in each case. 15098 15099 2015-12-09 Dmitry V. Levin <ldv (a] altlinux.org> 15100 15101 ia64: print all ia32 syscalls using printargs. 15102 Printing of ia32 syscalls on ia64 must have been broken for a long time. 15103 Do not pretend that it works, print ia32 syscalls using printargs 15104 instead. 15105 15106 * linux/ia64/syscallent.h: Remove all redefinitions of sys_* macros. 15107 Stop including"../dummy.h". Include "../i386/syscallent.h" with 15108 SYS_FUNC_NAME macro temporarily redirected to printargs. 15109 15110 2015-12-09 Dmitry V. Levin <ldv (a] altlinux.org> 15111 15112 Fix build on architectures for which arch_sigreturn is not implemented. 15113 This complements commit 527b42ff8da3f52fa7c48eb766b2b57fb0f0b977. 15114 15115 * linux/arch_sigreturn.c (arch_sigreturn): Define. 15116 15117 2015-12-09 Dmitry V. Levin <ldv (a] altlinux.org> 15118 15119 aarch64: swap 64-bit and 32-bit personalities. 15120 Let native 64-bit personality be personality 0, and 32-bit personality 15121 be personality 1, to follow the traditional layout used for other 15122 architectures. 15123 15124 * defs.h [AARCH64]: Swap PERSONALITY0_WORDSIZE and 15125 PERSONALITY1_WORDSIZE, remove DEFAULT_PERSONALITY. 15126 [AARCH64 && HAVE_M32_MPERS]: Rename PERSONALITY1_* to PERSONALITY0_*. 15127 * file.c [AARCH64 || defined X86_64 || defined X32]: Define 15128 STAT32_PERSONALITY for AARCH64 as well. 15129 * syscall.c (update_personality) [AARCH64]: Adjust PERSONALITY_NAMES. 15130 * linux/aarch64/errnoent1.h: Adjust comment. 15131 * linux/aarch64/get_error.c (get_error): Adjust tcp->currpers check. 15132 * linux/aarch64/get_syscall_args.c (get_syscall_args): Likewise. 15133 * linux/arm/arch_sigreturn.c (arch_sigreturn) [AARCH64]: Likewise. 15134 * linux/aarch64/get_scno.c (arch_get_scno): Adjust update_personality 15135 invocations. 15136 * linux/aarch64/ioctls_arch0.h: Swap with ... 15137 * linux/aarch64/ioctls_arch1.h: ... this file. 15138 * linux/aarch64/ioctls_inc0.h: Swap with ... 15139 * linux/aarch64/ioctls_inc1.h: ... this file. 15140 * linux/aarch64/syscallent.h: Swap with ... 15141 * linux/aarch64/syscallent1.h: ... this file. 15142 15143 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15144 15145 mips: fix fadvise64 syscall entries. 15146 * linux/mips/syscallent-n32.h [6216]: Change syscall handler 15147 from fadvise64 to fadvise64_64. 15148 * linux/mips/syscallent-n64.h [5215]: Rename from "fadvise64_64" 15149 to "fadvise64" 15150 * linux/mips/syscallent-o32.h [4254]: Likewise. 15151 15152 xtensa: wire up syncfs syscall. 15153 * linux/xtensa/syscallent.h [179]: Add syncfs entry. 15154 15155 sh, sh64: fix syscall entries. 15156 * linux/sh/syscallent.h [322]: Fix timerfd_create entry. 15157 * linux/sh64/syscallent.h [350]: Likewise. 15158 [0]: Fix restart_syscall entry. 15159 15160 powerpc, powerpc64: wire up mlock2 syscall. 15161 * linux/powerpc/syscallent.h [378]: Add mlock2 entry. 15162 * linux/powerpc64/syscallent.h: Likewise. 15163 15164 hppa: fix syscall entries. 15165 * linux/hppa/syscallent.h: Swap [343] and [344] entries. 15166 15167 avr32: update syscall entries. 15168 * linux/avr32/syscallent.h [0]: Rename from setup to restart_syscall. 15169 [284 ... 320]: New entries. 15170 15171 m68k: fix syscall names. 15172 * linux/m68k/syscallent.h [335]: Rename "atomic_comxchg_32" 15173 to "atomic_cmpxchg_32". 15174 15175 sparc: update syscall names. 15176 * linux/sparc/syscallent.h [160]: Rename "sched_setaffinity" 15177 to "sched_set_affinity". 15178 [161]: Rename "sched_getaffinity" to "sched_get_affinity". 15179 15180 powerpc, powerpc64: update syscall names. 15181 * linux/powerpc/syscallent.h [201]: Rename "MOL" to "multiplexer". 15182 [225]: Rename "tux" to "tuxcall". 15183 [256]: Rename "debug_setcontext" to "sys_debug_setcontext". 15184 * linux/powerpc64/syscallent.h: Likewise. 15185 15186 alpha: update syscall entries. 15187 * linux/alpha/syscallent.h [224 ... 228]: Add stub entries. 15188 [100]: Rename "osf_getpriority" to "getpriority". 15189 [255]: Rename "osf_subsysinfo" to "osf_subsys_info". 15190 [303]: Rename "adjtimex32" to "old_adjtimex". 15191 [319]: Rename "sysctl" to "_sysctl". 15192 [320]: Remove. 15193 15194 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15195 15196 Fix mmap syscall entries. 15197 Change syscall names to match kernel __NR_* constants. 15198 15199 * linux/avr32/syscallent.h [90]: Rename "mmap" to "mmap2". 15200 * linux/bfin/syscallent.h [90]: Rename "old_mmap" to "mmap". 15201 * linux/i386/syscallent.h: Likewise. 15202 * linux/m68k/syscallent.h: Likewise. 15203 * linux/microblaze/syscallent.h: Likewise. 15204 * linux/sh/syscallent.h: Likewise. 15205 * linux/sh64/syscallent.h: Likewise. 15206 * tests/mmap.c (main): Remove old_mmap from expected output. 15207 * tests/mmap.test: Remove old_mmap from the list of mmap syscalls. 15208 15209 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15210 15211 Fix select and _newselect syscall entries. 15212 Change syscall names to match kernel __NR_* constants. 15213 This reverts commit ddcf54969d253582ab2cfdcab8ede9cdae3fb171. 15214 15215 * linux/arm/syscallent.h [82]: Rename "oldselect" to "select". 15216 [142]: Rename "select" to "_newselect". 15217 * linux/bfin/syscallent.h: Likewise. 15218 * linux/i386/syscallent.h: Likewise. 15219 * linux/m68k/syscallent.h: Likewise. 15220 * linux/microblaze/syscallent.h: Likewise. 15221 * linux/powerpc/syscallent.h [82]: Likewise. 15222 * linux/powerpc64/syscallent.h: Likewise. 15223 * linux/sh/syscallent.h: Likewise. 15224 * linux/sh64/syscallent.h: Likewise. 15225 * linux/hppa/syscallent.h [142]: Rename "select" to "_newselect". 15226 * linux/mips/syscallent-n32.h [6022]: Rename "select" to "_newselect". 15227 * linux/mips/syscallent-n64.h [5022]: Likewise. 15228 * linux/mips/syscallent-o32.h [4142]: Likewise. 15229 * linux/s390/syscallent.h [142]: Rename "select" to "_newselect". 15230 * linux/sparc/syscallent.h [230]: Rename "select" to "_newselect". 15231 * tests/oldselect.test: Rename oldselect to select. Convert 15232 from match_grep to match_diff. 15233 * tests/oldselect.expected: Likewise. 15234 * xselect.c: New file, based on select.c. 15235 * tests/_newselect.c: New file. 15236 * tests/select.c: Replace with a wrapper around xselect.c. 15237 * tests/select.test: Parametrize. 15238 * tests/_newselect.test: New test. 15239 * tests/Makefile.am (check_PROGRAMS): Add _newselect. 15240 (TESTS): Add _newselect.test. 15241 (EXTRA_DIST): Add xselect.c. 15242 * tests/.gitignore: Add _newselect. 15243 15244 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15245 15246 Fix exit syscall entries. 15247 Change syscall names to match kernel __NR_* constants. 15248 15249 * linux/avr32/syscallent.h [1]: Rename "_exit" to "exit". 15250 * linux/bfin/syscallent.h: Likewise. 15251 * linux/i386/syscallent.h: Likewise. 15252 * linux/m68k/syscallent.h: Likewise. 15253 * linux/microblaze/syscallent.h: Likewise. 15254 * linux/sh/syscallent.h: Likewise. 15255 * linux/sh64/syscallent.h: Likewise. 15256 * linux/x32/syscallent.h [60]: Rename "_exit" to "exit". 15257 * linux/x86_64/syscallent.h: Likewise. 15258 15259 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15260 15261 Fix pread64 and pwrite64 syscall entries. 15262 Change syscall names to match kernel __NR_* constants. 15263 15264 * linux/alpha/syscallent.h [349]: Rename "pread" to "pread64". 15265 [350]: Rename "pwrite" to "pwrite64". 15266 * linux/ia64/syscallent.h [1148]: Rename "pread" to "pread64". 15267 [1149]: Rename "pwrite" to "pwrite64". 15268 * linux/sh/syscallent.h [180]: Rename "pread" to "pread64". 15269 [181]: Rename "pwrite" to "pwrite64". 15270 * linux/sh64/syscallent.h: Likewise. 15271 * linux/x32/syscallent.h [17]: Rename "pread" to "pread64". 15272 [18]: Rename "pwrite" to "pwrite64". 15273 * linux/x86_64/syscallent.h: Likewise. 15274 15275 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15276 15277 tests: sort the list of tests. 15278 * tests/Makefile.am (TESTS): Sort the list of regular tests. 15279 * tests/.gitignore: Sort. 15280 15281 ia64: fix remap_file_pages syscall entry. 15282 * linux/ia64/syscallent.h (1125): Set to remap_file_pages. 15283 15284 bfin, i386: remove sysentry for nonexistent security syscall. 15285 * linux/bfin/syscallent.h (223): Remove. 15286 * linux/i386/syscallent.h: Likewise. 15287 15288 build: add -D_FILE_OFFSET_BITS=64 to _CPPFLAGS instead of _CFLAGS. 15289 * tests/Makefile.am (fstat64_CFLAGS): Rename to fstat64_CPPFLAGS, 15290 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15291 (fstatat64_CFLAGS): Rename to fstatat64_CPPFLAGS, 15292 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15293 (ftruncate64_CFLAGS): Rename to ftruncate64_CPPFLAGS, 15294 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15295 (lstat64_CFLAGS): Rename to lstat64_CPPFLAGS, 15296 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15297 (mmap64_CFLAGS): Rename to mmap64_CPPFLAGS, 15298 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15299 (newfstatat_CFLAGS): Rename to newfstatat_CPPFLAGS, 15300 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15301 (stat64_CFLAGS): Rename to stat64_CPPFLAGS, 15302 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15303 (statfs_CFLAGS): Rename to statfs_CPPFLAGS, 15304 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15305 (truncate64_CFLAGS): Rename to truncate64_CPPFLAGS, 15306 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15307 (uio_CFLAGS): Rename to uio_CPPFLAGS, 15308 replace $(AM_CFLAGS) with $(AM_CPPFLAGS). 15309 15310 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15311 15312 Move x32 <asm/stat.h> replacement to x32 specific directory. 15313 As tests-m*32/Makefile.am files now refer to proper arch specific 15314 directories, it's possible to relocate x32 <asm/stat.h> replacement 15315 to its arch specific directory. 15316 15317 * linux/x86_64/asm_stat.h: Move ... 15318 * linux/x32/asm_stat.h: ... here, remove x32 guard. 15319 * Makefile.am (strace_SOURCES): Remove linux/x86_64/asm_stat.h. 15320 15321 2015-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 15322 15323 build: set arch specific -m switches in tests-m*32/Makefile.am files properly 15324 * tests/Makefile.am (ARCH_MFLAGS, AM_LDFLAGS): New variables. 15325 (AM_CPPFLAGS): Use ARCH_MFLAGS. 15326 * bootstrap: In tests-m32/Makefile.am and tests-mx32/Makefile.am, 15327 add -m32 and -mx32, respectively, to ARCH_MFLAGS instead of AM_CFLAGS. 15328 15329 build: initialize ARCH variable in tests-m*32/Makefile.am files properly 15330 * configure.ac (arch_m32): Set to sparc on sparc64, powerpc on 15331 powerpc64, arm on aarch64, i386 on x86_64 and x32, $arch in other cases. 15332 (arch_mx32): Set to x32 on x86_64, $arch in other cases. 15333 (AC_SUBST): Add arch_m32 and arch_mx32. 15334 * bootstrap: Substitute @arch@ with @arch_m32@ in tests-m32/Makefile.am. 15335 Substitute @arch@ with @arch_mx32@ in tests-mx32/Makefile.am. 15336 15337 2015-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 15338 15339 tests: add umount.test and umount2.test. 15340 * tests/umount.c: New file. 15341 * tests/umount2.c: Likewise. 15342 * tests/umount.test: New test. 15343 * tests/umount2.test: Likewise. 15344 * tests/Makefile.am (check_PROGRAMS): Add umount and umount2. 15345 (TESTS): Add umount.test and umount2.test. 15346 * tests/.gitignore: Add umount and umount2. 15347 15348 avr32: fix umount2 syscall entry. 15349 * linux/avr32/syscallent.h: Rename umount to umount2. 15350 15351 Update umount2 flags. 15352 * umount.c (MNT_FORCE, MNT_DETACH, MNT_EXPIRE): Move definitions ... 15353 * xlat/umount_flags.in: ... here. Add UMOUNT_NOFOLLOW. 15354 15355 2015-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 15356 15357 Print the first argument of umount2 syscall as a path. 15358 * umount.c (SYS_FUNC(umount2)): Use printpath instead of printstr. 15359 15360 This fixes Debian bug #785050. 15361 15362 2015-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 15363 15364 prctl: add PR_CAP_AMBIENT parser. 15365 * xlat/pr_cap_ambient.in: New file. 15366 * prctl.c: Include "xlat/pr_cap_ambient.h". 15367 (SYS_FUNC(prctl)): Handle PR_CAP_AMBIENT. 15368 15369 prctl: finish decoding of several commands on entering syscall. 15370 * prctl.c (SYS_FUNC(prctl)): Return RVAL_DECODED after decoding of 15371 PR_GET_DUMPABLE, PR_GET_KEEPCAPS, PR_GET_SECCOMP, PR_GET_TIMERSLACK, 15372 PR_GET_TIMING, and PR_CAPBSET_READ commands. 15373 15374 Fix build on systems that lack EM_FRV definition. 15375 * xlat/audit_arch.in: Guard AUDIT_ARCH_FRV with EM_FRV check. 15376 15377 times.test: workaround buggy libc. 15378 * tests/times.c: Include <sys/syscall.h>. 15379 (main): On systems where user's and kernel's long types are the same, 15380 prefer direct times syscall over libc's times function because 15381 the latter is more prone to return value truncation. 15382 15383 times.test: reduce cpu time consumption, increase struct tms diversity. 15384 * tests/times.c (main): Reduce cpu time consumption fourfold, 15385 make the parent process consume less cpu time than the child process 15386 so that members of the structure returned by times syscall would be 15387 more likely to contain different values. 15388 15389 2015-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 15390 15391 mips n32, x32: fix printing of times syscall return value. 15392 As times syscall returns kernel's long value, it has to be printed as 15393 RVAL_LUDECIMAL on systems where long type is less than kernel's long. 15394 15395 * times.c (SYS_FUNC(times)) [RVAL_LUDECIMAL && !IN_MPERS]: 15396 Return RVAL_LUDECIMAL instead of RVAL_UDECIMAL. 15397 15398 2015-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 15399 15400 unix-yy.test: fix portability issue. 15401 * tests/unix-yy-connect.awk (r_close_listen): Quote square brackets 15402 that are not part of a bracket expression. 15403 15404 inet-cmsg.test: skip the test when the network is not functional. 15405 * tests/inet-cmsg.c (main): Return 77 if inet datagram socket 15406 cannot be bound to INADDR_LOOPBACK. 15407 15408 2015-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 15409 15410 fcntl: skip F_GETLK64, F_SETLK64, and F_SETLKW64 in fcntl syscall parser 15411 As the kernel recognizes F_GETLK64, F_SETLK64, and F_SETLKW64 commands 15412 in fcntl64 syscall only, do not parse their structures in fcntl parser. 15413 15414 * xlat/fcntlcmds.in: Move F_GETLK64, F_SETLK64, and F_SETLKW64 ... 15415 * xlat/fcntl64cmds.in: ... here. 15416 * fcntl.c: Include "xlat/fcntl64cmds.h". 15417 (print_fcntl): Move printing of first two syscall arguments 15418 and handling of F_GETLK64, F_SETLK64, and F_SETLKW64 commands ... 15419 (SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): ... here. 15420 * tests/fcntl.c: New file, based on struct_flock.c. 15421 * tests/fcntl64.c: Likewise. 15422 * tests/struct_flock.c (test_flock_einval, create_sample): New functions. 15423 (test_flock): Use test_flock_einval. 15424 (test_flock64, main): Remove. 15425 * tests/fcntl.test: New test. 15426 * tests/fcntl64.test: Likewise. 15427 * tests/struct_flock.test: Remove. 15428 * tests/Makefile.am (check_PROGRAMS): Add fcntl and fcntl64, 15429 remove struct_flock. 15430 (TESTS): Add fcntl.test and fcntl64.test, remove struct_flock.test. 15431 (EXTRA_DIST) Add struct_flock.c. 15432 * tests/.gitignore: Add fcntl and fcntl64, remove struct_flock. 15433 15434 2015-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 15435 15436 print_fcntl: finish with unrecognized commands on entering syscall. 15437 * fcntl.c (print_fcntl): Merge two switch statements. 15438 15439 2015-12-04 Elvira Khabirova <lineprinter0 (a] gmail.com> 15440 15441 fcntl: create a separate parser for fcntl64 syscall. 15442 * fcntl.c(print_fcntl): New function, made from SYS_FUNC(fcntl). 15443 (SYS_FUNC(fcntl), SYS_FUNC(fcntl64)): Use it. 15444 * linux/32/syscallent.h: Change parser of fcntl64 to SEN(fcntl64). 15445 * linux/arm/syscallent.h: Likewise. 15446 * linux/avr32/syscallent.h: Likewise. 15447 * linux/bfin/syscallent.h: Likewise. 15448 * linux/hppa/syscallent.h: Likewise. 15449 * linux/i386/syscallent.h: Likewise. 15450 * linux/m68k/syscallent.h: Likewise. 15451 * linux/microblaze/syscallent.h: Likewise. 15452 * linux/mips/syscallent-n32.h: Likewise. 15453 * linux/mips/syscallent-o32.h: Likewise. 15454 * linux/powerpc/syscallent.h: Likewise. 15455 * linux/s390/syscallent.h: Likewise. 15456 * linux/sh/syscallent.h: Likewise. 15457 * linux/sh64/syscallent.h: Likewise. 15458 * linux/sparc/syscallent.h: Likewise. 15459 * linux/xtensa/syscallent.h: Likewise. 15460 15461 2015-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 15462 15463 travis-ci: add build matrix. 15464 15465 tests: replace old stat tests with stat.test and stat64.test. 15466 * tests/stat.c: Replace with a wrapper around lstatx.c 15467 * tests/stat.test: Replace with a wrapper around statx.sh. 15468 * tests/stat32-v.test: Remove. 15469 * tests/stat32.c: Remove. 15470 * tests/stat64-v.test: Remove. 15471 * tests/stat64.c: New file. 15472 * tests/stat64.test: New test. 15473 * tests/Makefile.am (check_PROGRAMS): Replace stat32 with stat64. 15474 (stat_CFLAGS): Rename to stat64_CFLAGS. 15475 (TESTS): Replace stat32-v.test and stat64-v.test with stat64.test. 15476 * tests/.gitignore: Replace stat32 with stat64. 15477 15478 tests: add lstat.test and lstat64.test. 15479 * tests/lstat.c: New file. 15480 * tests/lstat64.c: Likewise. 15481 * tests/lstatx.c: Likewise. 15482 * tests/lstat.test: New test. 15483 * tests/lstat64.test: Likewise. 15484 * tests/Makefile.am (check_PROGRAMS): Add lstat and lstat64. 15485 (lstat64_CFLAGS): Define. 15486 (TESTS): Add lstat.test and lstat64.test. 15487 (EXTRA_DIST): Add lstatx.c. 15488 * tests/.gitignore: Add lstat and lstat64. 15489 15490 tests: add fstat.test and fstat64.test. 15491 * tests/fstat.c: New file. 15492 * tests/fstat64.c: Likewise. 15493 * tests/fstatx.c: Likewise. 15494 * tests/fstat.test: New test. 15495 * tests/fstat64.test: Likewise. 15496 * tests/Makefile.am (check_PROGRAMS): Add fstat and fstat64. 15497 (fstat64_CFLAGS): Define. 15498 (TESTS): Add fstat.test and fstat64.test. 15499 (EXTRA_DIST): Add fstatx.c. 15500 * tests/.gitignore: Add fstat and fstat64. 15501 15502 2015-12-05 Dmitry V. Levin <ldv (a] altlinux.org> 15503 15504 tests: prepare for detailed testing of stat family syscalls. 15505 Parametrize code from fstatat.c to support <asm/stat.h> 15506 as an alternative to <sys/stat.h> and move it to a separate file. 15507 15508 * tests/statx.sh: New file, based on fstatat64.test. 15509 * tests/fstatat64.test: Use it. 15510 * tests/newfstatat.test: Likewise. 15511 * tests/xstatx.c: New file, based on fstatat.c. 15512 * tests/fstatat.c: Use it. 15513 * tests/Makefile.am (EXTRA_DIST): Add statx.sh and xstatx.c. 15514 * tests/fstatat64.c (FSTATAT_NAME): Change to TEST_SYSCALL_NAME. 15515 * tests/newfstatat.c: Likewise. 15516 15517 2015-12-04 Gabriel Laskar <gabriel (a] lse.epita.fr> 15518 15519 ioctl: allow to stop decoding number. 15520 For some ioctls, like from drm, the identification of the correct ioctl 15521 is done by custom code. Specifying IOCTL_NUMBER_STOP_LOOKUP on 15522 return of ioctl_decode_command_number() disables further calls to 15523 ioctl_lookup(). 15524 15525 * defs.h (IOCTL_NUMBER_UNKNOWN, IOCTL_NUMBER_HANDLED, 15526 IOCTL_NUMBER_STOP_LOOKUP): Add macros representing ioctl number state 15527 decoding. 15528 * ioctl.c (SYS_FUNC(ioctl)): Skip ioctl_lookup() when 15529 ioctl_decode_command_number() returns a value with 15530 IOCTL_NUMBER_STOP_LOOKUP flag is set. 15531 15532 Suggested-by: Patrik Jakobsson <patrik.r.jakobsson (a] gmail.com> 15533 15534 2015-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 15535 15536 tests: skip restart_syscall.test on x32. 15537 The syscall number of restart_syscall returned by the kernel in case 15538 of ERESTART_RESTARTBLOCK is broken on x32 from the beginning, see 15539 https://lkml.org/lkml/2015/11/30/790 15540 15541 Until that improves, skip the test on x32. 15542 15543 * tests/restart_syscall.c (main) [__x86_64__ && __ILP32__]: Return 77. 15544 15545 2015-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 15546 15547 x32: fix decoding of i386 personality lseek syscall. 15548 On x32, tcp->ext_arg is not initialized for i386 personality, 15549 so tcp->u_arg has to be used instead. 15550 15551 * lseek.c (SYS_FUNC(lseek)) [X32]: Handle "current_personality == 1" case. 15552 15553 2015-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 15554 15555 x86_64, x32: add a replacement for <asm/stat.h> 15556 Some old kernel headers, Ubuntu 14.04 in particular, provide 15557 <asm/stat.h> editions that are completely wrong for x32. 15558 Workaround this issue by providing a replacement. 15559 15560 * linux/x86_64/asm_stat.h: New file. 15561 * linux/x32/asm_stat.h: Likewise. 15562 * Makefile.am (strace_SOURCES): Add them. 15563 15564 2015-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 15565 15566 Add a wrapper around <asm/stat.h> 15567 * linux/asm_stat.h: New file. 15568 * Makefile.am (strace_SOURCES): Add it. 15569 * file.c: Use it. 15570 15571 kernel_types.h: protect from double inclusion. 15572 * kernel_types.h: Add #include guard. 15573 15574 2015-12-03 Dmitry V. Levin <ldv (a] altlinux.org> 15575 15576 fstatat64.test: lift /proc requirement. 15577 While -P option needs /proc to match descriptors, it does not use 15578 /proc to match pathnames. As this test does not need descriptor 15579 match, the /proc requirement can be safely lifted. 15580 15581 * tests/fstatat64.test: Lift /proc/self/fd/ requirement. 15582 15583 2015-12-02 Dmitry V. Levin <ldv (a] altlinux.org> 15584 15585 tests: add fstatat64.test and newfstatat.test. 15586 * configure.ac (AC_CHECK_FUNCS): Add fstatat, ftruncate, and futimens. 15587 * tests/fstatat.c: New file. 15588 * tests/fstatat64.c: Likewise. 15589 * tests/newfstatat.c: Likewise. 15590 * tests/fstatat64.test: New test. 15591 * tests/newfstatat.test: Likewise. 15592 * tests/Makefile.am (check_PROGRAMS): Add fstatat64 and newfstatat. 15593 (fstatat64_CFLAGS, newstatat_CFLAGS): Define. 15594 (TESTS): Add fstatat64.test and newfstatat.test. 15595 (EXTRA_DIST): Add fstatat.c. 15596 * tests/.gitignore: Add fstatat64 and newfstatat. 15597 15598 2015-12-01 Dmitry V. Levin <ldv (a] altlinux.org> 15599 15600 alpha, ppc, sh, sh64: fix fstatat64 syscall entries. 15601 * linux/alpha/syscallent.h (newfstatat): Change sys_name to fstatat64. 15602 * linux/powerpc/syscallent.h: Likewise. 15603 * linux/sh/syscallent.h: Likewise. 15604 * linux/sh64/syscallent.h: Likewise. 15605 15606 ppc64: clone syscallent.h from ppc. 15607 * linux/powerpc64/syscallent.h: Clone from linux/powerpc/syscallent.h 15608 with entries for numbers 192..197, 204, 226, and 254 unassigned. 15609 15610 tests: add lseek.test and llseek.test. 15611 * tests/llseek.c: New file. 15612 * tests/lseek.c: Likewise. 15613 * tests/llseek.test: New test. 15614 * tests/lseek.test: Likewise. 15615 * tests/Makefile.am (check_PROGRAMS): Add llseek and lseek. 15616 (TESTS): Add llseek.test and lseek.test. 15617 * tests/.gitignore: Add llseek and lseek. 15618 15619 tests: add ftruncate64.test and truncate64.test. 15620 * tests/ftruncate64.c: New file. 15621 * tests/truncate64.c: Likewise. 15622 * tests/ftruncate64.test: New test. 15623 * tests/truncate64.test: Likewise. 15624 * tests/Makefile.am (check_PROGRAMS): Add ftruncate64 and truncate64. 15625 (ftruncate64_CFLAGS, truncate64_CFLAGS): Define. 15626 (TESTS): Add ftruncate64.test and truncate64.test. 15627 * tests/.gitignore: Add ftruncate64 and truncate64. 15628 15629 tests: add ftruncate.test and truncate.test. 15630 * tests/ftruncate.c: New file. 15631 * tests/truncate.c: Likewise. 15632 * tests/ftruncate.test: New test. 15633 * tests/truncate.test: Likewise. 15634 * tests/Makefile.am (check_PROGRAMS): Add ftruncate and truncate. 15635 (TESTS): Add ftruncate.test and truncate.test. 15636 * tests/.gitignore: Add ftruncate and truncate. 15637 15638 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15639 15640 build: robustify linux/fcntl.h check. 15641 * configure.ac (AC_CHECK_TYPES): Support older linux kernel headers 15642 by including <sys/types.h> before <linux/fcntl.h>. 15643 15644 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15645 15646 syscall.c: move inclusion of arch specific files to the end of file. 15647 Move inclusion of arch specific files that define static functions to 15648 the end of syscall.c. 15649 15650 * syscall.c (get_syscall_result_regs, get_error, getregs_old): 15651 New forward declarations. 15652 (arch_get_scno): Move forward. 15653 Move inclusion of "get_scno.c", "get_syscall_args.c", 15654 "get_syscall_result.c", "get_error.c", and "getregs_old.c" 15655 to the end of file. 15656 15657 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15658 15659 x86_64: change getregs_old to forward ptrace return code. 15660 * linux/x86_64/getregs_old.c (getregs_old): Change to return ptrace 15661 return code. 15662 * syscall.c (get_regs) [ARCH_REGS_FOR_GETREGSET && X86_64]: Use 15663 getregs_old return code. 15664 15665 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15666 15667 Cleanup print_pc. 15668 Apparently, there are only two types of instruction pointer printers 15669 depending on the architecture: those that print a register that was 15670 fetched earlier, and those that fetch a register themselves using upeek. 15671 With this change, architectures of the first type have ARCH_PC_REG 15672 defined in their arch_regs.c file, architectures of the first type 15673 have ARCH_PC_PEEK_ADDR defined there, and the common code in syscall.c 15674 uses these macros to print the instruction pointer. 15675 15676 * Makefile.am (EXTRA_DIST): Remove linux/*/print_pc.c. 15677 * linux/*/print_pc.c: Remove. 15678 * linux/aarch64/arch_regs.c(ARCH_PC_REG): Define macro. 15679 * linux/arc/arch_regs.c(ARCH_PC_REG): Likewise. 15680 * linux/arm/arch_regs.c(ARCH_PC_REG): Likewise. 15681 * linux/avr32/arch_regs.c(ARCH_PC_REG): Likewise. 15682 * linux/i386/arch_regs.c(ARCH_PC_REG): Likewise. 15683 * linux/ia64/arch_regs.c(ARCH_PC_REG): Likewise. 15684 * linux/metag/arch_regs.c(ARCH_PC_REG): Likewise. 15685 * linux/mips/arch_regs.c(ARCH_PC_REG): Likewise. 15686 * linux/nios2/arch_regs.c(ARCH_PC_REG): Likewise. 15687 * linux/or1k/arch_regs.c(ARCH_PC_REG): Likewise. 15688 * linux/powerpc64/arch_regs.c(ARCH_PC_REG): Likewise. 15689 * linux/powerpc/arch_regs.c(ARCH_PC_REG): Likewise. 15690 * linux/s390/arch_regs.c(ARCH_PC_REG): Likewise. 15691 * linux/s390x/arch_regs.c(ARCH_PC_REG): Likewise. 15692 * linux/sparc64/arch_regs.c(ARCH_PC_REG): Likewise. 15693 * linux/sparc/arch_regs.c(ARCH_PC_REG): Likewise. 15694 * linux/tile/arch_regs.c(ARCH_PC_REG): Likewise. 15695 * linux/x32/arch_regs.c(ARCH_PC_REG): Likewise. 15696 * linux/x86_64/arch_regs.c(ARCH_PC_REG): Likewise. 15697 * linux/alpha/arch_regs.c(ARCH_PC_PEEK_ADDR): Define macro. 15698 * linux/bfin/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15699 * linux/crisv10/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15700 * linux/crisv32/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15701 * linux/hppa/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15702 * linux/m68k/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15703 * linux/microblaze/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15704 * linux/sh64/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15705 * linux/sh/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15706 * linux/xtensa/arch_regs.c(ARCH_PC_PEEK_ADDR): Likewise. 15707 * syscall.c (print_pc): Stop including "print_pc.c". 15708 Use ARCH_PC_REG or ARCH_PC_PEEK_ADDR. 15709 15710 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15711 15712 cleanup: make get_scno.c files more readable. 15713 Make get_scno.c files more self-contained. While they are still 15714 being included by syscall.c, the latter no longer provides 15715 a function framework for them. 15716 15717 * linux/aarch64/get_scno.c (arch_get_scno): Define. 15718 * linux/alpha/get_scno.c: Likewise. 15719 * linux/arc/get_scno.c: Likewise. 15720 * linux/arm/get_scno.c: Likewise. 15721 * linux/avr32/get_scno.c: Likewise. 15722 * linux/bfin/get_scno.c: Likewise. 15723 * linux/crisv10/get_scno.c: Likewise. 15724 * linux/hppa/get_scno.c: Likewise. 15725 * linux/i386/get_scno.c: Likewise. 15726 * linux/ia64/get_scno.c: Likewise. 15727 * linux/m68k/get_scno.c: Likewise. 15728 * linux/metag/get_scno.c: Likewise. 15729 * linux/microblaze/get_scno.c: Likewise. 15730 * linux/mips/get_scno.c: Likewise. 15731 * linux/nios2/get_scno.c: Likewise. 15732 * linux/or1k/get_scno.c: Likewise. 15733 * linux/powerpc/get_scno.c: Likewise. 15734 * linux/powerpc64/get_scno.c: Likewise. 15735 * linux/s390/get_scno.c: Likewise. 15736 * linux/sh/get_scno.c: Likewise. 15737 * linux/sh64/get_scno.c: Likewise. 15738 * linux/sparc/get_scno.c: Likewise. 15739 * linux/sparc64/get_scno.c: Likewise. 15740 * linux/tile/get_scno.c: Likewise. 15741 * linux/x86_64/get_scno.c: Likewise. 15742 * linux/xtensa/get_scno.c: Likewise. 15743 * syscall.c (arch_get_scno): New declaration. 15744 Include "get_scno.c" in file scope. 15745 (get_scno): Use arch_get_scno. 15746 15747 Requested-by: Denys Vlasenko <dvlasenk (a] redhat.com> 15748 15749 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15750 15751 cleanup: make get_syscall_args.c files more readable. 15752 Make get_syscall_args.c files more self-contained. While they are 15753 still being included by syscall.c, the latter no longer defines 15754 get_syscall_args function. 15755 15756 * linux/aarch64/get_syscall_args.c: Include "arm/get_syscall_args.c" 15757 with get_syscall_args temporarily defined to arm_get_syscall_args. 15758 (get_syscall_args): Define. 15759 * linux/alpha/get_syscall_args.c (get_syscall_args): Define. 15760 * linux/arc/get_syscall_args.c: Likewise. 15761 * linux/arm/get_syscall_args.c: Likewise. 15762 * linux/avr32/get_syscall_args.c: Likewise. 15763 * linux/bfin/get_syscall_args.c: Likewise. 15764 * linux/crisv10/get_syscall_args.c: Likewise. 15765 * linux/hppa/get_syscall_args.c: Likewise. 15766 * linux/i386/get_syscall_args.c: Likewise. 15767 * linux/ia64/get_syscall_args.c: Likewise. 15768 * linux/m68k/get_syscall_args.c: Likewise. 15769 * linux/metag/get_syscall_args.c: Likewise. 15770 * linux/microblaze/get_syscall_args.c: Likewise. 15771 * linux/mips/get_syscall_args.c: Likewise. 15772 * linux/nios2/get_syscall_args.c: Likewise. 15773 * linux/or1k/get_syscall_args.c: Likewise. 15774 * linux/powerpc/get_syscall_args.c: Likewise. 15775 * linux/s390/get_syscall_args.c: Likewise. 15776 * linux/sh/get_syscall_args.c: Likewise. 15777 * linux/sh64/get_syscall_args.c: Likewise. 15778 * linux/sparc/get_syscall_args.c: Likewise. 15779 * linux/tile/get_syscall_args.c: Likewise. 15780 * linux/x86_64/get_syscall_args.c: Likewise. 15781 * linux/xtensa/get_syscall_args.c: Likewise. 15782 * syscall.c (get_syscall_args): Remove. 15783 Include "get_syscall_args.c" in file scope. 15784 15785 Requested-by: Denys Vlasenko <dvlasenk (a] redhat.com> 15786 15787 2015-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 15788 15789 cleanup: make get_syscall_result.c files more readable. 15790 Make get_syscall_result.c files more self-contained. While they are 15791 still being included by syscall.c, the latter no longer provides 15792 a function framework for them. 15793 15794 * linux/alpha/get_syscall_result.c (get_syscall_result_regs): Define. 15795 * linux/bfin/get_syscall_result.c: Likewise. 15796 * linux/crisv10/get_syscall_result.c: Likewise. 15797 * linux/hppa/get_syscall_result.c: Likewise. 15798 * linux/m68k/get_syscall_result.c: Likewise. 15799 * linux/microblaze/get_syscall_result.c: Likewise. 15800 * linux/sh/get_syscall_result.c: Likewise. 15801 * linux/sh64/get_syscall_result.c: Likewise. 15802 * linux/xtensa/get_syscall_result.c: Likewise. 15803 * syscall.c [!ARCH_REGS_FOR_GETREGSET && !ARCH_REGS_FOR_GETREGS]: 15804 Define USE_GET_SYSCALL_RESULT_REGS macro. 15805 [USE_GET_SYSCALL_RESULT_REGS]: Include "get_syscall_result.c". 15806 (get_syscall_result) [USE_GET_SYSCALL_RESULT_REGS]: Stop including 15807 "get_syscall_result.c". Call get_syscall_result_regs. 15808 15809 Requested-by: Denys Vlasenko <dvlasenk (a] redhat.com> 15810 15811 2015-11-29 Dmitry V. Levin <ldv (a] altlinux.org> 15812 15813 cleanup: make get_error.c files more readable. 15814 Make get_error.c files more self-sustained. While they are still being 15815 included by syscall.c, the latter no longer defines get_error function. 15816 15817 * linux/aarch64/get_error.c: Include "arm/get_error.c" with get_error 15818 temporarily defined to arm_get_error. 15819 (get_error): Define. 15820 * linux/alpha/get_error.c (get_error): Define. 15821 * linux/arc/get_error.c: Likewise. 15822 * linux/arm/get_error.c: Likewise. 15823 * linux/avr32/get_error.c: Likewise. 15824 * linux/bfin/get_error.c: Likewise. 15825 * linux/crisv10/get_error.c: Likewise. 15826 * linux/hppa/get_error.c: Likewise. 15827 * linux/i386/get_error.c: Likewise. 15828 * linux/ia64/get_error.c: Likewise. 15829 * linux/m68k/get_error.c: Likewise. 15830 * linux/metag/get_error.c: Likewise. 15831 * linux/microblaze/get_error.c: Likewise. 15832 * linux/mips/get_error.c: Likewise. 15833 * linux/nios2/get_error.c: Likewise. 15834 * linux/or1k/get_error.c: Likewise. 15835 * linux/powerpc/get_error.c: Likewise. 15836 * linux/s390/get_error.c: Likewise. 15837 * linux/sh/get_error.c: Likewise. 15838 * linux/sh64/get_error.c: Likewise. 15839 * linux/sparc/get_error.c: Likewise. 15840 * linux/sparc64/get_error.c: Likewise. 15841 * linux/tile/get_error.c: Likewise. 15842 * linux/x86_64/get_error.c: Likewise. 15843 * linux/xtensa/get_error.c: Likewise. 15844 * syscall.c: Include "get_error.c" in file scope. 15845 (get_error): Remove. Move arch independent code ... 15846 (get_syscall_result): ... here. Update get_error invocation. 15847 15848 Requested-by: Denys Vlasenko <dvlasenk (a] redhat.com> 15849 15850 2015-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 15851 15852 cleanup: make arch_sigreturn.c files more readable. 15853 Make arch_sigreturn.c files more self-sustained. While they are 15854 still being included by sigreturn.c, the latter no longer defines 15855 arch_sigreturn function. 15856 15857 * linux/alpha/arch_sigreturn.c (arch_sigreturn): Define. 15858 * linux/arm/arch_sigreturn.c: Likewise. 15859 * linux/crisv10/arch_sigreturn.c: Likewise. 15860 * linux/i386/arch_sigreturn.c: Likewise. 15861 * linux/ia64/arch_sigreturn.c: Likewise. 15862 * linux/m68k/arch_sigreturn.c: Likewise. 15863 * linux/microblaze/arch_sigreturn.c: Likewise. 15864 * linux/mips/arch_sigreturn.c: Likewise. 15865 * linux/powerpc/arch_sigreturn.c: Likewise. 15866 * linux/s390/arch_sigreturn.c: Likewise. 15867 * linux/sparc/arch_sigreturn.c: Likewise. 15868 * linux/tile/arch_sigreturn.c: Likewise. 15869 * linux/x32/arch_sigreturn.c: Remove code. 15870 Include "x86_64/arch_sigreturn.c". 15871 * linux/x86_64/arch_sigreturn.c: Stop including "x32/arch_sigreturn.c". 15872 Include "i386/arch_sigreturn.c" with arch_sigreturn temporarily defined 15873 to i386_arch_sigreturn. 15874 (arch_sigreturn): Define. Add x32 personality support there. 15875 * sigreturn.c: Remove arch_sigreturn header and footer. 15876 15877 Requested-by: Denys Vlasenko <dvlasenk (a] redhat.com> 15878 15879 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 15880 15881 Add initial Travis CI support. 15882 * .travis.yml: New file. 15883 * travis-ci.sh: Likewise. 15884 15885 2015-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 15886 15887 tests: remove temporary files left after two tests. 15888 * tests/net-yy.test: Remove "$LOG"-connect and "$LOG"-accept. 15889 * tests/unix-yy.test: Likewise. 15890 15891 2015-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 15892 15893 tests: skip stat32-v.test on x32. 15894 Explicitly skip 32-bit stat test on x32 even if libc pretends 15895 to support it. 15896 15897 * tests/stat.c (main) [__x86_64__ && __ILP32__]: Skip. 15898 15899 2015-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 15900 15901 tests: fix ipc_msgbuf.test on x32. 15902 * tests/ipc_msgbuf.c: Include "config.h" and "kernel_types.h". 15903 (main): Replace "long" with "kernel_long_t" in struct msgbuf. 15904 15905 x32: fix pselect6 decoding. 15906 * desc.c: Include "kernel_types.h". 15907 (umove_kulong_array_or_printaddr): New function. 15908 (SYS_FUNC(pselect6)): Use it. 15909 15910 x32: fix sigreturn decoding. 15911 * linux/x32/arch_sigreturn.c: Implement x32_rt_sigreturn decoding. 15912 * linux/x86_64/arch_sigreturn.c: Handle (current_personality == 0) 15913 case only. 15914 Include "x32/arch_sigreturn.c" instead of "i386/arch_sigreturn.c". 15915 15916 x32: fix struct dirent decoding. 15917 * kernel_types.h: New file. 15918 * Makefile.am (strace_SOURCES): Add it. 15919 * configure.ac (AC_CHECK_TYPES): Check for __kernel_long_t 15920 and __kernel_ulong_t in <asm/posix_types.h>. 15921 * dirent.c: Stop including <dirent.h>. 15922 (kernel_dirent): Remove. 15923 Include "kernel_types.h". 15924 (print_old_dirent, SYS_FUNC(getdents)): Print variables 15925 of kernel_ulong_t type using %Lu format. 15926 * syscall.c (kernel_long_t, kernel_ulong_t): Remove. 15927 Include "kernel_types.h". 15928 * tests/getdents.c (kernel_dirent): Remove. 15929 Include "kernel_types.h". 15930 (print_dirent): Print variables of kernel_ulong_t type using %Lu format. 15931 15932 2015-11-26 Elvira Khabirova <lineprinter0 (a] gmail.com> 15933 15934 Refer to -h on incorrect usage. 15935 * defs.h (error_msg_and_help): New prototype. 15936 * strace.c (error_msg_and_help): New function. 15937 (error_opt_arg, init): Use it. 15938 (usage): Remove unnecessary arguments. 15939 * count.c: Use the new function. 15940 15941 Rearrange flags descriptions in the usage text. 15942 * strace.c (usage): Rearrange descriptions. 15943 * tests/strace-k.test: Change the option detecting regexp accordingly. 15944 15945 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 15946 15947 tests: run in "set -x" mode if VERBOSE variable is non-null. 15948 * tests/init.sh: Enter "set -x" mode if $VERBOSE is non-null. 15949 15950 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 15951 15952 tests: fix match_diff usage. 15953 Fix argument order in match_diff invocations: 15954 the first argument has to be actual output, 15955 the second argument has to be expected output. 15956 15957 * tests/aio.test: Swap match_diff arguments. 15958 * tests/clock_nanosleep.test: Likewise. 15959 * tests/clock_xettime.test: Likewise. 15960 * tests/file_handle.test: Likewise. 15961 * tests/getdents.test: Likewise. 15962 * tests/getdents64.test: Likewise. 15963 * tests/getrandom.test: Likewise. 15964 * tests/inet-cmsg.test: Likewise. 15965 * tests/ioctl.test: Likewise. 15966 * tests/membarrier.test: Likewise. 15967 * tests/mlock2.test: Likewise. 15968 * tests/nanosleep.test: Likewise. 15969 * tests/pselect6.test: Likewise. 15970 * tests/readdir.test: Likewise. 15971 * tests/readlink.test: Likewise. 15972 * tests/readlinkat.test: Likewise. 15973 * tests/rt_sigqueueinfo.test: Likewise. 15974 * tests/seccomp.test: Likewise. 15975 * tests/select.test: Likewise. 15976 * tests/sendfile.test: Likewise. 15977 * tests/sendfile64.test: Likewise. 15978 * tests/struct_flock.test: Likewise. 15979 * tests/sysinfo.test: Likewise. 15980 * tests/time.test: Likewise. 15981 * tests/timer_create.test: Likewise. 15982 * tests/timer_xettime.test: Likewise. 15983 * tests/timerfd_xettime.test: Likewise. 15984 * tests/times-fail.test: Likewise. 15985 * tests/times.test: Likewise. 15986 * tests/umovestr2.test: Likewise. 15987 * tests/userfaultfd.test: Likewise. 15988 * tests/utime.test: Likewise. 15989 * tests/utimensat.test: Likewise. 15990 * tests/xet_robust_list.test: Likewise. 15991 * tests/xetitimer.test: Likewise. 15992 * tests/xettimeofday.test: Likewise. 15993 15994 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 15995 15996 x86_64: fix x32 personality support in print_llu_from_low_high_val. 15997 x86 is the only personality supported on x86_64 15998 that has 32-bit syscall arguments. 15999 16000 * io.c (print_llu_from_low_high_val) [X86_64]: Fix 16001 current_personality == 2 case. 16002 16003 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 16004 16005 x86_64: fix x32 personality support in getllval. 16006 x86 is the only personality supported on x86_64 16007 that has 32-bit syscall arguments. 16008 16009 * util.c (getllval) [X86_64]: Fix current_personality == 2 case. 16010 16011 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 16012 16013 tests/file_handle: fix expected output. 16014 * tests/file_handle.c (main): Parametrize handle_type 16015 in open_by_handle_at parser output. 16016 16017 startup_attach: fix compilation warning. 16018 * strace.c (startup_attach): Split single error_msg statement with 16019 variable number of arguments to silence a compilation warning. 16020 16021 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 16022 16023 .gitignore: add mpers_xlat.h. 16024 Ignore mpers_xlat.h generated since commit v4.10-454-g5cb45b2. 16025 16026 * .gitignore: Add /mpers_xlat.h. 16027 16028 Reported-by: Elvira Khabirova <lineprinter0 (a] gmail.com> 16029 16030 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 16031 16032 tests: add struct_flock.test. 16033 * tests/struct_flock.c: New file. 16034 * tests/struct_flock.test: New test. 16035 * tests/Makefile.am (check_PROGRAMS): Add struct_flock. 16036 (TESTS): Add struct_flock.test. 16037 * tests/.gitignore: Add struct_flock. 16038 16039 Convert parsers of flock structures to new mpers infrastructure. 16040 * fetch_struct_flock.c: New file. 16041 * Makefile.am (strace_SOURCES): Add it. 16042 * fcntl.c (print_struct_flock64): New function. 16043 (printflock64): Use fetch_struct_flock64 and print_struct_flock64. 16044 (printflock): Use fetch_struct_flock and print_struct_flock64. 16045 16046 fcntl.c: implement decoding for all known operations. 16047 * xlat/f_owner_types.in: New file. 16048 * xlat/f_seals.in: Likewise. 16049 * fcntl.c: Include "xlat/f_owner_types.h" and "xlat/f_seals.h". 16050 (print_f_owner_ex): New function. 16051 (SYS_FUNC(fcntl)): Use it. 16052 Handle F_SETPIPE_SZ, F_GETPIPE_SZ, F_OFD_SETLKW, 16053 F_OFD_SETLK, F_SETOWN_EX, F_ADD_SEALS, F_SETSIG, 16054 F_OFD_GETLK, F_GETOWN_EX, F_GET_SEALS, F_GETSIG. 16055 16056 fcntl.c: mark F_DUPFD and F_DUPFD_CLOEXEC return code with RVAL_FD flag. 16057 * fcntl.c (SYS_FUNC(fcntl)): Set RVAL_FD flag in the return code 16058 for F_DUPFD and F_DUPFD_CLOEXEC operations. 16059 16060 fcntl.c: remove redundant ifdefs. 16061 * fcntl.c (USE_PRINTFLOCK64): Remove macro. 16062 (printflock64): Define unconditionally. 16063 (SYS_FUNC(fcntl)): Do not check for USE_PRINTFLOCK64, 16064 F_DUPFD_CLOEXEC, F_NOTIFY, F_SETLEASE, and F_GETLEASE macros. 16065 16066 Update F_* constants. 16067 * xlat/fcntlcmds.in: Add F_SETOWN_EX, F_GETOWN_EX, F_GETOWNER_UIDS, 16068 F_OFD_GETLK, F_OFD_SETLK, F_OFD_SETLKW, and F_CANCELLK. 16069 Remove F_ALLOCSP, F_BLKSIZE, F_BLOCKS, F_CHKFL, F_CNVT, F_DUP2FD, 16070 F_ISSTREAM, F_NPRIV, F_PRIV, F_QUOTACL, F_REVOKE, F_RGETLK, F_RSETLK, 16071 F_RSETLKW, F_SHARE, and F_UNSHARE. 16072 Add default values. 16073 16074 Update LOCK_* constants. 16075 * xlat/flockcmds.in: Add LOCK_MAND, LOCK_READ, LOCK_WRITE, and LOCK_RW. 16076 Add default values. 16077 16078 2015-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 16079 16080 fcntl.c: use <linux/fcntl.h> instead of <fcntl.h> 16081 Include <linux/fcntl.h> for proper definitions of F_* constants 16082 and flock structures. 16083 16084 * configure.ac (AC_CHECK_TYPES): Check for struct flock, struct flock64, 16085 struct __kernel_flock, and struct __kernel_flock64 in <linux/fcntl.h>. 16086 * flock.h: New file. 16087 * Makefile.am (strace_SOURCES): Add it. 16088 * fcntl.c: Include it instead of <fcntl.h>. 16089 (struct flock64): Remove. 16090 (printflock): Use struct_kernel_flock instead of struct flock. 16091 (printflock64): Use struct_kernel_flock64 instead of struct flock64. 16092 16093 2015-11-26 Elvira Khabirova <lineprinter0 (a] gmail.com> 16094 16095 mpers: fix compound types with arbitrary member alignments. 16096 * mpers.sh: Compound types are now represented as packed 16097 with character arrays as explicit fillers inbetween members 16098 and at the end. 16099 16100 2015-11-26 Mike Frysinger <vapier (a] gentoo.org> 16101 16102 Support C libraries without System V shared memory/ipc. 16103 Some systems (like Bionic) omit support for SysV related code. That 16104 means no C library headers for strace to include. Add configure tests 16105 to probe the headers from the kernel and use them when they are 16106 available. 16107 16108 It might make more sense to never rely on the C library's headers as 16109 there is no guarantee or requirement that the structure layout between 16110 apps and the C library match that what is passed to the kernel. 16111 16112 * configure.ac (AC_CHECK_HEADERS): Check for linux/ipc.h, 16113 linux/mqueue.h, linux/msg.h, linux/sem.h, linux/shm.h, 16114 sys/ipc.h, sys/msg.h, sys/sem.h, and sys/shm.h. 16115 * ipc_defs.h: Include <sys/ipc.h> or <linux/ipc.h> depending 16116 on what is available. 16117 * ipc_msg.c: Replace <sys/ipc.h> with "ipc_defs.h". 16118 Fallback to <linux/msg.h> when available. 16119 * ipc_msgctl.c: Include <sys/msg.h>, <asm/msgbuf.h>, or <linux/msg.h> 16120 based on what is available. Note missing support for old ipc structs. 16121 * ipc_sem.c: Include <sys/sem.h> or <linux/sem.h> depending 16122 on what is available. Only decode sembuf when available. 16123 * ipc_shm.c: Fallback to <linux/shm.h> when available. 16124 * ipc_shmctl.c: Include <sys/shm.h>, <asm/shmbuf.h>, or <linux/shm.h> 16125 based on what is available. Note missing support for old ipc structs. 16126 * print_mq_attr.c: Fallback to <linux/mqueue.h> when available. 16127 16128 2015-11-25 Dmitry V. Levin <ldv (a] altlinux.org> 16129 16130 CREDITS.in: add Jian Zhen. 16131 Thanks to Jian Zhen for donation of https://github.com/strace/ and 16132 strace.io. 16133 16134 * CREDITS.in: Add Jian Zhen. 16135 16136 2015-11-24 Dmitry V. Levin <ldv (a] altlinux.org> 16137 16138 Fix syscall entries of unimplemented getpmsg and putpmsg syscalls. 16139 * linux/ia64/syscallent.h (getpmsg): Change SEN(printargs) 16140 to SEN(getpmsg). 16141 (putpmsg): Change SEN(printargs) to SEN(putpmsg). 16142 * linux/mips/syscallent-n32.h: Likewise. 16143 * linux/mips/syscallent-n64.h: Likewise. 16144 * linux/mips/syscallent-o32.h: Likewise. 16145 * linux/arm/syscallent.h (getpmsg, putpmsg): Set sys_flags to TN. 16146 * linux/bfin/syscallent.h (getpmsg, putpmsg): Likewise. 16147 * linux/hppa/syscallent.h (getpmsg, putpmsg): Likewise. 16148 * linux/i386/syscallent.h (getpmsg, putpmsg): Likewise. 16149 * linux/m68k/syscallent.h (getpmsg, putpmsg): Likewise. 16150 * linux/microblaze/syscallent.h (getpmsg, putpmsg): Likewise. 16151 * linux/powerpc/syscallent.h (getpmsg, putpmsg): Likewise. 16152 * linux/s390/syscallent.h (getpmsg, putpmsg): Likewise. 16153 * linux/s390x/syscallent.h (getpmsg, putpmsg): Likewise. 16154 * linux/x32/syscallent.h (getpmsg, putpmsg): Likewise. 16155 * linux/x86_64/syscallent.h (getpmsg, putpmsg): Likewise. 16156 16157 2015-11-24 Dmitry V. Levin <ldv (a] altlinux.org> 16158 16159 Remove parsers of getpmsg and putpmsg syscalls. 16160 These system calls are not implemented in the Linux kernel. 16161 16162 * linux/dummy.h(getpmsg, putpmsg): Move to the list of deprecated 16163 syscalls. 16164 * Makefile.am (strace_SOURCES): Remove stream.c. 16165 * stream.c: Remove. 16166 * xlat/pmsgflags.in: Remove. 16167 16168 2015-11-24 Dmitry V. Levin <ldv (a] altlinux.org> 16169 16170 Remove parser of query_module syscall. 16171 Since query_module syscall is present only in kernels before Linux 2.6 16172 and strace does not support those kernels, there is no use to keep this 16173 parser any longer. 16174 16175 * bjm.c: Do not include <sys/*>, "xlat/qm_which.h", 16176 and "xlat/modflags.h". 16177 (MOD_*, QM_*, module_symbol, module_info, SYS_FUNC(query_module)): 16178 Remove. 16179 * linux/dummy.h (sys_query_module): Add stub alias. 16180 * xlat/modflags.in: Remove. 16181 * xlat/qm_which.in: Remove. 16182 16183 2015-11-24 Dmitry V. Levin <ldv (a] altlinux.org> 16184 16185 Fix syscall entries of deprecated sysfs syscall. 16186 * linux/alpha/syscallent.h (sysfs): Change nargs from 5 to 3. 16187 * linux/hppa/syscallent.h (sysfs): Likewise. 16188 * linux/mips/syscallent-n32.h (sysfs): Likewise. 16189 * linux/mips/syscallent-n64.h (sysfs): Likewise. 16190 16191 Move sysfs syscall to deprecated category. 16192 * linux/dummy.h (sys_sysfs): Move to the list of deprecated syscalls. 16193 16194 Fix syscall entries of deprecated bdflush syscall. 16195 * linux/alpha/syscallent.h (bdflush): Change nargs from 0 to 2. 16196 * linux/arm/syscallent.h (bdflush): Likewise. 16197 * linux/avr32/syscallent.h (bdflush): Likewise. 16198 * linux/bfin/syscallent.h (bdflush): Likewise. 16199 * linux/hppa/syscallent.h (bdflush): Likewise. 16200 * linux/i386/syscallent.h (bdflush): Likewise. 16201 * linux/ia64/syscallent.h (bdflush): Likewise. 16202 * linux/m68k/syscallent.h (bdflush): Likewise. 16203 * linux/microblaze/syscallent.h (bdflush): Likewise. 16204 * linux/powerpc/syscallent.h (bdflush): Likewise. 16205 * linux/s390/syscallent.h (bdflush): Likewise. 16206 * linux/s390x/syscallent.h (bdflush): Likewise. 16207 * linux/sh/syscallent.h (bdflush): Likewise. 16208 * linux/sh64/syscallent.h (bdflush): Likewise. 16209 * linux/sparc/syscallent.h (bdflush): Likewise. 16210 16211 2015-11-22 Dmitry V. Levin <ldv (a] altlinux.org> 16212 16213 Implement name_to_handle_at and open_by_handle_at syscalls decoding. 16214 * file_handle.c: New file. 16215 * Makefile.am (strace_SOURCES): Add it. 16216 * linux/dummy.h (sys_name_to_handle_at, sys_open_by_handle_at): 16217 Remove stub aliases. 16218 * pathtrace.c (pathtrace_match): Add SEN_name_to_handle_at. 16219 * tests/file_handle.c: New file. 16220 * tests/file_handle.test: New test. 16221 * tests/Makefile.am (check_PROGRAMS): Add file_handle. 16222 (TESTS): Add file_handle.test. 16223 * tests/.gitignore: Add file_handle. 16224 16225 Implement lookup_dcookie syscall decoding. 16226 * lookup_dcookie.c: New file. 16227 * Makefile.am (strace_SOURCES): Add it. 16228 * linux/dummy.h (sys_lookup_dcookie): Remove stub alias. 16229 16230 Implement kexec_file_load syscall decoding. 16231 * xlat/kexec_file_load_flags.in: New file. 16232 * kexec.c: Include "xlat/kexec_file_load_flags.h". 16233 (SYS_FUNC(kexec_file_load)): New function. 16234 * linux/dummy.h (sys_kexec_file_load): Remove stub alias. 16235 * pathtrace.c (pathtrace_match): Add SEN_kexec_file_load. 16236 16237 Implement kcmp syscall decoding. 16238 * kcmp.c: New file. 16239 * Makefile.am (strace_SOURCES): Add it. 16240 * linux/dummy.h (sys_kcmp): Remove stub alias. 16241 * xlat/kcmp_types.in: New file. 16242 16243 Implement iopl syscall decoding. 16244 * iopl.c: New file. 16245 * Makefile.am (strace_SOURCES): Add it. 16246 * linux/dummy.h (sys_iopl): Remove stub alias. 16247 16248 Implement ioperm syscall decoding. 16249 * ioperm.c: New file. 16250 * Makefile.am (strace_SOURCES): Add it. 16251 * linux/dummy.h (sys_ioperm): Remove stub alias. 16252 16253 net: fix printing of IP_RECVOPTS/IP_RETOPTS cmsg options. 16254 * net.c (print_cmsg_ip_opts): Print each byte as unsigned char. 16255 16256 userfaultfd: fix pathtrace support. 16257 * pathtrace.c (pathtrace_match): Add SEN_userfaultfd. 16258 16259 2015-11-22 Dmitry V. Levin <ldv (a] altlinux.org> 16260 16261 Implement IPPROTO_IP control messages decoding. 16262 * net.c: Include "xlat/ip_cmsg_types.h". 16263 (print_cmsg_ip_pktinfo, print_cmsg_ip_ttl, print_cmsg_ip_tos, 16264 print_cmsg_ip_opts, print_cmsg_ip_recverr, print_cmsg_ip_checksum, 16265 print_cmsg_ip_origdstaddr): New functions. 16266 (print_cmsg_type_data): Add generic SOL_IP level decoding. 16267 Use these functions for decoding of IP_PKTINFO, IP_TTL, IP_TOS, 16268 IP_RECVOPTS, IP_RETOPTS, IP_RECVERR, IP_ORIGDSTADDR, IP_CHECKSUM, 16269 and SCM_SECURITY type messages. 16270 * xlat/ip_cmsg_types.in: New file. 16271 * xlat/sockipoptions.in: Move IP_RETOPTS before IP_RECVRETOPTS. 16272 * tests/inet-cmsg.c: New file. 16273 * tests/inet-cmsg.test: New test. 16274 * tests/Makefile.am (check_PROGRAMS): Add inet-cmsg. 16275 (TESTS): Add inet-cmsg.test. 16276 * tests/.gitignore: Add inet-cmsg. 16277 16278 Suggested-by: Orion Poplawski <orion (a] cora.nwra.com> 16279 16280 2015-11-22 Dmitry V. Levin <ldv (a] altlinux.org> 16281 16282 Simplify control messages printers. 16283 Do not pass sizeof(struct cmsghdr) to every cmsg printer. 16284 16285 * net.c (printcmsghdr): Pass pointer to cmsg_data and length 16286 of cmsg_data to print_cmsg_type_data. 16287 (print_cmsg_type_data): Update prototype. Pass pointer to cmsg_data 16288 and length of cmsg_data to cmsg printers. 16289 (print_scm_rights, print_scm_creds, print_scm_security): Update. 16290 16291 2015-11-21 Dmitry V. Levin <ldv (a] altlinux.org> 16292 16293 net: factor out address printing code to a separate function. 16294 * net.c (sockaddr_buf_t): New type. 16295 (print_sockaddr): New function. 16296 (printsock, print_group_req): Use it. 16297 16298 2015-11-20 Dmitry V. Levin <ldv (a] altlinux.org> 16299 16300 mpers: skip xlat struct definitions in mpers mode. 16301 Avoid duplicate definitions of xlat structures in files 16302 compiled in mpers mode. 16303 16304 Each xlat file defines the corresponding xlat struct with 16305 either global or local visibility using the following rules: 16306 16307 - if xlat struct declaration is available in defs.h, 16308 a global definition is provided in regular mode, 16309 and nothing is provided in mpers mode; 16310 - otherwise, if xlat file is included by a mpers source file, 16311 a global definition is provided in regular mode 16312 (unless no mpers mode is supported on this architecture, 16313 in that case, a local definition is provided instead), 16314 and a declaration is provided in mpers mode; 16315 - otherwise, a local definition is provided in regular mode, 16316 and an error message is printed in mpers mode. 16317 16318 Fallback definitions of constants provided by xlat files 16319 remain available in all modes. 16320 16321 * bootstrap: Invoke generate_mpers_am.sh before xlat/gen.sh. 16322 * defs.h (adjtimex_modes, adjtimex_status, sigev_value): Remove. 16323 * generate_mpers_am.sh: Generate mpers_xlat.h. 16324 * Makefile.am (EXTRA_DIST): Add mpers_xlat.h. 16325 * print_sigevent.c: Include "xlat/sigev_value.h" unconditionally. 16326 * print_timex.c: Include "xlat/adjtimex_modes.h" and 16327 "xlat/adjtimex_status.h" unconditionally. 16328 * xlat/gen.sh (cond_xlat): Move printing of fallback definitions ... 16329 (cond_def): ... here. 16330 (gen_header): Check also mpers_xlat.h for global declarations 16331 of xlat structures. 16332 Process input file twice, first time print directives 16333 only, second time print everything. 16334 Wrap struct xlat into #ifdef IN_MPERS ... #else ... #endif. 16335 * xlat/getrandom_flags.in: Cleanup. 16336 16337 2015-11-20 Dmitry V. Levin <ldv (a] altlinux.org> 16338 16339 tests: rewrite getdents test in C for better coverage. 16340 * tests/getdents.awk: Remove. 16341 * tests/getdents.out: Remove. 16342 * tests/getdents.c: New file. 16343 * tests/getdents.test: Rewrite. 16344 * tests/getdents64.c: New file. 16345 * tests/getdents64.test: New test. 16346 * tests/Makefile.am (check_PROGRAMS): Add getdents and getdents64. 16347 (TESTS): Add getdents64.test. 16348 (EXTRA_DIST): Remove getdents.awk and getdents.out. 16349 * tests/.gitignore: Add getdents and getdents64. 16350 16351 2015-11-19 Dmitry V. Levin <ldv (a] altlinux.org> 16352 16353 tests: add readdir.test. 16354 * tests/readdir.c: New file. 16355 * tests/readdir.test: New test. 16356 * tests/Makefile.am (check_PROGRAMS): Add readdir. 16357 (TESTS): Add readdir.test. 16358 * tests/.gitignore: Add readdir. 16359 16360 Mpersify parsers of readdir and getdents syscalls. 16361 * defs.h (dirent_types): New xlat prototype. 16362 * dirent.c: Stop including "xlat/direnttypes.h". 16363 (kernel_dirent): New typedef. Mpersify it. 16364 (print_old_dirent): Use it instead of old_dirent_t. 16365 (SYS_FUNC(getdents)): Use it instead of struct kernel_dirent. 16366 Rename direnttypes to dirent_types. 16367 (SYS_FUNC(getdents64)): Move ... 16368 * dirent64.c: ... here. Rename direnttypes to dirent_types. 16369 Include "xlat/dirent_types.h". 16370 * Makefile.am (strace_SOURCES): Add dirent64.c. 16371 * xlat/direnttypes.in: Rename to xlat/dirent_types.in. 16372 16373 2015-11-19 Gabriel Laskar <gabriel (a] lse.epita.fr> 16374 16375 getdents: fix typos in array output. 16376 Array should be enclosed by square brakets, and elements should be 16377 separated by commas. 16378 16379 * dirent.c (SYS_FUNC(getdents), SYS_FUNC(getdents64)): Fix typos 16380 in array output. 16381 * tests/getdents.awk: Update regexps to match fixed output. 16382 * tests/getdents.out: Update output. 16383 16384 2015-11-19 Dmitry V. Levin <ldv (a] altlinux.org> 16385 16386 printcmsghdr: move type and data decoders to a separate function. 16387 * net.c (print_scm_rights, print_scm_creds, print_scm_security): Change 16388 to return void. Move printing of struct cmsghdr closing '}' ... 16389 (printcmsghdr): ... here. Move type and data decoders to ... 16390 (print_cmsg_type_data): ... new function. 16391 16392 2015-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 16393 16394 Assume that libc provides sendmsg. 16395 Starting with commit v4.6-281-g7af9f35, we implicitly assume that 16396 HAVE_SENDMSG is always defined. Therefore, the check for sendmsg 16397 availability is redundant and could be safely removed. 16398 16399 * configure.ac (AC_CHECK_FUNCS): Remove sendmsg. 16400 * linux/dummy.h [!HAVE_SENDMSG] (sys_recvmsg, sys_sendmsg): Remove 16401 stub aliases. 16402 * net.c [HAVE_SENDMSG]: Define unconditionally. 16403 * syscall.c (dumpio) [HAVE_SENDMSG]: Likewise. 16404 16405 2015-11-18 Dmitry V. Levin <ldv (a] altlinux.org> 16406 16407 net.c: move fallback definition of SCM_SECURITY to xlat/ 16408 * net.c: Move fallback definition of SCM_SECURITY ... 16409 * xlat/scmvals.in: ... here. 16410 16411 2015-11-17 Dmitry V. Levin <ldv (a] altlinux.org> 16412 16413 Implement mlock2 syscall decoding. 16414 * mem.c: Include "xlat/mlock_flags.h". 16415 (SYS_FUNC(mlock2)): New function. 16416 * xlat/mlock_flags.in: New file. 16417 * xlat/mlockall_flags.in: Add MCL_ONFAULT, add default values. 16418 * linux/dummy.h (mlock2): Remove. 16419 * tests/mlock2.c: New file. 16420 * tests/mlock2.test: New test. 16421 * tests/Makefile.am (check_PROGRAMS): Add mlock2. 16422 (TESTS): Add mlock2.test. 16423 * tests/.gitignore Add mlock2. 16424 16425 Implement membarrier syscall decoding. 16426 * membarrier.c: New file. 16427 * Makefile.am (strace_SOURCES): Add it. 16428 * xlat/membarrier_cmds.in: New file. 16429 * linux/dummy.h (membarrier): Remove. 16430 * tests/membarrier.c: New file. 16431 * tests/membarrier.test: New test. 16432 * tests/Makefile.am (check_PROGRAMS): Add membarrier. 16433 (TESTS): Add membarrier.test. 16434 * tests/.gitignore: Add membarrier. 16435 16436 Implement userfaultfd syscall decoding. 16437 * userfaultfd.c: New file. 16438 * Makefile.am (strace_SOURCES): Add it. 16439 * xlat/uffd_flags.in: New file. 16440 * linux/dummy.h (userfaultfd): Remove. 16441 * tests/userfaultfd.c: New file. 16442 * tests/userfaultfd.test: New test. 16443 * tests/Makefile.am (check_PROGRAMS): Add userfaultfd. 16444 (TESTS): Add userfaultfd.test. 16445 * tests/.gitignore: Add userfaultfd. 16446 16447 2015-11-17 Dmitry V. Levin <ldv (a] altlinux.org> 16448 16449 ia64: wire up kcmp syscall. 16450 ia64 has kcmp syscall starting with linux kernel commit 16451 v4.3-rc7-1-gd305c47. 16452 16453 * linux/ia64/syscallent.h (kcmp): New entry. 16454 16455 2015-11-17 Dmitry V. Levin <ldv (a] altlinux.org> 16456 16457 powerpc: wire up direct sysv ipc syscalls. 16458 Starting with linux commit v4.3-rc3-33-ga342361, powerpc has 16459 direct sysv ipc syscalls in addition to traditional ipc syscall. 16460 16461 * linux/powerpc/syscallent.h (semop, semget, semctl, semtimedop, msgsnd, 16462 msgrcv, msgget, msgctl, shmat, shmdt, shmget, shmctl): New entries. 16463 16464 2015-11-17 Dmitry V. Levin <ldv (a] altlinux.org> 16465 16466 Wire up userfaultfd, membarrier, and mlock2 syscalls. 16467 * linux/dummy.h (membarrier, mlock2, userfaultfd): New stub aliases. 16468 * linux/32/syscallent.h (userfaultfd, membarrier, mlock2): New entries. 16469 * linux/64/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16470 * linux/arm/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16471 * linux/hppa/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16472 * linux/i386/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16473 * linux/ia64/syscallent.h (userfaultfd, membarrier): Likewise. 16474 * linux/m68k/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16475 * linux/microblaze/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16476 * linux/mips/syscallent-n32.h (userfaultfd, membarrier, mlock2): Likewise. 16477 * linux/mips/syscallent-n64.h (userfaultfd, membarrier, mlock2): Likewise. 16478 * linux/mips/syscallent-o32.h (userfaultfd, membarrier, mlock2): Likewise. 16479 * linux/powerpc/syscallent.h (userfaultfd, membarrier): Likewise. 16480 * linux/s390/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16481 * linux/s390x/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16482 * linux/sparc/syscallent.h (membarrier, userfaultfd, mlock2): Likewise. 16483 * linux/x32/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16484 * linux/x86_64/syscallent.h (userfaultfd, membarrier, mlock2): Likewise. 16485 16486 2015-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 16487 16488 sprintflags: skip zero flags. 16489 Tweak sprintflags behaviour to match printflags. 16490 16491 * util.c (sprintflags): Skip zero flags unless the value passed 16492 to sprintflags is also zero. 16493 16494 2015-11-16 Mike Frysinger <vapier (a] gentoo.org> 16495 16496 printflags: handle empty xlats. 16497 If the set of headers are unable to produce a valid list, printflags 16498 will try to pass NULL to tprints which crashes. Add a sanity check 16499 for this edge case. 16500 16501 * util.c (printflags): Check xlat->str is not NULL. 16502 16503 2015-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 16504 16505 mpers: forward mpers_DEFS to mpers.sh. 16506 mpers_DEFS has to be forwarded to mpers.sh so that config.h would be 16507 properly included by defs.h at preprocessor stage. 16508 16509 * Makefile.am (mpers-m%.stamp): Add the whole $(mpers_sh_opts) set of 16510 options to mpers.sh's CPPFLAGS. 16511 16512 2015-11-16 Dmitry V. Levin <ldv (a] altlinux.org> 16513 16514 tests/ioctl: workaround glibc ioctl wrapper on powerpc. 16515 * tests/ioctl.c (main) [POWERPC] Disable TCGETS test. 16516 16517 2015-11-15 Dmitry V. Levin <ldv (a] altlinux.org> 16518 16519 powerpc: wire up switch_endian syscall. 16520 powerpc has switch_endian syscall starting with linux commit 16521 v4.0-rc4-67-g529d235. 16522 16523 * linux/powerpc/syscallent.h (switch_endian): New entry. 16524 16525 2015-11-15 Dmitry V. Levin <ldv (a] altlinux.org> 16526 16527 sparc: reserve more space for new syscalls. 16528 Move socket subcalls further down the table to make room 16529 for new syscalls. 16530 16531 * linux/sparc/syscallent.h (SYS_socket_subcall): Raise from 353 to 400. 16532 16533 2015-11-15 Dmitry V. Levin <ldv (a] altlinux.org> 16534 16535 m68k: wire up direct socket syscalls. 16536 Starting with linux commit v4.3-rc3-1-g5b3f33e, m68k has direct 16537 socket syscalls in addition to traditional socketcall syscall. 16538 16539 * linux/m68k/syscallent.h (socket, socketpair, bind, connect, listen, 16540 accept4, getsockopt, setsockopt, getsockname, getpeername, sendto, 16541 sendmsg, recvfrom, recvmsg, shutdown, recvmmsg, sendmmsg): New entries. 16542 16543 2015-11-15 Dmitry V. Levin <ldv (a] altlinux.org> 16544 16545 i386: wire up direct socket syscalls. 16546 Starting with linux commit v4.2-rc1-64-g9dea5dc, x86 has direct 16547 socket syscalls in addition to traditional socketcall syscall. 16548 16549 * linux/i386/syscallent.h (socket, socketpair, bind, connect, listen, 16550 accept4, getsockopt, setsockopt, getsockname, getpeername, sendto, 16551 sendmsg, recvfrom, recvmsg, shutdown): New entries. 16552 16553 2015-11-11 Heiko Carstens <heiko.carstens (a] de.ibm.com> 16554 16555 s390, s390x: update syscall tables. 16556 * linux/s390/syscallent.h: Add new syscalls available with kernel 4.3.0. 16557 * linux/s390x/syscallent.h: Likewise. 16558 16559 2015-11-07 Dmitry V. Levin <ldv (a] altlinux.org> 16560 16561 Fix *_printer_defs.h rules ambiguousness. 16562 There is an ambiguousness in *_printer_defs.h rules definition: 16563 16564 $ grep '^[^ ]*_defs\.h: ' Makefile.am 16565 m%_defs.h: $(srcdir_mpers_source_files) 16566 %_printer_defs.h: $(srcdir_mpers_source_files) 16567 16568 While it appears to work with GNU make, it has to be fixed nevertheless. 16569 16570 * Makefile.am (m%_defs.h): Rename to m%_type_defs.h. 16571 (mpers_m32_targets): Rename m32_defs.h to m32_type_defs.h. 16572 (mpers_mx32_targets): Rename mx32_defs.h to mx32_type_defs.h. 16573 * mpers_type.h: Rename m32_defs.h to m32_type_defs.h, 16574 mx32_defs.h to mx32_type_defs.h. 16575 * .gitignore: Likewise. 16576 16577 Reported-by: Elliott Hughes <enh (a] google.com> 16578 16579 2015-10-09 Dmitry V. Levin <ldv (a] altlinux.org> 16580 16581 fcntl.c: make use of RVAL_DECODED. 16582 * fcntl.c (SYS_FUNC(fcntl)): Return RVAL_DECODED for write-only operations. 16583 16584 2015-10-08 Dmitry V. Levin <ldv (a] altlinux.org> 16585 16586 desc.c: move parser of fcntl syscall to a separate file. 16587 * fcntl.c: New file. 16588 * Makefile.am (strace_SOURCES): Add it. 16589 * desc.c (printflock64, printflock, SYS_FUNC(fcntl)): Move to fcntl.c. 16590 16591 desc.c: move parser of flock syscall to a separate file. 16592 * flock.c: New file. 16593 * Makefile.am (strace_SOURCES): Add it. 16594 * desc.c (SYS_FUNC(flock)): Move to flock.c. 16595 16596 2015-10-08 Dmitry V. Levin <ldv (a] altlinux.org> 16597 16598 tests: fix false uio.test failures. 16599 * tests/uio.c (main): Use descriptor number 0 in pread/pwrite 16600 and preadv/pwritev syscalls. 16601 * tests/uio.expected: Update regexps. 16602 16603 Reported-by: Lennart Sorensen <lsorense (a] csclub.uwaterloo.ca> 16604 16605 2015-10-01 Gabriel Laskar <gabriel (a] lse.epita.fr> 16606 16607 Fix make -j builds. 16608 In files generated by mpers scripts, includes directives are taken from 16609 original files where the type definition was done. This causes to 16610 include defs.h in multiple files. defs.h includes printers.h header, 16611 which is a generated header. 16612 16613 This patch add an explicit dependency to printers.h for the mpers 16614 scripts. 16615 16616 * Makefile.am (mpers-m%.stamp): Add printers.h to order-only 16617 prerequisites. 16618 16619 2015-09-29 Mike Frysinger <vapier (a] gentoo.org> 16620 16621 mpers: fix shell code to conform better to POSIX. 16622 The `echo -n` behavior is non-portable, so use printf instead. 16623 16624 * generate_mpers_am.sh: Change `echo -n` to `printf`. 16625 16626 2015-09-23 Gabriel Laskar <gabriel (a] lse.epita.fr> 16627 16628 ioctl: fix ioctl command number decoding in case of conflicts. 16629 When a command number was decoded through ioctl_decode_command_number(), 16630 there was no check for conflicts with other potential ioctls numbers. 16631 16632 For example: 16633 ioctl(fd, MCE_GET_RECORD_LEN, &i); 16634 output: 16635 ioctl(3, MIXER_READ(1), 0x7ffddce74a58) = 0 16636 instead of: 16637 ioctl(3, MIXER_READ(1) or MCE_GET_RECORD_LEN, 0x7ffee435ce08) = 0 16638 16639 * ioctl.c (SYS_FUNC(ioctl)): Fix ioctl command number decoding 16640 in case of conflicts. 16641 * tests/ioctl.c (main): Add a case for command number conflicts. 16642 16643 2015-09-23 Dmitry V. Levin <ldv (a] altlinux.org> 16644 16645 tests: convert ioctl.test from match_grep to match_diff. 16646 * tests/ioctl.c (main): Print expected output. 16647 * tests/ioctl.test: Use match_diff instead of match_grep. 16648 * tests/ioctl.expected: Remove. 16649 * tests/Makefile.am (EXTRA_DIST): Remove ioctl.expected. 16650 16651 2015-09-20 Dmitry V. Levin <ldv (a] altlinux.org> 16652 16653 Convert parser of seccomp filter program to new mpers infrastructure. 16654 * seccomp_fprog.h: New file. 16655 * fetch_seccomp_fprog.c: New file. 16656 * Makefile.am (strace_SOURCES): Add them. 16657 * seccomp.c: Include "seccomp_fprog.h". 16658 (print_seccomp_filter): Use fetch_seccomp_fprog. 16659 16660 2015-09-19 Dmitry V. Levin <ldv (a] altlinux.org> 16661 16662 tests/init.sh: enhance match_grep error diagnostics. 16663 * tests/init.sh (match_grep): Check patterns one by one, 16664 output only those patterns that didn't match. 16665 16666 tests/init.sh: fix comment. 16667 * tests/init.sh (match_awk): Fix usage description. 16668 16669 tests: add one more case to select.test. 16670 * tests/select.c (main): Check how timeout is printed 16671 on exiting syscall. 16672 16673 tests: uncouple pselect6 from select.test. 16674 * tests/select.c Do not include <string.h>. 16675 Include <sys/syscall.h>. 16676 [!__NR_select]: Skip the test. 16677 (main): Remove pselect6 support, test just select syscall. 16678 * tests/select.test: Remove all pselect6 checks, test just 16679 select syscall. 16680 16681 tests: robustify select test. 16682 * tests/select.c: Do not include <assert.h>. 16683 (main): Skip the test instead of assertions. 16684 Add some padding to the timeval structure. 16685 16686 tests: add one more case to pselect6.test. 16687 * tests/pselect6.c (main): Check how timeout is printed 16688 on exiting syscall. 16689 16690 tests: robustify pselect6 test. 16691 * tests/pselect6.c: Do not include <assert.h> and <string.h>. 16692 Include <sys/syscall.h>. 16693 [!__NR_pselect6]: Skip the test. 16694 (main): Skip the test instead of assertions. 16695 Add some padding to the timespec structure. 16696 16697 Convert another parser of struct timeval to new mpers infrastructure. 16698 * print_time.c (sprint_timeval): New mpers printer. 16699 [ALPHA] (sprint_timeval32): New function. 16700 * defs.h [ALPHA] (sprint_timeval32): New prototype. 16701 (bitness_t, TIMEVAL_TEXT_BUFSIZE, printtv_bitness, sprinttv): Remove. 16702 * desc.c (decode_select): Replace bitness parameter with two printers. 16703 Use them instead of printtv_bitness and sprinttv. 16704 (sys_oldselect, sys_select): Pass print_timeval and sprint_timeval 16705 to decode_select. 16706 [ALPHA] (sys_osf_select): Pass print_timeval32 and sprint_timeval32 16707 to decode_select. 16708 (pselect6): Pass print_timespec and sprint_timespec to decode_select. 16709 * time.c (UTIME_NOW, UTIME_OMIT, current_time_t_is_compat, 16710 struct timeval32, printtv_bitness, do_sprinttv, sprinttv): Remove. 16711 16712 Convert another parser of struct timespec to new mpers infrastructure. 16713 * print_time.c (sprint_timespec): New mpers printer. 16714 * defs.h (TIMESPEC_TEXT_BUFSIZE): Update. 16715 (sprint_timespec): Remove. 16716 * time.c (sprint_timespec): Remove. 16717 * net.c (sys_recvmmsg): Update callers. 16718 * poll.c (decode_poll_exiting): Likewise. 16719 16720 tests: add another case to pselect6 test. 16721 * tests/pselect6.c: Include <sys/time.h>. 16722 (handler): New function. 16723 (main): Install an interval timer. 16724 Use it to check how ERESTARTNOHAND is printed. 16725 16726 Fix decoding of gettimeofday and settimeofday. 16727 * time.c (print_timezone): new function. 16728 (sys_gettimeofday, sys_settimeofday): Use it instead of print_timeval 16729 to print struct timezone. 16730 [ALPHA] (sys_osf_gettimeofday, sys_osf_settimeofday): Use it 16731 instead of print_timeval32 to print struct timezone. 16732 * tests/xettimeofday.c: New file. 16733 * tests/xettimeofday.test: New test. 16734 * tests/Makefile.am (check_PROGRAMS): Add xettimeofday. 16735 (TESTS): Add xettimeofday. 16736 * tests/.gitignore: Add xettimeofday. 16737 16738 Convert parser of struct timeval to new mpers infrastructure. 16739 * defs.h (printtv, printtv_special): Remove. 16740 [ALPHA] (print_timeval32, print_timeval32_pair): New prototypes. 16741 * print_time.c (print_timeval): New mpers printer. 16742 [ALPHA] (print_timeval32, print_timeval32_pair): New functions. 16743 * time.c (sys_gettimeofday, sys_settimeofday): Use print_timeval 16744 instead of printtv. 16745 [ALPHA] (sys_osf_gettimeofday, sys_osf_settimeofday): 16746 Use print_timeval32 instead of printtv_bitness. 16747 * utimes.c [ALPHA] (sys_osf_utimes): Use print_timeval32_pair 16748 instead of printtv_bitness. 16749 16750 Convert parser of struct timespec to new mpers infrastructure. 16751 * defs.h (print_timespec): Remove. 16752 * print_time.c (print_timespec): New mpers printer. 16753 * futex.c (sys_futex): Use print_timespec instead of printtv. 16754 * ipc_sem.c (sys_semtimedop): Likewise. 16755 * mq.c (sys_mq_timedsend, sys_mq_timedreceive): Likewise. 16756 * time.c (clock_settime, clock_gettime, clock_nanosleep): Likewise. 16757 (print_timespec): Remove. 16758 16759 Remove unused parser of adjtime syscall. 16760 * time.c (sys_adjtime): Remove. 16761 16762 Fix decoding of clock_nanosleep. 16763 * time.c (sys_clock_nanosleep): Use is_erestart, 16764 temporarily_clear_syserror, and restore_cleared_syserror. 16765 * tests/clock_nanosleep.c: New file. 16766 * tests/clock_nanosleep.test: New test. 16767 * tests/Makefile.am (check_PROGRAMS): Add clock_nanosleep. 16768 (TESTS): Add clock_nanosleep.test. 16769 * tests/.gitignore: Add clock_nanosleep. 16770 16771 Add is_erestart helper function. 16772 * defs.h (is_erestart): New prototype. 16773 * syscall.c (is_erestart): New function. 16774 * time.c (sys_nanosleep): Use is_erestart, 16775 temporarily_clear_syserror, and restore_cleared_syserror. 16776 16777 Add helper functions to clear/restore syserror. 16778 * defs.h (temporarily_clear_syserror, restore_cleared_syserror): 16779 New prototypes. 16780 * syscall.c (saved_u_error): New variable. 16781 (temporarily_clear_syserror, restore_cleared_syserror): New functions. 16782 * aio.c (sys_io_getevents): Use temporarily_clear_syserror 16783 and restore_cleared_syserror. 16784 * mq.c (sys_mq_timedreceive): Likewise. 16785 * signal.c (sys_rt_sigtimedwait): Likewise. 16786 16787 tests: add nanosleep.test. 16788 * tests/nanosleep.c: New file. 16789 * tests/nanosleep.test: New test. 16790 * tests/Makefile.am (check_PROGRAMS): Add nanosleep. 16791 (TESTS): Add nanosleep.test. 16792 * tests/.gitignore: Add nanosleep. 16793 16794 tests: rewrite restart_syscall in C. 16795 * tests/restart_syscall.c: New file. 16796 * tests/restart_syscall.expected: Remove. 16797 * tests/restart_syscall_unknown.expected: Remove. 16798 * tests/restart_syscall.test: Update to use restart_syscall. 16799 * tests/Makefile.am (check_PROGRAMS): Add restart_syscall. 16800 (EXTRA_DIST): Remove restart_syscall.expected 16801 and restart_syscall_unknown.expected. 16802 * tests/.gitignore: Add restart_syscall. 16803 16804 Properly initialize siginfo_t object passed to print_stopped function. 16805 * strace.c (trace): Clear the whole siginfo_t variable before passing it 16806 to ptrace(PTRACE_GETSIGINFO) because the latter may initialize only a 16807 part of the structure. 16808 16809 tests: add clock_xettime.test. 16810 * tests/clock_xettime.c: New file. 16811 * tests/clock_xettime.test: New test. 16812 * tests/Makefile.am (check_PROGRAMS): Add clock_xettime. 16813 (TESTS): Add clock_xettime.test. 16814 * tests/.gitignore: Add clock_xettime. 16815 16816 Convert parser of struct itimerval to new mpers infrastructure. 16817 * defs.h [ALPHA] (print_itimerval32): New prototype. 16818 * print_time.c (print_itimerval): New mpers printer. 16819 [ALPHA] (timeval32_t): New typedef. 16820 [ALPHA] (print_timeval32_t, print_itimerval32): New functions. 16821 * time.c (sys_getitimer, sys_setitimer): Use print_itimerval instead 16822 of printitv. 16823 [ALPHA] (sys_osf_getitimer, sys_osf_setitimer): Use print_itimerval32 16824 instead of printitv_bitness. 16825 (tprint_timeval32, tprint_timeval, printitv_bitness, printitv): Remove. 16826 16827 tests: add xetitimer.test. 16828 * tests/xetitimer.c: New file. 16829 * tests/xetitimer.test: New test. 16830 * tests/Makefile.am (check_PROGRAMS): Add xetitimer. 16831 (TESTS): Add xetitimer.test. 16832 * tests/.gitignore: Add xetitimer. 16833 16834 Convert parser of struct itimerspec to new mpers infrastructure. 16835 * print_time.c (print_itimerspec): New mpers printer. 16836 * time.c (sys_timer_settime, sys_timer_gettime, sys_timerfd, 16837 sys_timerfd_settime, sys_timerfd_gettime): Use it instead of printitv. 16838 16839 2015-09-17 Dmitry V. Levin <ldv (a] altlinux.org> 16840 16841 print_time.c: introduce print_timespec_t helper. 16842 * print_time.c (time_fmt): New constant string. 16843 (print_timeval_t): Use it. 16844 (print_timespec_t): New function. 16845 (print_timespec_t_utime): Use it. 16846 16847 tests: add timerfd_xettime.test. 16848 * tests/timerfd_xettime.c: New file. 16849 * tests/timerfd_xettime.test: New test. 16850 * tests/Makefile.am (check_PROGRAMS): Add timerfd_xettime. 16851 (TESTS): Add timerfd_xettime.test. 16852 * tests/.gitignore: Add timerfd_xettime. 16853 16854 tests: add timer_xettime.test. 16855 * tests/timer_xettime.c: New file. 16856 * tests/timer_xettime.test: New test. 16857 * tests/Makefile.am (check_PROGRAMS): Add timer_xettime. 16858 (TESTS): Add timer_xettime.test. 16859 * tests/.gitignore: Add timer_xettime. 16860 16861 time.c: move parser of time syscall to print_time.c. 16862 * time.c (current_time_t_is_int32): Remove. 16863 (sys_time): Move ... 16864 * print_time.c: ... here. Mpersify time_t. 16865 16866 print_time.c: remove unused function parameters. 16867 * print_time.c (print_timespec_t_utime, print_timeval_t): Remove 16868 "struct tcb *" parameter. 16869 (print_timespec_utime_pair, print_timeval_pair): Update callers. 16870 16871 Add struct timex.tai support. 16872 * configure.ac (AC_CHECK_MEMBERS): Add struct timex.tai. 16873 * print_timex.c (print_timex) [HAVE_STRUCT_TIMEX_TAI]: Print tai field. 16874 * tests/adjtimex.c (main) [HAVE_STRUCT_TIMEX_TAI]: Likewise. 16875 16876 Convert parser of struct timex to new mpers infrastructure. 16877 * defs.h (adjtimex_modes, adjtimex_status): New xlat prototypes. 16878 * print_timex.c (struct_timex): New typedef. Mpersify it. 16879 [IN_MPERS]: Do not include "xlat/adjtimex_modes.h" 16880 and "xlat/adjtimex_status.h". 16881 [SUPPORTED_PERSONALITIES > 1]: Remove. 16882 (tprint_timeval): Remove. 16883 (tprint_timex): Rename to print_timex. Mpersify it. 16884 * time.c (do_adjtimex): Rename tprint_timex to print_timex. 16885 * tests/adjtimex.c: New file. 16886 * tests/adjtimex.test: New test. 16887 * tests/Makefile.am (check_PROGRAMS): Add adjtimex. 16888 (TESTS): Add adjtimex.test. 16889 * tests/.gitignore: Add adjtimex. 16890 16891 Move parser of struct timex to a separate file. 16892 * print_timex.c: New file. 16893 * Makefile.am (strace_SOURCES): Add it. 16894 * time.c (tprint_timex32, tprint_timex): Move to print_timex.c. 16895 16896 Enhance parser of struct sigevent. 16897 * print_sigevent.c (print_sigevent): Always print names 16898 of struct_sigevent fields along with their values. 16899 Print signal name of sigev_signo for those sigev_notify values 16900 that require valid signal numbers. 16901 * tests/timer_create.c: New file. 16902 * tests/timer_create.test: New test. 16903 * tests/Makefile.am (check_PROGRAMS): Add timer_create. 16904 (TESTS): Add timer_create.test. 16905 * tests/.gitignore: Add timer_create. 16906 16907 2015-09-16 Dmitry V. Levin <ldv (a] altlinux.org> 16908 16909 Convert parser of struct sigevent to new mpers infrastructure. 16910 * defs.h (sigev_value): New prototype. 16911 (printsigevent): Remove. 16912 * print_sigevent.c (struct_sigevent): New typedef. Mpersify it. 16913 [IN_MPERS]: Do not include "xlat/sigev_value.h". 16914 (printsigevent32): Remove. 16915 (printsigevent): Rename to print_sigevent. Mpersify it. 16916 * mq.c (sys_mq_notify): Rename printsigevent to print_sigevent. 16917 * time.c (sys_timer_create): Likewise. 16918 16919 Move parser of struct sigevent to a separate file. 16920 * print_sigevent.c: New file. 16921 * Makefile.am (strace_SOURCES): Add it. 16922 * time.c (printsigevent32, printsigevent): Move to print_sigevent.c. 16923 16924 time.c: move fallback definitions of SIGEV_* values to xlat/ 16925 * time.c: Move fallback definitions of SIGEV_* values ... 16926 * xlat/sigev_value.in: ... here. 16927 16928 Simplify use of mpers printers. 16929 * native_defs.h: New file. 16930 * syscall.c: Include it. 16931 * mpers_type.h [!IN_MPERS] (MPERS_DEFS): Change to "native_defs.h". 16932 * defs.h (MPERS_PRINTER_NAME): Remove. 16933 [SUPPORTED_PERSONALITIES > 1] (MPERS_PRINTER_NAME, printers): Move ... 16934 * Makefile.am (printers.h): ... here. 16935 Add macro definitions for mpers printers. 16936 (m%_defs.h): Add redefinition of MPERS_PRINTER_NAME and inclusion 16937 of "$(mpers_PREFIX)printer_decls.h". 16938 (strace_SOURCES): Add native_defs.h. 16939 * README-mpers: Update instructions for using mpers printers. 16940 * ipc_msg.c (tprint_msgsnd, tprint_msgrcv): Call tprint_msgbuf directly. 16941 * mq.c (sys_mq_open, mq_getsetattr): Call printmqattr directly. 16942 * process.c (sys_ptrace): Call printsiginfo_at directly. 16943 * signal.c (print_sigqueueinfo, sys_rt_sigtimedwait): Likewise. 16944 * resource.c (sys_getrusage): Call printrusage directly. 16945 * utimes.c (sys_utimensat): Call print_timespec_utime_pair directly. 16946 (sys_utimes, sys_futimesat): Call print_timeval_pair directly. 16947 * wait.c (printwaitn): Call printrusage directly. 16948 (sys_waitid): Call printrusage and printsiginfo_at directly. 16949 16950 2015-09-15 Dmitry V. Levin <ldv (a] altlinux.org> 16951 16952 Add a new helper function umove_ulong_array_or_printaddr. 16953 * defs.h (umove_ulong_array_or_printaddr): New prototype. 16954 * util.c (umove_ulong_array_or_printaddr): New function. 16955 * desc.c (sys_pselect6): Use it instead of open-coding 16956 a proxy struct parser for different personalities. 16957 * io.c (tprint_iov_upto): Use it instead of open-coding 16958 a struct iovec parser for different personalities. 16959 * kexec.c (print_kexec_segments): Use it instead of open-coding 16960 a struct kexec_segment parser for different personalities. 16961 (print_seg): Pass arguments using an array. 16962 16963 tests: add pselect6.test. 16964 * tests/pselect6.c: New file. 16965 * tests/pselect6.test: New test. 16966 * tests/Makefile.am (check_PROGRAMS): Add pselect6. 16967 (TESTS): Add pselect6.test. 16968 * tests/.gitignore: Add pselect6. 16969 16970 2015-09-14 Dmitry V. Levin <ldv (a] altlinux.org> 16971 16972 Rename umove_long_or_printaddr to umove_ulong_or_printaddr. 16973 Rename the recently added function to reflect what kind of data type 16974 it actually deals with: unsigned long int, without sign extension. 16975 16976 * defs.h (umove_long_or_printaddr): Rename to umove_ulong_or_printaddr, 16977 chage 3rd argument to unsigned long *. 16978 * util.c (umove_long_or_printaddr): Likewise. 16979 * aio.c (sys_io_submit): Update callers. 16980 16981 2015-09-14 Dmitry V. Levin <ldv (a] altlinux.org> 16982 16983 aarch64, ppc64, sparc64, tile: hook up mpers printers. 16984 * defs.h [AARCH64 && HAVE_M32_MPERS]: Define PERSONALITY0_INCLUDE_FUNCS, 16985 PERSONALITY0_INCLUDE_PRINTERS_DECLS, 16986 and PERSONALITY0_INCLUDE_PRINTERS_DEFS. 16987 [POWERPC64 && HAVE_M32_MPERS]: Define PERSONALITY1_INCLUDE_FUNCS, 16988 PERSONALITY1_INCLUDE_PRINTERS_DECLS, 16989 and PERSONALITY1_INCLUDE_PRINTERS_DEFS. 16990 [SPARC64 && HAVE_M32_MPERS]: Likewise. 16991 [TILE && HAVE_M32_MPERS]: Likewise. 16992 16993 2015-09-14 Anton Blanchard <anton (a] samba.org> 16994 16995 Add PowerPC specific ptrace constants. 16996 * xlat/ptrace_cmds.in: Add PowerPC specific ptrace constants. 16997 16998 2015-09-14 Dmitry V. Levin <ldv (a] altlinux.org> 16999 17000 Update SCTP_* constants. 17001 * xlat/socksctpoptions.in: Add SCTP_GET_ASSOC_ID_LIST, SCTP_AUTO_ASCONF, 17002 SCTP_PEER_ADDR_THLDS, SCTP_RECVRCVINFO, SCTP_RECVNXTINFO, 17003 SCTP_DEFAULT_SNDINFO, SCTP_SOCKOPT_CONNECTX, SCTP_SOCKOPT_CONNECTX3, 17004 and SCTP_GET_ASSOC_STATS. 17005 17006 Update F_* constants. 17007 * xlat/fcntlcmds.in: Add F_SETPIPE_SZ, F_GETPIPE_SZ, F_ADD_SEALS, 17008 and F_GET_SEALS. 17009 17010 Update RENAME_* constants. 17011 * xlat/rename_flags.in: Add RENAME_WHITEOUT. 17012 17013 Update SO_* constants. 17014 * xlat/sockoptions.in: Add SO_ATTACH_BPF, SO_BPF_EXTENSIONS, 17015 SO_BUSY_POLL, SO_DETACH_BPF, SO_GET_FILTER, SO_INCOMING_CPU, 17016 SO_LOCK_FILTER, SO_MAX_PACING_RATE, SO_PEEK_OFF, SO_RXQ_OVFL, 17017 SO_SELECT_ERR_QUEUE, and SO_WIFI_STATUS. 17018 17019 Update INPUT_PROP_* constants. 17020 * xlat/evdev_prop.in: Add INPUT_PROP_ACCELEROMETER. 17021 17022 Update KEY_* constants. 17023 * xlat/evdev_keycode.in: Add KEY_ROTATE_DISPLAY, KEY_NUMERIC_A, 17024 KEY_NUMERIC_B, KEY_NUMERIC_C, and KEY_NUMERIC_D. 17025 17026 Update FALLOC_FL_* constants. 17027 * xlat/falloc_flags.in: Add FALLOC_FL_INSERT_RANGE. 17028 17029 Update AF_* and PF_* constants. 17030 * xlat/addrfams.in: Add AF_IB and AF_MPLS. 17031 * xlat/domains.in: Add PF_IB and PF_MPLS. 17032 17033 Update TCP_* constants. 17034 * xlat/socktcpoptions.in: Add TCP_NOTSENT_LOWAT, TCP_CC_INFO, 17035 TCP_SAVE_SYN, and TCP_SAVED_SYN. 17036 17037 Update PACKET_* constants. 17038 * xlat/sockpacketoptions.in: Add PACKET_VNET_HDR, PACKET_TX_TIMESTAMP, 17039 PACKET_TIMESTAMP, PACKET_FANOUT, PACKET_TX_HAS_OFF, PACKET_QDISC_BYPASS, 17040 PACKET_ROLLOVER_STATS, and PACKET_FANOUT_DATA. 17041 17042 Update BPF_MAP_TYPE_* constants. 17043 * xlat/bpf_map_types.in: Add BPF_MAP_TYPE_PERF_EVENT_ARRAY. 17044 17045 Update IPPROTO_* constants. 17046 * xlat/inet_protocols.in: Add IPPROTO_MPLS. 17047 17048 Update IP_* constants. 17049 * xlat/sockipoptions.in: Add IP_CHECKSUM and IP_BIND_ADDRESS_NO_PORT. 17050 17051 Update PTRACE_O_* constants. 17052 * ptrace.h: Define PTRACE_O_SUSPEND_SECCOMP. 17053 * xlat/ptrace_setoptions_flags.in: Add it. 17054 17055 Update PR_* constants. 17056 * xlat/prctl_options.in: Add PR_SET_FP_MODE, PR_GET_FP_MODE, 17057 and PR_CAP_AMBIENT. 17058 17059 Update SECBIT_* constants. 17060 * xlat/secbits.in: Add SECBIT_NO_CAP_AMBIENT_RAISE 17061 and SECBIT_NO_CAP_AMBIENT_RAISE_LOCKED. 17062 17063 2015-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 17064 17065 mpers.m4: workaround missing gnu/stubs-*.h files. 17066 On some systems missing gnu/stubs-*.h files make -m32/-mx32 compilation 17067 checks fail. As we want to support multiple personalities despite of 17068 this limitation, workaround the check by creating empty gnu stub files 17069 if necessary. 17070 17071 * m4/mpers.m4 (st_MPERS): Check for the gnu stub file. Create an empty 17072 gnu stub file if the system one is missing. 17073 * Makefile.am (DISTCLEANFILES): Add gnu/stubs-32.h and gnu/stubs-x32.h. 17074 17075 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17076 17077 tests: add times-fail.test. 17078 * tests/times-fail.c: New file. 17079 * tests/times-fail.test: New test. 17080 * tests/Makefile.am (check_PROGRAMS): Add times-fail. 17081 (TESTS): Add times-fail.test. 17082 * tests/.gitignore: Add times-fail. 17083 17084 2015-08-28 Eugene Syromyatnikov <evgsyr (a] gmail.com> 17085 17086 tests: add times.test. 17087 * tests/times.c: New file. 17088 * tests/times.test: New test. 17089 * tests/Makefile.am (check_PROGRAMS): Add times. 17090 (TESTS): Add times.test. 17091 (times_LDADD): Define. 17092 * tests/.gitignore: Add times. 17093 17094 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17095 17096 Mpersify parser of times syscall. 17097 Fix multiple personalities support in parser of times syscall by 17098 mpersifying struct tms. 17099 17100 * times.c (tms_t): New typedef. Mpersify it. 17101 (sys_times): Use it instead of struct tms. 17102 17103 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17104 17105 tests: add sysinfo.test. 17106 * tests/sysinfo.c: New file. 17107 * tests/sysinfo.test: New test. 17108 * tests/Makefile.am (check_PROGRAMS): Add sysinfo. 17109 (TESTS): Add sysinfo.test. 17110 * tests/.gitignore: Add sysinfo. 17111 17112 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17113 17114 Mpersify parser of sysinfo syscall. 17115 Fix multiple personalities support in parser of sysinfo syscall by 17116 mpersifying struct sysinfo. 17117 17118 * sysinfo.c (sysinfo_t): New typedef. Mpersify it. 17119 (sys_sysinfo): Use it instead of struct sysinfo. 17120 17121 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17122 17123 Enhance msgctl syscall decoding. 17124 Make parser of msgctl syscall print struct msqid_ds. 17125 17126 * ipc_msgctl.c (msqid_ds_t): New typedef. Mpersify it. 17127 (print_msqid_ds): New function. Use msqid_ds_t. 17128 (sys_msgctl): Use print_msqid_ds. 17129 * tests/ipc_msg.c: Update for struct msqid_ds support. 17130 17131 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17132 17133 Enhance shmctl syscall decoding. 17134 Make parser of shmctl syscall print struct shmid_ds. 17135 17136 * ipc_shmctl.c (shmid_ds_t): New typedef. Mpersify it. 17137 (print_shmid_ds): New function. Use shmid_ds_t. 17138 (sys_shmctl): Use print_shmid_ds. 17139 * tests/ipc_shm.c: Update for struct shmid_ds support. 17140 17141 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17142 17143 tests: add ipc_msgbuf.test. 17144 * tests/ipc_msgbuf.c: New file. 17145 * tests/ipc_msgbuf.expected: Likewise. 17146 * tests/ipc_msgbuf.test: New test. 17147 * tests/Makefile.am (check_PROGRAMS): Add ipc_msgbuf. 17148 (TESTS): Add ipc_msgbuf.test. 17149 (EXTRA_DIST): Add ipc_msgbuf.expected. 17150 * tests/.gitignore: Add ipc_msgbuf. 17151 17152 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17153 17154 Mpersify tprint_msgsnd and tprint_msgrcv. 17155 Fix multiple personalities support in tprint_msgsnd and tprint_msgrcv 17156 by converting tprint_msgbuf into a mpersified printer. 17157 17158 * print_msgbuf.c (msgbuf_t): New typedef. Mpersify it. 17159 (tprint_msgbuf): Use it instead of long. 17160 Wrap function name into MPERS_PRINTER_DECL. 17161 * ipc_msg.c (tprint_msgsnd, tprint_msgrcv): Use mpersified 17162 tprint_msgbuf. 17163 17164 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17165 17166 tests: add mq.test. 17167 * tests/mq.c: New file. 17168 * tests/mq.expected: Likewise. 17169 * tests/mq.test: New test. 17170 * tests/Makefile.am (check_PROGRAMS): Add mq. 17171 (TESTS): Add mq.test. 17172 (EXTRA_DIST): Add mq.expected. 17173 (mq_LDADD): Add -lrt. 17174 * tests/.gitignore: Add mq. 17175 17176 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17177 17178 Mpersify parsers of mq_open and mq_getsetattr syscalls. 17179 Fix multiple personalities support in parsers of mq_open and 17180 mq_getsetattr by converting printmqattr into a mpersified printer. 17181 17182 * print_mq_attr.c (mq_attr_t): New typedef. Mpersify it. 17183 (printmqattr): Use it instead of struct mq_attr. Wrap function name 17184 into MPERS_PRINTER_DECL. 17185 * mq.c (mq_open, mq_getsetattr): Use mpersified printmqattr. 17186 17187 2015-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 17188 17189 tests: add wait.test. 17190 * tests/wait.c: New file. 17191 * tests/wait.expected: Likewise. 17192 * tests/wait.test: New test. 17193 * tests/Makefile.am (check_PROGRAMS): Add wait. 17194 (TESTS): Add wait.test. 17195 (EXTRA_DIST): Add wait.expected. 17196 * tests/.gitignore: Add wait. 17197 17198 2015-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 17199 17200 Mpersify parsers of getrusage, waitpid, wait4, and waitid syscalls. 17201 Fix multiple personalities support in parsers of getrusage, waitpid, 17202 wait4, and waitid syscalls by converting printrusage into a mpersified 17203 printer. 17204 17205 * defs.h (printrusage): Remove. 17206 * printrusage.c (rusage_t): New typedef. Mpersify it. 17207 (printrusage): Use it instead of struct rusage. 17208 Wrap function name into MPERS_PRINTER_DECL. 17209 * resource.c (sys_getrusage): Use mpersified printrusage. 17210 * wait.c (printwaitn, sys_waitid): Likewise. 17211 17212 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17213 17214 tests: add rt_sigqueueinfo.test. 17215 * tests/rt_sigqueueinfo.c: New file. 17216 * tests/rt_sigqueueinfo.test: New test. 17217 * tests/Makefile.am (check_PROGRAMS): Add rt_sigqueueinfo. 17218 (TESTS): Add rt_sigqueueinfo.test. 17219 * tests/.gitignore: Add rt_sigqueueinfo. 17220 17221 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17222 17223 Mpersify printsiginfo_at printer. 17224 Fix multiple personalities support in parsers of ptrace, 17225 rt_sigqueueinfo, rt_tgsigqueueinfo, rt_sigtimedwait and waitid syscalls 17226 by converting printsiginfo_at into a mpersified printer. 17227 17228 * printsiginfo.c (siginfo_t): Mpersify. 17229 (printsiginfo_at): Wrap function name into MPERS_PRINTER_DECL. 17230 * defs.h (printsiginfo_at): Remove. 17231 * signal.c (print_sigqueueinfo, sys_rt_sigtimedwait): Use mpersified 17232 printsiginfo_at. 17233 * process.c (sys_ptrace): Likewise. 17234 * wait.c (sys_waitid): Likewise. 17235 17236 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17237 17238 Mpersify parser of sigaltstack syscall. 17239 Fix multiple personalities support in parser of sigaltstack syscall by 17240 mpersifying stack_t typedef. 17241 17242 * sigaltstack.c (stack_t): Mpersify. 17243 (print_stack_t): Use it. 17244 17245 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17246 17247 Mpersify parser of utime syscall. 17248 Fix multiple personalities support in parser of utime syscall by using 17249 mpersified utimbuf_t typedef. 17250 17251 * utime.c (utimbuf_t): New typedef. Mpersify it. 17252 (sys_utime): Use it instead of a locally defined union. 17253 17254 2015-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 17255 17256 tests: add utimensat.test. 17257 * tests/utimensat.c: New file. 17258 * tests/utimensat.test: New test. 17259 * tests/Makefile.am (check_PROGRAMS): Add utimensat. 17260 (TESTS): Add utimensat.test. 17261 * configure.ac (AC_CHECK_FUNCS): Add utimensat. 17262 * tests/.gitignore: Add utimensat. 17263 17264 2015-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 17265 17266 Mpersify parsers of utimes, futimesat, and utimensat syscalls. 17267 Fix multiple personalities support in parsers of utimes, futimesat, 17268 and utimensat syscalls by introducing two mpersified printers: 17269 print_timeval_pair and print_timespec_utime_pair. 17270 17271 * print_time.c: New file. 17272 * Makefile.am (strace_SOURCES): Add it. 17273 * utimes.c (decode_utimes): Remove. 17274 (sys_utimes, sys_futimesat): Use print_timeval_pair instead 17275 of decode_utimes. 17276 (sys_utimensat): Use print_timespec_utime_pair instead of decode_utimes. 17277 17278 2015-08-28 Elvira Khabirova <lineprinter0 (a] gmail.com> 17279 17280 Add mpers support. 17281 Add a subsystem for semi-automatical definition of how parsers should 17282 work with personality-dependent (mpers) types of tracee's data. Create 17283 auxiliary libraries containing mpers syscall parsers and printer 17284 functions, one library for each possible nonnative target personality. 17285 17286 Currently some parsers do not handle differences in definitions of data 17287 types between personalities, namely LP64 and ILP32. When 17288 this is the case, long integers, pointers, and all compound 17289 types containing long and pointer members may be printed incorrectly, 17290 because of differences in sizes, offsets and alignments. 17291 17292 Since in most cases these are the only differences in desired behaviour 17293 of parsers and printers for different personalities, a correct way 17294 would be to compile one source code into multiple parsers, differing 17295 only in definitions of mpers types. 17296 17297 To get a definition of a given type for nonnative personality 17298 a very basic .c file containing a declaration of a variable of this type 17299 is being compiled for this personality (using -m32 or -mx32 compiler 17300 flag). Information about the type is then being extracted from 17301 this binary's DWARF debug info with an awk script and put 17302 into a corresponding header file. Resulting headers are being used to 17303 compile mpers variations of syscall parsers and printer functions. 17304 17305 In addition to syscall parsers, there can occur a need to create mpers 17306 printing functions, which then can be called from many places 17307 in the code (for example, printsiginfo_at). Such functions (printers) 17308 are marked in a special manner. 17309 17310 For each possible nonnative target personality a library is being 17311 created, containing mpers variations of syscall parsers and printers. 17312 Only syscall parsers from files marked in a special manner and specially 17313 marked functions from such files are being recompiled and included 17314 in these libraries. 17315 17316 generate_mpers_am.sh is called by bootstrap to find the files 17317 from strace_SOURCES which include MPERS_DEFS. During compilation, 17318 these files are being inspected for inclusions of DEF_MPERS_TYPE, 17319 and nonnative variations of each included type are being generated 17320 by an awk script. 17321 17322 Mpers parser names are being modified during inclusions of syscallent 17323 headers for nonnative personalities. Pointers to printers are 17324 being stored in structs struct_printers, and a master 17325 pointer printers is being updated on every set_personality. 17326 17327 * README-mpers: New README explaining how to use mpers support. 17328 * empty.h: New empty file. 17329 * generate_mpers_am.sh: New file. 17330 * mpers.awk: Likewise. 17331 * mpers.sh: Likewise. 17332 * mpers_test.sh: Likewise. 17333 * mpers_type.h: Likewise. 17334 * Makefile.am (strace_SOURCES): Add empty.h and mpers_type.h. 17335 (strace_CPPFLAGS, strace_LDFLAGS, strace_LDADD): Move to the beginning 17336 of the file. 17337 (strace_LDADD, noinst_LIBRARIES): Add libmpers-%.a. 17338 (EXTRA_DIST): Add mpers.awk, mpers.sh, mpers_test.sh. 17339 (BUILT_SOURCES, CLEANFILES): Add new generated files: 17340 native_printer_decls.h, native_printer_defs.h, printers.h, 17341 [HAVE_M32_MPERS] $(mpers_m32_targets), and [HAVE_MX32_MPERS] 17342 $(mpers_mx32_targets). 17343 (mpers_NAME, mpers_PREFIX, mpers_DEFS, mpers_INCLUDES, mpers_CPPFLAGS, 17344 mpers_sh_opts, libmpers_CPPFLAGS, libmpers_m[x]32_a_SOURCES, 17345 libmpers_m[x]32_a_CPPFLAGS, mpers_m[x]32_targets): New variables. 17346 (mpers-m[x]32.stamp, m[x]32_defs.h, m[x]32_funcs.h, printers.h, 17347 %_printer_decls.h, %_printer_defs.h, clean-local, 17348 native_printer_decls.h, native_printer_defs.h, $mpers_m[x]32_targets): 17349 New targets. 17350 * bootstrap: Add generate_mpers_am.sh. 17351 * configure.ac: Add AC_PROG_RANLIB. 17352 * m4/mpers.m4: Add HAVE_MPERS variable. Add $st_cv_mpers checks. 17353 * defs.h: Include mpers_type.h. 17354 Include printers.h, native_printer_decls.h, define MPERS_PRINTER_NAME. 17355 Redefine SYS_FUNC_NAME. Define MPERS_PRINTER_DECL. 17356 [HAVE_M32_MPERS]: define PERSONALITY1_INCLUDE_FUNCS, 17357 PERSONALITY1_INCLUDE_PRINTERS_DECLS, PERSONALITY1_INCLUDE_PRINTERS_DEFS 17358 for X86_64, X32. 17359 [HAVE_MX32_MPERS]: define PERSONALITY2_INCLUDE_FUNCS, 17360 PERSONALITY2_INCLUDE_PRINTERS_DECLS, PERSONALITY2_INCLUDE_PRINTERS_DEFS 17361 for X86_64. 17362 Add fallback definitions of 17363 PERSONALITY1_INCLUDE_FUNCS, PERSONALITY2_INCLUDE_FUNCS, 17364 PERSONALITY0_INCLUDE_PRINTERS_DECLS, PERSONALITY0_INCLUDE_PRINTERS_DEFS, 17365 PERSONALITY1_INCLUDE_PRINTERS_DECLS, PERSONALITY1_INCLUDE_PRINTERS_DEFS, 17366 PERSONALITY2_INCLUDE_PRINTERS_DECLS, PERSONALITY2_INCLUDE_PRINTERS_DEFS. 17367 * syscall.c: Include PERSONALITY1_INCLUDE_FUNCS, 17368 PERSONALITY2_INCLUDE_FUNCS, 17369 PERSONALITY0_INCLUDE_PRINTERS_DECLS, PERSONALITY0_INCLUDE_PRINTERS_DEFS, 17370 PERSONALITY1_INCLUDE_PRINTERS_DECLS, PERSONALITY1_INCLUDE_PRINTERS_DEFS, 17371 PERSONALITY2_INCLUDE_PRINTERS_DECLS, PERSONALITY2_INCLUDE_PRINTERS_DEFS. 17372 (printers): New struct. Update it when needed. 17373 * .gitignore: Add libmpers-m32.a, libmpers-mx32.a, m32_defs.h, 17374 m32_funcs.h, m32_printer_decls.h, m32_printer_defs.h, mpers-m32, 17375 mpers-m32.stamp, mpers-mx32, mpers-mx32.stamp, mpers.am, mx32_defs.h, 17376 mx32_funcs.h, mx32_printer_decls.h, mx32_printer_defs.h, 17377 native_printer_decls.h, native_printer_defs.h, and printers.h. 17378 17379 2015-08-28 Dmitry V. Levin <ldv (a] altlinux.org> 17380 17381 tests: convert readlink.test and readlinkat.test from match_awk to match_diff 17382 * tests/readlink.c (main): Print expected output. 17383 * tests/readlinkat.c (main): Likewise. 17384 * tests/readlink.test: Use match_diff instead of match_awk. 17385 * tests/readlinkat.test: Likewise. 17386 * tests/readlink.awk: Remove. 17387 * tests/readlinkat.awk: Likewise. 17388 * tests/Makefile.am (EXTRA_DIST): Remove readlink.awk and readlinkat.awk. 17389 17390 tests: convert getrandom.test from match_awk to match_diff. 17391 * tests/getrandom.c (main): Print expected output. 17392 * tests/getrandom.test: Use match_diff instead of match_awk. 17393 * tests/getrandom.awk: Remove. 17394 * tests/Makefile.am (EXTRA_DIST): Remove getrandom.awk. 17395 17396 2015-08-27 Dmitry V. Levin <ldv (a] altlinux.org> 17397 17398 tests: convert select.test from match_awk to match_diff. 17399 * tests/select.c (main): Print expected output. 17400 * tests/select.test: Use match_diff instead of match_awk. 17401 * tests/select.awk: Remove. 17402 * tests/Makefile.am (EXTRA_DIST): Remove select.awk. 17403 17404 tests: convert several tests from match_grep to match_diff. 17405 * tests/sendfile.test: Use match_diff instead of match_grep. 17406 * tests/sendfile64.test: Likewise. 17407 * tests/time.test: Likewise. 17408 * tests/utime.test: Likewise. 17409 * tests/xet_robust_list.test: Likewise. 17410 * tests/sendfile.c (main): Update match patterns for match_diff. 17411 * tests/sendfile64.c (main): Likewise. 17412 * tests/time.c (main): Likewise. 17413 * tests/utime.c (main): Likewise. 17414 * tests/xet_robust_list.c (main): Likewise. 17415 17416 2015-08-27 Dmitry V. Levin <ldv (a] altlinux.org> 17417 17418 tests: fix match_diff usage. 17419 The first argument of match_diff should be the file with expected 17420 output, the second argument - the file with actual output. 17421 17422 * tests/aio.test: Swap match_diff arguments. 17423 * tests/restart_syscall.test: Likewise. 17424 * tests/seccomp.test: Likewise. 17425 * tests/umovestr2.test: Likewise. 17426 17427 2015-08-27 Dmitry V. Levin <ldv (a] altlinux.org> 17428 17429 build: fix -I options. 17430 * configure.ac (AM_INIT_AUTOMAKE): Add nostdinc. 17431 * Makefile.am (AM_CPPFLAGS): Append -I$(builddir) and -I$(srcdir). 17432 * tests/Makefile.am (AM_CPPFLAGS): Likewise. 17433 17434 2015-08-26 Dmitry V. Levin <ldv (a] altlinux.org> 17435 17436 aio: rewrite from libaio.h to linux/aio_abi.h. 17437 * configure.ac (AC_CHECK_HEADERS): Remove libaio.h. 17438 * aio.c: Assume that <linux/aio_abi.h> is available, 17439 include it instead of <libaio.h>. 17440 [!IOCB_RESFD]: Remove. 17441 (enum iocb_sub): Remove SUB_POLL. 17442 (tprint_lio_opcode): Update. 17443 (print_common_flags): Use IOCB_FLAG_RESFD instead of IOCB_RESFD, 17444 rename fields of struct iocb. 17445 (iocb_is_valid, print_iocb_header, print_iocb): New functions. 17446 (sys_io_submit): Use print_iocb. 17447 (print_io_event): Fix struct io_event decoding. 17448 (sys_io_cancel): Use print_iocb_header. 17449 * strace.spec (BuildRequires): Remove libaio-devel. 17450 * tests/aio.c (main): Test IOCB_CMD_PREADV, io_cancel, 17451 and struct io_event decoding. 17452 * tests/aio.test (syscalls): Add io_cancel. 17453 17454 2015-08-26 Dmitry V. Levin <ldv (a] altlinux.org> 17455 17456 Fix multiple personalities support in parser of io_submit syscall. 17457 Introduce a new helper function to fetch tracee's long integers 17458 and use it to fix multiple personalities support in io_submit parser. 17459 17460 * defs.h (umove_long_or_printaddr): New prototype. 17461 * util.c (umove_long_or_printaddr): New function. 17462 * aio.c (sys_io_submit): Use it to fetch tracee's pointers. 17463 * tests/aio.c: New file. 17464 * tests/aio.test: New test. 17465 * tests/Makefile.am (check_PROGRAMS): Add aio. 17466 (TESTS): Add aio.test. 17467 * tests/.gitignore: Add aio. 17468 17469 2015-08-26 Dmitry V. Levin <ldv (a] altlinux.org> 17470 17471 tests: fix build on systems that lack O_CLOEXEC definition. 17472 * tests/epoll_create1.c (main): Check that O_CLOEXEC is defined. 17473 * tests/eventfd.c (main): Likewise. 17474 * tests/signalfd.c (main): Likewise. 17475 17476 tests: fix build on systems that lack AT_FDCWD definition. 17477 * tests/readlinkat.c: Stop including <fcntl.h>. 17478 (main): Replace AT_FDCWD with -100. 17479 17480 Fix printing of io_getevents first argument. 17481 * aio.c (sys_io_getevents): Print first argument using "%lu" format. 17482 17483 2015-08-26 Mike Frysinger <vapier (a] gentoo.org> 17484 17485 decode extend getsockopt/setsockopt options. 17486 Currently the code assumes the set of valid options between getsockopt 17487 and setsockopt are exactly the same and thus maintains one list. The 17488 kernel unfortunately does not do this -- it allows for different opts 17489 between the get and set functions. See the {g,s}et_opt{min,max} fields 17490 in the various netfilter subcores. 17491 17492 To support this, extend the printxval function to take multiple sets of 17493 xlats as varargs. Then we add the new get/set lists, and pass them down 17494 in the net code when decoding things. 17495 17496 A simple example is iptables; before: 17497 getsockopt(4, SOL_IP, 0x40 /* IP_??? */, ...) = 0 17498 getsockopt(4, SOL_IP, 0x41 /* IP_??? */, ...) = 0 17499 after: 17500 getsockopt(4, SOL_IP, IPT_SO_GET_INFO, ...) = 0 17501 getsockopt(4, SOL_IP, IPT_SO_GET_ENTRIES, ...) = 0 17502 17503 If these were setsockopt calls, then 0x40 & 0x41 would be 17504 IPT_SO_SET_REPLACE & IPT_SO_SET_ADD_COUNTERS. 17505 17506 * configure.ac: Check for netfilter headers. 17507 * defs.h (printxvals): New prototype. 17508 (printxval): Change to a define. 17509 * net.c: Include netfilter headers and new sockopts headers. 17510 (print_sockopt_fd_level_name): Add a is_getsockopt argument. Change SOL_IP 17511 and SOL_IPV6 decoding to use printxvals, and use is_getsockopt to pass more 17512 xlats down. 17513 (getsockopt): Call print_sockopt_fd_level_name with is_getsockopt as true. 17514 (setsockopt): Call print_sockopt_fd_level_name with is_getsockopt as false. 17515 * util.c (printxval): Rename to ... 17516 (printxvals): ... this. Rewrite to be varargs based. 17517 * xlat/getsockipoptions.in: New xlat list. 17518 * xlat/getsockipv6options.in, xlat/setsockipoptions.in, 17519 xlat/setsockipv6options.in: Likewise. 17520 17521 2015-08-26 Dmitry V. Levin <ldv (a] altlinux.org> 17522 17523 Fix build on systems that lack VIDIOC_CREATE_BUFS definition. 17524 * v4l2.c (v4l2_ioctl): Check that v4l2_ioctl is defined. 17525 17526 Fix build on systems that lack EM_ARM/EM_OPENRISC definitions. 17527 * xlat/audit_arch.in: Guard AUDIT_ARCH_ARM and AUDIT_ARCH_ARMEB 17528 with EM_ARM check. Guard AUDIT_ARCH_OPENRISC with EM_OPENRISC check. 17529 17530 2015-08-25 Dmitry V. Levin <ldv (a] altlinux.org> 17531 17532 Fix build on systems that lack UBI_IOCVOLCRBLK/UBI_IOCVOLRMBLK definitions 17533 * mtd.c (ubi_ioctl): Check that UBI_IOCVOLCRBLK and UBI_IOCVOLRMBLK 17534 are defined. 17535 17536 Fix build on systems that lack O_CLOEXEC definition. 17537 * xlat/efd_flags.in: Check that O_CLOEXEC is defined. 17538 * xlat/epollflags.in: Likewise. 17539 * xlat/sfd_flags.in: Likewise. 17540 * xlat/timerfdflags.in: Fix O_CLOEXEC check. 17541 17542 2015-08-21 Elvira Khabirova <lineprinter0 (a] gmail.com> 17543 17544 printsiginfo.c: fix integer conversions. 17545 * printsiginfo.c (printsigsource): Print si_pid and si_uid as unsigned 17546 integers. 17547 (printsigval): Print si_int as signed int. 17548 17549 2015-08-20 Dmitry V. Levin <ldv (a] altlinux.org> 17550 17551 Fix decoding of times syscall return value. 17552 Always print return value of successful times syscall 17553 as unsigned long integer. 17554 17555 * times.c (sys_times): Return RVAL_UDECIMAL unless syserror. 17556 17557 2015-08-20 Elvira Khabirova <lineprinter0 (a] gmail.com> 17558 17559 mq.c: remove repeated code. 17560 * mq.c (sys_mq_open): Use printmqattr instead of implementing it again. 17561 [HAVE_MQUEUE_H]: Remove. 17562 17563 2015-08-20 Elvira Khabirova <lineprinter0 (a] gmail.com> 17564 17565 ipc_msg.c: fix multiple personalities support in msgrcv ipc subcall. 17566 When msgrcv syscall is an ipc subcall, msgp (pointer to struct msgbuf) 17567 and msgtyp (message type) syscall arguments are passed via proxy 17568 structure which definition significantly depends on tracee's 17569 wordsize. 17570 17571 * ipc_msg.c (fetch_msgrcv_args): New function. 17572 (sys_msgrcv): Use it. 17573 17574 2015-08-20 Elvira Khabirova <lineprinter0 (a] gmail.com> 17575 17576 ipc.c: split into separate files. 17577 In preparation for upcoming mpers-related changes, 17578 split ipc.c into independent groups of parsers. 17579 17580 * ipc_defs.h: New file. 17581 * ipc_msg.c: Likewise. 17582 * ipc_msgctl.c: Likewise. 17583 * ipc_sem.c: Likewise. 17584 * ipc_shm.c: Likewise. 17585 * ipc_shmctl.c: Likewise. 17586 * mq.c: Likewise. 17587 * print_mq_attr.c: Likewise. 17588 * print_msgbuf.c: Likewise. 17589 * ipc.c: Remove. 17590 (sys_mq_open, sys_mq_timedsend, sys_mq_timedreceive, sys_mq_notify, 17591 sys_mq_getsetattr): Move to mq.c. 17592 (sys_msgget, tprint_msgsnd, sys_msgsnd, tprint_msgrcv, sys_msgrcv): Move 17593 to ipc_msg.c. 17594 (sys_msgctl): Move to ipc_msgctl.c. 17595 (tprint_sembuf, tprint_sembuf_array, sys_semop, sys_semtimedop, 17596 sys_semget, syssemctl): Move to ipc_sem.c. 17597 (sys_shmget, sys_shmat, sys_shmdt): Move to ipc_shm.c. 17598 (sys_shmctl): Move to ipc_shmctl.c. 17599 (printmqattr): Move to print_mq_attr.c. 17600 (tprint_msgbuf): Move to print_msgbuf.c. 17601 (IPC_64, PRINTCTL): Move to ipc_defs.h. 17602 * defs.h (struct xlat resource_flags): New prototype. 17603 * Makefile.am (strace_SOURCES): Remove ipc.c. Add ipc_defs.h, mq.c, 17604 ipc_msg.c, ipc_msgctl.c, ipc_sem.c, ipc_shm.c, ipc_shmctl.c, 17605 print_mq_attr.c, and print_msgbuf.c. 17606 17607 2015-08-20 Elvira Khabirova <lineprinter0 (a] gmail.com> 17608 17609 .gitignore: add sen.h and sys_func.h. 17610 17611 2015-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 17612 17613 tests: add sendfile.test and sendfile64.test. 17614 * tests/sendfile.c: New file. 17615 * tests/sendfile64.c: New file. 17616 * tests/sendfile.test: New test. 17617 * tests/sendfile64.test: New test. 17618 * tests/Makefile.am (check_PROGRAMS): Add sendfile and sendfile64. 17619 (TESTS): Add sendfile.test and sendfile64.test. 17620 * tests/.gitignore: Add sendfile and sendfile64. 17621 17622 2015-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 17623 17624 sendfile: decode file offset both on entering and exiting syscall. 17625 When sendfile is called with a valid pointer to a file offset variable, 17626 kernel updates this variable on successfull exit from syscall. 17627 17628 * sendfile.c (sys_sendfile, sys_sendfile64): Print tcp->u_arg[2] 17629 on exiting syscall as well as on entering. 17630 17631 2015-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 17632 17633 io.c: move sendfile parsers to a separate file. 17634 * sendfile.c: New file. 17635 * Makefile.am (strace_SOURCES): Add it. 17636 * io.c (sys_sendfile, sys_sendfile64): Move to sendfile.c 17637 17638 2015-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 17639 17640 Make printnum_* functions return boolean status. 17641 With this change, printnum_* functions return true iff they 17642 successfully fetched necessary data from tracee's memory. 17643 17644 * defs.h (printnum_short, printnum_int, printnum_int64, 17645 printnum_long_int, printpair_int, printpair_int64): Return bool. 17646 * util.c (DEF_PRINTNUM, DEF_PRINTPAIR, printnum_long_int): Likewise. 17647 17648 2015-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 17649 17650 mips: print _MIPS_SIM in configure.ac for debug purposes. 17651 * configure.ac [MIPS]: Print _MIPS_SIM. 17652 17653 xtensa: fix several syscall entries. 17654 * linux/xtensa/syscallent.h: Fix nargs in splice, tee, vmsplice, 17655 pselect6, ppoll, epoll_pwait, and set_robust_list syscall entries. 17656 17657 ia64: fix syscall numbers for set_robust_list, get_robust_list, and splice syscalls 17658 * linux/ia64/syscallent.h: Place syscall entries for set_robust_list, 17659 get_robust_list, and splice in correct order. 17660 17661 2015-08-18 Dmitry V. Levin <ldv (a] altlinux.org> 17662 17663 tests: add a test for get_robust_list and set_robust_list decoding. 17664 * tests/xet_robust_list.c: New file. 17665 * tests/xet_robust_list.test: New test. 17666 * tests/Makefile.am (check_PROGRAMS): Add xet_robust_list. 17667 (TESTS): Add xet_robust_list.test. 17668 * tests/.gitignore: Add xet_robust_list. 17669 17670 Simplify printing of get_robust_list first argument. 17671 * get_robust_list.c (sys_get_robust_list): Print first argument 17672 using "%d" format. 17673 17674 2015-08-18 Elvira Khabirova <lineprinter0 (a] gmail.com> 17675 17676 Fix io_setup first argument printing. 17677 * aio.c (sys_io_setup): Print first argument using "%u" format. 17678 17679 2015-08-18 Dmitry V. Levin <ldv (a] altlinux.org> 17680 17681 Fix printing tracee's long integers. 17682 Replace ambiguous printnum_long that used to fetch native long integers 17683 from tracee's memory with printnum_ptr, printnum_slong, and printnum_ulong 17684 that fetch tracee's pointer, signed long, and unsigned long integers. 17685 17686 * defs.h (printnum_long, printpair_long): Remove prototypes. 17687 (printnum_int64, printpair_int64): Remove macros, declare functions 17688 unconditionally. 17689 [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (printnum_long_int): 17690 New prototype. 17691 (printnum_ptr, printnum_slong, printnum_ulong): New macros. 17692 * aio.c (sys_io_setup): Use printnum_ulong. 17693 * block.c (block_ioctl): Use printnum_slong and printnum_ulong. 17694 * get_robust_list.c (sys_get_robust_list): Use printnum_ptr 17695 and printnum_ulong. 17696 * io.c (print_off_t): Remove. 17697 (sys_sendfile): Use printnum_ulong. 17698 * ipc.c (sys_semctl): Use printnum_ptr. 17699 * prctl.c (sys_prctl): Likewise. 17700 * process.c (sys_ptrace): Likewise. 17701 * rtc.c (rtc_ioctl): Use printnum_ulong. 17702 * util.c (printnum_long, printpair_long): Remove. 17703 (printnum_int64, printpair_int64): Define unconditionally. 17704 [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (printnum_long_int): 17705 New function. 17706 17707 2015-08-18 Dmitry V. Levin <ldv (a] altlinux.org> 17708 17709 Fix time syscall decoding for some personalities. 17710 * time.c (current_time_t_is_int32): Define. 17711 (sys_time): Use it, printnum_int, and printnum_int64 instead 17712 of printnum_long. 17713 * tests/time.c: New file. 17714 * tests/time.test: New test. 17715 * tests/Makefile.am (check_PROGRAMS): Add time. 17716 (TESTS): Add time.test. 17717 * tests/.gitignore: Add time. 17718 17719 2015-08-18 Mike Frysinger <vapier (a] gentoo.org> 17720 17721 signal: SIGSYS: decode si_syscall & si_arch fields. 17722 When receiving SIGSYS, the si_syscall & si_arch fields are set to known 17723 values, so make sure we decode their values into the symbol settings. 17724 This makes stracing seccomp failures much easier. 17725 17726 * defs.h (syscall_name): New prototype. 17727 * printsiginfo.c: Include linux/audit.h and xlat/audit_arch.h. 17728 (print_si_info): Decode si_syscall & si_arch for SIGSYS. 17729 * syscall.c (undefined_scno_name): Delete. 17730 (syscall_name): New function. 17731 (trace_syscall_entering): Change undefined_scno_name to syscall_name. 17732 (trace_syscall_exiting): Likewise. 17733 * xlat/audit_arch.in: New file. 17734 17735 2015-08-18 Elvira Khabirova <lineprinter0 (a] gmail.com> 17736 17737 ipc.c: remove unnecesarry #ifdef IPC_64. 17738 * ipc.c (PRINTCTL): Remove #ifdef IPC_64 check as IPC_64 is always 17739 defined at this point. 17740 17741 2015-08-16 Elvira Khabirova <lineprinter0 (a] gmail.com> 17742 17743 resource.c: move times parser to a separate file. 17744 * times.c: New file. 17745 * Makefile.am (strace_SOURCES): Add it. 17746 * resource.c (sys_times): Move to times.c. 17747 17748 2015-08-16 Elvira Khabirova <lineprinter0 (a] gmail.com> 17749 17750 sysctl.c: remove KERN_JAVA_* defines handling. 17751 This has been obsoleted by binfmt_misc since Linux 2.1.43. 17752 17753 * sysctl.c (sys_sysctl): Remove KERN_JAVA_INTERPRETER 17754 and KERN_JAVA_APPLETVIEWER. 17755 17756 2015-08-16 Elvira Khabirova <lineprinter0 (a] gmail.com> 17757 17758 sysinfo.c: remove obsolete code. 17759 struct sysinfo members totalhigh, freehigh and mem_unit are present 17760 since Linux 2.3.48. 17761 17762 * configure.ac (AC_CHECK_MEMBERS): Remove struct sysinfo checks. 17763 * sysinfo.c (sys_sysinfo): Remove HAVE_STRUCT_SYSINFO_* checks. 17764 17765 2015-08-15 Gleb Fotengauer-Malinovskiy <glebfm (a] altlinux.org> 17766 17767 tests: add readlink.test and readlinkat.test. 17768 * tests/readlink.c: New file. 17769 * tests/readlink.awk: Likewise. 17770 * tests/readlinkat.c: Likewise. 17771 * tests/readlinkat.awk: Likewise. 17772 * tests/readlink.test: New test. 17773 * tests/readlinkat.test: Likewise. 17774 * tests/Makefile.am (check_PROGRAMS): Add readlink and readlinkat. 17775 (TESTS): Add readlink.test and readlinkat.test. 17776 (EXTRA_DIST): Add readlink.awk and readlinkat.awk. 17777 * tests/.gitignore: Add readlink and readlinkat. 17778 17779 2015-08-09 Dmitry V. Levin <ldv (a] altlinux.org> 17780 17781 Print nanoseconds along with seconds in stat family syscalls. 17782 * configure.ac (AC_CHECK_MEMBERS): Add stat.st_atim.tv_nsec, 17783 stat.st_ctim.tv_nsec, stat.st_mtim.tv_nsec, stat.st_atime_nsec, 17784 stat.st_atime_csec, and stat.st_mtime_nsec. 17785 * file.c: Explicitly define HAVE_STRUCT_STAT_ST_ATIME_NSEC, 17786 HAVE_STRUCT_STAT_ST_CTIME_NSEC and HAVE_STRUCT_STAT_ST_MTIME_NSEC 17787 for locally defined types. 17788 * printstat.h (DO_PRINTSTAT): Print st_atime_nsec, st_ctime_nsec, 17789 and st_mtime_nsec members. 17790 * tests/stat.c [_FILE_OFFSET_BITS == 64]: Use st_atime_nsec, 17791 st_ctime_nsec, and st_mtime_nsec via st_atim.tv_nsec, st_ctim.tv_nsec, 17792 and st_mtim.tv_nsec. 17793 (main): Print st_atime_nsec, st_ctime_nsec, and st_mtime_nsec members. 17794 17795 This fixes Fedora bug #1251176. 17796 17797 2015-08-03 Dmitry V. Levin <ldv (a] altlinux.org> 17798 17799 signalfd4: fix flags decoding. 17800 * configure.ac (AC_CHECK_FUNCS): Add eventfd. 17801 (AC_CHECK_HEADERS): Add sys/signalfd.h. 17802 * signalfd.c: Include <fcntl.h>. 17803 [HAVE_SYS_SIGNALFD_H] Include <sys/signalfd.h>. 17804 Include "xlat/sfd_flags.h". 17805 (do_signalfd): Use sfd_flags for flags decoding. 17806 * xlat/sfd_flags.in: New file. 17807 * tests/signalfd.c: Likewise. 17808 * tests/signalfd.expected: Likewise. 17809 * tests/signalfd.test: New test. 17810 * tests/Makefile.am (check_PROGRAMS): Add signalfd. 17811 (TESTS): Add signalfd.test. 17812 (EXTRA_DIST): Add signalfd.expected. 17813 * tests/.gitignore: Add signalfd. 17814 17815 signalfd, signalfd4: mark return code with RVAL_FD flag. 17816 * signalfd.c (do_signalfd): Set RVAL_FD flag in the return code. 17817 17818 signal.c: move signalfd parsers to a separate file. 17819 * signalfd.c: New file. 17820 * Makefile.am (strace_SOURCES): Add it. 17821 * signal.c (do_signalfd, sys_signalfd, sys_signalfd4): Move to signalfd.c 17822 17823 perf_event_open: mark return code with RVAL_FD flag. 17824 * perf.c (sys_perf_event_open): Set RVAL_FD flag in the return code. 17825 17826 pipe, pipe2, socketpair: print returned descriptors using printfd. 17827 * net.c (printpair_fd, decode_pair_fd): New functions. 17828 (do_pipe, sys_socketpair): Use them. 17829 17830 socket: mark return code with RVAL_FD flag. 17831 * net.c (sys_socket): Set RVAL_FD flag in the return code. 17832 * tests/net-yy-accept.awk: Update socket and bind regexps. 17833 * tests/unix-yy-accept.awk: Likewise. 17834 * tests/net-yy-connect.awk: Update socket and connect regexps. 17835 * tests/unix-yy-connect.awk: Likewise. 17836 17837 timerfd, timerfd_create: mark return code with RVAL_FD flag. 17838 * time.c (sys_timerfd, sys_timerfd_create): Set RVAL_FD flag 17839 in the return code. 17840 17841 2015-08-02 Dmitry V. Levin <ldv (a] altlinux.org> 17842 17843 inotify_init1: mark return code with RVAL_FD flag. 17844 * inotify.c (sys_inotify_init1): Set RVAL_FD flag in the return code. 17845 17846 fanotify_init: mark return code with RVAL_FD flag. 17847 * fanotify.c (sys_fanotify_init): Set RVAL_FD flag in the return code. 17848 17849 Fix epoll_create syscall decoding. 17850 * epoll.c (sys_epoll_create): New function. 17851 * linux/dummy.h (sys_epoll_create): Remove. 17852 17853 epoll_create1: mark return code with RVAL_FD flag. 17854 * epoll.c (sys_epoll_create1): Set RVAL_FD flag in the return code. 17855 17856 epoll_create1: fix pathtrace support. 17857 * pathtrace.c (pathtrace_match): Add SEN_epoll_create1. 17858 17859 epoll_create1: fix flags decoding. 17860 * xlat/epollflags.in: Remove EPOLL_NONBLOCK, provide fallback definition 17861 for EPOLL_CLOEXEC. 17862 * tests/epoll_create1.c: New file. 17863 * tests/epoll_create1.expected: Likewise. 17864 * tests/epoll_create1.test: New test. 17865 * tests/Makefile.am (check_PROGRAMS): Add epoll_create1. 17866 (TESTS): Add epoll_create1.test. 17867 (EXTRA_DIST): Add epoll_create1.expected. 17868 * tests/.gitignore: Add epoll_create1. 17869 17870 2015-08-01 Dmitry V. Levin <ldv (a] altlinux.org> 17871 17872 desc.c: move epoll parsers to a separate file. 17873 * epoll.c: New file. 17874 * Makefile.am (strace_SOURCES): Add it. 17875 * desc.c (sys_epoll_create1, print_epoll_event, sys_epoll_ctl, 17876 print_epoll_event_array, epoll_wait_common, epoll_wait, epoll_pwait): 17877 Move to epoll.c. 17878 17879 eventfd2: fix flags decoding. 17880 * configure.ac (AC_CHECK_HEADERS): Add sys/eventfd.h. 17881 * eventfd.c: Include <fcntl.h>. 17882 [HAVE_SYS_EVENTFD_H] Include <sys/eventfd.h>. 17883 Include "xlat/efd_flags.h". 17884 (do_eventfd): Use efd_flags for flags decoding. 17885 * xlat/efd_flags.in: New file. 17886 * tests/eventfd.c: New file. 17887 * tests/eventfd.expected: Likewise. 17888 * tests/eventfd.test: New test. 17889 * tests/Makefile.am (check_PROGRAMS): Add eventfd. 17890 (TESTS): Add eventfd.test. 17891 (EXTRA_DIST): Add eventfd.expected. 17892 * tests/.gitignore: Add eventfd. 17893 17894 eventfd: print first argument as unsigned int. 17895 * eventfd.c (do_eventfd): Explicitly cast initial value to unsigned int. 17896 17897 Mark eventfd return code with RVAL_FD flag. 17898 * eventfd.c (do_eventfd): Set RVAL_FD flag in the return code. 17899 17900 desc.c: move eventfd parsers to a separate file. 17901 * eventfd.c: New file. 17902 * Makefile.am (strace_SOURCES): Add it. 17903 * desc.c (do_eventfd, sys_eventfd, sys_eventfd2): Move to eventfd.c. 17904 17905 Update PERF_FLAG_* constants. 17906 * xlat/perf_event_open_flags.in: Add PERF_FLAG_FD_CLOEXEC, 17907 provide fallback definitions. 17908 17909 desc.c: move perf_event_open parser to a separate file. 17910 * perf.c: New file. 17911 * Makefile.am (strace_SOURCES): Add it. 17912 * desc.c (sys_perf_event_open): Move to perf.c. 17913 17914 2015-08-01 Elvira Khabirova <lineprinter0 (a] gmail.com> 17915 17916 time.c: remove obsolete code from adjtimex parser. 17917 Linux versions 1.3.28 and below are not supported. 17918 17919 * time.c (tprint_timex) [LINUX_VERSION_CODE < 66332]: Remove. 17920 17921 2015-08-01 Elvira Khabirova <lineprinter0 (a] gmail.com> 17922 17923 ipc.c: move fallback definitions of msg, sem, and shm constants to xlat/ 17924 * ipc.c: Move MSG_STAT and MSG_INFO definitions to xlat/msgctl_flags.in. 17925 Move SHM_STAT and SHM_INFO definitions to xlat/shmctl_flags.in. 17926 Move SEM_STAT and SEM_INFO definitions to xlat/semctl_flags.in. 17927 17928 2015-08-01 Dmitry V. Levin <ldv (a] altlinux.org> 17929 17930 tests/ppoll: replace SIGABRT with SIGHUP. 17931 Use SIGHUP instead of SIGABRT, the number of the former 17932 is more portable across architectures. 17933 17934 * tests/ppoll.c (test2): Replace SIGABRT with SIGHUP. 17935 * tests/ppoll.expected: Update regexp. 17936 * tests/ppoll-v.expected: Likewise. 17937 17938 2015-08-01 Dmitry V. Levin <ldv (a] altlinux.org> 17939 17940 decode_poll_exiting: reserve more space in output buffer. 17941 * poll.c (decode_poll_exiting): Reserve more space in output buffer. 17942 17943 2015-07-30 Dmitry V. Levin <ldv (a] altlinux.org> 17944 17945 Cleanup poll/ppoll decoders. 17946 * poll.c (decode_poll): Split into print_pollfd, decode_poll_entering, 17947 and decode_poll_exiting. 17948 (sys_poll, sys_ppoll): Update callers. 17949 * tests/ppoll.c: New file. 17950 * tests/ppoll.expected: Likewise. 17951 * tests/ppoll-v.expected: Likewise. 17952 * tests/ppoll.test: New test. 17953 * tests/Makefile.am (check_PROGRAMS): Add ppoll. 17954 (TESTS): Add ppoll.test. 17955 (EXTRA_DIST): Add ppoll.expected and ppoll-v.expected. 17956 * tests/.gitignore: Add ppoll. 17957 17958 poll: print timeout argument as int. 17959 * poll.c (sys_poll): Explicitly cast timeout argument to int. 17960 17961 stream.c: move poll and ppoll parsers to a separate file. 17962 * poll.c: New file. 17963 * Makefile.am (strace_SOURCES): Add it. 17964 * stream.c (decode_poll, sys_poll, sys_ppoll): Move to poll.c. 17965 17966 Assume that <poll.h> is available. 17967 * configure.ac (AC_CHECK_HEADERS): Remove poll.h and sys/poll.h. 17968 * pathtrace.c: Include <poll.h> unconditionally. 17969 * stream.c: Likewise. 17970 [HAVE_SYS_POLL_H]: Compile unconditionally. 17971 [!HAVE_SYS_POLL_H]: Remove. 17972 17973 tests: add oldselect.test. 17974 * tests/oldselect.c: New file. 17975 * tests/oldselect.expected: Likewise. 17976 * tests/oldselect.test: New test. 17977 * tests/Makefile.am (check_PROGRAMS): Add oldselect. 17978 (TESTS): Add oldselect.test. 17979 (EXTRA_DIST): Add oldselect.expected. 17980 * tests/.gitignore: Add oldselect. 17981 17982 2015-07-30 Elvira Khabirova <lineprinter0 (a] gmail.com> 17983 17984 Fix oldselect decoding on 64-bit architectures. 17985 As struct sel_arg_struct is an array of 32-bit values, 17986 fetch it using an intermediate array on 64-bit architectures. 17987 17988 * desc.c (sys_oldselect): Rename args to long_args. 17989 [SIZEOF_LONG == 4] Alias oldselect_args to long_args. 17990 [SIZEOF_LONG != 4] Introduce oldselect_args to fetch oldselect args. 17991 * linux/sh64/syscallent.h (oldselect): Remove. 17992 17993 2015-07-30 Dmitry V. Levin <ldv (a] altlinux.org> 17994 17995 net.c: use printaddr. 17996 * net.c (printsock, sys_recvfrom): Use printaddr. 17997 17998 2015-07-30 Denys Vlasenko <dvlasenk (a] redhat.com> 17999 18000 net.c: recvfrom fixes. 18001 This change fixes these three problems (before/after is shown): 18002 18003 On interrupted syscall, flags are not decoded: 18004 18005 -recvfrom(3, 0x7fff0a41e306, 10, 2, 0, 0) = ? ERESTARTSYS 18006 +recvfrom(3, 0x7fff0a41e306, 10, MSG_PEEK, 0, 0) = ? ERESTARTSYS 18007 18008 If peer address is unavalable (example: anon sockets from socketpair()), 18009 kernel returns socklen of 0, but we ignore that and show bogus sockaddr data: 18010 18011 -recvfrom(3, "123456789\0", 10, MSG_PEEK, {sa_family=0x7777 /* AF_??? */, sa_data="wwwwwwwwwwwwww"}, [0]) = 10 18012 +recvfrom(3, "123456789\0", 10, MSG_PEEK, 0x7ffde6edf760, [0]) = 10 18013 18014 SYS_FUNC(recvfrom) passes address of fromlen, not fromlen, to printsock(): 18015 18016 - printsock(tcp, tcp->u_arg[4], tcp->u_arg[5]); 18017 + printsock(tcp, tcp->u_arg[4], fromlen); 18018 18019 2015-07-29 Elliott Hughes <enh (a] google.com> 18020 18021 prctl: decode Android-specific PR_SET_VMA. 18022 Android kernels have a prctl to name VMAs. 18023 18024 * prctl.c (sys_prctl) [__ANDROID__]: Decode PR_SET_VMA. 18025 18026 2015-07-29 Dmitry V. Levin <ldv (a] altlinux.org> 18027 18028 mips: fix stub files. 18029 This complements commit 140ecf876686d49085c6eb3a2306e2ea6ea641bc. 18030 18031 * linux/mips/genstub.sh: Output SEN(printargs) instead of printargs. 18032 18033 Reported-by: Elliott Hughes <enh (a] google.com> 18034 18035 2015-07-29 Dmitry V. Levin <ldv (a] altlinux.org> 18036 18037 tests/bpf: fix build with incompatibly old linux/bpf.h and/or gcc. 18038 * configure.ac: Check how union bpf_attr.log_buf initialization works. 18039 * tests/bpf.c: Check for HAVE_UNION_BPF_ATTR_LOG_BUF. 18040 18041 Implement sched_getattr and sched_setattr syscalls decoding. 18042 * xlat/sched_flags.in: New file. 18043 * sched.c: Include "xlat/sched_flags.h". 18044 (print_sched_attr, sys_sched_setattr, sys_sched_getattr): New functions. 18045 * linux/dummy.h (sys_sched_getattr, sys_sched_setattr): Remove. 18046 * tests/sched_xetattr.c: New file. 18047 * tests/sched_xetattr.test: New test. 18048 * tests/Makefile.am (check_PROGRAMS): Add sched_xetattr. 18049 (TESTS): Add sched_xetattr.test. 18050 * tests/.gitignore: Add sched_xetattr. 18051 18052 Implement memfd_create syscall decoding. 18053 * memfd_create.c: New file. 18054 * Makefile.am (strace_SOURCES): Add it. 18055 * linux/dummy.h (sys_memfd_create): Remove. 18056 * pathtrace.c (pathtrace_match): Add SEN_memfd_create. 18057 * xlat/memfd_create_flags.in: New file. 18058 * tests/memfd_create.c: New file. 18059 * tests/memfd_create.expected: Likewise. 18060 * tests/memfd_create.test: New test. 18061 * tests/Makefile.am: (check_PROGRAMS): Add memfd_create. 18062 (TESTS): Add memfd_create.test. 18063 (EXTRA_DIST): Add memfd_create.expected. 18064 * tests/.gitignore: Add memfd_create. 18065 18066 2015-07-28 Elliott Hughes <enh (a] google.com> 18067 18068 Fix builds where HAVE_MQUEUE_H isn't defined. 18069 Android doesn't have <mqueue.h>. 18070 18071 * ipc.c (sys_mq_open) [!HAVE_MQUEUE_H]: Fix printaddr invocation. 18072 18073 2015-07-27 Dmitry V. Levin <ldv (a] altlinux.org> 18074 18075 tests/restart_syscall: skip if nanosleep looks uninterrupted. 18076 * tests/restart_syscall.test: Skip if restart_syscall is not detected 18077 and nanosleep syscall looks uninterrupted. 18078 18079 Implement execveat syscall decoding. 18080 * execve.c (decode_execve): New function. 18081 (sys_execve): Use it. 18082 (sys_execveat): New function. 18083 * linux/dummy.h (sys_execveat): Remove. 18084 * tests/execveat.c: New file. 18085 * tests/execveat.expected: Likewise. 18086 * tests/execveat-v.expected: Likewise. 18087 * tests/execveat.test: New test. 18088 * tests/Makefile.am (check_PROGRAMS): Add execveat. 18089 (TESTS): Add execveat.test. 18090 (EXTRA_DIST): Add execveat.expected and execveat-v.expected. 18091 * tests/.gitignore: Add execveat. 18092 18093 execve: fix support of personalities with different word size. 18094 * execve.c (printargc): Do not assume that host and target pointers have 18095 the same size. 18096 * tests/execve.c: New file. 18097 * tests/execve.expected: Likewise. 18098 * tests/execve-v.expected: Likewise. 18099 * tests/execve.test: New test. 18100 * tests/Makefile.am (check_PROGRAMS): Add execve. 18101 (TESTS): Add execve.test. 18102 (EXTRA_DIST): Add execve.expected and execve-v.expected. 18103 * tests/.gitignore: Add execve. 18104 18105 Implement bpf syscall decoding. 18106 * bpf.c: New file. 18107 * Makefile.am (strace_SOURCES): Add it. 18108 * configure.ac (AC_CHECK_HEADERS): Add linux/bpf.h. 18109 * linux/dummy.h (sys_bpf): Remove. 18110 * pathtrace.c (pathtrace_match): Add SEN_bpf. 18111 * xlat/bpf_commands.in: New file. 18112 * xlat/bpf_map_types.in: New file. 18113 * xlat/bpf_map_update_elem_flags.in: New file. 18114 * xlat/bpf_prog_types.in: New file. 18115 * tests/bpf.c: New file. 18116 * tests/bpf.test: New test. 18117 * tests/Makefile.am (check_PROGRAMS): Add bpf. 18118 (TESTS): Add bpf.test. 18119 * tests/.gitignore: Add bpf. 18120 18121 2015-07-25 Dmitry V. Levin <ldv (a] altlinux.org> 18122 18123 prctl: fix decoding of unrecognized commands. 18124 The use of printargs introduced by commit v4.10-179-g210a6b6 is wrong: 18125 when the first argument is already printed, printargs cannot be called. 18126 18127 * prctl.c (print_prctl_args): New function. 18128 (sys_prctl): Use it. 18129 18130 2015-07-23 Dmitry V. Levin <ldv (a] altlinux.org> 18131 18132 Macroize -m32/-mx32 configure checks. 18133 Prepare for additional configure checks that would be needed 18134 for new multiple personalities support. 18135 18136 * m4/mpers.m4: New file. 18137 * configure.ac: Use it. 18138 18139 2015-07-22 Dmitry V. Levin <ldv (a] altlinux.org> 18140 18141 tests/uid: import uid overflow check from tests/uid16. 18142 * tests/uid.c (main): Skip if the uid returned by getuid matches 18143 /proc/sys/kernel/overflowuid. 18144 18145 2015-07-21 Dmitry V. Levin <ldv (a] altlinux.org> 18146 18147 sh64: fix inotify_{add,rm}_watch syscall entries. 18148 * linux/sh64/syscallent.h (inotify_add_watch, inotify_rm_watch): 18149 Set sys_func. 18150 18151 microblaze: fix several syscall entries. 18152 * linux/microblaze/syscallent.h (signalfd4, eventfd2, epoll_create1, 18153 dup3, pipe2, inotify_init1, recvmmsg): Set sys_func. 18154 18155 hppa: fix several syscall entries. 18156 * linux/hppa/syscallent.h (remap_file_pages, mq_open, mq_unlink, 18157 mq_timedsend, mq_timedreceive, mq_notify, mq_getsetattr, 18158 clock_nanosleep, signalfd, timerfd): Set sys_func. 18159 18160 ia64: fix getpagesize syscall entry. 18161 * linux/ia64/syscallent.h (getpagesize): Fux nargs. 18162 18163 avr32: fix fstatat64 syscall entry. 18164 * linux/avr32/syscallent.h (fstatat64): Set sys_func. 18165 18166 alpha: fix 2 dummy osf syscall entries. 18167 * linux/alpha/syscallent.h (osf_set_program_attributes): Fix nargs. 18168 (osf_sigstack): Fix nargs and sys_name. 18169 18170 alpha, arm, ia64, mips, sh64: fix semop syscall entries. 18171 * linux/alpha/syscallent.h (semop): Fix nargs, set sys_func. 18172 * linux/ia64/syscallent.h (semop): Set sys_func. 18173 * linux/mips/syscallent-n32.h (semop): Likewise. 18174 * linux/mips/syscallent-n64.h (semop): Likewise. 18175 * linux/arm/syscallent.h (semop): Fix nargs. 18176 * linux/sh64/syscallent.h (semop): Likewise. 18177 18178 m68k: fix getpagesize decoding. 18179 * linux/m68k/syscallent.h (getpagesize): Set sys_func. 18180 * mem.c [M68K] (sys_getpagesize): Define. 18181 18182 tests/ip_mreq: skip if basic setsockopt operations fail. 18183 * tests/ip_mreq.c (main): Return 77 if basic 18184 IP_ADD_MEMBERSHIP/IP_DROP_MEMBERSHIP options cannot be set. 18185 18186 2015-07-21 Dmitry V. Levin <ldv (a] altlinux.org> 18187 18188 tests: use -lpthread instead of -pthread. 18189 On some obscure systems, -lpthread is more likely to work than -pthread. 18190 18191 * tests/Makefile.am (filter_unavailable_LDFLAGS): Rename to 18192 filter_unavailable_LDADD and change to -lpthread. 18193 18194 2015-07-21 Dmitry V. Levin <ldv (a] altlinux.org> 18195 18196 mips o32: fix utimensat syscall entry. 18197 * linux/mips/syscallent-o32.h (utimensat): set sys_flags and sys_func. 18198 18199 2015-07-21 Dmitry V. Levin <ldv (a] altlinux.org> 18200 18201 linux/mips/syscallent-compat.h: use designated initializers. 18202 Change linux/mips/syscallent-compat.h to use designated initializers 18203 like normal syscallent.h files. 18204 18205 * linux/mips/syscallent-compat.h: Use designated initializers. 18206 18207 2015-07-21 Dmitry V. Levin <ldv (a] altlinux.org> 18208 18209 linux/mips/syscallent-compat.h: fix initalization of empty entries. 18210 This complements commit 140ecf876686d49085c6eb3a2306e2ea6ea641bc. 18211 18212 * linux/mips/syscallent-compat.h: Fix initalization of empty entries. 18213 18214 2015-07-20 Dmitry V. Levin <ldv (a] altlinux.org> 18215 18216 Remove unused parsers of getmsg and putmsg. 18217 * stream.c [SPARC || SPARC64] (sys_putmsg, sys_getmsg): Remove. 18218 Stop including "xlat/msgflags.h". 18219 * xlat/msgflags.in: Remove. 18220 18221 sigreturn: make use of RVAL_DECODED. 18222 * sigreturn.c (arch_sigreturn): New function. 18223 (sys_sigreturn): Use it. Return RVAL_DECODED. 18224 * linux/alpha/arch_sigreturn.c: Update. 18225 * linux/crisv10/arch_sigreturn.c: Likewise. 18226 * linux/m68k/arch_sigreturn.c: Likewise. 18227 * linux/microblaze/arch_sigreturn.c: Likewise. 18228 * linux/x86_64/arch_sigreturn.c: Likewise. 18229 18230 or1k_atomic.c: make use of RVAL_DECODED. 18231 * or1k_atomic.c (sys_or1k_atomic): Update for RVAL_DECODED. 18232 18233 Update openat parser for the RVAL_DECODED change. 18234 * open.c (sys_openat): Update for RVAL_DECODED. 18235 18236 bjm.c: make use of RVAL_DECODED. 18237 * bjm.c (sys_create_module, sys_delete_module, sys_init_module, 18238 sys_finit_module): Update for RVAL_DECODED. 18239 18240 access.c: make use of RVAL_DECODED. 18241 * access.c (decode_access, sys_faccessat): Update for RVAL_DECODED. 18242 18243 affinity.c: make use of RVAL_DECODED. 18244 * affinity.c (sys_sched_setaffinity): Update for RVAL_DECODED. 18245 18246 affinity.c: use printaddr and umove_or_printaddr. 18247 * affinity.c (print_affinitylist): Use printaddr and umove_or_printaddr. 18248 (sys_sched_getaffinity): Remove redundant u_rval check. 18249 18250 aio.c: enhance io_* syscalls decoding. 18251 * aio.c (sys_io_setup): Use printnum_int64 and printnum_long. 18252 (sys_io_destroy, sys_io_submit): Update for RVAL_DECODED. 18253 (sys_io_submit): Use umove_or_printaddr and printaddr. 18254 Enclose iocb array in square brackets. 18255 Change to traditional structure output format. 18256 (print_io_event): New function. 18257 (sys_io_cancel, sys_io_getevents): Use it. 18258 (sys_io_cancel): Use umove_or_printaddr and printaddr. 18259 (sys_io_getevents): Use printaddr. 18260 18261 cacheflush.c: make use of RVAL_DECODED. 18262 * cacheflush.c (sys_cacheflush): Update for RVAL_DECODED. 18263 18264 cacheflush.c: use printaddr. 18265 * cacheflush.c (sys_cacheflush): Use printaddr. 18266 18267 capability.c: make use of RVAL_DECODED. 18268 * capability.c (sys_capset): Update for RVAL_DECODED. 18269 18270 capability.c: use printaddr and umove_or_printaddr. 18271 * capability.c (get_cap_header): Use printaddr. 18272 (print_cap_data): Use printaddr and umove_or_printaddr. 18273 18274 chdir.c: make use of RVAL_DECODED. 18275 * chdir.c (sys_chdir): Update for RVAL_DECODED. 18276 18277 chmod.c: make use of RVAL_DECODED. 18278 * chmod.c (decode_chmod): Change to return void. 18279 (sys_chmod, sys_fchmodat): Update callers. Update for RVAL_DECODED. 18280 (sys_fchmod): Update for RVAL_DECODED. 18281 18282 clone.c: make use of RVAL_DECODED. 18283 * clone.c (sys_setns, sys_unshare, sys_fork): Update for RVAL_DECODED. 18284 18285 Alias sys_epoll_create to printargs_ld. 18286 * desc.c (sys_epoll_create): Remove. 18287 * linux/dummy.h (sys_epoll_create): Alias to printargs_ld. 18288 18289 desc.c: make use of RVAL_DECODED. 18290 * desc.c (sys_flock, sys_close, sys_dup, do_dup2, sys_epoll_create1, 18291 sys_epoll_ctl, do_eventfd, sys_perf_event_open): Update 18292 for RVAL_DECODED. 18293 18294 desc.c: do not use xmalloc, use umove_or_printaddr and printaddr. 18295 * desc.c (printflock64, printflock): Use umove_or_printaddr. 18296 (decode_select): Do not use xmalloc. Use umoven_or_printaddr 18297 and printaddr. 18298 (sys_oldselect): Use printaddr. 18299 (sys_epoll_ctl): Use umoven_or_printaddr and printaddr. 18300 (print_epoll_event_array): New function. 18301 (sys_epoll_wait_common): Use it. 18302 (sys_pselect6): Use umove_or_printaddr. 18303 (sys_eventfd2): Use printaddr. 18304 18305 xlat/epollctls.in: add default values. 18306 * xlat/epollctls.in (EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD): Add 18307 default values. 18308 18309 dirent.c: do not use xmalloc. 18310 * dirent.c (print_old_dirent): Use umove_or_printaddr. 18311 (sys_readdir): Use printaddr. 18312 (sys_getdents, sys_getdents64): Do not use xmalloc for dirents, 18313 treat malloc failure the same way as umoven failure. Use printaddr. 18314 18315 execve.c: make use of RVAL_DECODED. 18316 * execve.c (sys_execve, sys_execv): Update for RVAL_DECODED. 18317 18318 execve.c: use printaddr and umove_or_printaddr. 18319 * execve.c (printargv): Use umoven_or_printaddr. 18320 (sys_execve, sys_execv): Use printaddr. 18321 18322 fadvise.c: make use of RVAL_DECODED. 18323 * fadvise.c (sys_fadvise64, sys_fadvise64_64): Update for RVAL_DECODED. 18324 18325 fallocate.c: make use of RVAL_DECODED. 18326 * fallocate.c (sys_fallocate): Update for RVAL_DECODED. 18327 18328 fanotify.c: make use of RVAL_DECODED. 18329 * fanotify.c (sys_fanotify_init, sys_fanotify_mark): Update 18330 for RVAL_DECODED. 18331 18332 fchownat.c: make use of RVAL_DECODED. 18333 * fchownat.c (sys_fchownat): Update for RVAL_DECODED. 18334 18335 file.c: use umove_or_printaddr. 18336 * file.c (printstat32, printstatsol): Remove. 18337 (printstat, printstat64, printoldstat): Use umove_or_printaddr. 18338 18339 futex.c: enhance futex syscall decoding. 18340 * futex.c (sys_futex): Use switch statement. Use printaddr. 18341 Print uint32_t syscall arguments using %u format. 18342 Update for RVAL_DECODED. 18343 18344 get_robust_list.c: use printnum_long. 18345 * get_robust_list.c (sys_get_robust_list): Use printnum_long. 18346 18347 getcpu.c: use printnum_int and printaddr. 18348 * getcpu.c (sys_getcpu): Use printnum_int and printaddr. 18349 18350 getcwd.c: use printaddr. 18351 * getcwd.c (sys_getcwd): Use printaddr. 18352 18353 getrandom.c: use printaddr. 18354 * getrandom.c (sys_getrandom): Use printaddr. 18355 18356 hostname.c: make use of RVAL_DECODED. 18357 * hostname.c (sys_sethostname): Update for RVAL_DECODED. 18358 18359 hostname.c: use printaddr. 18360 * hostname.c (sys_gethostname): Use printaddr. 18361 18362 inotify.c: make use of RVAL_DECODED. 18363 * inotify.c (sys_inotify_add_watch, sys_inotify_rm_watch, 18364 sys_inotify_init1): Update for RVAL_DECODED. 18365 18366 io.c: make use of RVAL_DECODED. 18367 * io.c (sys_write, sys_writev, sys_pwrite, sys_pwritev, sys_sendfile, 18368 sys_sendfile64, sys_tee, sys_splice, sys_vmsplice): Update 18369 for RVAL_DECODED. 18370 18371 Use printnum_int64 instead of print_loff_t. 18372 * defs.h (print_loff_t): Remove. 18373 * io.c (print_loff_t): Remove. 18374 (sys_sendfile64, sys_splice): Use printnum_int64 instead of print_loff_t. 18375 * mtd.c (mtd_ioctl): Likewise. 18376 18377 io.c: use printaddr and umove_or_printaddr. 18378 * io.c (sys_read, sys_pread): Use printaddr. 18379 (tprint_iov_upto): Do not fetch data in case of syserror. 18380 Use printaddr. 18381 (sys_readv, sys_preadv): Remove redundant check for syserror. 18382 (print_off_t): Use printnum_int and printnum_long. 18383 (print_loff_t): Use umove_or_printaddr. 18384 18385 ioprio.c: make use of RVAL_DECODED. 18386 * ioprio.c (sys_ioprio_set): Update for RVAL_DECODED. 18387 18388 ipc.c: use printaddr and umove_or_printaddr. 18389 * ipc.c (sys_msgctl): Use printaddr. 18390 (tprint_msgbuf): New function. 18391 (tprint_msgsnd, tprint_msgrcv): Use it. 18392 (sys_msgrcv): Use umove_or_printaddr. 18393 (tprint_sembuf): Rename to tprint_sembuf_array. 18394 (tprint_sembuf): New function. 18395 (tprint_sembuf_array): Use it. 18396 (sys_semop, sys_semtimedop): Update callers. 18397 (sys_shmctl, sys_shmat, sys_shmdt): Use printaddr. 18398 (sys_mq_open, printmqattr): Use printaddr and umove_or_printaddr. 18399 * tests/ipc_msg.c (main): Update msgctl IPC_RMID regexp. 18400 * tests/ipc_shm.c (main): Update shmctl IPC_RMID regexp. 18401 18402 kexec.c: use printaddr and umove_or_printaddr. 18403 * kexec.c (print_seg): New function. 18404 (print_kexec_segments): Use it. Use printaddr and umove_or_printaddr. 18405 (kexec_load): Use printaddr. Update for RVAL_DECODED. 18406 18407 keyctl.c: make use of RVAL_DECODED. 18408 * keyctl.c (sys_add_key, sys_request_key): Update for RVAL_DECODED. 18409 (keyctl_join_session_keyring, keyctl_handle_key, 18410 keyctl_set_reqkey_keyring): Remove. 18411 (keyctl_get_keyring_id, keyctl_update_key, keyctl_handle_key_key, 18412 keyctl_read_key, keyctl_keyring_search, keyctl_chown_key, 18413 keyctl_instantiate_key, keyctl_instantiate_key_iov, keyctl_negate_key, 18414 keyctl_reject_key, keyctl_set_timeout, keyctl_get_persistent, 18415 keyctl_setperm_key): Change to return void. 18416 Update for RVAL_DECODED. 18417 (sys_keyctl): Update callers. Update for RVAL_DECODED. 18418 18419 keyctl.c: use printaddr. 18420 * keyctl.c (keyctl_read_key): Use printaddr. 18421 18422 ldt.c: make use of RVAL_DECODED. 18423 * ldt.c (sys_modify_ldt, sys_set_thread_area, sys_get_thread_area): 18424 Update for RVAL_DECODED. 18425 18426 ldt.c: use printaddr and umove_or_printaddr. 18427 * ldt.c [I386 || X86_64 || X32] (print_user_desc): 18428 Use umove_or_printaddr. 18429 [I386 || X86_64 || X32] (sys_modify_ldt): Use printaddr. 18430 [(M68K || MIPS] (set_thread_area): Likewise. 18431 [I386 || X86_64 || X32] (set_thread_area): Do not fetch data 18432 if !verbose. 18433 [I386 || X86_64 || X32] (get_thread_area): Remove redundant check 18434 for syserror. 18435 18436 link.c: make use of RVAL_DECODED. 18437 * link.c (sys_link, sys_linkat, sys_unlinkat, sys_symlinkat): Update 18438 for RVAL_DECODED. 18439 18440 lseek.c: make use of RVAL_DECODED. 18441 * lseek.c (sys_lseek): Update for RVAL_DECODED. 18442 18443 lseek.c: use printnum_int64. 18444 * lseek.c (sys_llseek): Use printnum_int64. 18445 18446 mem.c: make use of RVAL_DECODED. 18447 * mem.c (print_mmap): Change to return void. 18448 Update for RVAL_DECODED. 18449 (sys_old_mmap, sys_old_mmap_pgoff, sys_mmap, sys_mmap_pgoff, 18450 sys_mmap_4koff): Update callers. Update for RVAL_DECODED. 18451 (sys_brk, sys_munmap, sys_mprotect, sys_mremap, sys_madvise, 18452 sys_mlockall, sys_msync, sys_remap_file_pages, sys_mbind, 18453 sys_set_mempolicy, sys_migrate_pages, [POWERPC] subpage_prot): 18454 Update for RVAL_DECODED. 18455 18456 mem.c: use printaddr and umove_or_printaddr. 18457 * mem.c (sys_brk, print_mmap, sys_munmap, sys_mprotect, sys_mremap, 18458 sys_madvise, sys_msync, sys_mincore, sys_remap_file_pages, get_nodes, 18459 sys_mbind, [POWERPC] sys_subpage_prot): Use printaddr. 18460 (sys_get_mempolicy): Use printaddr and umove_or_printaddr. 18461 18462 mknod.c: make use of RVAL_DECODED. 18463 * mknod.c (decode_mknod): Change to return void. 18464 Update for RVAL_DECODED. 18465 (sys_mknod, sys_mknodat): Update callers. Update for RVAL_DECODED. 18466 [SPARC || SPARC64] (xmknod): Update for RVAL_DECODED. 18467 18468 mount.c: make use of RVAL_DECODED. 18469 * mount.c (sys_mount): Update for RVAL_DECODED. 18470 18471 mount.c: use printaddr. 18472 * mount.c (sys_mount): Use printaddr. 18473 18474 Alias sys_connect to sys_bind. 18475 * linux/dummy.h (sys_connect): Alias to sys_bind. 18476 * net.c (sys_connect): Remove. 18477 18478 net.c: make use of RVAL_DECODED. 18479 * net.c (sys_socket, sys_bind, sys_listen, sys_send, sys_sendto, 18480 sys_sendmsg, sys_shutdown, sys_setsockopt): Update for RVAL_DECODED. 18481 18482 net.c: use printaddr and umove_or_printaddr. 18483 * net.c (printsock): Use printaddr and umove_or_printaddr. 18484 (printcmsghdr, printmsghdr, printmmsghdr, decode_mmsg, do_sockname, 18485 sys_recv, sys_recvfrom, sys_recvmsg, do_pipe, print_linger, print_ucred, 18486 print_tpacket_stats, print_icmp_filter, print_getsockopt, 18487 print_group_req, print_tpacket_req, print_packet_mreq, 18488 print_setsockopt): Use printaddr. 18489 (print_mreq, print_mreq6): Use umove_or_printaddr. 18490 18491 2015-07-18 Elvira Khabirova <lineprinter0 (a] gmail.com> 18492 18493 tests: add sigaltstack.test. 18494 * tests/sigaltstack.c: New file. 18495 * tests/sigaltstack.expected: Likewise. 18496 * tests/sigaltstack.test: New test. 18497 * tests/Makefile.am (check_PROGRAMS): Add sigaltstack. 18498 (TESTS): Add sigaltstack.test. 18499 (EXTRA_DIST): sigaltstack.expected. 18500 * tests/.gitignore: Add sigaltstack. 18501 18502 bootstrap: delete personality test directories beforehand. 18503 * bootstrap: Delete tests-m32 and tests-mx32 directories 18504 before creating them. 18505 18506 2015-07-18 Dmitry V. Levin <ldv (a] altlinux.org> 18507 18508 defs.h: do not include <signal.h> 18509 * printsiginfo.h: New file. 18510 * Makefile.am (strace_SOURCES): Add it. 18511 * defs.h: Do not include <signal.h>. 18512 (printsiginfo): Remove. 18513 * printsiginfo.c: Include <signal.h> and "printsiginfo.h". 18514 * strace.c: Likewise. 18515 * sigaltstack.c: Include <signal.h>. 18516 * signal.c: Likewise. 18517 * sigreturn.c: Likewise. 18518 * time.c: Likewise. 18519 18520 resource.c: move printrusage and printrusage32 to a separate file. 18521 * printrusage.c: New file. 18522 * Makefile.am (strace_SOURCES): Add it. 18523 * resource.c (printrusage, [ALPHA] printrusage32): Move 18524 to printrusage.c. 18525 18526 open.c: make use of RVAL_DECODED. 18527 * open.c (decode_open, sys_creat): Update for RVAL_DECODED. 18528 18529 personality.c: make use of RVAL_DECODED. 18530 * personality.c (sys_personality): Update for RVAL_DECODED. 18531 18532 printsiginfo.c: use umove_or_printaddr. 18533 * printsiginfo.c (printsiginfo_at): Use umove_or_printaddr. 18534 18535 prctl.c: make use of RVAL_DECODED. 18536 * prctl.c (prctl_enter, prctl_exit): Merge into sys_prctl. 18537 (sys_prctl, sys_arch_prctl): Update for RVAL_DECODED. 18538 18539 prctl.c: use printaddr and umove_or_printaddr. 18540 * prctl.c (prctl_exit): Use printaddr and umove_or_printaddr. 18541 18542 process.c: use printaddr. 18543 * process.c (sys_ptrace): Use printaddr. 18544 18545 process_vm.c: make use of RVAL_DECODED. 18546 * process_vm.c (sys_process_vm_writev): Update for RVAL_DECODED. 18547 18548 process_vm.c: use printaddr. 18549 * process_vm.c (sys_process_vm_readv): Use printaddr. 18550 18551 reboot.c: make use of RVAL_DECODED. 18552 * reboot.c (sys_reboot): Update for RVAL_DECODED. 18553 18554 Enhance quotactl decoding. 18555 * quota.c (decode_cmd_data): Use umove_or_printaddr. 18556 (sys_quotactl): Do not disable the parser in verbose mode. 18557 Decode all "set" commands on entering syscall. 18558 18559 readahead.c: make use of RVAL_DECODED. 18560 * readahead.c (sys_readahead.c): Update for RVAL_DECODED. 18561 18562 readlink.c: use printaddr. 18563 * readlink.c (decode_readlink): Use printaddr. 18564 18565 renameat.c: make use of RVAL_DECODED. 18566 * renameat.c (sys_renameat, sys_renameat2): Update for RVAL_DECODED. 18567 18568 resource.c: make use of RVAL_DECODED. 18569 * resource.c (sys_setrlimit, sys_getpriority, sys_setpriority): 18570 Update for RVAL_DECODED. 18571 18572 resource.c: use umove_or_printaddr. 18573 * resource.c (print_rlimit64, print_rlimit32, printrusage32, 18574 printrusage, sys_times): Use umove_or_printaddr. 18575 (decode_rlimit64): Remove. 18576 (decode_rlimit): Remove redundant checks. 18577 [defined(current_wordsize) && current_wordsize != 4] (decode_rlimit): 18578 Define to print_rlimit64. 18579 (sys_prlimit64): Replace decode_rlimit64 with print_rlimit64. 18580 18581 sched.c: make use of RVAL_DECODED. 18582 * sched.c (sys_sched_setscheduler, sys_sched_setparam, 18583 sys_sched_get_priority_min): Update for RVAL_DECODED. 18584 18585 sched.c: use printnum_int and printaddr. 18586 * sched.c (sys_sched_setscheduler, sys_sched_getparam, 18587 sys_sched_setparam): Use printnum_int for sched_param decoding. 18588 (sched_rr_get_interval): Use printaddr. 18589 18590 scsi.c: use printaddr. 18591 * scsi.c (print_sg_io_buffer): Use printaddr. 18592 18593 2015-07-17 Dmitry V. Levin <ldv (a] altlinux.org> 18594 18595 seccomp.c: make use of RVAL_DECODED. 18596 * seccomp.c (sys_seccomp): Update for RVAL_DECODED. 18597 18598 seccomp.c: use printaddr and umove_or_printaddr. 18599 * seccomp.c (decode_fprog, decode_seccomp_set_mode_strict): 18600 Use printaddr. 18601 (print_seccomp_filter): Use umove_or_printaddr. 18602 18603 sigaltstack.c: use printaddr and umove_or_printaddr. 18604 * sigaltstack.c (print_stack_t): Use umove_or_printaddr and printaddr. 18605 18606 signal.c: make use of RVAL_DECODED. 18607 * signal.c (sys_sigsuspend, sys_kill, sys_tgkill, sys_rt_sigsuspend, 18608 sys_rt_sigqueueinfo, sys_rt_tgsigqueueinfo, sys_restart_syscall, 18609 do_signalfd): Update for RVAL_DECODED. 18610 18611 signal.c: use printaddr and umove_or_printaddr. 18612 * signal.c (print_sigset_addr_len, decode_old_sigaction): 18613 Use printaddr and umove_or_printaddr. 18614 (sys_signal): Use printaddr. 18615 (sys_sigprocmask, sys_sigpending, sys_rt_sigprocmask, 18616 sys_rt_sigpending): Remove redundant checks for syserror. 18617 (decode_new_sigaction): Use umove_or_printaddr. 18618 18619 2015-07-16 Dmitry V. Levin <ldv (a] altlinux.org> 18620 18621 sram_alloc.c: make use of RVAL_DECODED. 18622 * sram_alloc.c [BFIN] (sys_sram_alloc): Update for RVAL_DECODED. 18623 18624 statfs.c: use umove_or_printaddr. 18625 * statfs.c (printstatfs, printstatfs64, printcompat_statfs64): 18626 Use umove_or_printaddr. 18627 18628 swapon.c: make use of RVAL_DECODED. 18629 * swapon.c (sys_swapon): Update for RVAL_DECODED. 18630 18631 swapon.c: move fallback definitions of swap options to xlat/ 18632 * swapon.c: Move definitions of SWAP_FLAG_* flags ... 18633 * xlat/swap_flags.in: ... here. 18634 18635 sync_file_range2: fix typo in flags decoding. 18636 * sync_file_range.c (sys_sync_file_range2): Fix typo in flags decoding. 18637 18638 sync_file_range.c: make use of RVAL_DECODED. 18639 * sync_file_range.c (sys_sync_file_range, sys_sync_file_range2): Update 18640 for RVAL_DECODED. 18641 18642 syslog.c: use umove_or_printaddr and RVAL_DECODED. 18643 * sysctl.c (sys_sysctl): Use umove_or_printaddr and RVAL_DECODED. 18644 18645 sysinfo.c: use umove_or_printaddr. 18646 * sysinfo.c (sys_sysinfo): Use umove_or_printaddr. 18647 18648 syslog.c: make use of RVAL_DECODED. 18649 * syslog.c (sys_syslog): Update for RVAL_DECODED. 18650 18651 syslog.c: use printaddr. 18652 * syslog.c (sys_syslog): Use printaddr. 18653 18654 sysmips.c: cleanup. 18655 * sysmips.c [MIPS] (sys_sysmips): Use switch statement. Use printaddr. 18656 Fix misprinted ", " delimiter. 18657 18658 sysmips.c: make use of RVAL_DECODED. 18659 * sysmips.c [MIPS] (sys_sysmips): Update for RVAL_DECODED. 18660 18661 time.c: make use of RVAL_DECODED. 18662 * time.c (sys_settimeofday, sys_osf_settimeofday, sys_clock_settime, 18663 sys_timerfd, sys_timerfd_create, sys_timerfd_settime): Update 18664 for RVAL_DECODED. 18665 (timerfd_gettime): Decode struct itimerspec argument on exiting syscall. 18666 18667 time.c: use printaddr, printnum_int, and umoven_or_printaddr. 18668 * time.c (sys_nanosleep): Use printaddr. 18669 (printitv_bitness, tprint_timex32, tprint_timex, printsigevent32, 18670 printsigevent): Use umoven_or_printaddr. 18671 (sys_timer_create): Use printnum_int. 18672 (sys_getitimer, sys_osf_getitimer, sys_setitimer, sys_osf_setitimer, 18673 do_adjtimex, sys_timer_settime, sys_timer_gettime): Remove 18674 redundant checks for syserror. 18675 18676 sprinttv: do not fetch data in case of syserror. 18677 * time.c (sprinttv): Do not fetch data in case syserror. 18678 Print address instead of {...} in case of umove failure. 18679 (sys_gettimeofday, sys_osf_gettimeofday, sys_adjtime, sys_clock_gettime, 18680 clock_nanosleep): Remove now redundant checks for syserror. 18681 18682 truncate.c: make use of RVAL_DECODED. 18683 * truncate.c (sys_truncate, sys_truncate64, sys_ftruncate, 18684 sys_ftruncate64): Update for RVAL_DECODED. 18685 18686 umask.c: make use of RVAL_DECODED. 18687 * umask.c (sys_umask): Update for RVAL_DECODED. 18688 18689 umount.c: make use of RVAL_DECODED. 18690 * umount.c (sys_umount2): Update for RVAL_DECODED. 18691 18692 utimes.c: make use of RVAL_DECODED. 18693 * utimes.c (decode_utimes): Change to return void. 18694 Update for RVAL_DECODED. 18695 (sys_utimes, sys_futimesat, sys_utimensat, sys_osf_utimes): 18696 Update callers. Update for RVAL_DECODED. 18697 18698 2015-07-16 Dmitry V. Levin <ldv (a] altlinux.org> 18699 18700 tests/uid.test: adopt for alpha. 18701 Make the test work on alpha that has getxuid syscall instead of getuid. 18702 18703 * tests/uid.awk (BEGIN): Update getuid regexp to match both getuid 18704 and getxuid syscalls. 18705 * tests/uid.c (main): Allow __NR_getxuid as an alternative 18706 to __NR_getuid. 18707 * tests/uid.test: If getuid syscall is not available, probe for 18708 getxuid syscall. 18709 18710 2015-07-16 Dmitry V. Levin <ldv (a] altlinux.org> 18711 18712 uid.c: make use of RVAL_DECODED. 18713 * uid.c (sys_setuid, sys_setreuid, sys_setresuid, sys_chown, sys_fchown, 18714 sys_setgroups): Update for RVAL_DECODED. 18715 18716 uid.c: use printaddr and umoven_or_printaddr. 18717 * uid.c (get_print_uid): Use umoven_or_printaddr. 18718 (sys_getresuid): Do not check for syserror, get_print_uid now does 18719 the right thing. 18720 (sys_setgroups, sys_getgroups): Add const qualifier to local variables 18721 that are assigned once. Use printaddr. 18722 18723 ia64: wire up utimensat syscall. 18724 * linux/ia64/syscallent.h (utimensat): New entry. 18725 18726 decode_utimes: enclose timespec array in square brackets. 18727 * utimes.c (decode_utimes): enclose timespec array in square brackets 18728 instead of curly brackets. 18729 18730 uname.c: use umove_or_printaddr. 18731 * uname.c (sys_uname): Use umove_or_printaddr. 18732 18733 tests: add utime.test. 18734 * tests/utime.c: New file. 18735 * tests/utime.test: New test. 18736 * tests/Makefile.am (check_PROGRAMS): Add utime. 18737 (TESTS): Add utime.test. 18738 * tests/.gitignore: Add utime. 18739 18740 utime.c: make use of RVAL_DECODED. 18741 * utime.c (sys_utime): Update for RVAL_DECODED. 18742 18743 utime.c: use umoven_or_printaddr. 18744 * utime.c (sys_utime): Use umoven_or_printaddr. 18745 18746 2015-07-15 Dmitry V. Levin <ldv (a] altlinux.org> 18747 18748 wait.c: use printaddr and umove_or_printaddr. 18749 * wait.c (waitid): Do not check for NULL the address passed 18750 to printrusage. 18751 (printwaitn): Likewise. 18752 Use printaddr and umove_or_printaddr for fetching wait status. 18753 18754 wait: move fallback definitions of wait options to xlat/ 18755 * wait.c: Move definitions of __W* flags ... 18756 * xlat/wait4_options.in: ... here. 18757 18758 tests: add xattr.test. 18759 * tests/xattr.c: New file. 18760 * tests/xattr.expected: Likewise. 18761 * tests/xattr.test: New test. 18762 * tests/Makefile.am (check_PROGRAMS): Add xattr. 18763 (TESTS): Add xattr.test. 18764 (EXTRA_DIST): Add xattr.expected. 18765 * tests/.gitignore: Add xattr. 18766 18767 2015-07-14 Dmitry V. Levin <ldv (a] altlinux.org> 18768 18769 xattr.c: make use of RVAL_DECODED. 18770 * xattr.c (sys_setxattr, sys_fsetxattr, sys_removexattr, 18771 sys_fremovexattr): Update for RVAL_DECODED. 18772 18773 print_xattr_val: do not fetch data in case of !verbose || syserror. 18774 * xattr.c (print_xattr_val): Do not fetch data in case 18775 of !verbose || syserror. Use printaddr. 18776 18777 print_xattr_list: use printaddr. 18778 * xattr.c (print_xattr_list): Use printaddr. 18779 18780 print_xattr_val: remove unused argument. 18781 * xattr.c (print_xattr_val): Remove unused "failed" argument. 18782 (sys_setxattr, sys_fsetxattr, sys_getxattr, sys_fgetxattr): Update 18783 all callers. 18784 18785 print_xattr_list: remove redundant address check. 18786 * xattr.c (print_xattr_list): Do not check for NULL the address passed 18787 to printstr. 18788 18789 ipc.c: make use of RVAL_DECODED. 18790 * ipc.c (sys_mq_notify, sys_mq_open, sys_mq_timedreceive, 18791 sys_mq_timedsend, sys_msgctl, sys_msgget, sys_msgsnd, sys_semctl, 18792 sys_semget, sys_semop, sys_semtimedop, sys_shmctl, sys_shmdt, 18793 sys_shmget): Update for RVAL_DECODED. 18794 (sys_shmat): Decode all arguments on entering syscall. 18795 18796 2015-07-14 Dmitry V. Levin <ldv (a] altlinux.org> 18797 18798 umoven_or_printaddr: do not fetch data if not in verbose mode. 18799 After this change, umoven_or_printaddr and its callers, including 18800 printnum_* and printpair_*, will not fetch data in !verbose mode. 18801 18802 * util.c (umoven_or_printaddr): Do not call umoven if !verbose. 18803 18804 2015-07-14 Dmitry V. Levin <ldv (a] altlinux.org> 18805 18806 Change printnum_* printers to honor syserror. 18807 With this change, printnum_* printers will not attempt to fetch data 18808 in case of exiting(tcp) && syserror(tcp). 18809 All "at exiting" decoders that call these printers have been made 18810 ready for this change in previous commits. 18811 18812 * util.c (DEF_PRINTNUM, DEF_PRINTPAIR): Use umove_or_printaddr. 18813 * prctl.c (prctl_exit): Use printnum_int and printnum_long. 18814 (sys_arch_prctl): Do not check for syserror. 18815 18816 2015-07-13 Dmitry V. Levin <ldv (a] altlinux.org> 18817 18818 term.c: enhance tty ioctl parser. 18819 Decode as much data on entering syscall as possible. 18820 18821 * term.c (decode_termios, decode_termio, decode_winsize, decode_ttysize, 18822 decode_modem_flags): New functions. 18823 (term_ioctl): Use them. Update for RVAL_DECODED. 18824 18825 2015-07-12 Elvira Khabirova <lineprinter0 (a] gmail.com> 18826 18827 Change comparisons with function pointers to comparisons with SENs. 18828 * pathtrace.c (pathtrace_match): Change all comparisons with function 18829 pointers to a single SEN based switch. 18830 * syscall.c (dumpio, trace_syscall_entering): Change all comparisons 18831 with function pointers to comparisons with SENs. 18832 * ipc.c (sys_ipc): Remove. 18833 * sock.c (sys_socketcall): Likewise. 18834 * linux/dummy.h (sys_ipc, sys_socketcall): New aliases. 18835 18836 Add unique syscall entry numbers (SENs) 18837 * Makefile.am (BUILT_SOURCES, CLEANFILES): Add sen.h. 18838 (syscallent_names, syscallent_patterns, syscallent_files): New variables. 18839 (sen.h): New rule. 18840 * defs.h (struct sysent): Add sen field. 18841 * generate_sen.sh: New file. 18842 * linux/syscall.h: Include "sen.h". 18843 * syscall.c (SEN_NAME): New temporary macro. 18844 (SEN): Use it to prepend syscall entry number. 18845 18846 Introduce SEN macro. 18847 * syscall.c (SEN): New temporary macro. 18848 * linux/dummy.h (sys_printargs): New macro. 18849 * linux/subcall.h: Wrap all sys_func entries using SEN. 18850 * linux/*/syscallent*.h: Likewise. 18851 18852 2015-07-10 Dmitry V. Levin <ldv (a] altlinux.org> 18853 18854 scsi.c: enhance SG_IO ioctl parser. 18855 Fix SG_IO ioctl output in case of failed umove 18856 18857 * scsi.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. 18858 Update for RVAL_DECODED. 18859 (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, 18860 print_sg_io_v4_res): Do not print address in case of failed umove. 18861 (scsi_ioctl): Use printaddr. 18862 18863 2015-07-10 Dmitry V. Levin <ldv (a] altlinux.org> 18864 18865 ptp.c: enhance ptp ioctl parser. 18866 * ptp.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. 18867 Update for RVAL_DECODED. 18868 (ptp_ioctl): Use umove_or_printaddr. 18869 18870 2015-07-10 Dmitry V. Levin <ldv (a] altlinux.org> 18871 18872 mtd.c: enhance mtd and ubi ioctl parsers. 18873 Decode as much data on entering syscall as possible. 18874 18875 * xlat/mtd_file_mode_options.in: New file. 18876 * mtd.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. 18877 Include "xlat/mtd_file_mode_options.h". 18878 Update for RVAL_DECODED. 18879 (mtd_ioctl, ubi_ioctl): Use printnum_int and umove_or_printaddr. 18880 18881 2015-07-10 Dmitry V. Levin <ldv (a] altlinux.org> 18882 18883 sock.c: enhance socket ioctl parser. 18884 Decode as much data on entering syscall as possible. 18885 18886 * sock.c: Update for RVAL_DECODED. 18887 (print_addr): Remove. 18888 (print_ifreq_addr, print_ifreq, print_ifc_len, decode_ifconf): New 18889 functions. 18890 (sock_ioctl) Use them. Use umove_or_printaddr. 18891 18892 2015-07-10 Dmitry V. Levin <ldv (a] altlinux.org> 18893 18894 block.c: enhance block ioctl parser. 18895 * block.c: Update for RVAL_DECODED. 18896 Define BLKROTATIONAL and BLKZEROOUT. 18897 (block_ioctl): Decode them. Use printnum_short, printnum_int, 18898 printnum_long, printpair_int64, and umove_or_printaddr. 18899 (print_blkpg_req, block_ioctl): Use umove_or_printaddr. 18900 18901 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18902 18903 blkpg_ops: add BLKPG_RESIZE_PARTITION constant. 18904 * xlat/blkpg_ops.in: Add BLKPG_RESIZE_PARTITION. 18905 18906 Reported-by: Christian Neukirchen <chneukirchen (a] gmail.com> 18907 18908 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18909 18910 loop.c: enhance loop ioctl parser. 18911 Decode as much data on entering syscall as possible. 18912 18913 * loop.c: Include <linux/ioctl.h> instead of <sys/ioctl.h>. 18914 Update for RVAL_DECODED. 18915 (decode_loop_info, decode_loop_info64): New functions. 18916 (loop_ioctl): Use them. Decode LOOP_SET_STATUS, LOOP_SET_STATUS64, 18917 LOOP_SET_FD, LOOP_CHANGE_FD, LOOP_CTL_ADD and LOOP_CTL_REMOVE on 18918 entering syscall. 18919 Print LOOP_SET_FD and LOOP_CHANGE_FD arguments using printfd. 18920 18921 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18922 18923 rtc.c: enhance rtc ioctl parser. 18924 * rtc.c: Update for RVAL_DECODED. 18925 (print_rtc): Rename to print_rtc_time. 18926 (decode_rtc_time, decode_rtc_wkalrm): New functions. 18927 (rtc_ioctl): Use them. 18928 [RTC_VL_READ]: Decode RTC_VL_READ. 18929 Use printnum_long for RTC_IRQP_READ and RTC_EPOCH_READ decoding. 18930 18931 Use printpair_int. 18932 * evdev.c (repeat_ioctl): Use printpair_int. 18933 * net.c (do_pipe, sys_socketpair): Likewise. 18934 18935 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18936 18937 Add several generic integer pairs printing functions. 18938 Add functions to fetch and print pairs of integer types. 18939 Note that these printers do not attempt to fetch data 18940 in case of exiting(tcp) && syserror(tcp). 18941 18942 printnum_* printers will follow as soon as all callers are made ready 18943 for this change. 18944 18945 * defs.h (printpair_int, printpair_long, printpair_int64): New 18946 prototypes. 18947 * util.c (DEF_PRINTPAIR): New macro. 18948 (printpair_int, printpair_long, printpair_int64): New functions. 18949 18950 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18951 18952 Add two generic integer printing functions. 18953 Add printnum_short and printnum_int64 in addition to already existing 18954 printnum_int and printnum_long. 18955 18956 * defs.h (printnum_short, printnum_int64): New prototypes. 18957 * util.c (DEF_PRINTNUM): New macro. 18958 (printnum_int, printnum_long): Use DEF_PRINTNUM. 18959 (printnum_short, printnum_int64): New functions. 18960 18961 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18962 18963 Add address printing functions. 18964 printaddr is a simple function implementing "print NULL or address" 18965 idiom. 18966 umoven_or_printaddr is a wrapper around umoven that has the same return 18967 value semantics as umoven but also prints the address when the data 18968 is not going to be fetched (in case of exiting(tcp) && syserror(tcp)) 18969 or cannot be fetched (umoven fails). 18970 umove_or_printaddr is a macro wrapper around umoven_or_printaddr that 18971 mirrors umove wrapper around umoven. 18972 18973 * defs.h (printaddr, umoven_or_printaddr): New prototypes. 18974 (umove_or_printaddr): New macro. 18975 * util.c (printaddr, umoven_or_printaddr): New functions. 18976 18977 2015-07-09 Dmitry V. Levin <ldv (a] altlinux.org> 18978 18979 Implement RVAL_DECODED flag. 18980 Implement a method for "on entering" parsers to return 18981 "done with decoding" information to their callers. 18982 18983 If a syscall parser called from trace_syscall_entering returns a value 18984 with RVAL_DECODED bit set, record this value in tcp->sys_func_rval 18985 and use it in trace_syscall_exiting instead of calling the parser on 18986 exiting syscall. 18987 18988 If an ioctl parser returned RVAL_DECODED, this would tell 18989 SYS_FUNC(ioctl) that the decoding is finished but fallback printing of 18990 the ioctl command argument is needed, while e.g. RVAL_DONE+1 would mean 18991 that the decoding is finished and no fallback decoding is needed. 18992 18993 * defs.h (struct tcb): Add sys_func_rval. 18994 (RVAL_DECODED): New macro. 18995 * syscall.c (trace_syscall_entering): Initialize tcp->sys_func_rval 18996 along with setting TCB_INSYSCALL flag. 18997 (trace_syscall_exiting): Use tcp->sys_func_rval instead of calling 18998 tcp->s_ent->sys_func when the former has RVAL_DECODED flag set. 18999 Reset tcp->sys_func_rval along with clearing TCB_INSYSCALL flag. 19000 * ioctl.c (sys_ioctl): Set RVAL_DECODED flag on exiting. 19001 Print ioctl argument iff RVAL_DECODED is set and fallback decoding 19002 is requested. 19003 19004 2015-07-05 Dmitry V. Levin <ldv (a] altlinux.org> 19005 19006 time.c: move rtc ioctl parser to a separate file. 19007 * rtc.c: new file 19008 * Makefile.am (strace_SOURCES): Add it. 19009 * time.c (print_rtc, rtc_ioctl): Move to rtc.c. 19010 19011 term.c: fix typo. 19012 * term.c: Rename TCLFLSH to TCFLSH. 19013 19014 Do not include sys/filio.h. 19015 * configure.ac (AC_CHECK_HEADERS): Remove sys/filio.h. 19016 * term.c: Do not include <sys/filio.h>. 19017 19018 2015-07-02 Dmitry V. Levin <ldv (a] altlinux.org> 19019 19020 ioctl: prepare ioctl_decode_command_number for future changes. 19021 * ioctl.c (ioctl_decode_command_number): Change 1st arg to struct tcb*. 19022 (sys_ioctl): Update callers. 19023 19024 ioctl: simplify ioctl_decode signature. 19025 * ioctl.c (ioctl_decode): Remove 2nd and 3rd parameters. 19026 (sys_ioctl): Update callers. 19027 19028 ioctl: consistently use name "code" for ioctl request code. 19029 * ioctl.c (evdev_decode_number, hiddev_decode_number, 19030 ioctl_decode_command_number): Rename "arg" to "code". 19031 19032 Move ioctl syscall parser to ioctl.c. 19033 * io.c (sys_ioctl): Move ... 19034 * ioctl.c: ... here. 19035 (ioctl_lookup, ioctl_next_match, ioctl_print_code, ioctl_decode, 19036 ioctl_decode_command_number): Declare as static. 19037 * defs.h (ioctl_lookup, ioctl_next_match, ioctl_print_code, 19038 ioctl_decode, ioctl_decode_command_number): Remove. 19039 19040 ioctl: remove obsolete registry of ioctl characters. 19041 * ioctl.c: Remove registry of ioctl characters. 19042 19043 2015-06-30 Dmitry V. Levin <ldv (a] altlinux.org> 19044 19045 Fix filtering of <unavailable> syscalls. 19046 * syscall.c (trace_syscall_exiting): Skip filtered syscalls also in case 19047 of get_regs or get_syscall_result failure. 19048 * tests/filter-unavailable.c: New file. 19049 * tests/filter-unavailable.expected: Likewise. 19050 * tests/filter-unavailable.test: New test. 19051 * tests/Makefile.am (check_PROGRAMS): Add filter-unavailable. 19052 (filter_unavailable_LDFLAGS): Add -pthread. 19053 (TESTS): Add filter-unavailable.test. 19054 (EXTRA_DIST): Add filter-unavailable.expected. 19055 * tests/.gitignore: Add filter-unavailable. 19056 19057 Reported-by: Bryan Matsuo <bryan.matsuo (a] gmail.com> 19058 19059 2015-06-30 Dmitry V. Levin <ldv (a] altlinux.org> 19060 19061 Fix -qq option in conjunction with -o option. 19062 This change makes -qq option work in conjunction with -o option, 19063 thus complementing commit v4.7-222-g01997cf. 19064 19065 * strace.c (init): Do not reset qflag. 19066 19067 2015-06-30 Dmitry V. Levin <ldv (a] altlinux.org> 19068 19069 xtensa: wire up new syscalls. 19070 * linux/xtensa/syscallent.h (bpf, execveat): New entries. 19071 19072 bfin: wire up new syscalls. 19073 * linux/bfin/syscallent.h (kcmp, finit_module, sched_setattr, 19074 sched_getattr, renameat2, seccomp, getrandom, memfd_create, 19075 bpf, execveat): New entries. 19076 19077 alpha: wire up new syscalls. 19078 * linux/alpha/syscallent.h (getrandom, memfd_create, execveat): 19079 New entries. 19080 19081 2015-06-17 Dmitry V. Levin <ldv (a] altlinux.org> 19082 19083 tests: skip stat32 test if struct stat is defined incorrectly. 19084 If stat.st_mode returned by syscall is 0, it means that the definition 19085 of struct stat in <asm/stat.h> is incorrect. This is the case e.g. on 19086 mips n32 where the only available stat syscall is 64-bit but at the same 19087 time struct stat defined by <asm/stat.h> is 32-bit. 19088 19089 * tests/stat.c (main) [NR_stat]: Return 77 if st_mode is 0. 19090 19091 2015-06-17 Dmitry V. Levin <ldv (a] altlinux.org> 19092 19093 Consistenly use #ifdef to check for AC_DEFINE'd macros. 19094 * aio.c (print_common_flags): Use #ifdef in the check for 19095 HAVE_STRUCT_IOCB_U_C_FLAGS. 19096 * defs.h: Use #ifdef in the check for HAVE_LITTLE_ENDIAN_LONG_LONG. 19097 * net.c: Use #ifdef in the check for HAVE_SENDMSG. 19098 * syscall.c (dumpio): Likewise. 19099 * printstat.h (DO_PRINTSTAT): Use #ifdef in checks for 19100 HAVE_STRUCT_STAT_ST_* macros. 19101 * util.c: Use #ifdef in checks for HAVE_SYS_XATTR_H. 19102 19103 xattr: move fallback definitions of xattr flags to xlat/ 19104 * xattr.c: Include <sys/xattr.h> insread of <linux/xattr.h>. 19105 Move definitions of XATTR_* flags ... 19106 * xlat/xattrflags.in: ... here. 19107 19108 link: move fallback definitions of AT_* constants to xlat/ 19109 * link.c: Move definitions of AT_* constants ... 19110 * xlat/at_flags.in: ... here. 19111 19112 net: move fallback definitions of SOL_* constants to xlat/ 19113 * net.c: Move definitions of SOL_* constants ... 19114 * xlat/socketlayers.in: ... here. 19115 19116 futex: move fallback definitions of futex constants to xlat/ 19117 * futex.c: Move definitions of FUTEX_OP_CMP_* constants ... 19118 * xlat/futexwakecmps.in: ... here. 19119 * futex.c: Move definitions of other FUTEX_OP_* constants ... 19120 * xlat/futexwakeops.in: ... here. 19121 * futex.c: Move definitions of remaining FUTEX_* constants except 19122 FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME flags ... 19123 * xlat/futexops.in: ... here. 19124 19125 clone: move definitions of cloning flags to xlat/ 19126 * clone.c: Include <sched.h>. Move definitions of CLONE_* flags ... 19127 * xlat/clone_flags.in: ... here. 19128 19129 2015-06-16 Dmitry V. Levin <ldv (a] altlinux.org> 19130 19131 Update mount flags constants. 19132 * mount.c: Remove definitions of mount flags constants. 19133 * xlat/mount_flags.in: Update from linux v4.0, add default values. 19134 19135 mount: update parser to match kernel behaviour. 19136 * mount.c (sys_mount): Do not decode type and data strings for 19137 MS_SHARED, MS_PRIVATE, MS_SLAVE, and MS_UNBINDABLE mount flags 19138 that do not imply valid strings. 19139 19140 mount: robustify MS_MGC_VAL decoding. 19141 * mount.c (sys_mount): When printing mount flags, do not assume that 19142 (flags & MS_MGC_MSK) == MS_MGC_VAL. 19143 19144 2015-06-08 Dmitry V. Levin <ldv (a] altlinux.org> 19145 19146 net: decode setsockopt() multicast arguments. 19147 * configure.ac (AC_CHECK_FUNCS): Add inet_pton. 19148 * net.c (print_mreq, print_mreq6): New functions. 19149 (print_setsockopt): Use them to decode IP_ADD_MEMBERSHIP, 19150 IP_DROP_MEMBERSHIP, IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, 19151 IPV6_JOIN_ANYCAST, and IPV6_LEAVE_ANYCAST. 19152 * tests/ip_mreq.c: New file. 19153 * tests/ip_mreq.expected: Likewise. 19154 * tests/ip_mreq.test: New test. 19155 * tests/Makefile.am (check_PROGRAMS): Add ip_mreq. 19156 (TESTS): Add ip_mreq.test. 19157 (EXTRA_DIST): ip_mreq.expected. 19158 * tests/.gitignore: Add ip_mreq. 19159 19160 Based on patch by Ben Noordhuis <info (a] bnoordhuis.nl>. 19161 19162 2015-06-08 Dmitry V. Levin <ldv (a] altlinux.org> 19163 19164 Update IPV6 socket options constants. 19165 * xlat/sockipv6options.in: Update from linux v4.0. 19166 19167 2015-06-05 Dmitry V. Levin <ldv (a] altlinux.org> 19168 19169 net: factor out interface index printing code. 19170 * net.c (print_ifindex): New function. 19171 (printsock) [HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID]: Use it. 19172 19173 2015-05-25 Dmitry V. Levin <ldv (a] altlinux.org> 19174 19175 Consistently use error_msg instead of fprintf(stderr) 19176 * linux/alpha/get_scno.c: Use error_msg. 19177 * linux/arm/get_scno.c: Likewise. 19178 * linux/mips/get_scno.c: Likewise. 19179 * linux/sh/get_scno.c: Likewise. 19180 * linux/x86_64/get_scno.c: Likewise. 19181 * exit.c (sys_exit): Likewise. 19182 * pathtrace.c (pathtrace_select, pathtrace_match): Likewise. 19183 * strace.c (alloctcb, droptcb, detach, startup_attach, 19184 test_ptrace_seize, init, cleanup, print_debug_info, 19185 maybe_allocate_tcb, startup_tcb, trace): Likewise. 19186 * syscall.c (update_personality, trace_syscall_exiting, 19187 get_scno): Likewise. 19188 * unwind.c (DPRINTF): Likewise. 19189 * tests/bexecve.test: Update patterns. 19190 * tests/detach-stopped.test: Likewise. 19191 19192 Consistently print OOM diagnostic messages. 19193 * bjm.c (sys_query_module): Use error_msg to print OOM diagnostics. 19194 * util.c (dumpiov, dumpstr): Likewise. 19195 19196 2015-05-25 Dmitry V. Levin <ldv (a] altlinux.org> 19197 19198 Introduce memory allocation wrappers. 19199 Introduce wrappers to the following functions that do memory allocation: 19200 malloc, calloc, realloc, strdup. 19201 19202 This commit is a follow-up to the related discussions in strace-devel ML: 19203 http://sourceforge.net/p/strace/mailman/message/33618180/ 19204 http://sourceforge.net/p/strace/mailman/message/33733470/ 19205 19206 * defs.h (xmalloc, xcalloc, xreallocarray, xstrdup): New prototypes. 19207 * xmalloc.c: New file. 19208 * Makefile.am (strace_SOURCES): Add it. 19209 * count.c (count_syscall, call_summary_pers): Use xcalloc. 19210 * desc.c (decode_select): Use xmalloc. 19211 * dirent.c (sys_getdents, sys_getdents64): Likewise. 19212 * net.c (sys_recvmmsg): Use xstrdup. 19213 * pathtrace.c (storepath): Use xreallocarray. 19214 (pathtrace_match): Use xmalloc. 19215 * strace.c (die_out_of_memory): Move to xmalloc.c. 19216 (expand_tcbtab): Use xcalloc and xreallocarray. 19217 (startup_child): Use xstrdup. 19218 (init): Use xmalloc, xcalloc, and xstrdup. 19219 * syscall.c (reallocate_qual): Use xreallocarray. 19220 (qualify): Use xstrdup. 19221 * unwind.c (unwind_tcb_init): Use xmalloc. 19222 (build_mmap_cache): Use xcalloc, xreallocarray, and xstrdup. 19223 (get_symbol_name): Use xreallocarray. 19224 (stacktrace_walk, queue_put): Use xmalloc. 19225 * util.c (printstr): Use xmalloc. 19226 * vsprintf.c (strace_vfprintf): Likewise. 19227 19228 2015-05-21 Dmitry V. Levin <ldv (a] altlinux.org> 19229 19230 Fix ioctl entries on 32-bit architectures with 64-bit aligned structures 19231 Some ioctl constants are defined to different values on those 32-bit 19232 architectures where structures containing a 64-bit field are aligned on 19233 a 8-byte boundary and have a size multiple of 8 bytes, and on other 19234 32-bit architectures. 19235 19236 * configure.ac: Check the size of a structure containing a 64-bit field. 19237 * linux/32/ioctls_inc.h: Rename to ... 19238 * linux/32/ioctls_inc_align32.h: ... this. 19239 * linux/32/ioctls_inc_align64.h: New file. 19240 * linux/32/ioctls_inc.h: Include either 32/ioctls_inc_align32.h 19241 or ioctls_inc_align64.h depending on SIZEOF_STRUCT_I64_I32. 19242 * Makefile.am (EXTRA_DIST): Add linux/32/ioctls_inc_align32.h and 19243 * linux/32/ioctls_inc_align64.h. 19244 * tests/ioctl.c (main): Test for VIDIOC_ENUMINPUT. 19245 * tests/ioctl.expected: Check VIDIOC_ENUMINPUT decoding. 19246 19247 Reported-by: Philippe De Muyter <phdm (a] macqel.be> 19248 19249 2015-05-21 Dmitry V. Levin <ldv (a] altlinux.org> 19250 19251 maint: make linux/kvm.h parseable on arm. 19252 * maint/ioctls_sym.sh [AARCH64 || ARM]: Add missing definitions for 19253 structures referenced from linux/kvm.h. 19254 19255 2015-05-21 Philippe De Muyter <phdm (a] macqel.be> 19256 19257 v4l2: add decoding for VIDIOC_S_CROP's arg. 19258 * v4l2.c (v4l2_ioctl): Add decoding for VIDIOC_S_CROP's arg. 19259 19260 2015-05-19 Ezequiel Garcia <ezequiel (a] vanguardiasur.com.ar> 19261 19262 Add support for Altera's Nios-II softcore architecture. 19263 This commit adds strace support for Altera's Nios-II. The architecture 19264 is supported by Linux since v3.19, and it implements the generic syscall 19265 ABI. 19266 19267 * configure.ac: Add nios2 support. 19268 * cacheflush.c [NIOS2] (sys_cacheflush): New function. 19269 * linux/nios2/*: New Nios-II specific files. 19270 * Makefile.am (EXTRA_DIST): Add them. 19271 19272 2015-05-19 Philippe De Muyter <phdm (a] macqel.be> 19273 19274 v4l2: VIDIOC_CROPCAP: add missing braces around arg printout. 19275 * v4l2.c (v4l2_ioctl): case VIDIOC_CROPCAP: add missing braces around arg 19276 printout. 19277 19278 2015-05-19 Dmitry V. Levin <ldv (a] altlinux.org> 19279 19280 maint: avoid effects of locale when sorting files. 19281 * maint/ioctls_gen.sh: Invoke sort with LC_COLLATE=C. 19282 * maint/ioctls_hex.sh: Likewise. 19283 * maint/ioctls_sym.sh: Likewise. 19284 19285 Reported-by: Philippe De Muyter <phdm (a] macqel.be> 19286 19287 2015-04-18 Philippe De Muyter <phdm (a] macqel.be> 19288 19289 v4l2: add decoding for VIDIOC_CREATE_BUFS's arg. 19290 * v4l2.c (v4l2_ioctl): Add decoding for VIDIOC_CREATE_BUFS's arg. 19291 19292 2015-04-17 Dmitry V. Levin <ldv (a] altlinux.org> 19293 19294 mips o32: decode indirect syscall. 19295 Implement decoding of MIPS O32 specific indirect syscall. 19296 19297 * syscall.c [LINUX_MIPSO32] (decode_mips_subcall, sys_syscall): 19298 New functions. 19299 (trace_syscall_entering) [LINUX_MIPSO32]: Use decode_mips_subcall. 19300 * linux/mips/syscallent-o32.h (4000): Change sys_func to sys_syscall. 19301 19302 Reported-and-tested-by: Arturo Borrero Gonzalez <arturo.borrero.glez (a] gmail.com> 19303 19304 2015-04-14 Dmitry V. Levin <ldv (a] altlinux.org> 19305 19306 debian: add gawk to Build-Depends. 19307 * debian/control (Build-Depends): Add gawk. 19308 Patch by Reiner Herrmann <reiner (a] reiner-h.de>. 19309 19310 This fixes Debian bug #780992. 19311 19312 2015-04-14 Dmitry V. Levin <ldv (a] altlinux.org> 19313 19314 tests: fix bexecve.test for the case of mixed personalities. 19315 Fix bexecve.test when the executable being run does not match the 19316 native architecture. 19317 19318 * tests/bexecve.test: Use "set_ptracer_any" instead of "sh". 19319 Allow for a personality switch notification in the strace output. 19320 19321 2015-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 19322 19323 tests: add a test for "resuming interrupted nanosleep" 19324 * tests/restart_syscall.test: New test. 19325 * tests/restart_syscall.expected: New file. 19326 * tests/restart_syscall_unknown.expected: Likewise. 19327 * tests/Makefile.am (TESTS): Add restart_syscall.test. 19328 (EXTRA_DIST): Add restart_syscall.expected 19329 (TEST_LOG_COMPILER): Change to "env". 19330 (OS, ARCH, AM_TEST_LOG_FLAGS): Define. 19331 and restart_syscall_unknown.expected. 19332 19333 tests: strip executable bit from *.expected files. 19334 19335 2015-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 19336 19337 Declare syscall parsers using SYS_FUNC macro. 19338 Introduce SYS_FUNC macro to declare and define all syscall parsers. 19339 19340 * Makefile.am (BUILT_SOURCES, CLEANFILES): Add sys_func.h. 19341 (sys_func.h): New rule. 19342 * defs.h (SYS_FUNC_NAME, SYS_FUNC): New macros. 19343 * linux/syscall.h: Include "sys_func.h". 19344 [NEED_UID16_PARSERS]: Use SYS_FUNC to declare uid16 syscall parsers. 19345 Remove other declarations. 19346 * linux/alpha/syscallent.h (160, 161): Add sys_ prefix to osf_statfs 19347 and osf_fstatfs syscall parsers. 19348 * *.c: Use SYS_FUNC to define syscall parsers. 19349 19350 2015-04-07 Denys Vlasenko <dvlasenk (a] redhat.com> 19351 19352 Fix confusing "resuming interrupted unknown" message. 19353 Dmitry reported seeing the following: 19354 19355 $ sleep 2 & sleep 1; ./strace -erestart_syscall -p $! 19356 [1] 12345 19357 Process 12345 attached 19358 restart_syscall(<... resuming interrupted unknown ...>) = 0 19359 19360 Fixing it by replacing "unknown" with "system call". 19361 19362 2015-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 19363 19364 tests: workaround old gawk versions that do not provide @include support 19365 Some of our tests use GNU awk @include extension, but not all currently 19366 used versions of GNU awk support it. Skip these tests if gawk does not 19367 provide @include support. 19368 19369 * tests/init.sh (check_gawk): New function. 19370 (match_awk): Use it. 19371 19372 2015-04-06 Dmitry V. Levin <ldv (a] altlinux.org> 19373 19374 tests: rewrite umovestr2.test without using grep. 19375 The regular expression generated by umovestr2.c on systems with large 19376 page size is too big for GNU grep. Rewrite the test to use diff 19377 instead of grep. 19378 19379 * tests/umovestr2.test: Use match_diff instead of match_grep. 19380 * tests/umovestr2.c (main): Convert output from regexp to plain text. 19381 19382 2015-03-31 Dmitry V. Levin <ldv (a] altlinux.org> 19383 19384 Cleanup process_vm_writev syscall decoding. 19385 * process_vm.c (sys_process_vm_writev): Do not check for syserror, 19386 it is not applicable on entering syscall. 19387 19388 umovestr: read chunks of memory up to pagesize at a time. 19389 * defs.h (get_pagesize): New prototype. 19390 * mem.c (get_pagesize) Make global. 19391 * util.c (PAGMASK): Remove. 19392 (vm_read_mem): New process_vm_readv proxy function. 19393 (umoven, umovestr): Use it. 19394 (umovestr): Read chunks up to pagesize at a time. 19395 19396 2015-03-31 Dmitry V. Levin <ldv (a] altlinux.org> 19397 19398 umovestr: fix short read bug. 19399 * util.c (umovestr): Check the right address. 19400 * tests/umovestr.c: New file. 19401 * tests/umovestr2.c: Likewise. 19402 * tests/umovestr.expected: Likewise. 19403 * tests/umovestr.test: New test. 19404 * tests/umovestr2.test: Likewise. 19405 * tests/Makefile.am (check_PROGRAMS): Add umovestr and umovestr2. 19406 (TESTS): Add umovestr.test and umovestr2.test. 19407 (EXTRA_DIST): Add umovestr.expected. 19408 * tests/.gitignore: Add umovestr and umovestr2. 19409 19410 Reported-by: Josef T. Burger <bolo (a] cs.wisc.edu> 19411 19412 2015-03-31 Dmitry V. Levin <ldv (a] altlinux.org> 19413 19414 When process_vm_readv fails with EPERM, try PTRACE_PEEKDATA. 19415 process_vm_readv() and ptrace(PTRACE_PEEKDATA) have inconsistent access 19416 control rules wrt traced processes: process_vm_readv() is more likely to 19417 fail with EPERM than ptrace(PTRACE_PEEKDATA) when tracing a process that 19418 has execve'd a privileged executable. 19419 19420 * util.c (umoven, umovestr): If process_vm_readv returned EPERM, 19421 fall back to ptrace(PTRACE_PEEKDATA). 19422 19423 Reported-by: Andrew Guertin <lists (a] dolphinling.net> 19424 19425 2015-03-30 Dmitry V. Levin <ldv (a] altlinux.org> 19426 19427 Use macros for gcc attributes. 19428 * defs.h (error_msg, perror_msg, error_msg_and_die, perror_msg_and_die, 19429 die_out_of_memory, printllval, printnum_int, printnum_long, tprintf): 19430 Use ATTRIBUTE_* macros for gcc attributes. 19431 * file.c (struct stat64): Likewise. 19432 * statfs.c (struct compat_statfs64): Likewise. 19433 * strace.c (die, exec_or_die, init): Likewise. 19434 * linux/sparc/arch_sigreturn.c: Likewise. 19435 * linux/ubi-user.h: Likewise. 19436 19437 2015-03-30 Dmitry V. Levin <ldv (a] altlinux.org> 19438 19439 Introduce macros for gcc attributes. 19440 Define macros for gcc attributes that are already in use 19441 or going to be used soon. 19442 19443 * defs.h (GNUC_PREREQ, ATTRIBUTE_NORETURN, ATTRIBUTE_FORMAT, 19444 ATTRIBUTE_ALIGNED, ATTRIBUTE_PACKED, ATTRIBUTE_MALLOC, 19445 ATTRIBUTE_NOINLINE, ATTRIBUTE_ALLOC_SIZE): New macros. 19446 19447 2015-03-28 Felix Janda <felix.janda (a] posteo.de> 19448 19449 Include <linux/ioctl.h> for _IOC_* macros. 19450 Fix a compilation failure with musl libc. 19451 19452 * evdev.c: Include <linux/ioctl.h>. 19453 * ioctl.c: Include <linux/ioctl.h> instead of <asm/ioctl.h>. 19454 * ioctlsort.c: Likewise. 19455 19456 Reported-by: Dima Krasner <dima (a] dimakrasner.com> 19457 Acked-by: Mike Frysinger <vapier (a] gentoo.org> 19458 19459 2015-03-28 Felix Janda <felix.janda (a] posteo.de> 19460 19461 Include <sys/stat.h> for S_I* macros. 19462 Fix a compilation failure with musl libc. 19463 19464 * mknod.c: Include <sys/stat.h>. 19465 * printmode.c: Likewise. 19466 19467 Reported-by: Dima Krasner <dima (a] dimakrasner.com> 19468 Acked-by: Mike Frysinger <vapier (a] gentoo.org> 19469 19470 2015-03-27 Dmitry V. Levin <ldv (a] altlinux.org> 19471 19472 signal.c: move siginfo_t parsers to a separate file. 19473 * printsiginfo.c: New file. 19474 * Makefile.am (strace_SOURCES): Add it. 19475 * defs.h (printsiginfo): Change second argument's type from int to bool. 19476 * signal.c: Stop defining siginfo_t related constants. 19477 Move inclusion of xlat/sig*_codes.h files to printsiginfo.c 19478 (printsigsource, printsigval, printsiginfo_at): Move to printsiginfo.c. 19479 (printsiginfo): Change second argument's type from int to bool, 19480 split, and move to printsiginfo.c. 19481 19482 Update siginfo_t constants. 19483 * xlat/sigbus_codes.in: Add BUS_MCEERR_AR and BUS_MCEERR_AO, 19484 add default values. 19485 * xlat/sigtrap_codes.in: Add TRAP_BRANCH and TRAP_HWBKPT, 19486 add default values. 19487 * xlat/sigsegv_codes.in: Add SEGV_BNDERR, add default values. 19488 * xlat/sigchld_codes.in: Add default values. 19489 * xlat/sigemt_codes.in: Likewise. 19490 * xlat/sigfpe_codes.in: Likewise. 19491 * xlat/sigill_codes.in: Likewise. 19492 * xlat/siginfo_codes.in: Likewise. 19493 * xlat/sigpoll_codes.in: Likewise. 19494 * xlat/sigsys_codes.in: Likewise. 19495 19496 2015-03-26 Dmitry V. Levin <ldv (a] altlinux.org> 19497 19498 signal.c: move sigaltstack parser to a separate file. 19499 * sigaltstack.c: New file. 19500 * Makefile.am (strace_SOURCES): Add it. 19501 * signal.c (print_stack_t, sys_sigaltstack): Move to sigaltstack.c. 19502 * xlat/sigaltstack_flags.in: Add default values. 19503 19504 2015-03-25 Denys Vlasenko <dvlasenk (a] redhat.com> 19505 19506 Move sparc64 get_scno() code where it belongs. 19507 19508 sparc: rename personality 2 files to personality 1. 19509 Run-tested in qemu 32-bit sparc. 19510 19511 2015-03-25 Denys Vlasenko <dvlasenk (a] redhat.com> 19512 19513 sparc: delete personality 1. 19514 Personality 1 for sparc and sparc64 appears to be an old attempt 19515 to support stracing Solaris binaries. 19516 19517 It stalled after the only syscall, solaris_open, was covered: 19518 all other solaris_foo's are printargs. 19519 19520 This change deletes personality 1. Now sparc is an one-personality 19521 arch, and sparc64 is a two-personality one. 19522 19523 For clarity, pure renaming of personality 2 files to personality 1 for sparc64 19524 is performed in the next commit - this prevents a state where syscallent1.h 19525 seems to indergo a lot of changes, where in fact in is deleted, and then 19526 replaced by syscallent2.h 19527 19528 Therefore, tree at this commit will not build. 19529 19530 2015-03-24 Denys Vlasenko <dvlasenk (a] redhat.com> 19531 19532 qemu_multiarch_testing/*: make it easier to do debug in sandboxes. 19533 19534 2015-03-24 Denys Vlasenko <dvlasenk (a] redhat.com> 19535 19536 sparc: fix v4.10-25-g8497b62 fallout. 19537 Before: 19538 19539 $ sleep 3 & ./strace -p $! 19540 Process 8703 attached 19541 syscall: unknown syscall trap 1a800003 00025d58 19542 syscall_516(0, 0x40080000, 0, 0xfc000f00, 0x28, 0xefc03b18) = 0 19543 exit_group(0) = ? 19544 +++ exited with 0 +++ 19545 19546 After: 19547 19548 $ sleep 3 & ./strace -p $! 19549 Process 8725 attached 19550 restart_syscall(<... resuming interrupted nanosleep ...>) = 0 19551 exit_group(0) = ? 19552 +++ exited with 0 +++ 19553 19554 2015-03-24 Dmitry V. Levin <ldv (a] altlinux.org> 19555 19556 get_scno: add diagnostics for invalid syscall numbers. 19557 * syscall.c (get_scno): Print a debug level message 19558 for !SCNO_IS_VALID syscall numbers. 19559 19560 2015-03-24 Dmitry V. Levin <ldv (a] altlinux.org> 19561 19562 arm: fix v4.10-25-g8497b62 fallout. 19563 Starting with commit v4.10-25-g8497b62, 19564 19565 arm$ ./strace true 19566 pid 1234 stray syscall exit 19567 Segmentation fault 19568 19569 Fix this by updating ARM syscall sanity check. 19570 In particular, get_scno() should not set TCB_INSYSCALL flag because 19571 other code assumes that s_ent is properly initialized when this flag 19572 is set. 19573 19574 * linux/arm/get_scno.c: Check syscall number after fetching. 19575 Do not apply the check to SCNO_IN_RANGE syscalls. 19576 Do not set TCB_INSYSCALL flag. 19577 Extend diagnostics and move it to debug level. 19578 19579 2015-03-24 Dmitry V. Levin <ldv (a] altlinux.org> 19580 19581 mips: fix pipe syscall decoding. 19582 * linux/mips/arch_getrval2.c: New file. 19583 * Makefile.am (EXTRA_DIST): Add it. 19584 * defs.h [MIPS] (HAVE_GETRVAL2): Define. 19585 19586 2015-03-23 Dmitry V. Levin <ldv (a] altlinux.org> 19587 19588 sigreturn.c: split arch specific code into separate arch files. 19589 Split code that use arch-specific registers to separate arch files. 19590 19591 * sigreturn.c (sys_sigreturn): Move arch-specific code 19592 to linux/*/arch_sigreturn.c, include "arch_sigreturn.c". 19593 * linux/arch_sigreturn.c: New file. 19594 * Makefile.am (EXTRA_DIST): Add linux/arch_sigreturn.c 19595 and linux/*/arch_sigreturn.c files. 19596 19597 2015-03-23 Dmitry V. Levin <ldv (a] altlinux.org> 19598 19599 syscall.c: split arch specific code into separate arch files. 19600 Split code that use arch-specific registers to separate arch files. 19601 19602 * syscall.c: Move definitions of variables containing fetched registers 19603 to linux/*/arch_regs.c files. 19604 [HAVE_GETRVAL2] (getrval2): Move arch-specific code 19605 to linux/*/arch_getrval2.c, include "arch_getrval2.c". 19606 (print_pc): Move arch-specific code to linux/*/print_pc.c files, 19607 include "print_pc.c". 19608 [X86_64] (x86_64_getregs_old): Rename to getregs_old, move to 19609 linux/x86_64/getregs_old.c, include "getregs_old.c". 19610 [POWERPC] (powerpc_getregs_old): Rename to getregs_old, move to 19611 linux/powerpc/getregs_old.c, include "getregs_old.c". 19612 (get_regs) [X86_64, POWERPC]: Update callers. 19613 (get_scno): Move arch-specific code to linux/*/get_scno.c, 19614 include "get_scno.c". 19615 (get_syscall_args): Move arch-specific code 19616 to linux/*/get_syscall_args.c, include "get_syscall_args.c". 19617 (get_error): Move arch-specific code to linux/*/get_error.c, 19618 include "get_error.c". 19619 (get_syscall_result): Move arch-specific code 19620 to linux/*/get_syscall_result.c, include "get_syscall_result.c". 19621 * Makefile.am (EXTRA_DIST): Add new linux/*/*.c files. 19622 19623 2015-03-23 Dmitry V. Levin <ldv (a] altlinux.org> 19624 19625 syscall.c: prepare for the split. 19626 Move functions that use arch-specific registers to the end of file. 19627 19628 2015-03-23 Dmitry V. Levin <ldv (a] altlinux.org> 19629 19630 Move get_regs error check from trace_syscall_entering to get_scno. 19631 Starting with commit v4.10-25-g8497b62, get_scno() can be called outside 19632 trace_syscall_entering(), so move the get_regs_error check from 19633 trace_syscall_entering() to get_scno(). 19634 19635 * syscall.c (trace_syscall_entering): Move get_regs_error check ... 19636 (get_scno): ... here. 19637 19638 2015-03-23 Dmitry V. Levin <ldv (a] altlinux.org> 19639 19640 alpha, ia64, sh, sparc, sparc64: fix pipe and pipe2 syscalls decoding. 19641 Fix pipe syscall decoding on alpha. 19642 Fix pipe2 syscall decoding on ia64, sh, sparc, and sparc64. 19643 19644 * configure.ac (AC_CHECK_FUNCS): Add pipe2. 19645 * defs.h [ALPHA || IA64 || SH || SPARC || SPARC64] (HAVE_GETRVAL2): 19646 Define. 19647 * net.c (do_pipe): Check HAVE_GETRVAL2 instead of architecture macros. 19648 Do not use getrval2 for pipe2 decoding. 19649 Print address if umove call fails. 19650 * syscall.c (getrval2): Check HAVE_GETRVAL2 instead of architecture 19651 macros. Implement for [ALPHA]. 19652 * tests/pipe.c: New file. 19653 * tests/pipe.expected: New file. 19654 * tests/pipe.test: New test. 19655 * tests/Makefile.am (check_PROGRAMS): Add pipe. 19656 (TESTS): Add pipe.test. 19657 (EXTRA_DIST): Add pipe.expected. 19658 * tests/.gitignore: Add pipe. 19659 19660 2015-03-22 Dmitry V. Levin <ldv (a] altlinux.org> 19661 19662 decode_socket_subcall: fetch all arguments with a single umoven call. 19663 * syscall.c (decode_socket_subcall): Replace umoven fetch loop 19664 with a single umoven call. 19665 19666 2015-03-21 Denys Vlasenko <dvlasenk (a] redhat.com> 19667 19668 New test: test/many_looping_threads.c. 19669 19670 test/.gitignore: add missing test targets. 19671 19672 Trivial optimization in sys_sigreturn() 19673 19674 Change last parameter of umoven() from char* to void* 19675 Saves tons of casts. 19676 19677 Remove unused struct tcb::inst field. 19678 It is unused since we dropped support for kernels without PTRACE_SETOPTIONS. 19679 19680 test/Makefile: add missing test targets. 19681 19682 Move the comment about termination logic where it belongs. 19683 19684 startup_tcb() never fails, remove code which checks for failures. 19685 19686 2015-03-21 Denys Vlasenko <dvlasenk (a] redhat.com> 19687 19688 Show the syscall name in "resuming interrupted call" message. 19689 When signal is received, or if we have attached to a process, 19690 current syscall (if process is in one) gets restarted. 19691 19692 Some syscalls are restarted via "restart_syscall()" mechanism. 19693 On such sycalls, we don't show _which_ syscall gets restarted. 19694 19695 IOW: users want to see "resuming interrupted nanosleep" 19696 instead of "resuming interrupted call" when they attach to "sleep 999". 19697 19698 Kernel does expose this information. The only thing we need is 19699 to fetch syscall# on attach, and save it. 19700 19701 This patch does this. It adds tcp->s_prev_ent, which is 19702 a pointer to struct_sysent of the previous syscall of this tracee. 19703 It can be NULL. 19704 19705 sys_restart_syscall() is made to use it when the message is generated. 19706 19707 To similarly handle restart_syscall() *after signals*, not just 19708 on attach, on each syscall exit patch saves exited syscall's data 19709 in the same member (tcp->s_prev_ent). 19710 19711 Example: 19712 19713 $ sleep 3 & strace -p $! 19714 Process 8728 attached 19715 restart_syscall(<... resuming interrupted nanosleep ...>) = 0 19716 _exit(0) = ? 19717 +++ exited with 0 +++ 19718 19719 2015-03-20 Dmitry V. Levin <ldv (a] altlinux.org> 19720 19721 tests: add a test for mmap/mprotect/munmap decoding. 19722 * tests/mmap.c: New file. 19723 * tests/mmap64.c: New file. 19724 * tests/mmap.test: New test. 19725 * tests/mmap64.test: New test. 19726 * tests/Makefile.am (check_PROGRAMS): Add mmap and mmap64. 19727 (mmap64_CFLAGS): Define. 19728 (TESTS): Add mmap.test and mmap64.test. 19729 * tests/.gitignore: Add mmap and mmap64. 19730 19731 sparc, sparc64: fix decoding of mmap2. 19732 * linux/sparc/syscallent.h (mmap2): Decode with sys_mmap_4koff, 19733 not sys_mmap. 19734 * linux/sparc64/syscallent2.h (mmap2): Decode with sys_mmap_pgoff, 19735 not sys_mmap. 19736 19737 2015-03-19 Dmitry V. Levin <ldv (a] altlinux.org> 19738 19739 tests: add a test for SECCOMP_MODE_FILTER decoding. 19740 * tests/seccomp.c: New file. 19741 * tests/seccomp.test: New test. 19742 * tests/Makefile.am (check_PROGRAMS): Add seccomp. 19743 (TESTS): Add seccomp.test. 19744 * tests/.gitignore: Add seccomp. 19745 19746 2015-03-18 Dmitry V. Levin <ldv (a] altlinux.org> 19747 19748 tests: factor out common awk code. 19749 Factor out awk code used in several tests to match.awk. 19750 19751 * tests/match.awk: New file. 19752 * tests/Makefile.am (EXTRA_DIST): Add it. 19753 * tests/caps.awk: Use it. 19754 * tests/getdents.awk: Likewise. 19755 * tests/getrandom.awk: Likewise. 19756 * tests/select.awk: Likewise. 19757 * tests/sigaction.awk: Likewise. 19758 * tests/init.sh (match_awk): Use gawk not awk. Define AWKPATH. 19759 * tests/getdents.test: Likewise. 19760 19761 2015-03-18 Dmitry V. Levin <ldv (a] altlinux.org> 19762 19763 tests: skip netlink based tests when resources are not available. 19764 * tests/netlink_inet_diag.c (main): Return 77 if socket, bind, 19765 or listen syscall fail. 19766 * tests/netlink_unix_diag.c (main): Likewise. 19767 19768 2015-03-18 Dmitry V. Levin <ldv (a] altlinux.org> 19769 19770 aarch64, arm: decode extra padded compat struct statfs64. 19771 According to arch/arm/kernel/sys_oabi-compat.c, 19772 struct statfs64 has extra padding with EABI. 19773 19774 * statfs.c [AARCH64 || defined ARM] (COMPAT_STATFS64_PADDED_SIZE): 19775 Define. 19776 (do_statfs64_fstatfs64): New function, factored out from sys_statfs64. 19777 [COMPAT_STATFS64_PADDED_SIZE]: Check it in addition to 19778 sizeof(struct compat_statfs64). 19779 (sys_statfs64, sys_fstatfs64): Use do_statfs64_fstatfs64. 19780 19781 Reported-and-tested-by: Elliott Hughes <enh (a] google.com> 19782 19783 2015-03-18 Dmitry V. Levin <ldv (a] altlinux.org> 19784 19785 tests: factor out common shell code to functions. 19786 Factor out shell code used in several tests to common functions. 19787 19788 * tests/fanotify_mark.expected: New file. 19789 * tests/ioctl.expected: New file. 19790 * tests/net-fd.expected: New file. 19791 * tests/net.expected: New file. 19792 * tests/statfs.expected: New file. 19793 * tests/sun_path.expected: New file. 19794 * tests/uio.expected: New file. 19795 * tests/ipc.sh: New file. 19796 * tests/Makefile.am (EXTRA_DIST): Add them. 19797 * tests/init.sh (dump_log_and_fail_with, run_prog, 19798 run_prog_skip_if_failed, run_strace, run_strace_merge, 19799 match_awk, match_diff, match_grep): New functions. 19800 * tests/*.test: Use them. 19801 19802 2015-03-18 Elliott Hughes <enh (a] google.com> 19803 19804 Show f_flags field in printstatfs. 19805 printstatfs64 was right, but printstatfs was missing f_flags. 19806 Noticed on aarch64. 19807 19808 * statfs.c (printstatfs) [_STATFS_F_FLAGS]: Print statfs.f_flags. 19809 19810 2015-03-16 Dmitry V. Levin <ldv (a] altlinux.org> 19811 19812 tests/uid*: use fchown* instead of chown* 19813 Newer architectures have no chown syscall, so use fchown* syscalls 19814 for testing printuid. 19815 19816 * tests/uid.test: Use fchown instead of chown. 19817 * tests/uid.c: Test __NR_fchown instead of __NR_chown. 19818 (main): Use __NR_fchown instead of __NR_chown. 19819 * tests/uid32.c: Test __NR_fchown32 instead of __NR_chown32. 19820 (main): Use __NR_fchown32 instead of __NR_chown32. 19821 * tests/uid16.c: Test __NR_fchown and __NR_fchown32 instead 19822 of __NR_chown and __NR_chown32. 19823 (main): Use __NR_fchown instead of __NR_chown. 19824 * tests/uid.awk: Update regexp. 19825 19826 2015-03-16 Dmitry V. Levin <ldv (a] altlinux.org> 19827 19828 stat64-v.test: add newfstatat syscall support. 19829 Newer architectures have no stat syscall, so stat() is implemented there 19830 using newfstatat syscall. 19831 19832 * tests/stat.c (STAT_FNAME): Rename to STAT_PREFIX. Update callers. 19833 [_FILE_OFFSET_BITS == 64] (STAT_PREFIX): Add newfstatat support. 19834 (main) [!NR_stat]: Add newfstatat support. 19835 19836 Reported-by: Andreas Schwab <schwab (a] suse.de> 19837 19838 2015-03-16 Andreas Schwab <schwab (a] suse.de> 19839 19840 aarch64: properly decode generic syscalls. 19841 * linux/aarch64/syscallent1.h: Don't override entries 277 to 1023. 19842 19843 tests: verify that all patterns match. 19844 * tests/ipc_msg.test: Count matches to verify that all patterns match. 19845 * tests/ipc_sem.test: Likewise. 19846 * tests/ipc_shm.test: Likewise. 19847 * tests/stat32-v.test: Likewise. 19848 * tests/stat64-v.test: Likewise. 19849 19850 2015-03-16 Dmitry V. Levin <ldv (a] altlinux.org> 19851 19852 Fix stat64 st_[acm]time decoding for personalities with 32-bit time_t. 19853 STRUCT_STAT.st_[acm]time are declared as unsigned int for some 19854 personalities, while time_t is signed. 19855 19856 * printstat.h (DO_PRINTSTAT): If st_[acm]time have the same size as int, 19857 explicitly cast them to int. 19858 * tests/stat64-v.test: Test that negative time_t is decoded properly. 19859 19860 Reported-by: Andreas Schwab <schwab (a] suse.de> 19861 19862 2015-03-16 Dmitry V. Levin <ldv (a] altlinux.org> 19863 19864 semctl: fix indirect syscall decoding. 19865 On architectures where the semctl call is implemented by the ipc syscall 19866 the 4th argument is passed by reference. 19867 19868 * ipc.c (sys_semctl): Handle the indirect ipc subcall case. 19869 * tests/ipc_sem.c (main): Optionally match indirection 19870 in the 4th argument of semctl calls. 19871 19872 Reported-by: Andreas Schwab <schwab (a] suse.de> 19873 19874 2015-03-16 Andreas Schwab <schwab (a] suse.de> 19875 19876 tests/ipc_*: match IPC_64 flag. 19877 * tests/ipc_msg.c (main): Optionally match "IPC_64|" in the third 19878 argument of the ipc call. 19879 * tests/ipc_sem.c (main): Likewise. 19880 * tests/ipc_shm.c (main): Likewise. 19881 19882 2015-03-16 Andreas Schwab <schwab (a] suse.de> 19883 19884 Fix crash in ipc_sem test. 19885 Properly use union semun as argument of semctl. 19886 19887 * tests/ipc_sem.c (main): Properly use union semun as argument of 19888 semctl. Don't handle EFAULT specially. 19889 * tests/ipc_sem.test: Revert last change. 19890 19891 2015-03-16 Andreas Schwab <schwab (a] suse.de> 19892 19893 m68k: fix sigreturn decoding. 19894 * sigreturn.c (sys_sigreturn) [M68K]: Fetch the words of the 19895 signal mask from the proper place. 19896 19897 aarch64: fix ioctl decoding. 19898 * linux/aarch64/ioctls_inc0.h: Rename from ioctls_inc1.h. 19899 * linux/aarch64/ioctls_inc1.h: Rename from ioctls_inc0.h. 19900 * linux/aarch64/ioctls_arch0.h: Rename from ioctls_arch1.h. 19901 * linux/aarch64/ioctls_arch1.h: Rename from ioctls_arch0.h. 19902 19903 2015-03-12 Andreas Schwab <schwab (a] suse.de> 19904 19905 tests/select.test: handle architectures using pselect6 syscall. 19906 * tests/select.awk (BEGIN): Update regexps to match both select 19907 and pselect6 syscalls. 19908 * tests/select.test: Probe for both select and pselect6 syscall. 19909 19910 Distribute linux/aarch64/arch_regs.h. 19911 * Makefile.am (EXTRA_DIST): Add linux/aarch64/arch_regs.h. 19912 19913 Fix decoding of mmap2 for arm. 19914 * syscallent.h (mmap2): Decode with sys_mmap_4koff, not 19915 sys_mmap_pgoff. 19916 19917 2015-03-12 Andreas Schwab <schwab (a] suse.de> 19918 19919 m68k: define HAVE_SA_RESTORER. 19920 On m68k the kernel sigaction structure has the sa_restorer member for 19921 historical reasons. 19922 19923 * signal.c (HAVE_SA_RESTORER): Define for M68K. 19924 19925 2015-03-11 Dmitry V. Levin <ldv (a] altlinux.org> 19926 19927 aarch64: fix rt_sigreturn decoding. 19928 * sigreturn.c (sys_sigreturn) [AARCH64]: Fix personality check. 19929 19930 2015-03-09 Dmitry V. Levin <ldv (a] altlinux.org> 19931 19932 maint: post-release administrivia. 19933 * NEWS: Add header line for next release. 19934 19935 2015-03-06 Dmitry V. Levin <ldv (a] altlinux.org> 19936 19937 Prepare for 4.10 release. 19938 * NEWS: Update for 4.10 release. 19939 * debian/changelog: 4.10-1. 19940 * strace.spec: 4.10-1. 19941 19942 Move sigreturn/rt_sigreturn parser to a separate file. 19943 * sigreturn.c: New file. 19944 * Makefile.am (strace_SOURCES): Add it. 19945 * defs.h (sprintsigmask_n): New prototype. 19946 (tprintsigmask_addr): New macro. 19947 * signal.c (sprintsigmask_n): Make global. 19948 (tprintsigmask_addr): Remove. 19949 (sys_sigreturn): Move to sigreturn.c. 19950 19951 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 19952 19953 ia64: use PTRACE_GETREGS to fetch registers. 19954 * linux/ia64/arch_regs.h: Stop including <asm/rse.h>. 19955 (ia64_frame_ptr): New declaration. 19956 * signal.c (sys_sigreturn) [IA64]: Use ia64_frame_ptr. 19957 * syscall.c [IA64]: Include <asm/rse.h>. 19958 [IA64] (ia64_regs, ia64_frame_ptr): New variable. 19959 [IA64] (ARCH_REGS_FOR_GETREGS): New macro. 19960 [IA64] (ia64_ia32mode): Convert to macro. 19961 [IA64] (ia64_r8, ia64_r10): Remove. 19962 (getrval2, print_pc, get_scno, get_syscall_args, get_error) [IA64]: 19963 Use ia64_regs. 19964 (get_syscall_result) [IA64]: Remove. 19965 19966 s390, s390x: use PTRACE_GETREGSET to fetch registers. 19967 * linux/s390/arch_regs.h: New file. 19968 * linux/s390x/arch_regs.h: New file. 19969 * Makefile.am (EXTRA_DIST): Add them. 19970 * signal.c (sys_sigreturn) [S390 || S390X]: Use s390_frame_ptr. 19971 * syscall.c [S390 || S390X] (s390_regset, s390_frame_ptr): New variable. 19972 [S390 || S390X] (ARCH_REGS_FOR_GETREGSET): New macro. 19973 (print_pc) [S390 || S390X]: Use s390_regset. 19974 (get_scno) [S390 || S390X]: Likewise. 19975 (get_syscall_args) [S390 || S390X]: Likewise. 19976 (get_error) [S390 || S390X]: Likewise. 19977 (get_syscall_result) [S390 || S390X]: Remove. 19978 19979 qemu_multiarch_testing: update. 19980 * qemu_multiarch_testing/README: Update statistics. 19981 19982 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 19983 19984 tests: robustify unix-yy.test. 19985 Implement additional synchronization between parent and child processes 19986 to guarantee that the child starts closing connected socket only after 19987 exiting of the parent's accept() syscall. 19988 This guarantee seems to be necessary to reliably receive UNIX_DIAG_PEER 19989 messages from NETLINK_SOCK_DIAG interface. 19990 19991 * tests/net-accept-connect.c: Implement additional synchronization 19992 between parent and child processes. 19993 * tests/unix-yy-connect.awk: Update. 19994 19995 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 19996 19997 Use SIGRTMIN from kernel headers. 19998 * configure.ac (ASM_SIGRTMIN): Define to SIGRTMIN from <asm/signal.h>. 19999 * signal.c: Use ASM_SIGRTMIN instead of constants provided by libc. 20000 * tests/sigreturn.c: Use ASM_SIGRTMIN instead of hardcoded value. 20001 Use lower RT_* numbers to support pre-3.18 hppa kernels. 20002 * tests/sigreturn.test: Update regexp. 20003 20004 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 20005 20006 ppc64: fix compilation warning. 20007 Fix compilation warning introduced by commit 20008 577be2593d4895ef941e1c4e5e1608f7dd13610d 20009 20010 * signal.c (sys_sigreturn) [POWERPC64]: Fix initialization of signal 20011 mask on 32bit personality. 20012 20013 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 20014 20015 aarch64: fix compilation warnings. 20016 Fix compilation warnings introduced by commit 20017 5b9b7e1d347eb4556084cdccad75e8247c535ed5: 20018 20019 signal.c:702:45: warning: signed and unsigned type in conditional expression [-Wsign-compare] 20020 syscall.c:746:34: warning: initialization from incompatible pointer type [enabled by default] 20021 20022 * syscall.c [AARCH64] (aarch64_sp_ptr): Add explicit cast. 20023 [AARCH64] (arm_sp_ptr): Change pointer type to unsigned. 20024 * linux/aarch64/arch_regs.h (arm_sp_ptr): Update. 20025 20026 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 20027 20028 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 20029 20030 i386: simplify sigreturn decoding. 20031 * signal.c (sys_sigreturn) [X86_64 || X32 || I386]: Do not define 20032 i386_sigcontext_struct and i386_fpstate structures. 20033 20034 2015-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 20035 20036 tests: add a test for sigreturn/rt_sigreturn decoding. 20037 Convert test/sigreturn.c into a regular test. 20038 20039 * test/Makefile (PROGS): Remove sigreturn. 20040 * test/.gitignore: Likewise. 20041 * test/sigreturn.c: Rewrite to ... 20042 * tests/sigreturn.c: ... new file. 20043 * tests/sigreturn.test: New test. 20044 * tests/Makefile.am (check_PROGRAMS): Add sigreturn. 20045 (TESTS): Add sigreturn.test. 20046 * tests/.gitignore: Add sigreturn. 20047 20048 2015-03-04 Dmitry V. Levin <ldv (a] altlinux.org> 20049 20050 sigreturn: print signal mask as a syscall argument. 20051 Although sigreturn takes signal mask via frame pointer, 20052 it's more convenient to display signal mask as a syscall argument 20053 rather than an outstanding object of unknown nature: 20054 20055 Before this change: 20056 sigreturn() (mask [USR2 CHLD RT_2 RT_3 RT_4 RT_31 RT_32]) = 0 20057 20058 After this change: 20059 sigreturn({mask=[USR2 CHLD RT_2 RT_3 RT_4 RT_31 RT_32]}) = 0 20060 20061 * signal.c (sys_sigreturn): Display signal mask as a syscall argument. 20062 20063 2015-03-04 Dmitry V. Levin <ldv (a] altlinux.org> 20064 20065 aarch64: implement rt_sigreturn decoding. 20066 * linux/64/syscallent.h (139): Use sys_sigreturn for rt_sigreturn 20067 decoding. 20068 * syscall.c [ARM] (arm_regs): Make static. 20069 [ARM] (arm_sp_ptr): New variable. 20070 [AARCH64] (aarch64_sp_ptr, arm_sp_ptr): New variables. 20071 * linux/aarch64/arch_regs.h: New file. 20072 * linux/arm/arch_regs.h (arm_regs): Remove. 20073 (arm_sp_ptr): New declaration. 20074 * signal.c (sys_sigreturn) [ARM]: Use arm_sp_ptr. 20075 [AARCH64]: Print signal mask. 20076 20077 arm: simplify sigreturn decoding. 20078 * signal.c (sys_sigreturn) [ARM]: Do not define sigcontext and ucontext 20079 structures, fetch signal mask only, use print_sigset_addr_len. 20080 20081 s390: fix sigreturn decoding. 20082 * signal.c (sys_sigreturn) [S390]: Fix signal mask decoding. 20083 20084 mips o32: fix sigreturn decoding. 20085 * signal.c (sys_sigreturn) [LINUX_MIPSO32]: Fix the address of signal mask. 20086 [MIPS] Use print_sigset_addr_len to print signal mask. 20087 20088 x86_64, x32: implement rt_sigreturn decoding. 20089 * syscall.c [X86_64 || X32] (x86_64_rsp_ptr): New variable. 20090 * linux/x86_64/arch_regs.h (x86_64_rsp_ptr): New declaration. 20091 * linux/x86_64/syscallent.h (15): Use sys_sigreturn for rt_sigreturn 20092 decoding. 20093 * linux/x32/syscallent.h (513): Likewise. 20094 * signal.c (sys_sigreturn) [X86_64 || X32]: Print signal mask 20095 for non-i386 personalities. 20096 20097 sparc, sparc64: fix sigreturn decoding. 20098 * linux/sparc/arch_regs.h (U_REG_FP): New macro. 20099 * signal.c (sys_sigreturn) [SPARC || SPARC64]: Fix decoding 20100 of upper 32 bits of the sigmask. 20101 20102 ppc, ppc64: fix sigreturn decoding. 20103 * signal.c (sys_sigreturn) [POWERPC]: Fix decoding of upper 32 bits 20104 of the sigmask. 20105 20106 sigreturn: issue a less innocuous warning. 20107 * signal.c (sys_sigreturn): Issue a less innocuous warning on 20108 architectures for which signal mask decoding is not implemented yet. 20109 20110 2015-03-04 Dmitry V. Levin <ldv (a] altlinux.org> 20111 20112 bootstrap: do not link Makefile* files. 20113 * bootstrap: Do not symlink any Makefile* files, not just Makefile.am 20114 and Makefile.in. 20115 20116 Reported-by: Christopher Covington <cov (a] codeaurora.org> 20117 20118 2015-03-04 Dmitry V. Levin <ldv (a] altlinux.org> 20119 20120 ia64: fix sigreturn decoding. 20121 * signal.c (sys_sigreturn) [IA64]: Fix the address of signal mask. 20122 Use print_sigset_addr_len to print signal mask. 20123 20124 2015-03-04 Dmitry V. Levin <ldv (a] altlinux.org> 20125 20126 ia64: use generic signalent. 20127 This complements commit v4.9-321-gfcf7f8d. 20128 20129 * linux/ia64/signalent.h: Remove. 20130 * Makefile.am (EXTRA_DIST): Remove it. 20131 20132 2015-03-04 Giedrius Statkeviius <giedrius.statkevicius (a] gmail.com> 20133 20134 Document that -k is available only with libunwind. 20135 Without this users might get confused why `man strace` describes 20136 an option that doesn't work. 20137 20138 * strace.1: Note that -k is available only if strace is built 20139 with libunwind. 20140 20141 2015-03-03 Dmitry V. Levin <ldv (a] altlinux.org> 20142 20143 debian: update control file. 20144 * debian/control (strace, strace-udeb): Add mips64 and mips64el 20145 to architecture list. 20146 Patch by James Cowgill <james410 (a] cowgill.org.uk> 20147 20148 This fixes Debian bug #773375. 20149 20150 2015-03-03 Dmitry V. Levin <ldv (a] altlinux.org> 20151 20152 debian: sync with 4.9-2 package. 20153 * debian/changelog: Sync with 4.9-2. 20154 * debian/control: Likewise. 20155 20156 2015-03-03 Dmitry V. Levin <ldv (a] altlinux.org> 20157 20158 Add arch-specific PTRACE_* constants. 20159 * xlat/ptrace_cmds.in: Add arch-specific ptrace commands. 20160 * xlat/ptrace_events.in: Add PTRACE_EVENT_MIGRATE for tile. 20161 * xlat/ptrace_setoptions_flags.in: Add PTRACE_O_TRACEMIGRATE for tile. 20162 20163 This fixes Debian bug #734554. 20164 20165 2015-03-03 Mike Frysinger <vapier (a] gentoo.org> 20166 20167 Clarify bootstrap-vs-autoreconf usage. 20168 * README-hacking: Tell people to run ./bootstrap. 20169 20170 2015-03-03 Dmitry V. Levin <ldv (a] altlinux.org> 20171 20172 mips n32: fix preadv/pwritev offset decoding. 20173 In mips n32 abi, like in most of 32-bit architectures, offset 20174 is passed to preadv/pwritev syscalls using two syscall arguments. 20175 20176 * io.c (print_llu_from_low_high_val) [LINUX_MIPSN32]: Remove. 20177 20178 2015-03-03 Mike Frysinger <vapier (a] gentoo.org> 20179 20180 tests: skip ipc_sem.test on broken kernels. 20181 Rather than trigger an ERROR which fails `make check`, go with SKIP 20182 instead. We don't want the testsuite failing due to kernel bugs. 20183 20184 * tests/ipc_sem.c (main): Change 99 to 77. 20185 20186 2015-03-03 Mike Frysinger <vapier (a] gentoo.org> 20187 20188 tests: skip pc.test on s390. 20189 The s390 hardware can't support an exact si_addr, and the current kernels 20190 don't handle text addresses correctly at all. Until that improves, skip 20191 the test on s390. 20192 20193 * tests/pc.c (main): Return 77 on s390 systems. 20194 20195 2015-03-03 Mike Frysinger <vapier (a] gentoo.org> 20196 20197 tests: note the kernel configs for -yy options. 20198 * tests/net-yy.test: Note CONFIG_INET_TCP_DIAG. 20199 * tests/unix-yy.test: Note CONFIG_UNIX_DIAG. 20200 20201 2015-03-02 Dmitry V. Levin <ldv (a] altlinux.org> 20202 20203 alpha: fix -yy decoding. 20204 * socketutils.c (receive_responses): Align buffer on a sizeof(long) boundary. 20205 20206 Reported-and-tested-by: Mike Frysinger <vapier (a] gentoo.org> 20207 20208 2015-03-02 Dmitry V. Levin <ldv (a] altlinux.org> 20209 20210 aarch64, x32: fix decoding of compat personality statfs64/fstatfs64. 20211 * statfs.c (struct compat_statfs64) [AARCH64 || X32]: Apply the same 20212 attributes as on X86_64. 20213 20214 mips: fix compilation warning. 20215 * syscall.c (get_scno) [MIPS]: Fix harmless compilation warning 20216 about comparison between signed and unsigned integer expressions. 20217 20218 x32: fix compilation warnings. 20219 * sysinfo.c (sys_sysinfo): Use ll length format modifier 20220 instead of l and cast kernel ulong types to unsigned long long. 20221 20222 aarch64: add -i option support. 20223 * syscall.c (print_pc): Add aarch64 support. 20224 20225 2015-03-02 Dmitry V. Levin <ldv (a] altlinux.org> 20226 20227 ioctl: use x32 specific ioctl entries on x32 personality. 20228 As ioctls_inc.h generated natively on x32 differs both from 32/ioctls_inc.h 20229 (by 45 entries) and from linux/64/ioctls_inc.h (by 322 entries), use x32 20230 specific ioctl entries on x32 personality. 20231 20232 * linux/x32/ioctls_inc0.h: Generate from linux v3.19 using ioctls_gen.sh. 20233 * linux/x86_64/ioctlent2.h: Remove. 20234 * linux/x86_64/ioctls_arch2.h: New file. 20235 * linux/x86_64/ioctls_inc2.h: New file. 20236 * Makefile.am (EXTRA_DIST): Remove linux/x86_64/ioctlent2.h, add 20237 linux/x86_64/ioctls_arch2.h and linux/x86_64/ioctls_inc2.h. 20238 20239 2015-03-02 Dmitry V. Levin <ldv (a] altlinux.org> 20240 20241 tests/uid16: skip if real uid is larger than 16bit. 20242 * tests/uid16.c (main): Skip if the uid returned by getuid matches 20243 /proc/sys/kernel/overflowuid. 20244 20245 2015-03-02 Dmitry V. Levin <ldv (a] altlinux.org> 20246 20247 tests: fix uid tests on big endian architectures. 20248 * tests/uid.c (main): Ignore uids returned by getresuid to avoid 20249 16bit vs 32bit issues on big endian architectures. 20250 Change real UID instead of effective UID in setresuid test. 20251 * tests/uid16.c (main): Likewise. 20252 * tests/uid32.c (main): Change real UID instead of effective UID 20253 in setresuid test to match uid.c 20254 * tests/uid.awk: Update setresuid regexp. 20255 20256 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 20257 20258 2015-03-01 Mike Frysinger <vapier (a] gentoo.org> 20259 20260 tests/getdents: handle older getdents calls. 20261 If the tools we use call older getdents syscalls where d_type isn't 20262 passed back, or the arch is old (like Alpha) and can't pass back in 20263 either version, make sure we don't fail. 20264 20265 * tests/getdents.awk (d_type_dir, d_type_reg): Accept DT_UNKNOWN. 20266 20267 2015-02-28 Dmitry V. Levin <ldv (a] altlinux.org> 20268 20269 Fix multiple personalities support in decoding syscall return values. 20270 * syscall.c (trace_syscall_exiting): When current personality is 32bit, 20271 print 32bit return code. 20272 20273 Update generic 64-bit ioctlent from linux v3.19. 20274 * linux/64/ioctls_inc.h: Update from linux v3.19 using ioctls_gen.sh. 20275 20276 2015-02-28 Dmitry V. Levin <ldv (a] altlinux.org> 20277 20278 sparc, sparc64: fix rt_sigaction decoding. 20279 Fix regression introduced by commit v4.9-9-gc3a5c01. 20280 20281 * signal.c (HAVE_SA_RESTORER): New macro. 20282 [HPPA || IA64]: Do not undefine SA_RESTORER. 20283 (old_sigaction, old_sigaction32, new_sigaction): Use HAVE_SA_RESTORER 20284 instead of SA_RESTORER to check whether to define sa_restorer. 20285 (decode_old_sigaction, decode_new_sigaction): Use HAVE_SA_RESTORER in 20286 addition to SA_RESTORER to check whether to use sa_restorer. 20287 20288 2015-02-28 Dmitry V. Levin <ldv (a] altlinux.org> 20289 20290 Fix stack buffer overflow when specified command is too long. 20291 * strace.c (startup_child): Check that the length of the command strace 20292 is going to execute does not exceed PATH_MAX limit. 20293 20294 Reported-by: Cheolung Lee <chpie (a] grayhash.com> 20295 20296 2015-02-28 Dmitry V. Levin <ldv (a] altlinux.org> 20297 20298 build: include ptrace.h after regs.h. 20299 Restore the order of including <sys/reg.h> and <linux/ptrace.h> 20300 headers that was inadvertently changed by commit v4.9-280-g5503dd2. 20301 20302 This should fix build on platforms like m68k where some constants 20303 are defined simultaneously as enums by <sys/reg.h> and as macros 20304 by <asm/ptrace.h>. 20305 20306 * process.c: Include "ptrace.h" after "regs.h". 20307 * signal.c: Likewise. 20308 * syscall.c: Likewise. 20309 * util.c: Likewise. 20310 20311 2015-02-28 Dmitry V. Levin <ldv (a] altlinux.org> 20312 20313 x32: fix decoding of timeval, timespec, and timex structures. 20314 As time_t is a 64-bit type in x32 personality, it is not correct to 20315 treat it as a long int type. 20316 20317 * time.c (current_time_t_is_compat): New macro. 20318 (sprinttv, sprint_timespec, printitv_bitness, tprint_timex): Use it. 20319 (tprint_timeval, do_sprinttv, sprint_timespec): Use j and uintmax_t 20320 when printing tv_sec/tv_usec. 20321 (tprint_timex): Use j and intmax_t/uintmax_t when printing struct timex 20322 members of type kernel_long_t. 20323 20324 2015-02-28 Mike Frysinger <vapier (a] gentoo.org> 20325 20326 tests/ipc_sem: detect broken kernels. 20327 When running 32bit ipc tests on ppc/sparc with a 64bit kernel, the ipc 20328 logic wrongly returns errors. Detect that and throw an error. 20329 20330 * tests/ipc_sem.c: Return 99 when errno is EFAULT. 20331 * tests/ipc_sem.test: Save output to $OUT and show it when failing. 20332 Handle exit status 99 to throw an ERROR. 20333 20334 2015-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 20335 20336 build: do not link strace with -ldl. 20337 * configure.ac: Fix dladdr check. 20338 20339 2015-02-27 Mike Frysinger <vapier (a] gentoo.org> 20340 20341 Handle broken PTRACE_EVENT_STOP values. 20342 For a few linux releases (3.1 through 3.3), this define in the exported 20343 headers were broken. Redefine if that's the case. 20344 20345 * ptrace.h [PTRACE_EVENT_STOP]: Redefine if PTRACE_EVENT_STOP is 7. 20346 20347 2015-02-27 Mike Frysinger <vapier (a] gentoo.org> 20348 20349 bootstrap: always set up test dirs. 20350 When files get updated, the bootstrap script should make sure the 20351 parallel dirs are kept in sync. 20352 20353 * bootstrap: Always generate the test$m. Clean up symlinks first. 20354 Don't link in Makefile.in files. 20355 20356 2015-02-27 Mike Frysinger <vapier (a] gentoo.org> 20357 20358 Fix cross-compiling of ioctlsort. 20359 Use the AX_PROG_CC_FOR_BUILD helper to set up build settings when cross 20360 compiling. This way ioctlsort uses the build tools all the time. 20361 20362 * configure.ac: Call AX_PROG_CC_FOR_BUILD. 20363 * Makefile.am (ioctlsort_CC): Set to CC_FOR_BUILD. 20364 (ioctlsort_CPPFLAGS): Change CPPFLAGS to CPPFLAGS_FOR_BUILD. 20365 (ioctlsort_CFLAGS): Change CFLAGS to CFLAGS_FOR_BUILD. 20366 (ioctlsort_LDFLAGS): Change LDFLAGS to LDFLAGS_FOR_BUILD. 20367 (ioctlsort_LD): Delete. 20368 (ioctlsort%): Change to ioctlsort%$(BUILD_EXEEXT). Use ioctlsort_CFLAGS. 20369 * m4/ax_prog_cc_for_build.m4: Import from the autoconf-archive package. 20370 20371 2015-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 20372 20373 tests: robustify pc.test. 20374 * configure.ac: Check for dladdr in -ldl. 20375 * tests/Makefile.am (pc_LDADD): Adde $(dl_LIBS). 20376 * tests/pc.c: Include "config.h" and <dlfcn.h>. 20377 (main): Use dladdr to find the address to unmap. 20378 20379 2015-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 20380 20381 tests: drop support for alternative names of select syscall. 20382 This mostly reverts commit 4a00fc4867bde7a4c333f238851e5cb03f02c824. 20383 20384 * tests/select.awk: Drop _newselect support. 20385 * tests/select.test: Skip if select syscall is not supported. 20386 20387 2015-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 20388 20389 Rename _newselect to select. 20390 As an exception to the general rules that syscall names should match 20391 __NR_* constants defined in kernel headers, show select as "select" 20392 and old select as "oldselect". 20393 20394 * linux/arm/syscallent.h (82): Change name to oldselect. 20395 * linux/hppa/syscallent.h (142): Change name to select. 20396 * linux/mips/syscallent-n32.h (6022): Likewise. 20397 * linux/mips/syscallent-n64.h (5022): Likewise. 20398 * linux/mips/syscallent-o32.h (4142): Likewise. 20399 * linux/sparc/syscallent.h (230): Likewise. 20400 20401 2015-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 20402 20403 sparc: sync syscall entries with kernel headers. 20404 * linux/sparc/syscallent.h: Fix syscall entries for vmsplice, 20405 inotify_init, inotify_add_watch, inotify_rm_watch, inotify_rm_watch, 20406 ioprio_set, ioprio_get, splice, sync_file_range, sched_getaffinity, and 20407 sched_setaffinity. 20408 (67, 68, 202, 230): Change syscall names to match __NR_* constants 20409 defined in arch/sparc/include/uapi/asm/unistd.h. 20410 20411 2015-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 20412 20413 s390, s390x: sync syscall entry names with kernel headers. 20414 * linux/s390/syscallent.h (1, 180, 181): Change syscall names to match 20415 __NR_* constants defined in arch/s390/include/uapi/asm/unistd.h. 20416 * linux/s390x/syscallent.h: Likewise. 20417 20418 2015-02-26 Mike Frysinger <vapier (a] gentoo.org> 20419 20420 xlat: avoid fork bombing the build system. 20421 When there were fewer xlat headers, this didn't matter as much. 20422 But now with >200, trying to run them all in parallel can easily 20423 fork bomb smaller systems. 20424 20425 * xlat/gen.sh (main): Do not more jobs than # of cpus. 20426 20427 2015-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 20428 20429 arm: sync syscall entry names with kernel. 20430 * linux/arm/syscallent.h (82, 90, 180, 181, 327): 20431 Change syscall names to match __NR_* constants defined 20432 in arch/arm/include/uapi/asm/unistd.h. 20433 20434 arm: fix get_mempolicy, set_mempolicy, and timerfd_create syscall entries 20435 * linux/arm/syscallent.h (320, 321, 350): Fix names and handlers. 20436 20437 hppa: sync syscall entry names with kernel. 20438 * linux/hppa/syscallent.h (18, 28, 59, 84, 108, 109, 280): 20439 Change syscall names to match __NR_* constants defined in 20440 arch/parisc/include/uapi/asm/unistd.h. 20441 20442 subcall.h: add sendmmsg entry. 20443 * linux/subcall.h: Add sys_sendmmsg entry. 20444 (SYS_socket_nsubcalls): Update. 20445 20446 arm: simplify ARM_FIRST_SHUFFLED_SYSCALL definition. 20447 * linux/arm/syscallent.h (ARM_FIRST_SHUFFLED_SYSCALL): Use SYS_ipc_subcall. 20448 20449 ia64: parametrize i386 syscallent size check. 20450 * linux/ia64/syscallent.h: Use (SYS_ipc_subcall + SYS_ipc_nsubcalls) 20451 instead of numeric constant. 20452 20453 Cleanup linux/subcall.h. 20454 * linux/subcall.h: Use SYS_ipc_subcall. 20455 20456 alpha: fix statfs decoding. 20457 * statfs.c (printstatfs) [ALPHA]: Remove faulty code. 20458 20459 x32: fix build regression. 20460 * linux/x32/arch_regs.h: New file. 20461 * Makefile.am (EXTRA_DIST): Add it. 20462 20463 2015-02-26 Mike Frysinger <vapier (a] gentoo.org> 20464 20465 hppa: fix fanotify_mark decoding. 20466 The parisc kernel has some legacy baggage here and decodes the 64bit 20467 field in the reverse order. Handle it in strace too. 20468 20469 * fanotify.c [HPPA] (sys_fanotify_mark): Reverse the mask bits. 20470 20471 2015-02-26 Mike Frysinger <vapier (a] gentoo.org> 20472 20473 ia64: fix decoding of getresuid/getresgid/setresgid. 20474 Looks like the similarity of these names caused confusion when generating 20475 the syscall table. getresgid was wired to the wrong output while the other 20476 two were wired up to printargs instead of the real printer. 20477 20478 * linux/ia64/syscallent.h: Connect getresuid to sys_getresuid, getresgid to 20479 sys_getresgid, and setresgid to sys_setresgid. 20480 20481 2015-02-26 Mike Frysinger <vapier (a] gentoo.org> 20482 20483 ia64: fix up builds after 16bit uid support. 20484 The ia64 port pulls in the i386 syscall table so it can decode 20485 32bit apps, so we need to enable the 16bit uid parsers for it. 20486 20487 * defs.h (NEED_UID16_PARSERS): Define to 1 for IA64. 20488 * linux/ia64/syscallent.h: Undefine sys_stime to avoid redefine warnings. 20489 20490 2015-02-26 Mike Frysinger <vapier (a] gentoo.org> 20491 20492 v4l2: use uintmax_t for times. 20493 There is no guarantee that the backing value for the various time fields 20494 are ints or longs which makes printfs annoying. Lets cast them to the 20495 uintmax_t type so we can use the j flag and not worry about truncation. 20496 20497 * v4l2.c (v4l2_ioctl): Use j and uintmax_t when printing tv_sec/tv_usec. 20498 20499 2015-02-26 Mike Frysinger <vapier (a] gentoo.org> 20500 20501 ignore core/compile files. 20502 Newer autotools includes a compile helper script. 20503 20504 * .gitignore: Add /compile and core. 20505 20506 2015-02-24 Dmitry V. Levin <ldv (a] altlinux.org> 20507 20508 NEWS: Prepare for 4.10 release. 20509 20510 2015-02-24 Dmitry V. Levin <ldv (a] altlinux.org> 20511 20512 Remove support for systems without PTRACE_SETOPTIONS. 20513 Assume that the kernel is v2.5.46 or newer, i.e. PTRACE_SETOPTIONS 20514 and PTRACE_O_TRACESYSGOOD|PTRACE_O_TRACEEXEC|PTRACE_O_TRACECLONE 20515 are universally available. 20516 20517 This change removes all code that implemented post-execve SIGTRAP 20518 handling and fork/vfork/clone->CLONE_PTRACE substitution. 20519 20520 * defs.h (TCB_BPTSET, TCB_WAITEXECVE): Remove macros. 20521 (need_fork_exec_workarounds, setbpt, clearbpt): Remove declarations. 20522 * strace.c (need_fork_exec_workarounds, 20523 test_ptrace_setoptions_followfork, test_ptrace_setoptions_for_all): 20524 Remove. 20525 (syscall_trap_sig): Set to (SIGTRAP | 0x80). 20526 (ptrace_setoptions): Set to (PTRACE_O_TRACESYSGOOD | PTRACE_O_TRACEEXEC). 20527 (detach): Do not test for TCB_BPTSET. 20528 (init): Do not call test_ptrace_setoptions_followfork and 20529 test_ptrace_setoptions_for_all. Do not test for TCB_BPTSET. 20530 * syscall.c (syscall_fixup_on_sysenter, internal_fork, internal_exec, 20531 syscall_fixup_for_fork_exec, syscall_fixup_on_sysexit): Remove. 20532 (trace_syscall_entering): Do not test for TCB_WAITEXECVE. Do not call 20533 syscall_fixup_on_sysenter and syscall_fixup_for_fork_exec. 20534 (trace_syscall_exiting): Do not call syscall_fixup_on_sysexit and 20535 syscall_fixup_for_fork_exec. 20536 [IA64] (ia64_ia32mode): Make static. 20537 * linux/ia64/arch_regs.h (ia64_ia32mode): Remove declaration. 20538 * util.c: Do not include "syscall.h". 20539 (arg_setup, get_arg0, get_arg1, set_arg0, set_arg1, restore_arg0, 20540 restore_arg1, arg_finish_change, change_syscall, setbpt, clearbpt): 20541 Remove. 20542 * tests/ptrace_setoptions.test: Remove. 20543 * tests/Makefile.am (TESTS): Remove it. 20544 20545 2015-02-24 Dmitry V. Levin <ldv (a] altlinux.org> 20546 20547 tests: robustify pc.test. 20548 * tests/pc.c (main): Unmap larger memory region. 20549 Dump process map for debug purposes. 20550 * tests/pc.test: Update regexps to take CLD_DUMPED child process 20551 into account. 20552 20553 2015-02-23 Dmitry V. Levin <ldv (a] altlinux.org> 20554 20555 tests: fix "make dist" regression. 20556 * tests/Makefile.am (EXTRA_DIST): Add getrandom.awk. 20557 20558 tests: workaround broken awk. 20559 * tests/getdents.out: New file. 20560 * tests/Makefile.am (EXTRA_DIST): Add it. 20561 * tests/getdents.test: Check whether awk is capable of matching long 20562 regular expressions. 20563 20564 2015-02-23 Dmitry V. Levin <ldv (a] altlinux.org> 20565 20566 Fix compilation warnings about incompatible print formats. 20567 On some platforms printing of __s64 types with "%lld" format, 20568 or __u64 types with "%llu" or "%llx" formats causes a warning 20569 that __s64/__u64 type is not compatible with long long format. 20570 From my PoV, this is nonsense, but the workaround costs nothing. 20571 20572 * scsi.c (print_sg_io_v4_req, print_sg_io_v4_res): Cast __u64 types 20573 to (unsigned long long). 20574 * v4l2.c (v4l2_ioctl): Likewise. Cast __s64 type to (long long). 20575 20576 2015-02-23 Dmitry V. Levin <ldv (a] altlinux.org> 20577 20578 powerpc64: fix build regression. 20579 * linux/powerpc64/arch_regs.h: New file. 20580 * Makefile.am (EXTRA_DIST): Add it. 20581 20582 signalent: update from linux v3.19. 20583 * linux/alpha/signalent.h: Update from linux v3.19 signalent.sh. 20584 * linux/hppa/signalent.h: Likewise. 20585 * linux/mips/signalent.h: Likewise. 20586 * linux/sparc/signalent.h: Likewise. 20587 20588 Cleanup auxiliary signalent files. 20589 * linux/aarch64/signalent1.h: Include "signalent.h". 20590 * linux/powerpc64/signalent1.h: Likewise. 20591 * linux/sparc64/signalent2.h: Likewise. 20592 * linux/tile/signalent1.h: Likewise. 20593 * linux/x32/signalent1.h: Likewise. 20594 * linux/x86_64/signalent1.h: Likewise. 20595 * linux/x86_64/signalent2.h: Likewise. 20596 * linux/sparc64/signalent.h: Include "sparc/signalent.h". 20597 * linux/sparc64/signalent1.h: Include "sparc/signalent1.h". 20598 * linux/x32/signalent.h: Remove. 20599 * Makefile.am (EXTRA_DIST): Remove linux/x32/signalent.h. 20600 20601 2015-02-23 Dmitry V. Levin <ldv (a] altlinux.org> 20602 20603 x86_64, x32: fix sys_sigreturn. 20604 On x86_64/x32, sys_sigreturn is defined only for i386 personality. 20605 20606 * signal.c (sys_sigreturn): Define for X32. 20607 (sys_sigreturn) [X86_64 || X32]: Implement for i386 personality only. 20608 20609 2015-02-23 Dmitry V. Levin <ldv (a] altlinux.org> 20610 20611 sparc, x32: fix build regression. 20612 * syscall.c (print_pc): Use current_wordsize iff it is defined. 20613 20614 Change errnoent.h files to use designated initializers. 20615 * signal.c (printsiginfo): Allow elements of errnoent array to be zero. 20616 * syscall.c (trace_syscall_exiting): Likewise. 20617 * errnoent.sh: Output designated initializers. 20618 * linux/errnoent.h: Regenerated. 20619 * linux/alpha/errnoent.h: Regenerated. 20620 * linux/hppa/errnoent.h: Regenerated. 20621 * linux/mips/errnoent.h: Regenerated. 20622 * linux/sparc/errnoent.h: Regenerated. 20623 * linux/sparc/errnoent1.h: Regenerated. 20624 * linux/powerpc/errnoent.h: New file. 20625 * linux/powerpc64/errnoent.h: Include "powerpc/errnoent.h". 20626 * Makefile.am (EXTRA_DIST): Add linux/powerpc/errnoent.h 20627 and linux/powerpc64/errnoent.h. 20628 20629 errnoent: update from linux v3.19. 20630 * linux/errnoent.h: Update from linux v3.19 using errnoent.sh. 20631 * linux/alpha/errnoent.h: Likewise. 20632 * linux/hppa/errnoent.h: Likewise. 20633 * linux/mips/errnoent.h: Likewise. 20634 * linux/sparc/errnoent.h: Likewise. 20635 20636 Cleanup auxiliary errnoent files. 20637 * linux/aarch64/errnoent1.h: Include "errnoent.h". 20638 * linux/powerpc64/errnoent1.h: Likewise. 20639 * linux/sparc64/errnoent2.h: Likewise. 20640 * linux/tile/errnoent1.h: Likewise. 20641 * linux/x32/errnoent1.h: Likewise. 20642 * linux/x86_64/errnoent1.h: Likewise. 20643 * linux/x86_64/errnoent2.h: Likewise. 20644 * linux/sparc64/errnoent.h: Include "sparc/errnoent.h". 20645 * linux/sparc64/errnoent1.h: Include "sparc/errnoent1.h". 20646 * linux/x32/errnoent.h: Remove. 20647 * Makefile.am (EXTRA_DIST): Remove linux/x32/errnoent.h. 20648 20649 2015-02-22 Dmitry V. Levin <ldv (a] altlinux.org> 20650 20651 evdev: update constants from linux v3.19. 20652 * xlat/evdev_keycode.in: Update from linux v3.19. 20653 * xlat/evdev_prop.in: Likewise. 20654 20655 evdev: decode keycode value in EVIOC[GS]KEYCODE_V2 commands. 20656 * evdev.c (keycode_V2_ioctl): Use evdev_keycode to print 20657 input_keymap_entry.keycode. 20658 20659 evdev: fix build with old kernel headers. 20660 * configure.ac: Check whether struct input_absinfo.resolution is defined 20661 in <linux/input.h>. 20662 * evdev.c (SYN_MAX): Add fallback definition. 20663 (abs_ioctl): Wrap use of struct input_absinfo.resolution in #ifdef check. 20664 (keycode_V2_ioctl, mtslots_ioctl, repeat_ioctl): Wrap in #ifdef checks. 20665 (evdev_read_ioctl): Wrap in #ifdef checks the code that uses EV_SW, 20666 EVIOCGREP, EVIOCGKEYCODE_V2, EVIOCGMTSLOTS, EVIOCGPROP, and EVIOCGSW. 20667 (evdev_write_ioctl): Wrap in #ifdef checks the code that uses EVIOCSREP, 20668 EVIOCSKEYCODE_V2, EVIOCSCLOCKID, and EVIOCREVOKE. 20669 20670 2015-02-22 Etienne Gemsa <etienne.gemsa (a] lse.epita.fr> 20671 20672 Add decoding for evdev ioctls. 20673 This patch introduces decoding for evdev ioctls. For EVIOCSFF the five 20674 first members are decoded, the union is not. The code was compiled and 20675 tested on x86_64 with Linux 3.13. 20676 20677 * evdev.c: New file. 20678 * Makefile.am (strace_SOURCES): Add it. 20679 * defs.h (evdev_ioctl): New prototype. 20680 * ioctl.c (ioctl_decode): Call evdev_ioctl for 'E' ioctl commands. 20681 * xlat/evdev_autorepeat.in: New file. 20682 * xlat/evdev_ff_status.in: New file. 20683 * xlat/evdev_ff_types.in: New file. 20684 * xlat/evdev_keycode.in: New file. 20685 * xlat/evdev_leds.in: New file. 20686 * xlat/evdev_misc.in: New file. 20687 * xlat/evdev_mtslots.in: New file. 20688 * xlat/evdev_prop.in: New file. 20689 * xlat/evdev_relative_axes.in: New file. 20690 * xlat/evdev_snd.in: New file. 20691 * xlat/evdev_switch.in: New file. 20692 * xlat/evdev_sync.in: New file. 20693 20694 2015-02-22 Dmitry V. Levin <ldv (a] altlinux.org> 20695 20696 Fix build with old kernel headers. 20697 * strace.c (print_debug_info, maybe_allocate_tcb, print_signalled, 20698 print_exited): Remove "const" qualifier from status variable to 20699 workaround some old implementations of WIFSIGNALED/WIFSTOPPED/WIFEXITED 20700 macros. 20701 * v4l2.c: Include <linux/types.h>. 20702 (v4l2_ioctl): Check that V4L2_CTRL_FLAG_NEXT_CTRL and VIDIOC_S_EXT_CTRLS 20703 macros are defined. 20704 * tests/Makefile.am (AM_CPPFLAGS): Define. 20705 20706 Fix "make dist" regression. 20707 * Makefile.am (EXTRA_DIST): Remove README-linux. 20708 20709 2015-02-20 Elliott Hughes <enh (a] google.com> 20710 20711 test/sfd.c: add missing includes. 20712 20713 2015-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 20714 20715 Remove linux/fanotify.h. 20716 * linux/fanotify.h: Remove. 20717 * Makefile.am (EXTRA_DIST): Remove it. 20718 * fanotify.c: Do not include <linux/fanotify.h>. 20719 * xlat/fan_classes.in: Add default values. 20720 * xlat/fan_event_flags.in: Likewise. 20721 * xlat/fan_init_flags.in: Likewise. 20722 * xlat/fan_mark_flags.in: Likewise. 20723 20724 Remove linux/keyctl.h. 20725 * linux/keyctl.h: Remove. 20726 * Makefile.am (EXTRA_DIST): Remove it. 20727 * keyctl.c: Do not include <linux/keyctl.h>. 20728 * xlat/key_perms.in: Add default values. 20729 * xlat/key_reqkeys.in: Likewise. 20730 * xlat/key_spec.in: Likewise. 20731 * xlat/keyctl_commands.in: Likewise. 20732 20733 Remove linux/kexec.h. 20734 * linux/kexec.h: Remove. 20735 * Makefile.am (EXTRA_DIST): Remove it. 20736 * kexec.c: Do not include <linux/kexec.h>. 20737 * xlat/kexec_arch_values.in: Add default values. 20738 * xlat/kexec_flags.in: Rename to kexec_load_flags.in, add default 20739 values. 20740 20741 Remove linux/inotify.h. 20742 * linux/inotify.h: Remove. 20743 * Makefile.am (EXTRA_DIST): Remove it. 20744 * inotify.c: Do not include <linux/inotify.h>. 20745 * xlat/inotify_flags.in: Add default values. 20746 20747 Remove linux/reboot.h. 20748 * linux/reboot.h: Remove. 20749 * Makefile.am (EXTRA_DIST): Remove it. 20750 * reboot.c: Do not include <linux/reboot.h>. 20751 * xlat/bootflags1.in: Add default values. 20752 * xlat/bootflags2.in: Likewise. 20753 * xlat/bootflags3.in: Likewise. 20754 20755 seccomp: fix fallback definitions of some SECCOMP_* constants. 20756 * seccomp.c (SECCOMP_SET_MODE_STRICT, SECCOMP_SET_MODE_FILTER, 20757 SECCOMP_FILTER_FLAG_TSYNC): Remove fallback definitions. 20758 * xlat/seccomp_filter_flags.in: Add default value. 20759 * xlat/seccomp_ops.in: Add default values. 20760 20761 2015-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 20762 20763 is_negated_errno: sync MAX_ERRNO with the kernel. 20764 Linux kernel used to guarantee that the largest errno value will not 20765 exceed 4095, but SECCOMP_RET_ERRNO support introduced by kernel commit 20766 v3.4-rc2-13-gacf3b2c71ed20c53dc69826683417703c2a88059 inadvertently 20767 broke it. The guarantee is back with kernel commit 20768 v3.19-8275-g580c57f1076872ebc2427f898b927944ce170f2d. 20769 20770 * syscall.c (is_negated_errno): Set maximum errno value to 4095. 20771 20772 2015-02-19 Mike Frysinger <vapier (a] gentoo.org> 20773 20774 README-linux: punt. 20775 Considering we're requiring linux-2.6 era kernels, the discussion of 20776 header troubles that plagued 2.2 and 2.4 are no longer relevant. 20777 20778 * README-linux: Delete. 20779 20780 2015-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 20781 20782 Improve prctl decoding. 20783 * configure.ac (AC_CHECK_HEADERS): Add linux/securebits.h. 20784 * prctl.c (sys_prctl): Implement full decoding of all PR_* constants 20785 as defined in linux v3.19. 20786 (sys_arch_prctl): Fix decoding of unknown commands. 20787 * xlat/cap.in: New file. 20788 * xlat/pr_mce_kill.in: New file. 20789 * xlat/pr_mce_kill_policy.in: New file. 20790 * xlat/pr_set_mm.in: New file. 20791 * xlat/pr_tsc.in: New file. 20792 * xlat/pr_unalign_flags.in: New file. 20793 * xlat/secbits.in: New file. 20794 * xlat/prctl_options.in: Remove non-linux constants, add fallback 20795 definitions. 20796 * xlat/seccomp_mode.in: Add fallback definitions. 20797 20798 xlat: extend syntax. 20799 * xlat/gen.sh (gen_header): If the name of constant is specified with a 20800 value, generate a default definition for the constant using this value. 20801 * xlat/timerfdflags.in: Use extended syntax. 20802 20803 Move CAP_* definitions out to header files. 20804 * Makefile.am (strace_SOURCES): Add caps0.h and caps1.h. 20805 * caps0.h: New file. 20806 * caps1.h: New file. 20807 * capability.c: Remove CAP_* definitions, include "caps0.h" 20808 and "caps1.h" instead. 20809 Include "xlat/cap_mask0.h" instead of "xlat/capabilities.h". 20810 Include "xlat/cap_mask1.h" instead of "xlat/capabilities1.h". 20811 (print_cap_bits): Update callers. 20812 * xlat/capabilities.in: Rename to xlat/cap_mask0.in. 20813 * xlat/capabilities1.in: Rename to xlat/cap_mask1.in. 20814 20815 2015-02-18 Dmitry V. Levin <ldv (a] altlinux.org> 20816 20817 Declare all format printers with printf format attribute. 20818 * defs.h (printllval, printnum_int, printnum_long): Mark with 20819 format(printf) attribute. 20820 * sock.c (sock_ioctl): Fix format string. 20821 20822 2015-02-17 Dmitry V. Levin <ldv (a] altlinux.org> 20823 20824 Rename printnum to printnum_long to avoid confusion. 20825 * defs.h (printnum): Rename to printnum_long. 20826 * util.c (printnum): Likewise. 20827 * process.c (sys_ptrace): Likewise. 20828 * time.c (sys_time): Likewise. 20829 20830 Use printnum_int consistently. 20831 * sock.c (sock_ioctl): Use printnum_int instead of printnum to print 20832 integer type. 20833 * stream.c (sys_getpmsg): Likewise. 20834 20835 2015-02-16 Dmitry V. Levin <ldv (a] altlinux.org> 20836 20837 print_pc: fix multiple personalities support. 20838 * syscall.c (print_pc): Choose instruction pointer format depending 20839 on current_wordsize, not the size of long integer type. 20840 * tests/pc.c: New file. 20841 * tests/pc.test: New test. 20842 * tests/Makefile.am (check_PROGRAMS): Add pc. 20843 (TESTS): Add pc.test. 20844 * tests/.gitignore: Add pc. 20845 20846 mips: use PTRACE_GETREGS to fetch all registers. 20847 * linux/mips/arch_regs.h (struct mips_regs): New structure. 20848 (mips_REG_*): New macros. 20849 * signal.c (sys_sigreturn) [MIPS]: Use mips_REG_SP. 20850 * syscall.c [MIPS] (struct mips_regs): New variable. 20851 [MIPS] (ARCH_REGS_FOR_GETREGS): New macro. 20852 (mips_a3, mips_r2): Remove. 20853 (print_pc) [MIPS]: Use mips_REG_EPC. 20854 (get_scno) [MIPS]: Use mips_REG_V0 and mips_REG_A3. 20855 (get_syscall_args) [MIPS]: Use mips_REG_A[0-5]. 20856 (get_syscall_result) [MIPS]: Remove. 20857 (get_error) [MIPS]: Use mips_REG_A3 and mips_REG_V0. 20858 20859 mips: move ABI check to configure.ac. 20860 * configure.ac [MIPS]: Check for MIPS ABI. 20861 * defs.h [MIPS]: Remove MIPS ABI check. 20862 * ioctlsort.c: Likewise. 20863 20864 tests: support alternative names of select syscall. 20865 * tests/select.awk: Recognize "_newselect" as another name of "select". 20866 * tests/select.test: Try alternative names of select syscall. 20867 20868 2015-02-15 Dmitry V. Levin <ldv (a] altlinux.org> 20869 20870 i386: fix compilation warning. 20871 Some gcc versions complain about assigning long* to uint32_t* on i386. 20872 20873 * syscall.c [I386] (i386_esp_ptr): Change type from uint32_t* to long*. 20874 * linux/i386/arch_regs.h (i386_esp_ptr): Likewise. 20875 * linux/x86_64/arch_regs.h: Do not include "i386/arch_regs.h". 20876 (i386_esp_ptr): New prototype. 20877 20878 2015-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 20879 20880 Do not reset get_regs_error unnecessarily. 20881 As get_regs() is now guaranteed to set get_regs_error, 20882 there is no need to reset get_regs_error before get_regs() call. 20883 20884 * strace.c (trace): Call clear_regs() iff !WIFSTOPPED. 20885 20886 2015-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 20887 20888 get_syscall_result: remove redundant ifdefs. 20889 As get_regs() is now guaranteed to fetch registers when either 20890 ARCH_REGS_FOR_GETREGSET or ARCH_REGS_FOR_GETREGS is defined, we can 20891 safely replace all checks for architectures where these macros are defined 20892 with a single check for these macros. 20893 20894 * syscall.c (get_syscall_result): Check for [ARCH_REGS_FOR_GETREGSET || 20895 ARCH_REGS_FOR_GETREGS]. Remove all checks for architectures where 20896 nothing has to be done after get_regs(). 20897 20898 2015-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 20899 20900 get_regs: define for all architectures. 20901 * defs.h (get_regs_error): Remove. 20902 (clear_regs): Update prototype, declare unconditionally. 20903 (get_regs): Declare unconditionally. 20904 * syscall.c (clear_regs): New function. 20905 (get_regs): Define unconditionally. 20906 (get_regs_error): Define unconditionally, change scope to static. 20907 20908 get_regs: unify code for architectures that use PTRACE_GETREGS. 20909 * syscall.c [I386, POWERPC, ARM, AVR32, SPARC, SPARC64, TILE] 20910 (ARCH_REGS_FOR_GETREGS): New macro. 20911 (get_regs): Unify code for ARCH_REGS_FOR_GETREGS architectures. 20912 20913 get_regset: define iff PTRACE_GETREGSET is used. 20914 * syscall.c [AARCH64, X86_64, X32] (ARCH_REGS_FOR_GETREGSET, 20915 ARCH_IOVEC_FOR_GETREGSET): New macros. 20916 (get_regset): Define iff ARCH_REGS_FOR_GETREGSET is defined; change 20917 return type to long, return ptrace() return code instead of assigning it 20918 to get_regs_error; do not list individual architectures, implement 20919 constant and variable iovec cases depending on ARCH_IOVEC_FOR_GETREGSET. 20920 (get_regs): Assign get_regset() return code to get_regs_error. 20921 20922 2015-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 20923 20924 arm, i386: switch back to use PTRACE_GETREGS. 20925 PTRACE_GETREGSET and PTRACE_GETREGS methods are equally good on arm and 20926 i386 architectures, but PTRACE_GETREGSET with fallback to PTRACE_GETREGS 20927 is a bit more costly, so choose the method that costs less. 20928 This partially reverts commit v4.7-149-gfaa177e. 20929 20930 * syscall.c [ARM, I386] (ARCH_REGS_FOR_GETREGSET): Remove. 20931 (get_regset) [ARM || I386]: Remove. 20932 (get_regs) [ARM || I386]: Use PTRACE_GETREGS unconditionally. 20933 20934 2015-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 20935 20936 syscall.c: remove obsolete ifdefs. 20937 * syscall.c (get_regset, get_regs): Do not check for availability 20938 of PTRACE_GETREGSET and NT_PRSTATUS macros. 20939 20940 syscall.c: ensure that NT_PRSTATUS is defined. 20941 * syscall.c: Do not include <elf.h>. 20942 (NT_PRSTATUS): New macro. 20943 20944 2015-02-13 Dmitry V. Levin <ldv (a] altlinux.org> 20945 20946 Move regs-related macros and declarations from defs.h to regs.h. 20947 * regs.h: New file. 20948 * Makefile.am (strace_SOURCES): Add it. 20949 * linux/arch_regs.h: New file. 20950 * linux/alpha/arch_regs.h: Likewise. 20951 * linux/arm/arch_regs.h: Likewise. 20952 * linux/hppa/arch_regs.h: Likewise. 20953 * linux/i386/arch_regs.h: Likewise. 20954 * linux/ia64/arch_regs.h: Likewise. 20955 * linux/mips/arch_regs.h: Likewise. 20956 * linux/powerpc/arch_regs.h: Likewise. 20957 * linux/sh64/arch_regs.h: Likewise. 20958 * linux/sparc/arch_regs.h: Likewise. 20959 * linux/sparc64/arch_regs.h: Likewise. 20960 * linux/tile/arch_regs.h: Likewise. 20961 * linux/x86_64/arch_regs.h: Likewise. 20962 * Makefile.am (EXTRA_DIST): Add them. 20963 * defs.h: Remove definitions of PTRACE_*, REG_*, PT_*, U_REG_*, 20964 and ARM_* macros. 20965 Remove declarations of struct pt_regs variables. 20966 [SPARC]: Do not include <asm/psr.h>. 20967 [SPARC64]: Do not include <asm/psrcompat.h>. 20968 * bjm.c: Do not include <sys/user.h>. 20969 * process.c: Include "regs.h". 20970 Do not include <sys/user.h> and <sys/reg.h>. 20971 [IA64]: Do not include <asm/ptrace_offsets.h> and <asm/rse.h>. 20972 * util.c: Likewise. 20973 * syscall.c: Likewise. 20974 [AARCH64]: Define struct arm_pt_regs and ARM_* macros. 20975 [SPARC]: Include <asm/psr.h>. 20976 [SPARC64]: Include <asm/psrcompat.h>. 20977 * signal.c: Include "regs.h". 20978 Do not include <sys/user.h> and <sys/reg.h>. 20979 [IA64]: Do not include <asm/ptrace_offsets.h>. 20980 * strace.c [IA64]: Do not include <asm/ptrace_offsets.h>. 20981 20982 Move all ptrace-related macros and declarations from defs.h to ptrace.h. 20983 * ptrace.h: New file. 20984 * Makefile.am (strace_SOURCES): Add it. 20985 * configure.ac (AC_CHECK_HEADERS): Remove linux/ptrace.h and sys/ptrace.h. 20986 * defs.h: Do not include <sys/ptrace.h> and <asm/ptrace.h>. 20987 Remove definitions of PTRACE_* macros. 20988 * process.c: Remove <linux/ptrace.h> workarounds, include "ptrace.h". 20989 * signal.c: Likewise. 20990 * syscall.c: Likewise. 20991 * util.c: Likewise. 20992 * strace.c: Include "ptrace.h". 20993 * wait.c: Likewise. 20994 20995 2015-02-12 Dmitry V. Levin <ldv (a] altlinux.org> 20996 20997 Enhance wait status decoding. 20998 * xlat/ptrace_events.in: New file. 20999 * wait.c: Include "xlat/ptrace_events.h". 21000 (printstatus): In case of WIFSTOPPED, print 0x80 flag separately from 21001 the stop signal name. 21002 [WIFCONTINUED]: Add WIFCONTINUED support. 21003 Decode PTRACE_EVENT_* events. 21004 21005 2015-02-08 Bart Van Assche <bart.vanassche (a] sandisk.com> 21006 21007 scsi: add bsg support. 21008 The Linux kernel supports two different versions of the SG_IO API, 21009 namely v3 and v4. This patch adds support for version 4 of this API. 21010 At least the sg3_utils package supports version 4 of this API. Version 21011 4 of this API is used if /dev/bsg/H:C:I:L is used as device name. 21012 21013 This patch has been tested by inspecting the output of the following 21014 commands: 21015 21016 modprobe scsi_debug dev_size_mb=16 delay=0 21017 dev=$(lsscsi | sed -n '/ scsi_debug /s,^[^/]*,,p') 21018 ./strace -eioctl -s256 sg_inq $dev 21019 echo 'Test XDWRITEREAD(10)' 21020 bsg=/dev/bsg/$(lsscsi | sed -n '/ scsi_debug /s,^\[\([^]]\+\)\].*,\1,p') 21021 dd if=/dev/zero bs=512 count=1 | 21022 ./strace -eioctl -s256 sg_raw -s 512 -r 1024 $bsg 53 00 00 00 00 01 00 00 01 00 21023 21024 * configure.ac (AC_CHECK_HEADERS): Add linux/bsg.h. 21025 * xlat/bsg_protocol.in: New file. 21026 * xlat/bsg_subprotocol.in: Likewise. 21027 * scsi.c: Include them and <linux/bsg.h>. 21028 (print_sg_io_v3_req, print_sg_io_v3_res, print_sg_io_v4_req, 21029 print_sg_io_v4_res): New functions. 21030 (print_sg_io_req, print_sg_io_res): Use them. 21031 (scsi_ioctl): Update callers. 21032 21033 2015-02-08 Bart Van Assche <bart.vanassche (a] sandisk.com> 21034 21035 scsi: Add iovec support. 21036 * scsi.c (print_sg_io_req, print_sg_io_res): Add support for decoding 21037 iovecs passed via the SG I/O v3 interface. Decode the "data in" and 21038 "data out" buffers in hex instead of in ASCII. 21039 21040 scsi: on exit, print only initialized part of the buffer. 21041 * scsi.c (print_sg_io_res): Only print that part of the data in buffer 21042 that has been initialized by the SCSI LLD driver. 21043 21044 scsi: make print_sg_io_buffer() print square brackets instead of its callers 21045 * scsi.c (print_sg_io_buffer): Print square brackets in this function. 21046 (print_sg_io_req, print_sg_io_res): Update callers. 21047 21048 2015-02-08 Bart Van Assche <bart.vanassche (a] sandisk.com> 21049 21050 scsi: improve consistency with other decoding functions. 21051 Pass pointers to tracee's memory as integers instead of pointers. 21052 21053 * scsi.c (print_sg_io_buffer): Change second argument's type to 21054 unsigned long. 21055 (print_sg_io_req, print_sg_io_res): Update callers. 21056 21057 2015-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 21058 21059 tests: extend getdents to support all filesystems regardless of file order 21060 * tests/getdents.awk: Include all 6 possible permutations of 3 21061 direntries to regexps. 21062 21063 2015-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 21064 21065 print_setsockopt: fix fall-through bug in SOL_IP switch case. 21066 This fixes the bug introduced by commit v4.9-250-ga0a4909. 21067 21068 * net.c (print_setsockopt): Separate SOL_IP case from SOL_PACKET. 21069 21070 Reported-by: Ben Noordhuis <info (a] bnoordhuis.nl> 21071 21072 2015-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 21073 21074 Do not watch for post-execve SIGTRAP if PTRACE_O_TRACEEXEC is enabled. 21075 If PTRACE_O_TRACEEXEC option is enabled, then post-execve SIGTRAPs are 21076 suppressed and we can safely skip -ENOSYS heuristics. This partially 21077 reverts commits v4.9-258-g8e398b6 and v4.9-261-gd70c41d. 21078 21079 * syscall.c (syscall_fixup_on_sysenter): Skip if PTRACE_O_TRACEEXEC 21080 flag is set in ptrace_setoptions. Remove all SECCOMP_RET_ERRNO 21081 workarounds as they are not needed when PTRACE_O_TRACEEXEC is not 21082 supported by the kernel. 21083 21084 2015-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 21085 21086 When the process stared by strace exits/terminates, forget its pid. 21087 The process stared by strace can exit/terminate only once. When this 21088 happens, forget its pid, so that any other event or action related to a 21089 process with the same pid as the pid of that first process would not be 21090 confused with that first process. 21091 21092 * strace.c (print_signalled, print_exited): Clear strace_child when it 21093 equals to the given pid. 21094 21095 2015-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 21096 21097 -b execve: avoid misleading warning about unknown pid. 21098 * strace.c (maybe_allocate_tcb): If detach_on_execve is set, do not warn 21099 about !WIFSTOPPED process with pid == strace_child. 21100 * tests/bexecve.test: New test. 21101 * tests/Makefile.am (TESTS): Add it. 21102 21103 -b execve: do not use struct tcb after detach. 21104 * strace.c (trace): Do not proceed after detach. 21105 21106 2015-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 21107 21108 trace: split into several functions. 21109 This change moves the main loop back to main() and splits trace() 21110 into several functions. There are no algorithmic changes. 21111 21112 * strace.c (print_debug_info, maybe_allocate_tcb, maybe_switch_tcbs, 21113 print_signalled, print_exited, print_stopped, startup_tcb): New 21114 functions. 21115 (trace) Use them. Move the main loop ... 21116 (main): ... here. 21117 21118 2015-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 21119 21120 printsiginfo: constify the first argument. 21121 * signal.c (printsiginfo): Make the first argument a pointer to a const type. 21122 * defs.h (printsiginfo): Likewise. 21123 (printsiginfo, printsiginfo_at): Always define these prototypes. 21124 * configure.ac (AC_CHECK_TYPES): Remove siginfo_t, as HAVE_SIGINFO_T 21125 is no longer used. 21126 21127 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21128 21129 test: add a manual test for seccomp decoding. 21130 * test/.gitignore: Add seccomp. 21131 * test/Makefile (PROGS): Likewise. 21132 * test/seccomp.c: New file. 21133 * test/README: Mention ../tests/. 21134 21135 Implement seccomp decoding. 21136 * configure.ac (AC_CHECK_HEADERS): Add linux/filter.h 21137 and linux/seccomp.h. 21138 * defs.h (print_seccomp_filter): New prototype. 21139 * linux/dummy.h (sys_seccomp): Remove. 21140 * linux/syscall.h (sys_seccomp): New prototype. 21141 * prctl.c: Include <linux/seccomp.h>. 21142 (sys_prctl): Decode PR_SET_SECCOMP. 21143 * seccomp.c: New file. 21144 * Makefile.am (strace_SOURCES): Add it. 21145 * xlat/bpf_class.in: New file. 21146 * xlat/bpf_miscop.in: Likewise. 21147 * xlat/bpf_mode.in: Likewise. 21148 * xlat/bpf_op_alu.in: Likewise. 21149 * xlat/bpf_op_jmp.in: Likewise. 21150 * xlat/bpf_rval.in: Likewise. 21151 * xlat/bpf_size.in: Likewise. 21152 * xlat/bpf_src.in: Likewise. 21153 * xlat/seccomp_filter_flags.in: Likewise. 21154 * xlat/seccomp_mode.in: Likewise. 21155 * xlat/seccomp_ops.in: Likewise. 21156 * xlat/seccomp_ret_action.in: Likewise. 21157 21158 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21159 21160 is_negated_errno: support large errno values. 21161 Thanks to SECCOMP_RET_DATA == 0xffff, abnormally large errno 21162 values could be easily seen when a seccomp filter is used, e.g. 21163 BPF_STMT(BPF_RET, SECCOMP_RET_ERRNO | SECCOMP_RET_DATA) 21164 21165 * syscall.c (is_negated_errno): Allow errno values as large as 0xffff. 21166 21167 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21168 21169 x86, x32, x86_64: print SECCOMP_RET_ERRNO filtered syscalls. 21170 This is required to process SECCOMP_RET_ERRNO filtered syscalls on 21171 systems where linux kernel does not change the syscall number to -1. 21172 21173 * syscall.c (is_negated_errno): Move before syscall_fixup_on_sysenter. 21174 (syscall_fixup_on_sysenter) [I386 || X32 || X86_64] : Use it to check 21175 AX register. 21176 21177 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21178 21179 is_negated_errno: merge x86_64 and x32 definitions. 21180 * syscall.c (kernel_long_t, kernel_ulong_t): New types. 21181 (is_negated_errno): Merge [X32] and [!X32] definitions. 21182 (get_error): Merge [X86_64] and [X32] code. 21183 21184 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21185 21186 x32: rename is_negated_errno_x32 to is_negated_errno. 21187 Use the same function name on all architectures. 21188 21189 * syscall.c [X32] (is_negated_errno_x32): Rename to is_negated_errno. 21190 (get_error) [X32]: Update callers. 21191 21192 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21193 21194 x86, x32, x86_64: do not skip syscall number -1. 21195 Syscall number -1 might be a side effect of SECCOMP_RET_ERRNO filtering. 21196 21197 * syscall.c (syscall_fixup_on_sysenter) [I386 || X32 || X86_64]: 21198 Do not skip syscalls that have number -1. 21199 21200 2015-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 21201 21202 x86_64: do not interpet syscall number -1 as a x32 personality syscall. 21203 Syscall number -1 might be a side effect of SECCOMP_RET_ERRNO filtering. 21204 21205 * syscall.c (get_scno) [X86_64]: Handle the case of scno == -1. 21206 21207 2015-02-05 Dmitry V. Levin <ldv (a] altlinux.org> 21208 21209 Implement getrandom syscall decoding. 21210 * getrandom.c: New file. 21211 * Makefile.am (strace_SOURCES): Add it. 21212 * linux/dummy.h (sys_getrandom): Remove. 21213 * linux/syscall.h (sys_getrandom): New prototype. 21214 * xlat/getrandom_flags.in: New file. 21215 * tests/getrandom.c: New file. 21216 * tests/getrandom.awk: New file. 21217 * tests/getrandom.test: New test. 21218 * tests/Makefile.am (check_PROGRAMS): Add getrandom. 21219 (TESTS): Add getrandom.test. 21220 (EXTRA_DIST): Add getrandom.awk. 21221 * tests/.gitignore: Add getrandom. 21222 21223 2015-02-04 Dmitry V. Levin <ldv (a] altlinux.org> 21224 21225 tests: add a test for select syscall decoding. 21226 Convert test/select.c into a regular test. 21227 21228 * test/Makefile (PROGS): Remove select. 21229 * test/.gitignore: Likewise. 21230 * test/select.c: Rewrite to ... 21231 * tests/select.c: ... new file. 21232 * tests/select.awk: New file. 21233 * tests/select.test: New test. 21234 * tests/Makefile.am (check_PROGRAMS): Add select. 21235 (TESTS): Add select.test. 21236 (EXTRA_DIST): Add select.awk. 21237 * tests/.gitignore: Add select. 21238 21239 2015-02-01 Dmitry V. Levin <ldv (a] altlinux.org> 21240 21241 tests: add a test for the latest dumpio fix. 21242 * tests/dumpio.expected: New file. 21243 * tests/unix-pair-send-recv.c: New file. 21244 * tests/dumpio.test: New test. 21245 * tests/Makefile.am (check_PROGRAMS): Add unix-pair-send-recv. 21246 (TESTS): Add dumpio.test. 21247 (EXTRA_DIST): Add dumpio.expected. 21248 * tests/.gitignore: Add unix-pair-send-recv. 21249 21250 2015-02-01 Aurelien Jacobs <aurel (a] gnuage.org> 21251 21252 Fix simultaneous -e read and -e write usage. 21253 This allows using both -e read=FD and -e write=FD at the same time 21254 with the same FD. 21255 Without this patch, the -e write=FD is ignored if -e read=FD is used 21256 at the same time. 21257 21258 2015-01-31 Dmitry V. Levin <ldv (a] altlinux.org> 21259 21260 net.c: remove unused HAVE_SIN6_SCOPE_ID_LINUX-based code. 21261 The AC_SIN6_SCOPE_ID autoconf macro that was able to define 21262 HAVE_SIN6_SCOPE_ID_LINUX was removed by commit v4.4-98-g64f793a. 21263 21264 * net.c [HAVE_SIN6_SCOPE_ID_LINUX]: Remove. 21265 21266 2015-01-30 Dmitry V. Levin <ldv (a] altlinux.org> 21267 21268 printsock: do not fetch sockaddr.sa_data twice. 21269 * net.c (printsock): Print addrbuf.sa.sa_data using print_quoted_string. 21270 21271 setsockopt: add decoding of MCAST_JOIN_GROUP and MCAST_LEAVE_GROUP. 21272 * net.c (print_group_req): New function. 21273 (print_setsockopt): Use it. 21274 21275 2015-01-29 Dmitry V. Levin <ldv (a] altlinux.org> 21276 21277 tests: add a test for sockaddr_un.sun_path decoding. 21278 * tests/net-accept-connect.c: Allow long socket addresses. 21279 * tests/sun_path.test: New test. 21280 * tests/Makefile.am (TESTS): Add it. 21281 21282 printsock: print the whole sockaddr_un.sun_path. 21283 * net.c (printsock): If sockaddr_un.sun_path is not NUL-terminated, 21284 do not omit the last byte of sockaddr_un.sun_path array. 21285 21286 printsock: do not fetch sockaddr_un.sun_path twice. 21287 * net.c (printsock): Print addrbuf.sau.sun_path using 21288 print_quoted_string. 21289 21290 2015-01-29 Dmitry V. Levin <ldv (a] altlinux.org> 21291 21292 net: define all SOL_* constants. 21293 Ensure that all known SOL_* constants are defined. 21294 Sync the list of known SOL_* constants with linux/socket.h. 21295 21296 * net.c: Provide definitions for all SOL_* constants. 21297 Remove all SOL_* preprocessor conditionals. 21298 (socketlayers): Disconnect from inet_protocols. 21299 * xlat/socketlayers.in: Remove SOL_ICMP, add SOL_ALG and SOL_NFC. 21300 21301 2015-01-29 Dmitry V. Levin <ldv (a] altlinux.org> 21302 21303 setsockopt: decode PACKET_ADD_MEMBERSHIP. 21304 * xlat/packet_mreq_type.in: New file. 21305 * net.c: Include "xlat/packet_mreq_type.h". 21306 (print_packet_mreq): New function. 21307 (print_setsockopt): Use it. 21308 21309 2015-01-29 Dmitry V. Levin <ldv (a] altlinux.org> 21310 21311 getsockopt, setsockopt: do not decode structures in non-verbose mode. 21312 Move the code that is common between getsockopt and setsockopt parsers 21313 to a separate function. 21314 Move printers specific to getsockopt and setsockopt to separate 21315 functions, choose appropriate parsers depending on verbose mode. 21316 Move parsers of specific socket options to separate functions. 21317 21318 * net.c (printicmpfilter): Rename to print_icmp_filter. 21319 (printsockopt): Remove. 21320 (print_sockopt_fd_level_name, print_linger, print_ucred, 21321 print_tpacket_stats, print_getsockopt, print_tpacket_req, 21322 print_packet_mreq, print_setsockopt): New functions. 21323 (sys_getsockopt, sys_setsockopt): Use them. 21324 21325 2015-01-28 Dmitry V. Levin <ldv (a] altlinux.org> 21326 21327 sendmsg: do not decode msghdr in non-verbose mode. 21328 * net.c (printmsghdr): Do not decode struct msghdr in non-verbose mode. 21329 21330 decode_select: do not allocate unused memory. 21331 * desc.c (decode_select): On entering syscall, do not allocate memory 21332 in non-verbose mode. 21333 21334 2015-01-26 Dmitry V. Levin <ldv (a] altlinux.org> 21335 21336 xattr: quote using print_quoted_string. 21337 * xattr.c (print_xattr_val): Drop local quoting code, use 21338 print_quoted_string. 21339 21340 v4l2: quote pixelformat. 21341 * v4l2.c (print_pixelformat): Output in quoted v4l2_fourcc() format. 21342 21343 v4l2: quote strings. 21344 * v4l2.c (v4l2_ioctl): Print strings using print_quoted_string. 21345 21346 mips: quote sysmips nodename. 21347 * sysmips.c (sys_sysmips): Print nodename using print_quoted_string. 21348 21349 block_ioctl: quote strings. 21350 * block.c (print_blkpg_req): Print blkpg_partition.devname and 21351 blkpg_partition.volname using print_quoted_string. 21352 (block_ioctl): Print blk_user_trace_setup.name using print_quoted_string. 21353 21354 sys_uname: quote struct utsname members. 21355 * uname.c (PRINT_UTS_MEMBER): New macro. 21356 (sys_uname): Use them. 21357 21358 sock_ioctl: quote network interface names. 21359 * sock.c (print_ifname): New function. 21360 (sock_ioctl): Use it to quote ifr_name, ifru_newname, and ifru_slave. 21361 21362 printsock: quote network interface names. 21363 * net.c (printsock): Print network interface names returned by 21364 if_indextoname() using print_quoted_string. 21365 21366 getdents, getdents64: quote filenames. 21367 * dirent.c (print_old_dirent): Fix quoting. 21368 (sys_getdents): Print d_name using print_quoted_string. 21369 (sys_getdents64): Likewise. 21370 * tests/getdents.test: Test it. 21371 * tests/getdents.awk: Update. 21372 21373 2015-01-26 Dmitry V. Levin <ldv (a] altlinux.org> 21374 21375 printfd: quote pathnames. 21376 Change printfd() behaviour in show_fd_path mode to quote pathnames 21377 the same way printpathn() does. 21378 21379 * util.c (printfd): Print non-socket paths using print_quoted_string. 21380 * tests/scm_rights-fd.test: Test it. 21381 * tests/scm_rights.c: Update. 21382 21383 2015-01-26 Dmitry V. Levin <ldv (a] altlinux.org> 21384 21385 Rework string_quote API. 21386 string_quote() has proven to be too hard to use, replace it with 21387 print_quoted_string() that does memory allocation and prints the result. 21388 21389 * defs.h (string_quote): Remove. 21390 (QUOTE_0_TERMINATED, QUOTE_OMIT_LEADING_TRAILING_QUOTES): New macros. 21391 (print_quoted_string): New prototype. 21392 * util.c (string_quote): Make static; take "style" flags instead 21393 of "len", treat QUOTE_0_TERMINATED style flag as former (len == -1); 21394 add QUOTE_OMIT_LEADING_TRAILING_QUOTES style flag support. 21395 (ALLOCA_CUTOFF, use_alloca): New macros. 21396 (print_quoted_string): New function. 21397 (printpathn, printstr): Update to new API. 21398 * loop.c (loop_ioctl): Likewise. 21399 * mtd.c (ubi_ioctl): Likewise. 21400 * net.c (print_scm_security): Likewise. 21401 * socketutils.c (unix_parse_response): Likewise. 21402 21403 2015-01-24 Dmitry V. Levin <ldv (a] altlinux.org> 21404 21405 avr32: fix typo in sys_timerfd syscall entry. 21406 * linux/avr32/syscallent.h (timerfd): Change sys_name to "timerfd". 21407 21408 hppa: fix typos in getresuid and getresgid syscall entries. 21409 * linux/hppa/syscallent.h (getresuid): Change sys_func to sys_getresuid. 21410 (getresgid): Change sys_func to sys_getresgid. 21411 21412 2015-01-24 Helge Deller <deller (a] gmx.de> 21413 21414 hppa: fix typo in getpeername syscall entry. 21415 This fixes an obvious typo which prints "lock" instead of "getpeername" 21416 for the getpeername syscall. 21417 21418 * linux/hppa/syscallent.h (getpeername): Change sys_name to "getpeername". 21419 21420 2015-01-24 Dmitry V. Levin <ldv (a] altlinux.org> 21421 21422 Impove struct cmsghdr decoding. 21423 Print all cmsghdr structures in msg_control array, 21424 not just the first one. 21425 Change output format to be consistent with other parts of strace 21426 where structures and arrays are printed. 21427 Implement decoder for SCM_SECURITY message type. 21428 21429 * net.c (print_scm_rights, print_scm_creds, print_scm_security): 21430 New functions. 21431 (printcmsghdr): Use them. Iterate over all members of the array. 21432 * xlat/scmvals.in: Add SCM_SECURITY. 21433 * tests/scm_rights.c (main): Pass one more descriptor to the receiver. 21434 Set SO_PASSCRED on the receiver part. Reserve enough space to receive 21435 SCM_CREDENTIALS and SCM_RIGHTS. 21436 * tests/scm_rights-fd.test: Update. 21437 21438 2015-01-24 Dmitry V. Levin <ldv (a] altlinux.org> 21439 21440 Update SO_* constants. 21441 * xlat/sockoptions.in: Add SO_DOMAIN, SO_MARK, SO_NOFCS, SO_PASSSEC, 21442 SO_PROTOCOL, SO_RCVBUFFORCE, SO_SNDBUFFORCE, SO_TIMESTAMPING, 21443 and SO_TIMESTAMPNS. 21444 21445 2015-01-24 Dmitry V. Levin <ldv (a] altlinux.org> 21446 21447 tests: run tests for each supported personality. 21448 When strace supports more than one personality, run test suite 21449 for each personality supported by the host system. 21450 21451 * bootstrap: Create tests-m32 and tests-mx32 subtrees from tests. 21452 * configure.ac: Check for -m32 and -mx32 runtime support. 21453 (AC_CONFIG_FILES): Add tests-m32/Makefile and tests-mx32/Makefile. 21454 * Makefile.am [HAVE_M32_RUNTIME] (TESTS_M32): Define. 21455 [HAVE_MX32_RUNTIME] (TESTS_MX32): Define. 21456 (SUBDIRS): Add $(TESTS_M32) $(TESTS_MX32). 21457 * .gitignore: Add /tests-m32 and /tests-mx32. 21458 21459 2015-01-24 Dmitry V. Levin <ldv (a] altlinux.org> 21460 21461 Fix ILP32 personality struct cmsghdr decoding on LP64 architectures. 21462 * net.c (union_cmsghdr): New union. 21463 [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] (cmsghdr32): New structure. 21464 (printcmsghdr): Properly handle the case of current_wordsize < sizeof(long). 21465 21466 Fix ILP32 personality preadv/pwritev offset decoding on LP64 architectures 21467 * io.c (print_llu_from_low_high_val) [SIZEOF_LONG == SIZEOF_LONG_LONG 21468 && SUPPORTED_PERSONALITIES > 1]: Properly handle the case of 21469 current_wordsize < sizeof(long). 21470 21471 2015-01-22 Dmitry V. Levin <ldv (a] altlinux.org> 21472 21473 ioctl: take all 32 bits of ioctl commands into account. 21474 Historically, only 16 bits (8-bit number and 8-bit type) of 32-bit ioctl 21475 commands were used for decoding, which was the source for numerous 21476 annoying collisions like this: 21477 21478 ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 21479 ioctl(0, MGSL_IOCGPARAMS or MMTIMER_GETRES or MTIOCTOP or SNDCTL_MIDI_MPUMODE, 0x7fffd47f7338) = -1 ENOTTY (Inappropriate ioctl for device) 21480 21481 The solution is to use all 32 bits for decoding, not just "number" and 21482 "type", but also "size" and "direction". 21483 21484 As some architectures override defaults that come from asm-generic/ and 21485 provide alternative definitions for some ioctl commands, we support 21486 per-architecture ioctl definitions and merge them with common 21487 definitions at build time. During the merge, we used to keep both 21488 generic and architecture-specific definitions, now architecture-specific 21489 definitions have precedence over generic ones -- ioctlsort omits 21490 definitions from asm-generic/ for those ioctl names that have different 21491 definitions in asm/. 21492 21493 Additional bits of "direction" are architecture specific -- the number 21494 of bits and their values differ between architectures. To reduce 21495 architecture differences in the source code, we keep "direction" in 21496 symbolic form and compile it in ioctlsort. 21497 21498 Additional bits of "size" are also architecture specific -- not only the 21499 number of bits differ between architectures, but sizes of many types 21500 depend on sizeof(long). To reduce architecture differences in the 21501 source code, we keep 32-bit and 64-bit versions of common ioctl 21502 definitions, and use the appropriate version for each architecture and 21503 personality. 21504 21505 To implement this, the tools for generating ioctl definitions from 21506 kernel headers have been rewritten, and the source format of ioctl 21507 definitions has been extended. The final ioctlent*.h files that are 21508 included by syscall.c are now generated from source ioctls_inc*.h and 21509 ioctls_arch*.h files at build time with ioctlsort. 21510 21511 * ioctl.c (ioctl_lookup): Use all 32 bits of ioctl command code. 21512 * ioctlsort.c: Rewritten. 21513 * linux/32/ioctls_inc.h: New file. 21514 * linux/64/ioctls_inc.h: New file. 21515 * linux/aarch64/ioctls_arch0.h: New file. 21516 * linux/aarch64/ioctls_arch1.h: New file. 21517 * linux/aarch64/ioctls_inc0.h: New file. 21518 * linux/aarch64/ioctls_inc1.h: New file. 21519 * linux/alpha/ioctls_arch0.h: New file. 21520 * linux/alpha/ioctls_inc0.h: New file. 21521 * linux/arc/ioctls_arch0.h: New file. 21522 * linux/arc/ioctls_inc0.h: New file. 21523 * linux/arm/ioctls_arch0.h: New file. 21524 * linux/arm/ioctls_inc0.h: New file. 21525 * linux/avr32/ioctls_arch0.h: New file. 21526 * linux/avr32/ioctls_inc0.h: New file. 21527 * linux/bfin/ioctls_arch0.h: New file. 21528 * linux/bfin/ioctls_inc0.h: New file. 21529 * linux/hppa/ioctls_arch0.h: New file. 21530 * linux/hppa/ioctls_inc0.h: New file. 21531 * linux/i386/ioctls_arch0.h: New file. 21532 * linux/i386/ioctls_inc0.h: New file. 21533 * linux/ia64/ioctls_arch0.h: New file. 21534 * linux/ia64/ioctls_inc0.h: New file. 21535 * linux/m68k/ioctls_arch0.h: New file. 21536 * linux/m68k/ioctls_inc0.h: New file. 21537 * linux/metag/ioctls_arch0.h: New file. 21538 * linux/metag/ioctls_inc0.h: New file. 21539 * linux/microblaze/ioctls_arch0.h: New file. 21540 * linux/microblaze/ioctls_inc0.h: New file. 21541 * linux/mips/ioctls_arch0.h: New file. 21542 * linux/mips/ioctls_inc0.h: New file. 21543 * linux/or1k/ioctls_arch0.h: New file. 21544 * linux/or1k/ioctls_inc0.h: New file. 21545 * linux/powerpc/ioctls_arch0.h: New file. 21546 * linux/powerpc/ioctls_inc0.h: New file. 21547 * linux/powerpc64/ioctls_arch0.h: New file. 21548 * linux/powerpc64/ioctls_arch1.h: New file. 21549 * linux/powerpc64/ioctls_inc0.h: New file. 21550 * linux/powerpc64/ioctls_inc1.h: New file. 21551 * linux/s390/ioctls_arch0.h: New file. 21552 * linux/s390/ioctls_inc0.h: New file. 21553 * linux/s390x/ioctls_arch0.h: New file. 21554 * linux/s390x/ioctls_inc0.h: New file. 21555 * linux/sh/ioctls_arch0.h: New file. 21556 * linux/sh/ioctls_inc0.h: New file. 21557 * linux/sh64/ioctls_arch0.h: New file. 21558 * linux/sh64/ioctls_inc0.h: New file. 21559 * linux/sparc/ioctls_arch0.h: New file. 21560 * linux/sparc/ioctls_inc0.h: New file. 21561 * linux/sparc64/ioctls_arch0.h: New file. 21562 * linux/sparc64/ioctls_arch2.h: New file. 21563 * linux/sparc64/ioctls_inc0.h: New file. 21564 * linux/sparc64/ioctls_inc2.h: New file. 21565 * linux/tile/ioctls_arch0.h: New file. 21566 * linux/tile/ioctls_arch1.h: New file. 21567 * linux/tile/ioctls_inc0.h: New file. 21568 * linux/tile/ioctls_inc1.h: New file. 21569 * linux/x32/ioctls_arch0.h: New file. 21570 * linux/x32/ioctls_arch1.h: New file. 21571 * linux/x32/ioctls_inc0.h: New file. 21572 * linux/x32/ioctls_inc1.h: New file. 21573 * linux/x86_64/ioctls_arch0.h: New file. 21574 * linux/x86_64/ioctls_arch1.h: New file. 21575 * linux/x86_64/ioctls_inc0.h: New file. 21576 * linux/x86_64/ioctls_inc1.h: New file. 21577 * linux/xtensa/ioctls_arch0.h: New file. 21578 * linux/xtensa/ioctls_inc0.h: New file. 21579 * linux/aarch64/ioctlent.h.in: Remove. 21580 * linux/aarch64/ioctlent1.h: Remove. 21581 * linux/alpha/ioctlent.h.in: Remove. 21582 * linux/arc/ioctlent.h.in: Remove. 21583 * linux/arm/ioctlent.h.in: Remove. 21584 * linux/avr32/ioctlent.h.in: Remove. 21585 * linux/bfin/ioctlent.h.in: Remove. 21586 * linux/hppa/ioctlent.h.in: Remove. 21587 * linux/i386/ioctlent.h.in: Remove. 21588 * linux/ia64/ioctlent.h.in: Remove. 21589 * linux/ioctlent.h.in: Remove. 21590 * linux/ioctlent.sh: Remove. 21591 * linux/m68k/ioctlent.h.in: Remove. 21592 * linux/metag/ioctlent.h.in: Remove. 21593 * linux/microblaze/ioctlent.h.in: Remove. 21594 * linux/mips/ioctlent.h.in: Remove. 21595 * linux/mips/ioctlent.sh: Remove. 21596 * linux/or1k/ioctlent.h.in: Remove. 21597 * linux/powerpc/ioctlent.h.in: Remove. 21598 * linux/powerpc64/ioctlent.h: Remove. 21599 * linux/powerpc64/ioctlent1.h: Remove. 21600 * linux/s390/ioctlent.h.in: Remove. 21601 * linux/s390x/ioctlent.h.in: Remove. 21602 * linux/sh/ioctlent.h.in: Remove. 21603 * linux/sh64/ioctlent.h.in: Remove. 21604 * linux/sparc/ioctlent.h.in: Remove. 21605 * linux/sparc64/ioctlent.h.in: Remove. 21606 * linux/sparc64/ioctlent2.h: Remove. 21607 * linux/tile/ioctlent.h.in: Remove. 21608 * linux/tile/ioctlent1.h: Remove. 21609 * linux/x32/ioctlent.h.in: Remove. 21610 * linux/x32/ioctlent1.h: Remove. 21611 * linux/x86_64/ioctlent.h.in: Remove. 21612 * linux/x86_64/ioctlent1.h: Remove. 21613 * linux/xtensa/ioctlent.h.in: Remove. 21614 * linux/x86_64/ioctlent2.h: Include ioctlent0.h instead of ioctlent.h. 21615 * syscall.c (struct_ioctlent ioctlent0): Likewise. 21616 * Makefile.am: Remove all ioctlent-related definitions. 21617 Define the list of ioctlent*.h files that have to be generated by 21618 presence of $(srcdir)/$(OS)/$(ARCH)/ioctls_inc*.h files. 21619 Add rules for ioctlent*.h files generation. 21620 (EXTRA_DIST): Update. 21621 * maint/ioctls_gen.sh: New file. 21622 * maint/ioctls_hex.sh: New file. 21623 * maint/ioctls_sym.sh: New file. 21624 * maint/print_ioctlent.c: New file. 21625 * HACKING-scripts: Update for ioctlent.sh -> ioctls_gen.sh migration. 21626 * .gitignore: Add ioctlent[012].h and ioctls_all[012].h. 21627 * configure.ac (AC_CHECK_HEADERS): Add linux/hiddev.h 21628 and linux/mmtimer.h for tests. 21629 * tests/ioctl.c: New file. 21630 * tests/ioctl.test: New test. 21631 * tests/Makefile.am (check_PROGRAMS): Add ioctl. 21632 (TESTS): Add ioctl.test. 21633 * tests/.gitignore: Add ioctl. 21634 21635 2015-01-21 Gabriel Laskar <gabriel (a] lse.epita.fr> 21636 21637 ioctl: add decoding for parametrized command names. 21638 Some ioctl commands from evdev, hiddev, mixer, uinput, spi, and joystick 21639 are parametrized by a size or a number that are variable. This change 21640 implements printing of these parametrized ioctl command names. 21641 21642 * configure.ac (AC_CHECK_HEADERS): Add linux/input.h. 21643 * defs.h (ioctl_decode_number): New prototype. 21644 * io.c (sys_ioctl): Use ioctl_decode_number. 21645 * ioctl.c (ioctl_decode_number): New function. 21646 * xlat/evdev_abs.in: New file. 21647 * xlat/evdev_ev.in: New file. 21648 21649 2015-01-21 Dmitry V. Levin <ldv (a] altlinux.org> 21650 21651 Update auxiliary maintainer mode build tools. 21652 * git-set-file-times: Update from rsync. 21653 * git-version-gen: Update from gnulib. 21654 * gitlog-to-changelog: Likewise. 21655 21656 Update warnings.m4. 21657 * m4/warnings.m4: Update from gnulib. 21658 21659 2015-01-21 Dmitry V. Levin <ldv (a] altlinux.org> 21660 21661 powerpc64: maintain own linux/powerpc64 subdirectory. 21662 Most architectures supported by strace have their own subdirectory in 21663 linux directory, but powerpc64 didn't, causing inconveniences. 21664 21665 * configure.ac (arch): Define to "powerpc64" on powerpc64. 21666 * linux/powerpc/errnoent1.h: Move to linux/powerpc64/. 21667 * linux/powerpc/ioctlent1.h: Likewise. 21668 * linux/powerpc/signalent1.h: Likewise. 21669 * linux/powerpc/syscallent1.h: Likewise. 21670 * linux/powerpc64/ioctlent.h: New file. 21671 * linux/powerpc64/syscallent.h: Likewise. 21672 * linux/powerpc64/userent.h: Likewise. 21673 * Makefile.am (EXTRA_DIST): Remove linux/powerpc/ioctlent1.h, 21674 linux/powerpc/syscallent1.h, linux/powerpc/errnoent1.h, and 21675 linux/powerpc/signalent1.h; added linux/powerpc64/errnoent1.h, 21676 linux/powerpc64/ioctlent.h, linux/powerpc64/ioctlent1.h, 21677 linux/powerpc64/signalent1.h, linux/powerpc64/syscallent.h, 21678 linux/powerpc64/syscallent1.h, and linux/powerpc64/userent.h. 21679 21680 2015-01-21 Dmitry V. Levin <ldv (a] altlinux.org> 21681 21682 configure.ac: remove unused AC_INCLUDEDIR. 21683 * configure.ac (AC_INCLUDEDIR): Remove. 21684 * m4/includedir.m4: Remove. 21685 21686 ioctl: print unrecognized ioctl codes in _IOC(dir,type,nr,size) format. 21687 * defs.h (ioctl_print_code): New prototype. 21688 * ioctl.c: Include xlat/ioctl_dirs.h. 21689 (ioctl_print_code): New function. 21690 * io.c (sys_ioctl): Use it. 21691 * xlat/ioctl_dirs.in: New file. 21692 21693 2015-01-20 Dmitry V. Levin <ldv (a] altlinux.org> 21694 21695 ioctl: assume that all ioctl commands have unsigned int type. 21696 In linux, ioctl command number has a 32-bit unsigned integer type: 21697 fs/ioctl.c:SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg) 21698 If the kernel completely ignores other bits on 64-bit architectures, 21699 why should strace care? 21700 Let's follow the kernel and treat it as unsigned int. 21701 21702 * defs.h (struct_ioctlent): Change "code" type to "unsigned int". 21703 (ioctl_decode, ioctl_lookup, block_ioctl, loop_ioctl, mtd_ioctl, 21704 ubi_ioctl, ptp_ioctl, scsi_ioctl, sock_ioctl, term_ioctl, rtc_ioctl, 21705 v4l2_ioctl): Likewise. 21706 * ioctl.c (ioctl_decode, ioctl_lookup, compare, ioctl_next_match): 21707 Likewise. 21708 * block.c (block_ioctl): Likewise. 21709 * loop.c (loop_ioctl): Likewise. 21710 * mtd.c (mtd_ioctl, ubi_ioctl): Likewise. 21711 * ptp.c (ptp_ioctl): Likewise. 21712 * scsi.c (scsi_ioctl): Likewise. 21713 * sock.c (sock_ioctl): Likewise. 21714 * term.c (term_ioctl): Likewise. 21715 * time.c (rtc_ioctl): Likewise. 21716 * v4l2.c (v4l2_ioctl): Likewise. 21717 * ioctlsort.c (struct ioctlent, compare, main): Likewise. 21718 21719 2015-01-16 Dmitry V. Levin <ldv (a] altlinux.org> 21720 21721 ioctlent.sh: cleanup regexps that are used to fetch bases. 21722 21723 ioctlent.sh: sync lookup regexps that are used in grep and sed. 21724 ioctlent.sh looks for ioctl command names using grep, and fetches them 21725 with their definitions using sed. Historically, lookup regexps used in 21726 grep and sed are slightly different, which makes the script more 21727 complicated than necessary. 21728 21729 qemu_multiarch_testing: update. 21730 * qemu_multiarch_testing/.gitignore: New file. 21731 * qemu_multiarch_testing/README: Update statistics. 21732 * qemu_multiarch_testing/hdc.dir/init2: Run "make check". 21733 * qemu_multiarch_testing/make-hdc-img.sh: Robustify, 21734 automatically calculate hdc image size. 21735 * qemu_multiarch_testing/parallel-build-hdc-img.sh: Reduce 21736 hdb image size. Report completion of each parallelized task. 21737 21738 2015-01-14 Dmitry V. Levin <ldv (a] altlinux.org> 21739 21740 tests: add IPC_STAT to ipc tests, workaround limitiations of old kernels 21741 * tests/ipc_msg.c: Include <errno.h>. 21742 (main): Add a test call with IPC_STAT, handle old kernels MSG_STAT behaviour. 21743 * tests/ipc_sem.c: Include <errno.h>. 21744 (main): Add a test call with IPC_STAT, handle old kernels SEM_STAT behaviour. 21745 * tests/ipc_shm.c: Include <errno.h>. 21746 (main): Add a test call with IPC_STAT, handle old kernels SHM_STAT behaviour. 21747 21748 Change length type of umoven and umovestr to unsigned. 21749 * defs.h (umoven, umovestr): Change type of 3rd argument from "int" 21750 to "unsigned int". 21751 * util.c (umoven, umovestr): Likewise. Adjust the code appropriately. 21752 21753 tests: skip sendmmsg/recvmmsg test if these syscalls are not implemented in kernel 21754 * tests/mmsg.c: #include <errno.h> 21755 (main): Return 77 if sendmmsg failed with ENOSYS. 21756 21757 tests: skip ip network tests when the network is not functional. 21758 * tests/inet-accept-connect-send-recv.c (main): Return 77 if inet stream 21759 socket cannot be created or it cannot be bound to INADDR_LOOPBACK. 21760 * tests/net-yy.test: Skip the test if inet-accept-connect-send-recv 21761 returns 77. 21762 21763 tests: handle the case when all 64 process capability bits are set. 21764 * tests/caps.awk: Handle the case when all bits of 64-bit capability 21765 word are set. 21766 21767 tests: explicitly request gawk when using gawk features. 21768 * tests/uid.test: Check for gawk availability and invoke gawk instead of 21769 plain awk because the test uses gawk's match() feature. 21770 21771 tests: skip detach tests if kill does not work. 21772 * tests/detach-running.test: Skip if "kill -0" does not work. 21773 * tests/detach-sleeping.test: Likewise. 21774 * tests/detach-stopped.test: Likewise. 21775 21776 ARM OABI: fix potential compilation warning. 21777 * syscall.c (get_scno) [!__ARM_EABI__ || ENABLE_ARM_OABI]: Fix 21778 "comparison between signed and unsigned" warning reported by some 21779 gcc versions. 21780 21781 powerpc: fix potential compilation warning. 21782 * mem.c [POWERPC] (sys_subpage_prot): Fix "comparison between signed 21783 and unsigned" warning reported by some gcc versions. 21784 21785 2015-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 21786 21787 sparc, sparc64: remove ioctl header file names from solaris ioctl entries 21788 Starting with commit v4.9-27-g3e252ca, header file names should not be 21789 part of ioctlent files included by syscall.c 21790 21791 * linux/sparc/ioctlent1.h: Remove ioctl header file names. 21792 * linux/sparc64/ioctlent2.h: Remove all entries, include "ioctlent.h". 21793 21794 2015-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 21795 21796 mips: enable indirect ipc subcall support. 21797 * linux/mips/syscallent-n32.h [LINUX_MIPSN32]: Define SYS_socket_subcall, 21798 include "subcall.h". 21799 * linux/mips/syscallent-n64.h [LINUX_MIPSN64]: Likewise. 21800 * linux/mips/syscallent-o32.h [LINUX_MIPSO32]: Likewise. 21801 21802 mips: remove stub entries from syscallent files, generate stubs at build time 21803 * linux/mips/genstub.sh: New file. 21804 * Makefile.am (EXTRA_DIST): Add it. 21805 * configure.ac [MIPS]: Use it to generate syscallent stubs. 21806 * linux/mips/.gitignore: Add syscallent stubs. 21807 * linux/mips/syscallent-n32.h: Remove stub entries, include 21808 the stub file instead. 21809 * linux/mips/syscallent-n64.h: Likewise. 21810 * linux/mips/syscallent-o32.h: Likewise. 21811 21812 build: add $(builddir)/$(OS)/$(ARCH) to the headers search list. 21813 * Makefile.am (AM_CPPFLAGS): Add -I$(builddir)/$(OS)/$(ARCH) before 21814 -I$(srcdir)/$(OS)/$(ARCH). 21815 21816 build: fix build if siginfo_t lacks si_timerid/si_overrun. 21817 * configure.ac (AC_CHECK_MEMBERS): Check for siginfo_t.si_timerid and 21818 siginfo_t.si_overrun. 21819 * signal.c (printsiginfo) [SI_TIMER]: Check HAVE_SIGINFO_T_SI_TIMERID 21820 and HAVE_SIGINFO_T_SI_OVERRUN. 21821 21822 configure.ac: remove unused AM_CONDITIONAL expressions. 21823 * configure.ac (AM_CONDITIONAL): Remove I386, X86_64, X32. 21824 21825 tests: portability fixes. 21826 * tests/stat.test: dd obs= is not portable, use bs= instead. 21827 * tests/stat32-v.test: Likewise. 21828 * tests/stat64-v.test: Likewise. 21829 * tests/net.test: Use $* instead of $@ in the quoted string. 21830 * tests/net-fd.test: Likewise. 21831 * tests/statfs.test: Quote { and } in regexps. 21832 * tests/caps.awk: Likewise. 21833 * tests/getdents.awk: Likewise. 21834 * tests/net-yy-accept.awk: Likewise. 21835 * tests/net-yy-connect.awk: Likewise. 21836 * tests/sigaction.awk: Likewise. 21837 * tests/unix-yy-accept.awk: Likewise. 21838 * tests/unix-yy-connect.awk: Likewise. 21839 21840 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 21841 21842 Wire up new syscalls. 21843 * linux/dummy.h (sys_bpf, sys_execveat, sys_getrandom, 21844 sys_kexec_file_load, sys_memfd_create, sys_seccomp): New stub aliases. 21845 * linux/32/syscallent.h (seccomp, getrandom, memfd_create, bpf, 21846 execveat): New entries. 21847 * linux/64/syscallent.h: Likewise. 21848 * linux/arm/syscallent.h: Likewise. 21849 * linux/hppa/syscallent.h: Likewise. 21850 * linux/i386/syscallent.h: Likewise. 21851 * linux/microblaze/syscallent.h: Likewise. 21852 * linux/mips/syscallent-n32.h: Likewise. 21853 * linux/mips/syscallent-n64.h: Likewise. 21854 * linux/mips/syscallent-o32.h: Likewise. 21855 * linux/powerpc/syscallent.h: Likewise. 21856 * linux/sparc/syscallent.h: Likewise. 21857 * linux/ia64/syscallent.h (getrandom, memfd_create, bpf, execveat): 21858 New entries. 21859 * linux/m68k/syscallent.h: Likewise. 21860 * linux/s390/syscallent.h: (seccomp, getrandom, memfd_create, bpf, 21861 s390_pci_mmio_write, s390_pci_mmio_read, execveat): New entries. 21862 * linux/s390x/syscallent.h: Likewise. 21863 * linux/x86_64/syscallent.h (seccomp, getrandom, memfd_create, 21864 kexec_file_load, bpf, execveat): New entries. 21865 * linux/x32/syscallent.h: Likewise. 21866 * linux/xtensa/syscallent.h (seccomp, getrandom, memfd_create): 21867 New entries. 21868 21869 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 21870 21871 s390x: adjust some syscall entries. 21872 According to linux/arch/s390/include/uapi/asm/unistd.h, readdir is 21873 defined both on s390 and s390x, while getrlimit, _llseek, sendfile64, 21874 and fadvise64_64 are defined on s390 only. 21875 21876 * linux/s390x/syscallent.h (readdir): Add. 21877 (getrlimit, _llseek, sendfile64, fadvise64_64): Remove. 21878 21879 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 21880 21881 Change syscallent.h files to use designated initializers. 21882 Automatically convert all linux syscallent.h files to a form that uses 21883 designated initializers, with subsequent correction of whitespace 21884 indentation. 21885 21886 * linux/alpha/syscallent.h: Use designated initializers. 21887 * linux/arm/syscallent.h: Likewise. 21888 * linux/avr32/syscallent.h: Likewise. 21889 * linux/bfin/syscallent.h: Likewise. 21890 * linux/hppa/syscallent.h: Likewise. 21891 * linux/i386/syscallent.h: Likewise. 21892 * linux/ia64/syscallent.h: Likewise. 21893 * linux/m68k/syscallent.h: Likewise. 21894 * linux/microblaze/syscallent.h: Likewise. 21895 * linux/mips/syscallent-n32.h: Likewise. 21896 * linux/mips/syscallent-n64.h: Likewise. 21897 * linux/mips/syscallent-o32.h: Likewise. 21898 * linux/powerpc/syscallent.h: Likewise. 21899 * linux/s390/syscallent.h: Likewise. 21900 * linux/s390x/syscallent.h: Likewise. 21901 * linux/sh/syscallent.h: Likewise. 21902 * linux/sh64/syscallent.h: Likewise. 21903 * linux/sparc/syscallent.h: Likewise. 21904 * linux/x32/syscallent.h: Likewise. 21905 * linux/x86_64/syscallent.h: Likewise. 21906 * linux/xtensa/syscallent.h: Likewise. 21907 21908 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 21909 21910 Create generic 32-bit syscallent.h. 21911 Since arc/syscallent.h, metag/syscallent.h, or1k/syscallent.h, and 21912 tile/syscallent1.h share a lot of identical syscall entries described in 21913 <asm-generic/unistd.h>, move these entries to a new file 32/syscallent.h 21914 using the following automated conversion with subsequent correction of 21915 whitespace indentation: 21916 21917 sed -e 's|^[[:space:]]*\({[^}]\+},\)[[:space:]]*/\*[[:space:]]\([[:space:]]*[0-9]\+\)[[:space:]]*\*/|[\2] = \1|' -e '/^[[:space:]]*\[[[:space:]]*2\(4[4-9]\|5[0-9]\)/d' linux/arc/syscallent.h 21918 21919 * linux/32/syscallent.h: New file. 21920 * Makefile.am (EXTRA_DIST): Add it. 21921 * linux/arc/syscallent.h: Include "32/syscallent.h", 21922 remove generic 32-bit syscall entries, use designated initializers. 21923 * linux/metag/syscallent.h: Likewise. 21924 * linux/or1k/syscallent.h: Likewise. 21925 * linux/tile/syscallent1.h: Likewise. 21926 21927 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 21928 21929 tile: fix syscall entries. 21930 * linux/tile/syscallent1.h (truncate64, ftruncate64): Change nargs to 3. 21931 (pread64, pwrite64): Change nargs to 5. 21932 (llseek): Change sys_name to _llseek. 21933 21934 s390: fix fadvise64 and fadvise64_64 syscall entries. 21935 * linux/s390/syscallent.h (fadvise64, fadvise64_64): Change sys_func to 21936 printargs until special parsers for 31-bit 31 s390 emulation wrappers 21937 are written. 21938 21939 alpha: fix fadvise64 syscall entry. 21940 * linux/alpha/syscallent.h (fadvise64): Change sys_name to fadvise64. 21941 21942 tile: fix fadvise64_64 syscall entry. 21943 * linux/tile/syscallent1.h (fadvise64_64): Fix nargs, sys_func, 21944 and sys_name. 21945 21946 Fix getrlimit and ugetrlimit syscall entries. 21947 * linux/arm/syscallent.h (getrlimit, ugetrlimit): Fix sys_name. 21948 * linux/i386/syscallent.h: Likewise. 21949 * linux/m68k/syscallent.h: Likewise. 21950 * linux/microblaze/syscallent.h: Likewise. 21951 * linux/powerpc/syscallent.h: Likewise. 21952 * linux/avr32/syscallent.h (getrlimit): Fix sys_name. 21953 * linux/or1k/syscallent.h: Likewise. 21954 * linux/s390/syscallent.h (ugetrlimit): Fix sys_name. 21955 * linux/sh/syscallent.h: Likewise. 21956 * linux/sh64/syscallent.h: Likewise. 21957 21958 Fix umount and umount2 syscall entries. 21959 * linux/aarch64/syscallent1.h (umount): Change nargs to 1. 21960 * linux/avr32/syscallent.h: Likewise. 21961 * linux/xtensa/syscallent.h: Likewise. 21962 * linux/ia64/syscallent.h (umount2): Change nargs to 2. 21963 * linux/arm/syscallent.h (umount, umount2): Fix sys_name. 21964 * linux/bfin/syscallent.h: Likewise. 21965 * linux/i386/syscallent.h: Likewise. 21966 * linux/m68k/syscallent.h: Likewise. 21967 * linux/microblaze/syscallent.h: Likewise. 21968 * linux/powerpc/syscallent.h: Likewise. 21969 * linux/s390/syscallent.h: Likewise. 21970 * linux/s390x/syscallent.h: Likewise. 21971 * linux/sh/syscallent.h: Likewise. 21972 * linux/sh64/syscallent.h: Likewise. 21973 * linux/sparc/syscallent.h: Likewise. 21974 * linux/metag/syscallent.h: (umount2): Fix sys_name. 21975 * linux/or1k/syscallent.h: Likewise. 21976 * linux/x32/syscallent.h: Likewise. 21977 * linux/x86_64/syscallent.h: Likewise. 21978 21979 Fix sendfile64 syscall entries. 21980 * linux/arc/syscallent.h (sendfile64): Change sys_name to sendfile64. 21981 * linux/metag/syscallent.h: Likewise. 21982 * linux/or1k/syscallent.h: Likewise. 21983 21984 Fix number of arguments in ipc family syscall entries. 21985 * linux/64/syscallent.h (msgget, semget, semtimedop, semop, shmget, 21986 shmctl, shmat, shmdt): Fix nargs for direct ipc syscalls. 21987 * linux/alpha/syscallent.h (msgctl, msgget, msgrcv, semget, shmctl, 21988 shmdt, shmget, semtimedop): Likewise. 21989 * linux/avr32/syscallent.h (msgget, semget, semop, semtimedop, shmat, 21990 shmget, shmdt, shmctl): Likewise. 21991 * linux/bfin/syscallent.h (semget, semop, msgctl, msgget, msgrcv, shmat, 21992 * shmctl, shmdt, shmget, semtimedop): Likewise. 21993 * linux/hppa/syscallent.h (semop, semget, msgrcv, msgget, msgctl, 21994 semtimedop): Likewise. 21995 * linux/microblaze/syscallent.h (semtimedop, semget, semop, msgctl, 21996 msgget, msgrcv, shmat, shmctl, shmdt, shmget): Likewise. 21997 * linux/ia64/syscallent.h (semtimedop): Likewise. 21998 * linux/mips/syscallent-n32.h (semtimedop): Likewise. 21999 * linux/mips/syscallent-n64.h (semtimedop): Likewise. 22000 * linux/or1k/syscallent.h (msgget, msgctl, msgrcv, semget, semtimedop, 22001 semop, shmget, shmctl, shmat, shmdt): Likewise. 22002 * linux/sh64/syscallent.h (semget, msgget, shmget): Likewise. 22003 * linux/tile/syscallent1.h (msgget, semget, semtimedop, semop, shmget, 22004 shmctl, shmat, shmdt): Likewise. 22005 * linux/x32/syscallent.h (shmget, shmat, shmctl, semget, semop, shmdt, 22006 msgget, semtimedop): Likewise. 22007 * linux/x86_64/syscallent.h (shmget, shmat, shmctl, semget, semop, 22008 shmdt, msgget, semtimedop): Likewise. 22009 * linux/xtensa/syscallent.h (shmget, shmat, shmctl, shmdt, semtimedop, 22010 semget, semop, msgget, msgrcv, msgctl): Likewise. 22011 22012 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22013 22014 Create generic 64-bit syscallent.h. 22015 Since aarch64/syscallent1.h and tile/syscallent.h share a lot of 22016 identical syscall entries described in <asm-generic/unistd.h>, move 22017 these entries to a new file 64/syscallent.h using the following 22018 automated conversion with subsequent correction of whitespace 22019 indentation: 22020 22021 sed -e 's|^[[:space:]]*\({[^}]\+},\)[[:space:]]*/\*[[:space:]]\([[:space:]]*[0-9]\+\)[[:space:]]*\*/|[\2] = \1|' -e '/^\[[[:space:]]*2\(4[4-9]\|5[0-9]\)\]/d' linux/tile/syscallent.h 22022 22023 * linux/64/syscallent.h: New file. 22024 * Makefile.am (EXTRA_DIST): Add it. 22025 * linux/aarch64/syscallent1.h: Include "64/syscallent.h", 22026 remove generic 64-bit syscall entries, use designated initializers. 22027 * linux/tile/syscallent.h: Likewise. 22028 22029 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22030 22031 Fix nfsservctl syscall entries. 22032 * linux/arc/syscallent.h (nfsservctl): Set nargs, sys_func, and sys_name. 22033 * linux/metag/syscallent.h: Likewise. 22034 22035 Add missing syscall entries for sched_[gs]etattr and renameat2. 22036 * linux/alpha/syscallent.h (sched_setattr, sched_getattr, renameat2): 22037 New syscall entries. 22038 * linux/arc/syscallent.h: Likewise. 22039 * linux/metag/syscallent.h: Likewise. 22040 * linux/or1k/syscallent.h: Likewise. 22041 * linux/tile/syscallent.h: Likewise. 22042 * linux/tile/syscallent1.h: Likewise. 22043 22044 Fix NUMA related syscall entries. 22045 * linux/alpha/syscallent.h (mbind, get_mempolicy, set_mempolicy): 22046 Set sys_func. 22047 * linux/hppa/syscallent.h (mbind, get_mempolicy, set_mempolicy): 22048 Fix nargs, set sys_func. 22049 * linux/microblaze/syscallent.h (mbind): Fix nargs. 22050 * linux/mips/syscallent-n32.h (move_pages): Set sys_func. 22051 * linux/mips/syscallent-n64.h (move_pages): Likewise. 22052 * linux/mips/syscallent-o32.h (mbind): Fix nargs. 22053 * linux/or1k/syscallent.h (migrate_pages): Likewise. 22054 * linux/powerpc/syscallent.h (migrate_pages): Likewise. 22055 * linux/sh/syscallent.h (mbind): Likewise. 22056 * linux/sh64/syscallent.h (mbind): Likewise. 22057 22058 xtensa: fix syscall entries. 22059 * linux/xtensa/syscallent.h (sendmmsg): Fix sys_func and sys_name. 22060 (restart_syscall, io_setup, io_destroy, io_submit, io_getevents, 22061 io_cancel, add_key, request_key, keyctl): Set sys_func. 22062 (migrate_pages, mbind, get_mempolicy, set_mempolicy, move_pages, 22063 fstatat64): Fix nargs. 22064 (renameat2): New entry. 22065 22066 Fix sched_setparam syscall entries. 22067 * linux/aarch64/syscallent1.h (sched_setparam): Change nargs to 2. 22068 * linux/arm/syscallent.h (sched_setparam): Likewise. 22069 * linux/avr32/syscallent.h (sched_setparam): Likewise. 22070 * linux/bfin/syscallent.h (sched_setparam): Likewise. 22071 * linux/i386/syscallent.h (sched_setparam): Likewise. 22072 * linux/m68k/syscallent.h (sched_setparam): Likewise. 22073 * linux/microblaze/syscallent.h (sched_setparam): Likewise. 22074 * linux/s390/syscallent.h (sched_setparam): Likewise. 22075 * linux/s390x/syscallent.h (sched_setparam): Likewise. 22076 * linux/sh/syscallent.h (sched_setparam): Likewise. 22077 * linux/sh64/syscallent.h (sched_setparam): Likewise. 22078 * linux/tile/syscallent.h (sched_setparam): Likewise. 22079 * linux/tile/syscallent1.h (sched_setparam): Likewise. 22080 * linux/x32/syscallent.h (sched_setparam): Likewise. 22081 * linux/x86_64/syscallent.h (sched_setparam): Likewise. 22082 22083 arc: fix fanotify_mark syscall entry. 22084 * linux/arc/syscallent.h (fanotify_mark): Change nargs to 6. 22085 22086 ia64: add fallocate syscall entry. 22087 * linux/ia64/syscallent.h (fallocate): Add syscall entry. 22088 22089 Fix lookup_dcookie syscall entries. 22090 * linux/s390/syscallent.h (lookup_dcookie): Add syscall entry. 22091 * linux/s390x/syscallent.h (lookup_dcookie): Likewise. 22092 * linux/tile/syscallent.h (lookup_dcookie): Change nargs to 3. 22093 * linux/x32/syscallent.h (lookup_dcookie): Likewise. 22094 22095 aarch64: fix syscall names for statfs, fstatfs, truncate, and ftruncate. 22096 * linux/aarch64/syscallent1.h (statfs, fstatfs, truncate, ftruncate): 22097 Use correct syscall names. 22098 22099 aarch64: fix mlock syscall entry. 22100 * linux/aarch64/syscallent1.h (mlock): Change to mlock entry. 22101 22102 sh, sh64: fix mlock syscall entry. 22103 * linux/sh/syscallent.h (mlock): Change nargs to 2. 22104 * linux/sh64/syscallent.h (mlock): Likewise. 22105 22106 tile: fix swapon syscall entries. 22107 * linux/tile/syscallent.h (swapon): Change nargs to 2. 22108 * linux/tile/syscallent1.h (swapon): Likewise. 22109 22110 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22111 22112 ARM EABI: reserve some space for new syscalls. 22113 Reserve the same space for new syscalls on EABI as it is already 22114 reserved on OABI. 22115 22116 * linux/arm/syscallent.h [__ARM_EABI__] (ARM_FIRST_SHUFFLED_SYSCALL): 22117 Raise to 400. 22118 22119 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22120 22121 arm: rewrite shuffle_scno in a bit more readable way. 22122 * linux/arm/syscallent.h: Define ARM_FIRST_SHUFFLED_SYSCALL instead of 22123 ARM_LAST_ORDINARY_SYSCALL. 22124 * syscall.c [ARM || AARCH64] (shuffle_scno): Update. 22125 22126 tests: add tests for ipc syscalls decoding. 22127 * tests/ipc_msg.c: New file. 22128 * tests/ipc_sem.c: Likewise. 22129 * tests/ipc_shm.c: Likewise. 22130 * tests/ipc_msg.test: New test. 22131 * tests/ipc_sem.test: Likewise. 22132 * tests/ipc_shm.test: Likewise. 22133 * tests/Makefile.am (check_PROGRAMS): Add ipc_msg, ipc_sem, and ipc_shm. 22134 (TESTS): Add ipc_msg.test, ipc_sem.test, and ipc_shm.test. 22135 * tests/.gitignore: Add ipc_msg, ipc_sem, and ipc_shm. 22136 22137 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22138 22139 Fix indirect ipc subcall handling. 22140 indirect_ipccall used to guess whether currently decoded ipc syscall is 22141 an indirect subcall or not based on generic knowledge, while there is a 22142 robust method to identify indirect ipc subcalls. 22143 22144 * defs.h (TRACE_INDIRECT_SUBCALL): New flag. 22145 * ipc.c (indirect_ipccall): Check it. 22146 * linux/subcall.h: Set it. 22147 22148 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22149 22150 Move socket and ipc subcall entries to subcall.h. 22151 Syscall entries for socket and ipc subcalls are the same on all 22152 architectures, or at least they should be the same, so move them 22153 to the single file. 22154 22155 * linux/subcall.h: Add syscall entries for socket and ipc subcalls. 22156 * linux/arm/syscallent.h: Remove entries for socket and ipc subcalls. 22157 * linux/i386/syscallent.h: Likewise. 22158 * linux/m68k/syscallent.h: Likewise. 22159 * linux/powerpc/syscallent.h: Likewise. 22160 * linux/s390/syscallent.h: Likewise. 22161 * linux/s390x/syscallent.h: Likewise. 22162 * linux/sh/syscallent.h: Likewise. 22163 * linux/sh64/syscallent.h: Likewise. 22164 * linux/sparc/syscallent.h: Likewise. 22165 22166 2015-01-12 Dmitry V. Levin <ldv (a] altlinux.org> 22167 22168 sh: fix typo introduced by commit v4.9-121-gd535b8b. 22169 * linux/sh/syscallent.h (getresgid32): Fix typo in sys_func and sys_name. 22170 22171 2015-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 22172 22173 Fix fanotify_mark decoding on 32-bit architectures. 22174 The fanotify_mark syscall takes a 64-bit mask, and on 32-bit 22175 architectures it is split up into two syscall arguments. 22176 22177 * configure.ac (AC_CHECK_FUNCS): Add fanotify_mark. 22178 (AC_CHECK_HEADERS): Add sys/fanotify.h. 22179 * defs.h (getllval): New prototype. 22180 * util.c (getllval): New function based on printllval. 22181 (printllval): Use getllval. 22182 * fanotify.c (sys_fanotify_mark): Use getllval to properly decode 22183 64-bit mask and two syscall arguments followed by it. 22184 * tests/fanotify_mark.c: New file. 22185 * tests/fanotify_mark.test: New test. 22186 * tests/Makefile.am (check_PROGRAMS): Add fanotify_mark. 22187 (TESTS): Add fanotify_mark.test. 22188 * tests/.gitignore: Add fanotify_mark. 22189 22190 2015-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 22191 22192 v4l2: fix build on systems with older kernel headers. 22193 * v4l2.c (print_v4l2_format_fmt): Do not use 22194 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY unless it is defined. 22195 (v4l2_ioctl): Do not use VIDIOC_ENUM_FRAMESIZES and 22196 VIDIOC_ENUM_FRAMEINTERVALS unless they are defined. 22197 22198 2015-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 22199 22200 tests: fix build with awk that does not support switch-case. 22201 The switch-case statement is a gawk-specific feature which is not 22202 necessarily available, let's use traditional if-else statements instead. 22203 22204 * tests/uid.awk: Rewrite without switch-case statements. 22205 22206 2015-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 22207 22208 Fix build on systems that lack O_CLOEXEC definition. 22209 * xlat/timerfdflags.in [!TFD_CLOEXEC]: Check that O_CLOEXEC is defined. 22210 22211 2015-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 22212 22213 Fix build on systems that lack NETLINK_SOCK_DIAG definition. 22214 NETLINK_INET_DIAG was introduced in linux v2.6.14, 22215 NETLINK_SOCK_DIAG was added much later in linux v3.3. 22216 22217 * net.c [!NETLINK_SOCK_DIAG && NETLINK_INET_DIAG] 22218 (NETLINK_SOCK_DIAG): Define. 22219 * socketutils.c: Likewise. 22220 * tests/netlink_unix_diag.c: Likewise. 22221 22222 2015-01-09 Dmitry V. Levin <ldv (a] altlinux.org> 22223 22224 Cleanup local copy of linux/fanotify.h. 22225 * linux/fanotify.h: Remove macros and structures not used by 22226 fanotify_init and fanotify_mark parsers. 22227 22228 Fix "make dist" regression introduced by commit v4.9-125-g120e5db. 22229 * Makefile.am (EXTRA_DIST): Add linux/unix_diag.h. 22230 22231 2015-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 22232 22233 tests: fix build with fresh glibc. 22234 * tests/netlink_unix_diag.c: Include <stdint.h>. 22235 22236 2015-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 22237 22238 ioctlent.sh: handle linux/aufs_type.h properly. 22239 Before this change, ioctlent.sh could not recognize unusual constants 22240 defined by linux/aufs_type.h, resulting to ioctls.h with references to 22241 these constants without appropriate definitions in ioctldefs.h. 22242 22243 * linux/ioctlent.sh: Update the regexp that is used to lookup constants 22244 referenced by generated ioctls.h. 22245 22246 2015-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 22247 22248 tests: fix distcheck. 22249 * tests/stat32-v.test: Remove work files if the test is skipped. 22250 22251 Fix printing of time_t values set in the distant future. 22252 * util.c (sprinttime): Increase buffer size. 22253 * tests/stat64-v.test: Try to set modification time of the sample file 22254 to a value set in the distant future. 22255 22256 Use AC_CHECK_TYPES to check for struct statfs64. 22257 * m4/statfs.m4: Remove. 22258 * configure.ac (AC_STATFS64): Remove. 22259 (AC_CHECK_TYPES): Add struct statfs64. 22260 * statfs.c: Replace HAVE_STATFS64 with HAVE_STRUCT_STATFS64. 22261 22262 Use AC_CHECK_TYPES to check for struct stat64. 22263 * m4/stat.m4: Remove. 22264 * configure.ac (AC_STAT64): Remove. 22265 (AC_CHECK_TYPES): Add struct stat64. 22266 * file.c: Replace HAVE_STAT64 with HAVE_STRUCT_STAT64. 22267 22268 file.c: fix 32-bit stat decoding on 64-bit architectures. 22269 * file.c [SPARC || SPARC64] (struct stat): Remove, use generic 22270 definition from <asm/stat.h>. 22271 [SPARC64] (struct stat_sparc64, printstat_sparc64): Remove. 22272 [AARCH64 || X86_64 || X32 || POWERPC64 || SPARC64] (struct stat32, 22273 STAT32_PERSONALITY): Define. 22274 [STAT32_PERSONALITY] (struct stat_powerpc32): Rename to struct stat32. 22275 [STAT32_PERSONALITY] (printstat_powerpc32): Rename to printstat32. 22276 (printstat) [STAT32_PERSONALITY]: Call printstat32 when 22277 current_personality == STAT32_PERSONALITY. 22278 [HAVE_STAT64] (printstat64) [STAT32_PERSONALITY]: Call printstat when 22279 current_personality != STAT32_PERSONALITY. 22280 [!HAVE_STAT64] (sys_stat64): Fallback to sys_stat. 22281 [!HAVE_STAT64] (sys_fstat64): Fallback to sys_fstat. 22282 22283 sparc: reuse struct stat parser code for struct solstat decoding. 22284 * printstat.h: Parametrize major() and minor(). 22285 * file.c [SPARC || SPARC64]: Define do_printstat_sol by instantiating 22286 printstat.h template. 22287 [SPARC || SPARC64] (printstatsol): Use do_printstat_sol. 22288 22289 ppc64: reuse struct stat parser code for struct stat_powerpc32 decoding. 22290 * file.c [POWERPC64]: Define do_printstat32 by instantiating printstat.h 22291 template. 22292 [POWERPC64] (printstat_powerpc32): Use do_printstat32. 22293 22294 file.c: group related parsers together. 22295 * file.c (sys_stat, sys_fstat): Collect in one place right before 22296 the definition of printstat64. 22297 (sys_stat64, sys_fstat64): Collect in one place right after the 22298 definition of printstat64. 22299 22300 file.c: collect scattered __old_kernel_stat related code. 22301 * file.c [HAVE_STRUCT___OLD_KERNEL_STAT] (convertoldstat, printoldstat, 22302 sys_oldstat, sys_oldfstat): Collect functions in one place. 22303 22304 Use the same source code for struct stat/stat64 decoding. 22305 * file.c: Define do_printstat64 by instantiating printstat.h template. 22306 (printstat64): Use do_printstat64. 22307 22308 x32: use generic printstat/printstat64 parsers. 22309 * file.c (printstat) [X32]: Define. 22310 (printstat64) [X32]: Use "struct stat64" instead of "struct stat". 22311 Use printstat for x32 personality processes. 22312 (printstat64_x32): Remove. 22313 (sys_stat64, sys_fstat64) [X32]: Use printstat64 instead of 22314 printstat64_x32. 22315 22316 x32: remove redundant definitions. 22317 * file.c [X32]: Do not define "struct stat" and "struct 22318 __old_kernel_stat" locally, use definitions provided by <asm/stat.h>. 22319 Do not define "struct stat64" exclusively, reuse another definition 22320 added earlier for X86_64. 22321 22322 Convert do_printstat to a template function. 22323 * printstat.h: New file. 22324 * Makefile.am (strace_SOURCES): Add it. 22325 * file.c: Include "printstat.h". 22326 (do_printstat): Move to printstat.h, parametrize its name 22327 and struct stat. 22328 22329 file.c: prepare realprintstat for parametrization. 22330 * file.c (realprintstat): Adjust format strings so that all 64-bit 22331 integer fields are printed with %llu format, and %u format is used for 22332 all the rest. Rename to do_printstat. 22333 (printstat, printoldstat): Update callers. 22334 22335 tests: cleanup stat.test. 22336 * tests/stat.test: Rewrite in a more readable way. 22337 22338 tests: check verbose decoding of 32-bit and 64-bit struct stat. 22339 * tests/stat.c: New file. 22340 * tests/stat32.c: Likewise. 22341 * tests/stat32-v.test: New file. 22342 * tests/stat64-v.test: Likewise. 22343 * tests/Makefile.am (check_PROGRAMS): Add stat and stat32. 22344 (stat_CFLAGS): Define. 22345 (TESTS): Add stat32-v.test and stat64-v.test. 22346 * tests/.gitignore: Add stat and stat32. 22347 22348 2015-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 22349 22350 Cleanup struct stat.st_flags decoding. 22351 There are no symbolic constants defined for struct stat.st_flags, 22352 so decode this rare field as unsigned int. 22353 22354 * xlat/fileflags.in: Remove. 22355 * file.c (realprintstat, printstat64) [HAVE_STRUCT_STAT_ST_FLAGS]: 22356 Decode struct stat.st_flags as unsigned int. 22357 22358 2015-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 22359 22360 Drop struct stat.st_aclcnt and stat.st_level support. 22361 Remove the code that supports struct stat.st_aclcnt and stat.st_level 22362 decoding -- these fields are not defined in system headers. 22363 22364 * configure.ac (AC_CHECK_MEMBERS): Remove struct stat.st_aclcnt and 22365 struct stat.st_level. 22366 * file.c (realprintstat, printstat64) 22367 [HAVE_STRUCT_STAT_ST_ACLCNT || HAVE_STRUCT_STAT_ST_LEVEL]: Remove. 22368 22369 2015-01-07 Dmitry V. Levin <ldv (a] altlinux.org> 22370 22371 tests: fix race condition in net-accept-connect based tests. 22372 Change all net-accept-connect based tests to use different unix domain 22373 socket addresses, so that these tests could be safely run in parallel. 22374 22375 * tests/net-accept-connect.c: Parametrize unix domain socket address. 22376 * tests/net-fd.test: Pass socket address to net-accept-connect. 22377 * tests/net.test: Likewise. 22378 * tests/unix-yy.test: Likewise. 22379 * tests/unix-yy-accept.awk: Update regexps. 22380 * tests/unix-yy-connect.awk: Likewise. 22381 22382 2014-12-31 Mike Frysinger <vapier (a] gentoo.org> 22383 22384 timerfd: update flags decoding. 22385 The current code only decodes TFD_TIMER_ABSTIME when the kernel has 22386 a bunch of newer flags. We have to handle fallbacks for all of them 22387 since the kernel doesn't currently export things to userspace. 22388 22389 * time.c: Include fcntl.h for O_* defines. 22390 (TFD_TIMER_ABSTIME): Move to xlat/timerfdflags.in. 22391 * xlat/timerfdflags.in: Add more definitions. 22392 22393 2014-12-29 Dmitry V. Levin <ldv (a] altlinux.org> 22394 22395 sparc: fix fxstat decoding. 22396 * file.c [SPARC || SPARC64] (sys_fxstat): Print file descriptor 22397 using printfd. 22398 22399 2014-12-29 Dmitry V. Levin <ldv (a] altlinux.org> 22400 22401 sparc: drop _STAT64_VER support. 22402 Starting with commit v4.6-240-g5afdf12, nobody compiles this 22403 non-Linux code. 22404 22405 * file.c [SPARC || SPARC64] (sys_xstat, sys_fxstat): Remove 22406 _STAT64_VER code. 22407 22408 2014-12-29 Dmitry V. Levin <ldv (a] altlinux.org> 22409 22410 sparc: remove redundant sys_lxstat. 22411 * file.c [SPARC || SPARC64] (sys_lxstat): Remove. 22412 * linux/sparc/dummy2.h (solaris_lxstat): Alias to sys_xstat. 22413 * linux/sparc64/dummy2.h (solaris_lxstat): Likewise. 22414 22415 2014-12-28 Dmitry V. Levin <ldv (a] altlinux.org> 22416 22417 file.c: do not include unused headers. 22418 * file.c: Do not include <fcntl.h>. 22419 22420 2014-12-27 Dmitry V. Levin <ldv (a] altlinux.org> 22421 22422 Cleanup UTIME_NOW/UTIME_OMIT decoding. 22423 Move the code that's present in two copies from sprinttv() 22424 to a new helper function. 22425 22426 * time.c (do_sprinttv): New function. 22427 (sprinttv): Use it. 22428 22429 2014-12-27 Elliott Hughes <enh (a] google.com> 22430 22431 Fix UTIME_NOW/UTIME_OMIT decoding. 22432 The kernel doesn't actually care what tv_sec is set to --- it only checks 22433 tv_nsec when looking for the special values. 22434 22435 2014-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 22436 22437 Make -yy output for inet sockets consistent with unix domain sockets. 22438 Prepend -yy output generated for INET/INET6 TCP/UDP sockets with their 22439 protocol name obtained using getxattr. 22440 22441 * socketutils.c (inet_parse_response): Add proto_name argument. 22442 Print proto_name for connected and unconnected sockets. 22443 (receive_responses): Add proto_name argument, pass it to the parser. 22444 (inet_print): Add proto_name argument, pass it to receive_responses. 22445 (unix_parse_response): Add proto_name argument. 22446 (print_sockaddr_by_inode): Pass protocol name to inet_print calls. 22447 * tests/net-yy-accept.awk: Update to match new output format. 22448 * tests/net-yy-connect.awk: Likewise. 22449 22450 2014-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 22451 22452 tests: robustify unix domain socket decoding test. 22453 Unix domain socket address family name is not universally decoded as 22454 AF_LOCAL, other names like AF_UNIX and AF_FILE are valid synonyms. 22455 Similarly, PF_UNIX and PF_FILE are valid synonyms for PF_LOCAL. 22456 22457 Some test regexps have to be properly initialized before they could 22458 be used, so make sure they are initialized before use. 22459 22460 2014-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 22461 22462 tests: fix unix domain socket decoding availability test. 22463 Since inet_diag and unix_diag interfaces are implemented by different 22464 kernel modules, they have to be tested separately. 22465 22466 * tests/netlink_unix_diag.c: New file. 22467 * tests/unix-yy.test: Use it. 22468 * tests/Makefile.am (check_PROGRAMS): Add it. 22469 * tests/.gitignore: Likewise. 22470 22471 2014-12-25 Masatake YAMATO <yamato (a] redhat.com> 22472 22473 tests: add a test for decoding unix domain socket addresses. 22474 * tests/unix-yy-accept.awk: New file. 22475 * tests/unix-yy-connect.awk: New file. 22476 * tests/unix-yy.test: New test. 22477 * tests/Makefile.am (TESTS): Add it. 22478 (EXTRA_DIST): Add unix-yy-accept.awk and unix-yy-connect.awk. 22479 22480 2014-12-25 Masatake YAMATO <yamato (a] redhat.com> 22481 22482 Support unix domain sockets in -yy option. 22483 This change extends -yy option to handle unix domain sockets: 22484 their peer addresses will be printed, similar to inet sockets. 22485 22486 For a listening socket, its socket inode and socket path are printed. 22487 For an accepted socket, its socket inode, the peer inode, and the 22488 socket path are printed. 22489 For a client socket, its socket inode and the peer inode are printed. 22490 22491 An example of a server side communication using netcat: 22492 22493 $ ./strace -yy -e network nc -l -U /tmp/example.sock 22494 socket(PF_LOCAL, SOCK_STREAM, 0) = 3 22495 setsockopt(3<UNIX:[14728348]>, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 22496 bind(3<UNIX:[14728348]>, {sa_family=AF_LOCAL, sun_path="/tmp/example.sock"}, 19) = 0 22497 listen(3<UNIX:[14728348,"/tmp/example.sock"]>, 10) = 0 22498 accept(3<UNIX:[14728348,"/tmp/example.sock"]>, {sa_family=AF_LOCAL, NULL}, [2]) = 4<UNIX:[14727246->14727245,"/tmp/example.sock"]> 22499 recvfrom(4<UNIX:[14727246->14727245,"/tmp/example.sock"]>, "INPUT\n", 8192, 0, NULL, NULL) = 6 22500 INPUT 22501 22502 An example of a client side communication using netcat: 22503 22504 $ ./strace -yy -e network nc -U /tmp/example.sock 22505 socket(PF_LOCAL, SOCK_STREAM, 0) = 3 22506 connect(3<UNIX:[14727245]>, {sa_family=AF_LOCAL, sun_path="/tmp/example.sock"}, 19) = 0 22507 getsockopt(3<UNIX:[14727245]>, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 22508 INPUT 22509 ... 22510 sendto(3<UNIX:[14727245->14727246]>, "INPUT\n", 6, 0, NULL, 0) = 6 22511 22512 * linux/unix_diag.h: New file. 22513 * socketutils.c (send_query): Rename to inet_send_query. 22514 (parse_response): Rename to inet_parse_response. 22515 (unix_print, unix_send_query, unix_parse_response): New functions. 22516 (receive_responses): Add a new argument named parser: a function for 22517 handling protocol specific data parts of diag messages. 22518 (print_sockaddr_by_inode): Call unix_print. 22519 Replace NETLINK_INET_DIAG with NETLINK_SOCK_DIAG, they are equal 22520 but NETLINK_SOCK_DIAG looks more generic. 22521 22522 2014-12-16 Masatake YAMATO <yamato (a] redhat.com> 22523 22524 Use the protocol name of a socket as a hint for peer address resolution. 22525 To resolve the peer address of socket, all combinations of families 22526 (AF_INET, AF_INET6) and protocols(IPPROTO_TCP, IPPROTO_UDP) were tried. 22527 This change utilizes the protocol name obtained via getxattr to specify 22528 the right combination. 22529 22530 * socketutils.c (inet_print): New helper function. 22531 (print_sockaddr_by_inode): Use it. Utilize the protocol name 22532 associated with the given inode for resolving the peer socket 22533 address. If the protocol name is NULL, resolve the address 22534 by trying combinations of families and protocols as before. 22535 * defs.h (print_sockaddr_by_inode): Update prototype. 22536 * util.c (printfd): Pass the protocol name associated with 22537 the given path to print_sockaddr_by_inode as the 2nd argument. 22538 22539 2014-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 22540 22541 Fix decoding of getgroups, getgroups32, setgroups, and setgroups32 syscalls 22542 Convert parsers of these syscalls to the same scheme as were applied to 22543 parsers of other uid/gid related syscalls. 22544 That is, define two sets of parsers on architectures that support 22545 (either directly or via multiarch) 16-bit and 32-bit gid getgroups 22546 and setgroups syscalls simultaneously, and reuse essentially the same 22547 code by parametrizing uid_t and names of parser functions. 22548 22549 * groups.c: Remove. 22550 (sys_getgroups, sys_setgroups): Move ... 22551 * uid.c: ... here and parametrize their names. 22552 * Makefile.am (strace_SOURCES): Remove groups.c. 22553 * linux/syscall.h (sys_getgroups32, sys_setgroups32): Remove. 22554 [NEED_UID16_PARSERS] (sys_getgroups16, sys_setgroups16): New prototypes. 22555 * linux/arm/syscallent.h: Rename sys_[gs]etgroups to sys_[gs]etgroups16, 22556 rename sys_[gs]etgroups32 to sys_[gs]etgroups. 22557 * linux/bfin/syscallent.h: Likewise. 22558 * linux/i386/syscallent.h: Likewise. 22559 * linux/m68k/syscallent.h: Likewise. 22560 * linux/microblaze/syscallent.h: Likewise. 22561 * linux/s390/syscallent.h: Likewise. 22562 * linux/sh/syscallent.h: Likewise. 22563 * linux/sh64/syscallent.h: Likewise. 22564 * linux/sparc/syscallent.h: Likewise. 22565 * tests/uid.c: Test for getgroups. 22566 * tests/uid16.c: Likewise. 22567 * tests/uid32.c: Test for getgroups32. 22568 * tests/uid.awk: Test for getgroups/getgroups32 decoding. 22569 * tests/uid.test: Trace getgroups/getgroups32 syscalls. 22570 22571 2014-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 22572 22573 Fix decoding of 16-bit *chown and [gs]et*[gu]id syscalls. 22574 Define two sets of parsers on architectures that support (either 22575 directly or via multiarch) 16-bit and 32-bit uid/gid syscalls 22576 simultaneously. Since the code in these two sets is essentially 22577 the same and the key difference between them is the size of uid_t, 22578 implement it by parametrizing uid_t and names of parser functions. 22579 22580 * defs.h (NEED_UID16_PARSERS): New macro. 22581 * linux/syscall.h [NEED_UID16_PARSERS] (sys_chown16, sys_fchown16, 22582 sys_getresuid16, sys_getuid16, sys_setfsuid16, sys_setresuid16, 22583 sys_setreuid16, sys_setuid16): New prototypes. 22584 * linux/dummy.h (sys_geteuid16): Alias to sys_getuid16. 22585 (sys_getegid16, sys_getgid16, sys_getresgid16, sys_setfsgid16, 22586 sys_setgid16, sys_setregid16, sys_setresgid16): Alias to corresponding 22587 sys_*uid16 functions. 22588 * uid.c: Stop including <asm/posix_types.h>. 22589 Parametrize uid_t and names of all exported functions. 22590 (get_print_uid): New function. 22591 (sys_getresuid): Use it. 22592 (printuid): Check for (uid_t) -1. 22593 * uid16.c: New file. 22594 * Makefile.am (strace_SOURCES): Add it. 22595 * linux/arm/syscallent.h: Use sys_chown16, sys_fchown16, sys_getegid16, 22596 sys_geteuid16, sys_getgid16, sys_getresgid16, sys_getresuid16, 22597 sys_getuid16, sys_setfsgid16, sys_setfsuid16, sys_setgid16, 22598 sys_setregid16, sys_setresgid16, sys_setresuid16, sys_setreuid16, 22599 and sys_setuid16 parsers for *chown and [gs]et*[gu]id syscall entries. 22600 * linux/bfin/syscallent.h: Likewise. 22601 * linux/i386/syscallent.h: Likewise. 22602 * linux/m68k/syscallent.h: Likewise. 22603 * linux/microblaze/syscallent.h: Likewise. 22604 * linux/s390/syscallent.h: Likewise. 22605 * linux/sparc/syscallent.h: Likewise. 22606 * linux/sh/syscallent.h: Likewise. 22607 * linux/sh64/syscallent.h: Likewise. 22608 * tests/uid16.c: New file. 22609 * tests/uid16.test: New test. 22610 * tests/Makefile.am (CHECK_PROGRAMS): Add uid16. 22611 (TESTS): Add uid16.test. 22612 * tests/.gitignore: Add uid16. 22613 22614 2014-12-16 Dmitry V. Levin <ldv (a] altlinux.org> 22615 22616 sh, sh64: fix uid/gid syscall entries. 22617 * linux/sh/syscallent.h: Replace printargs with real syscall 22618 parsers in *chown32 and [gs]et*[gu]id32 syscall entries. 22619 * linux/sh64/syscallent.h: Likewise. 22620 22621 s390: fix uid/gid syscall entries. 22622 * linux/s390/syscallent.h: Add "32" suffix to names of *chown32 22623 and [gs]et*[gu]id32 syscalls #198..216. 22624 22625 sparc: fix uid/gid syscall entries. 22626 * linux/sparc/syscallent.h: Add "32" suffix to names 22627 of [gs]etres[gu]id32 syscalls #108..112. 22628 Fix entry for syscall #112 from setresgid32 to setregid32. 22629 22630 2014-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 22631 22632 chown.c: split into separate files. 22633 This will make further uid/gid fixes simpler. 22634 22635 * fchownat.c: New file. 22636 * chown.c (sys_fchownat: Move to fchownat.c. 22637 (sys_chown, sys_fchown): Move to uid.c. 22638 * Makefile.am (strace_SOURCES): Remove chown.c, add fchownat.c. 22639 22640 2014-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 22641 22642 util.c: move printuid to uid.c. 22643 This will make further uid/gid fixes simpler. 22644 22645 * util.c (printuid): Move 22646 * uid.c: ... here. 22647 22648 2014-12-15 Dmitry V. Levin <ldv (a] altlinux.org> 22649 22650 tests/uid.awk: rewrite in a more maintainable style. 22651 Since the test is virtually a FSM, rewrite it as a FSM. 22652 22653 2014-12-14 Dmitry V. Levin <ldv (a] altlinux.org> 22654 22655 printuid: fix uid_t decoding on 64-bit architectures. 22656 It was not a good idea to treat uid_t as a long int type because 22657 the latter is twice larger than uid_t on 64-bit architectures. 22658 22659 * defs.h (printuid): Change uid argument type from "unsigned long" 22660 to "unsigned int". 22661 * util.c (printuid): Likewise. When uid equals to -1, print "-1". 22662 * tests/uid.awk: New file. 22663 * tests/uid.c: New file. 22664 * tests/uid32.c: Likewise. 22665 * tests/uid.test: New test. 22666 * tests/uid32.test: Likewise. 22667 * tests/Makefile.am (CHECK_PROGRAMS): Add uid and uid32. 22668 (TESTS): Add uid.test and uid32.test. 22669 (EXTRA_DIST): Add uid.awk. 22670 * tests/.gitignore: Add uid and uid32. 22671 22672 2014-12-13 Dmitry V. Levin <ldv (a] altlinux.org> 22673 22674 Update PTRACE_* constants. 22675 * xlat/ptrace_cmds.in: Add PTRACE_PEEKSIGINFO, PTRACE_GETSIGMASK, 22676 and PTRACE_SETSIGMASK. 22677 22678 Update SWAP_FLAG_* constants. 22679 * swapon.c: Ensure that SWAP_FLAG_DISCARD_ONCE and 22680 SWAP_FLAG_DISCARD_PAGES are defined. 22681 * xlat/swap_flags.in: Add SWAP_FLAG_DISCARD_ONCE and 22682 SWAP_FLAG_DISCARD_PAGES. 22683 22684 2014-12-11 Dmitry V. Levin <ldv (a] altlinux.org> 22685 22686 Update SCHED_* constants. 22687 * xlat/schedulers.in: Add SCHED_BATCH, SCHED_ISO, SCHED_IDLE, and 22688 SCHED_DEADLINE. 22689 22690 Update prctl PR_* constants. 22691 * xlat/prctl_options.in: Add PR_SET_THP_DISABLE, PR_GET_THP_DISABLE, 22692 PR_MPX_ENABLE_MANAGEMENT, and PR_MPX_DISABLE_MANAGEMENT. 22693 22694 2014-12-11 Dmitry V. Levin <ldv (a] altlinux.org> 22695 22696 Always compile sys_prctl parser. 22697 Since sys_prctl is referenced by syscallent files unconditionally, 22698 conditional compilation of sys_prctl depending on prctl availability is 22699 pointless. 22700 22701 * prctl.c (unalignctl_string, sys_prctl): Compile unconditionally. 22702 22703 2014-12-11 Dmitry V. Levin <ldv (a] altlinux.org> 22704 22705 process.c: split struct_user_offsets into architecture-specific include files 22706 * Makefile.am (EXTRA_DIST): Add linux/alpha/userent.h, 22707 linux/arm/userent.h, linux/avr32/userent.h, linux/bfin/userent.h, 22708 linux/crisv10/userent.h, linux/crisv32/userent.h, 22709 linux/i386/userent.h, linux/i386/userent0.h, linux/ia64/userent.h, 22710 linux/m68k/userent.h, linux/microblaze/userent.h, 22711 linux/mips/userent.h, linux/or1k/userent.h, linux/powerpc/userent.h, 22712 linux/s390/userent.h, linux/s390/userent0.h, linux/s390/userent1.h, 22713 linux/s390x/userent.h, linux/sh/userent.h, linux/sh/userent0.h, 22714 linux/sh64/userent.h, linux/sparc/userent.h, linux/sparc64/userent.h, 22715 linux/tile/userent.h, linux/userent.h, linux/userent0.h, 22716 linux/x32/userent.h, linux/x86_64/userent.h, and 22717 linux/xtensa/userent.h. 22718 * process.c (struct_user_offsets): Split into architecture-specific 22719 include files, inculde userent.h. 22720 22721 process.c: include less headers. 22722 * process.c: Do not include <fcntl.h> and <sys/stat.h>. 22723 Reorder inclusion of xlat header files. 22724 22725 Unexport struct_user_offsets. 22726 * defs.h (struct_user_offsets): Remove. 22727 * process.c (struct_user_offsets): Make static. 22728 22729 2014-12-11 Dmitry V. Levin <ldv (a] altlinux.org> 22730 22731 process.c: introduce XLAT_UOFF macro. 22732 Introduce XLAT_UOFF macro and use it to automatically transform 22733 struct_user_offsets array into a more readable and compact form. 22734 22735 for n in $(sed -n 's/^[[:space:]]*{[[:space:]]*uoff(\([a-z_0-9]\+\)),.*/\1/p' process.c |sort -u); do 22736 sed -i 's/^\([[:space:]]*\){[[:space:]]*uoff('"$n"'),[[:space:]]*"offsetof(struct user,[[:space:]]*'"$n"')"[[:space:]]*},$/\1XLAT_UOFF('"$n"'),/' process.c 22737 done 22738 22739 * process.c (XLAT_UOFF): New macro. 22740 (struct_user_offsets): Use it. 22741 22742 2014-12-11 Dmitry V. Levin <ldv (a] altlinux.org> 22743 22744 process.c: move sethostname and gethostname parsers to a separate file. 22745 * hostname.c: New file. 22746 * Makefile.am (strace_SOURCES): Add it. 22747 * process.c (sys_sethostname, sys_gethostname): Move to hostname.c. 22748 22749 process.c: move exit parser to a separate file. 22750 * exit.c: New file. 22751 * Makefile.am (strace_SOURCES): Add it. 22752 * process.c (sys_exit): Move to exit.c. 22753 22754 process.c: move clone, setns, unshare, and fork parsers to a separate file 22755 * clone.c: New file. 22756 * Makefile.am (strace_SOURCES): Add it. 22757 * process.c: Move sys_clone, sys_setns, sys_unshare, sys_fork, and 22758 related code to clone.c. 22759 22760 process.c: move get*uid and set*uid parsers to a separate file. 22761 * uid.c: New file. 22762 * Makefile.am (strace_SOURCES): Add it. 22763 * process.c (sys_getuid, sys_setfsuid, sys_setuid, sys_getresuid, 22764 sys_setreuid, sys_setresuid): Move to uid.c. 22765 22766 process.c: move getgroups* and setgroups* parsers to a separate file. 22767 * groups.c: New file. 22768 * Makefile.am (strace_SOURCES): Add it. 22769 * process.c: Move sys_setgroups, sys_getgroups, sys_setgroups32, 22770 sys_getgroups32, and related code to groups.c. 22771 22772 process.c: move execve and execv parsers to a separate file. 22773 * execve.c: New file. 22774 * Makefile.am (strace_SOURCES): Add it. 22775 * process.c: Move sys_execve, sys_execv, and related code to execve.c. 22776 22777 process.c: move waitpid, wait4, osf_wait4, and waitid parsers to a separate file 22778 * wait.c: New file. 22779 * Makefile.am (strace_SOURCES): Add it. 22780 * process.c: Move sys_waitpid, sys_wait4, sys_osf_wait4, sys_waitid and 22781 related code to wait.c. 22782 22783 process.c: move uname parser to a separate file. 22784 * uname.c: New file. 22785 * Makefile.am (strace_SOURCES): Add it. 22786 * process.c (sys_uname): Move to uname.c. 22787 22788 process.c: move futex parser to a separate file. 22789 * futex.c: New file. 22790 * Makefile.am (strace_SOURCES): Add it. 22791 * process.c: Move sys_futex and related code to futex.c. 22792 22793 process.c: move get_robust_list parser to a separate file. 22794 * get_robust_list.c: New file. 22795 * Makefile.am (strace_SOURCES): Add it. 22796 * process.c (sys_get_robust_list): Move to get_robust_list.c. 22797 22798 process.c: move sched_* parsers to a separate file. 22799 * sched.c: New file. 22800 * Makefile.am (strace_SOURCES): Add it. 22801 * process.c: Move sys_sched_getscheduler, sys_sched_setscheduler, 22802 sys_sched_getparam, sys_sched_setparam, sys_sched_get_priority_min, 22803 sys_sched_rr_get_interval, and related code to sched.c. 22804 22805 process.c: move sched_setaffinity and sched_getaffinity parsers to a separate file 22806 * affinity.c: New file. 22807 * Makefile.am (strace_SOURCES): Add it. 22808 * process.c (sys_sched_setaffinity, sys_sched_getaffinity): Move 22809 to affinity.c. 22810 22811 process.c: move prctl and arch_prctl parsers to a separate file. 22812 * prctl.c: New file. 22813 * Makefile.am (strace_SOURCES): Add it. 22814 * process.c: Move sys_prctl, sys_arch_prctl, and related code to prctl.c. 22815 22816 process.c: move getcpu parser to a separate file. 22817 * getcpu.c: New file. 22818 * Makefile.am (strace_SOURCES): Add it. 22819 * process.c (sys_getcpu): Move to getcpu.c. 22820 22821 process.c: move process_vm_readv and process_vm_writev parsers to a separate file 22822 * process_vm.c: New file. 22823 * Makefile.am (strace_SOURCES): Add it. 22824 * process.c (sys_process_vm_readv, sys_process_vm_writev): Move 22825 to process_vm.c. 22826 22827 Implement decoding of fallocate FALLOC_FL_* flags. 22828 * xlat/falloc_flags.in: New file. 22829 * configure.ac (AC_CHECK_HEADERS): Add linux/falloc.h. 22830 * fallocate.c [HAVE_LINUX_FALLOC_H]: Include <linux/falloc.h>. 22831 Include xlat/falloc_flags.h. 22832 (sys_fallocate): Decode flags. 22833 22834 Fix decoding of renameat2 RENAME_* flags. 22835 * renameat.c: Include <linux/fs.h> where RENAME_NOREPLACE, 22836 RENAME_EXCHANGE, and RENAME_WHITEOUT are usually defined. 22837 22838 file.c: move open, openat, and creat parsers to a separate file. 22839 * open.c: New file. 22840 * Makefile.am (strace_SOURCES): Add it. 22841 * file.c: Move sys_open, sys_openat, sys_creat, and related code 22842 to open.c. 22843 22844 file.c: move access and faccessat parsers to a separate file. 22845 * access.c: New file. 22846 * Makefile.am (strace_SOURCES): Add it. 22847 * file.c: Move sys_access, sys_faccessat and related code to access.c. 22848 22849 file.c: move umask parser to a separate file. 22850 * umask.c: New file. 22851 * Makefile.am (strace_SOURCES): Add it. 22852 * file.c (sys_umask): Move to umask.c. 22853 22854 file.c: move lseek and llseek parsers to a separate file. 22855 * lseek.c: New file. 22856 * Makefile.am (strace_SOURCES): Add it. 22857 * file.c: Move sys_lseek, sys_llseek, and related code to lseek.c. 22858 22859 file.c: move readahead parser to a separate file. 22860 * readahead.c: New file. 22861 * Makefile.am (strace_SOURCES): Add it. 22862 * file.c (sys_readahead): Move to readahead.c. 22863 22864 file.c: move truncate, truncate64, ftruncate, and ftruncate64 parsers to a separate file 22865 * truncate.c: New file. 22866 * Makefile.am (strace_SOURCES): Add it. 22867 * file.c (sys_truncate, sys_truncate64, sys_ftruncate, sys_ftruncate64): 22868 Move to truncate.c. 22869 22870 file.c: move chdir parser to a separate file. 22871 * chdir.c: New file. 22872 * Makefile.am (strace_SOURCES): Add it. 22873 * file.c (sys_chdir): Move to chdir.c. 22874 22875 file.c: move link, linkat, unlinkat, and symlinkat parsers to a separate file 22876 * link.c: New file. 22877 * Makefile.am (strace_SOURCES): Add it. 22878 * file.c: Move sys_link, sys_linkat, sys_unlinkat, sys_symlinkat, and 22879 related code to link.c. 22880 22881 file.c: move readlink and readlinkat parsers to a separate file. 22882 * readlink.c: New file. 22883 * Makefile.am (strace_SOURCES): Add it. 22884 * file.c (decode_readlink, sys_readlink, sys_readlinkat): Move 22885 to readlink.c. 22886 22887 file.c: move renameat and renameat2 parsers to a separate file. 22888 * renameat.c: New file. 22889 * Makefile.am (strace_SOURCES): Add it. 22890 * file.c: Move sys_renameat, sys_renameat2, and related code 22891 to renameat.c. 22892 22893 file.c: move chown, fchown, and fchownat parsers to a separate file. 22894 * chown.c: New file. 22895 * Makefile.am (strace_SOURCES): Add it. 22896 * file.c (sys_chown, sys_fchownat, sys_fchown): Move to chown.c. 22897 22898 Export at_flags. 22899 * defs.h (at_flags): New prototype. 22900 22901 file.c: move chmod, fchmod, and fchmodat parsers to a separate file. 22902 * chmod.c: New file. 22903 * Makefile.am (strace_SOURCES): Add it. 22904 * file.c (sys_chmod, sys_fchmodat, sys_fchmod): Move to chmod.c. 22905 22906 file.c: move utimes, futimesat, utimensat, and osf_utimes parsers to a separate file 22907 * utimes.c: New file. 22908 * Makefile.am (strace_SOURCES): Add it. 22909 * file.c (decode_utimes, sys_utimes, sys_futimesat, sys_utimensat, 22910 sys_osf_utimes): Move to utimes.c. 22911 22912 file.c: move utime parser to a separate file. 22913 * utime.c: New file. 22914 * Makefile.am (strace_SOURCES): Add it. 22915 * file.c (sys_utime): Move to utime.c. 22916 22917 Export sprinttime. 22918 * defs.h (sprinttime): New prototype. 22919 * file.c (sprinttime): Make global and move to util.c. 22920 22921 file.c: move mknod, mknodat, and xmknod parsers to a separate file. 22922 * mknod.c: New file. 22923 * Makefile.am (strace_SOURCES): Add it. 22924 * file.c: Move sys_mknod, sys_mknodat, sys_xmknod, and related code 22925 to mknod.c. 22926 22927 file.c: export sprintmode and move it to a separate file. 22928 * printmode.c: New file. 22929 * Makefile.am (strace_SOURCES): Add it. 22930 * defs.h (sprintmode): New prototype. 22931 * file.c (sprintmode): Make global and move to printmode.c. 22932 22933 file.c: move getcwd parser to a separate file. 22934 * getcwd.c: New file. 22935 * Makefile.am (strace_SOURCES): Add it. 22936 * file.c (sys_getcwd): Move to getcwd.c. 22937 22938 file.c: move *xattr parsers to a separate file. 22939 * xattr.c: New file. 22940 * Makefile.am (strace_SOURCES): Add it. 22941 * file.c: Move sys_setxattr, sys_fsetxattr, sys_getxattr, sys_fgetxattr, 22942 sys_listxattr, sys_flistxattr, sys_removexattr, sys_fremovexattr, 22943 and related code to xattr.c. 22944 22945 file.c: move fadvise64 and fadvise64_64 parsers to a separate file. 22946 * fadvise.c: New file. 22947 * Makefile.am (strace_SOURCES): Add it. 22948 * file.c: Move sys_fadvise64, sys_fadvise64_64, and related code 22949 to fadvise.c. 22950 22951 file.c: move sync_file_range and sync_file_range2 parsers to a separate file 22952 * sync_file_range.c: New file. 22953 * Makefile.am (strace_SOURCES): Add it. 22954 * file.c: Move sys_sync_file_range, sys_sync_file_range2, and related 22955 code to sync_file_range.c. 22956 22957 file.c: move fallocate parser to a separate file. 22958 * fallocate.c: New file. 22959 * Makefile.am (strace_SOURCES): Add it. 22960 * file.c (sys_fallocate): Move to fallocate.c. 22961 22962 file.c: move swapon parser to a separate file. 22963 * swapon.c: New file. 22964 * Makefile.am (strace_SOURCES): Add it. 22965 * file.c: Move sys_swapon and related code to swapon.c. 22966 22967 2014-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 22968 22969 Implement full decoding of 64-bit capabilities. 22970 Unlike v1 capabilities which are 32-bit, v2 and v3 are 64-bit, but 22971 before this change only lower 32 capability bits were decoded for 22972 v2 and v3. 22973 22974 * xlat/capabilities1.in: New file. 22975 * capability.c: Define v2/v3 CAP_* constants. 22976 Include xlat/capabilities1.h. 22977 (get_cap_header): New function. 22978 (print_cap_header): Update to use get_cap_header result. 22979 (print_cap_data): Decoder higher capability bits for v2 and v3. 22980 (sys_capget, sys_capset): Use get_cap_header, update print_cap_header 22981 and print_cap_data calls. 22982 * tests/caps.c: New file. 22983 * tests/caps.awk: New file. 22984 * tests/caps.test: New test. 22985 * tests/Makefile.am (CHECK_PROGRAMS): Add caps. 22986 (TESTS): Add caps.test. 22987 (EXTRA_DIST): Add caps.awk. 22988 22989 2014-12-06 Dmitry V. Levin <ldv (a] altlinux.org> 22990 22991 Make parsers of capget and capset syscalls self-contained. 22992 Various versions of <linux/capability.h> used to require different 22993 workarounds to avoid conflicts with types defined by libc headers. 22994 Define all required types and constants locally to fix this issue. 22995 22996 * configure.ac (AC_CHECK_HEADERS): Remove linux/capability.h. 22997 * capability.c: Do not include <linux/capability.h>, remove workarounds 22998 for problematic versions of <linux/capability.h> file. 22999 Define CAP_* and _LINUX_CAPABILITY_VERSION_* constants as enums. 23000 (struct __user_cap_header_struct, struct __user_cap_data_struct): Define. 23001 * xlat/cap_version.in: Add #unconditional. 23002 * xlat/capabilities.in: Likewise. 23003 23004 2014-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 23005 23006 Remove system.c. 23007 All disjoint parts of system.c have been moved to separate files. 23008 23009 * system.c: Remove. 23010 * Makefile.am (strace_SOURCES): Remove it. 23011 23012 2014-12-04 Dmitry V. Levin <ldv (a] altlinux.org> 23013 23014 Move mount parser to a separate file. 23015 * mount.c: New file. 23016 * Makefile.am (strace_SOURCES): Add it. 23017 * system.c: Move sys_mount and related code to mount.c. 23018 23019 Move umount2 parser to a separate file. 23020 * umount.c: New file. 23021 * Makefile.am (strace_SOURCES): Add it. 23022 * system.c: Move sys_umount2 and related code to umount.c. 23023 23024 Move personality parser to a separate file. 23025 * personality.c: New file. 23026 * Makefile.am (strace_SOURCES): Add it. 23027 * system.c: Move sys_personality and related code to personality.c. 23028 23029 Move syslog parser to a separate file. 23030 * syslog.c: New file. 23031 * Makefile.am (strace_SOURCES): Add it. 23032 * system.c: Move sys_syslog and related code to syslog.c. 23033 23034 Move cacheflush parser to a separate file. 23035 * cacheflush.c: New file. 23036 * Makefile.am (strace_SOURCES): Add it. 23037 * system.c: Move inclusion of <asm/cachectl.h> to cacheflush.c. 23038 [M68K, BFIN, SH]: Move to cacheflush.c. 23039 23040 bfin: move sram_alloc parser to a separate file. 23041 * sram_alloc.c: New file. 23042 * Makefile.am (strace_SOURCES): Add it. 23043 * system.c [BFIN]: Move sys_sram_alloc and related code to sram_alloc.c. 23044 23045 Move capget and capset parsers to a separate file. 23046 * capability.c: New file. 23047 * Makefile.am (strace_SOURCES): Add it. 23048 * system.c: Move inclusion of headers and macro definitions related 23049 to capget and capset decoding to capability.c. 23050 (print_cap_header, print_cap_data, sys_capget, sys_capset): Move 23051 to capability.c. 23052 23053 2014-12-03 Dmitry V. Levin <ldv (a] altlinux.org> 23054 23055 Move sysctl parser to a separate file. 23056 * sysctl.c: New file. 23057 * Makefile.am (strace_SOURCES): Add it. 23058 * system.c: Move sys_sysctl and related code to sysctl.c. 23059 23060 mips: move sysmips parser to a separate file. 23061 * sysmips.c: New file. 23062 * Makefile.am (strace_SOURCES): Add it. 23063 * system.c: Fix typo in the check for <linux/utsname.h>. 23064 Move inclusions of <linux/utsname.h> and <asm/sysmips.h> to sysmips.c. 23065 [MIPS]: Likewise. 23066 23067 or1k: move or1k_atomic parser to a separate file. 23068 * or1k_atomic.c: New file. 23069 * Makefile.am (strace_SOURCES): Add it. 23070 * system.c [OR1K]: Move to or1k_atomic.c. 23071 23072 2014-12-02 Dmitry V. Levin <ldv (a] altlinux.org> 23073 23074 Alias sys_setdomainname to sys_sethostname. 23075 Since parsers for setdomainname and sethostname syscalls are identical, 23076 replace sys_setdomainname with an alias to sys_sethostname. 23077 23078 * linux/dummy.h (sys_setdomainname): Alias to sys_sethostname. 23079 * linux/syscall.h (sys_setdomainname): Remove. 23080 * process.c (sys_setdomainname): Remove. 23081 23082 2014-12-02 Dmitry V. Levin <ldv (a] altlinux.org> 23083 23084 Alias sys_getpeername to sys_getsockname. 23085 Since parsers for getpeername and getsockname syscalls are identical, 23086 replace sys_getpeername with an alias to sys_getsockname. 23087 23088 * linux/dummy.h (sys_getpeername): Alias to sys_getsockname. 23089 * linux/syscall.h (sys_getpeername): Remove. 23090 * net.c (sys_getpeername): Remove. 23091 23092 2014-12-02 Dmitry V. Levin <ldv (a] altlinux.org> 23093 23094 Alias sys_stime to sys_time. 23095 Since parsers for stime and time syscalls are identical, 23096 replace sys_stime with an alias to sys_time. 23097 23098 * linux/dummy.h (sys_stime): Alias to sys_time. 23099 * linux/syscall.h (sys_stime): Remove. 23100 * time.c (sys_stime): Remove. 23101 23102 2014-12-02 Dmitry V. Levin <ldv (a] altlinux.org> 23103 23104 Remove unused sys_mctl. 23105 Starting with commit v4.6-240-g5afdf12, nobody compiles this 23106 non-Linux code. 23107 23108 * mem.c [MC_SYNC]: Remove. 23109 * xlat/mctl_funcs.in: Remove. 23110 * xlat/mctl_lockas.in: Remove. 23111 23112 2014-12-01 Dmitry V. Levin <ldv (a] altlinux.org> 23113 23114 Alias sys_mkdir and sys_mkdirat to sys_chmod and sys_fchmodat. 23115 Special parsers for mkdir and mkdirat are redundant because 23116 sys_chmod and sys_fchmodat implement the same decoding. 23117 23118 * file.c (decode_mkdir, sys_mkdir, sys_mkdirat): Remove. 23119 * linux/dummy.h (sys_mkdir): Alias to sys_chmod. 23120 (sys_mkdirat): Alias to sys_fchmodat. 23121 * linux/syscall.h (sys_mkdir, sys_mkdirat): Remove. 23122 * pathtrace.c (pathtrace_match): Do not check for sys_mkdirat. 23123 23124 2014-12-01 Dmitry V. Levin <ldv (a] altlinux.org> 23125 23126 Remove unused <sys/acl.h> based code. 23127 Starting with commit v4.6-240-g5afdf12, nobody compiles this 23128 non-Linux code. 23129 23130 * configure.ac (AC_CHECK_HEADERS): Remove sys/acl.h. 23131 * file.c [HAVE_SYS_ACL_H]: Remove. 23132 * xlat/aclcmds.in: Remove. 23133 23134 2014-12-01 Dmitry V. Levin <ldv (a] altlinux.org> 23135 23136 Remove unused <sys/asynch.h> based code. 23137 Starting with commit v4.6-240-g5afdf12, nobody compiles this 23138 non-Linux code. 23139 23140 * configure.ac (AC_CHECK_HEADERS): Remove sys/asynch.h. 23141 * file.c [HAVE_SYS_ASYNCH_H]: Remove. 23142 23143 2014-11-27 Masatake YAMATO <yamato (a] redhat.com> 23144 23145 Print protocol name of socket descriptors with -yy option. 23146 For those socket descriptors that have no associated ip:port pairs 23147 (or when this information is not available), -yy option prints 23148 the same <socket:[INODE]> information as -y option, e.g. 23149 23150 $ strace -e sendto -yy ip l > /dev/null 23151 sendto(3<socket:[23456789]>, ... 23152 23153 This change makes -yy output more informative: instead of just 23154 printing "socket", the name of protocol behind the socket descriptor 23155 will be printed, e.g. 23156 23157 sendto(3<NETLINK:[23456789]>, ... 23158 23159 * configure.ac (AC_CHECK_HEADERS): Add sys/xattr.h. 23160 * tests/net-yy-accept.awk: Update to support protocol names. 23161 * tests/net-yy-connect.awk: Likewise. 23162 * util.c [HAVE_SYS_XATTR_H]: Include <sys/xattr.h>. 23163 (getfdproto): New function. 23164 (printfd): Use it. 23165 23166 2014-11-21 Dmitry V. Levin <ldv (a] altlinux.org> 23167 23168 Replace MAXPATHLEN with PATH_MAX. 23169 MAXPATHLEN is defined to PATH_MAX, so replace the former with the latter. 23170 23171 * strace.c (startup_child): Replace MAXPATHLEN with PATH_MAX. 23172 * util.c (printpathn, printpath): Likewise. 23173 23174 2014-11-21 Mike Frysinger <vapier (a] gentoo.org> 23175 23176 Decode FIFREEZE/FITHAW/FITRIM ioctls. 23177 The freeze/thaw ones are simple, but the trim is an interesting struct. 23178 23179 * block.c (block_ioctl): Handle FIFREEZE/FITHAW/FITRIM. 23180 * ioctl.c (ioctl_decode): Pass 'X' ioctls to block_ioctl. 23181 23182 2014-11-21 Dmitry V. Levin <ldv (a] altlinux.org> 23183 23184 Include <sys/uio.h> unconditionally. 23185 Since <sys/uio.h> is standardized by POSIX and is present in all 23186 available versions of glibc, it's safe to assume that any usable 23187 libc implementation provides this header file. 23188 23189 * configure.ac (AC_CHECK_HEADERS): Remove sys/uio.h. 23190 * io.c: Include <sys/uio.h> unconditionally. 23191 (tprint_iov_upto, tprint_iov, sys_readv, sys_writev, 23192 print_llu_from_low_high_val, sys_preadv, sys_pwritev): Define 23193 unconditionally. 23194 * net.c: Include <sys/uio.h> unconditionally. 23195 * util.c: Include <sys/uio.h> unconditionally. 23196 (dumpiov): Define unconditionally. 23197 23198 2014-11-21 Dmitry V. Levin <ldv (a] altlinux.org> 23199 23200 Consistently use C99 designated initializers in the new netlink code. 23201 * socketutils.c (send_query, receive_responses): Use designated 23202 initializers for sockaddr_nl, nlmsghdr, and inet_diag_req_v2 structures. 23203 * tests/netlink_inet_diag.c (send_query, check_responses): Likewise. 23204 23205 2014-11-20 Mike Frysinger <vapier (a] gentoo.org> 23206 23207 Decode open's O_TMPFILE. 23208 * xlat/open_mode_flags.in: Add O_TMPFILE definition. 23209 23210 2014-11-11 Helge Deller <deller (a] gmx.de> 23211 23212 hppa: update error codes and signal numbers. 23213 There are two important changes in here: 23214 23215 1. EWOULDBLOCK has been up to kernel 3.14 errorcode #246. Since hppa 23216 folks had problems with EWOULDBLOCK != EAGAIN, this was changed in 23217 kernel 3.14. 23218 23219 2. Starting with kernel 3.18, hppa folks changed some signal numbers in 23220 such a way that we end up with SIGRTMIN == 32, which brings hppa in sync 23221 with other linux ports. 23222 23223 Both were incompatible changes which basically broke hppa ABI, but since 23224 they have been merged into the kernel, we have to follow. 23225 23226 2014-11-11 Thomas De Schampheleire <thomas.de.schampheleire (a] gmail.com> 23227 23228 stack trace support: fix check on symbol name presence. 23229 The output format of the stack trace is supposed to be different 23230 depending on whether symbol names are available in the build. 23231 23232 However, the check only verified the validity of the pointer, not of the 23233 string pointed to (which could be empty). 23234 23235 This commit fixes the check so that the original output: 23236 23237 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x5e000 23238 > /lib/libc-2.10.1.so(_IO_file_doallocate+0x8c) [0x68a38] 23239 > /lib/libc-2.10.1.so(_IO_doallocbuf+0x6c) [0x78574] 23240 > /lib/libc-2.10.1.so(_IO_file_overflow+0x184) [0x7763c] 23241 > /lib/libc-2.10.1.so(_IO_file_xsputn+0x88) [0x76aac] 23242 > /lib/libc-2.10.1.so(_IO_puts+0xc8) [0x6b64c] 23243 > /bin/busybox(+0x0) [0x62c60] 23244 > /bin/busybox(+0x0) [0x4940] 23245 > /bin/busybox(+0x0) [0x499c] 23246 > /bin/busybox(+0x0) [0x4e08] 23247 > /lib/libc-2.10.1.so(__libc_init_first+0x30c) [0x1f84c] 23248 > /lib/libc-2.10.1.so(__libc_start_main+0xd8) [0x1f9f8] 23249 23250 becomes: 23251 23252 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x5e000 23253 > /lib/libc-2.10.1.so(_IO_file_doallocate+0x8c) [0x68a38] 23254 > /lib/libc-2.10.1.so(_IO_doallocbuf+0x6c) [0x78574] 23255 > /lib/libc-2.10.1.so(_IO_file_overflow+0x184) [0x7763c] 23256 > /lib/libc-2.10.1.so(_IO_file_xsputn+0x88) [0x76aac] 23257 > /lib/libc-2.10.1.so(_IO_puts+0xc8) [0x6b64c] 23258 > /bin/busybox() [0x62c60] 23259 > /bin/busybox() [0x4940] 23260 > /bin/busybox() [0x499c] 23261 > /bin/busybox() [0x4e08] 23262 > /lib/libc-2.10.1.so(__libc_init_first+0x30c) [0x1f84c] 23263 > /lib/libc-2.10.1.so(__libc_start_main+0xd8) [0x1f9f8] 23264 23265 Acked-by: Masatake YAMATO <yamato (a] redhat.com> 23266 23267 2014-11-11 Masatake YAMATO <yamato (a] redhat.com> 23268 23269 tests: add a test for decoding and dumping of recvmmsg/sendmmsg. 23270 * configure (AC_CHECK_FUNCS): Add sendmmsg. 23271 * tests/mmsg.c: New file. 23272 * tests/mmsg.expected: New file. 23273 * tests/mmsg.test: New test. 23274 * tests/.gitignore: Add mmsg. 23275 * tests/Makefile.am (CHECK_PROGRAMS): Add mmsg. 23276 (TESTS): Add mmsg.test. 23277 (EXTRA_DIST): Add mmsg.expected. 23278 23279 2014-11-11 Masatake YAMATO <yamato (a] redhat.com> 23280 23281 Add functions for dumping iovecs in mmsghdr used in sendmmsg and recvmmsg 23282 This patch is similar to what I did in commit 23283 02f9f6b386741a52f58e1b31ad4e7fff60781ef8. 23284 That commit was for sendmsg and recvmsg system calls. 23285 This one is for sendmmsg and recvmmsg system calls. 23286 23287 * defs.h (dumpiov_in_mmsghdr): New declaration. 23288 * net.c (extractmmsghdr): New function derived from printmmsghdr. 23289 (printmmsghdr): Use it. 23290 (dumpiov_in_mmsghdr): New function. 23291 * syscall.c (dumpio) [HAVE_SENDMSG]: Call dumpiov_in_mmsghdr 23292 for recvmmsg and sendmmsg syscalls. 23293 23294 2014-11-11 Masatake YAMATO <yamato (a] redhat.com> 23295 23296 Use the definition of struct mmsghdr if it is defined in build environment 23297 mmsghrd structure type is defined locally in printmmsghdr function. 23298 23299 However, more functions will refer the definition in modifications for 23300 supporting "-e write=set" and "-e read=set" option for sendmmsg and 23301 recvmmsg system calls. 23302 23303 After this change, the system definition of struct mmsghdr will be used 23304 if configure reports it is available, falling back to the old local 23305 definition. 23306 23307 * configure.ac (AC_CHECK_TYPES): Add struct mmsghdr. 23308 * net.c [!HAVE_STRUCT_MMSGHDR] (struct mmsghdr): Define. 23309 (printmmsghdr): Use previously defined struct mmsghdr. 23310 23311 2014-11-11 Masatake YAMATO <yamato (a] redhat.com> 23312 23313 Introduce a separate function to copy from msghdr32 to msghdr. 23314 This patch is an initial step for supporting "-e write=set" and 23315 "-e read=set" option for sendmmsg and recvmmsg system calls. 23316 23317 Coverting a data of msghdr32 to msghdr is needed both for 23318 {send,recv}msg and {send,recv}mmsg to decode parameters. 23319 To share the copying code in both decoders, a separate 23320 function named copy_from_msghdr32 is introduced. 23321 23322 * net.c [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4] 23323 (copy_from_msghdr32): New function. 23324 (extractmsghdr) [SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4]: Use it. 23325 23326 2014-11-11 Dmitry V. Levin <ldv (a] altlinux.org> 23327 23328 ioctlsort: rewrite build rules using noinst_PROGRAMS. 23329 * linux/ioctlsort.c: Rename to ioctlsort.c 23330 * Makefile.am (EXTRA_DIST): Rename linux/ioctlsort.c to ioctlsort.c. 23331 [MAINTAINER_MODE] (noinst_PROGRAMS): Add ioctlsort. 23332 (ioctlsort_SOURCES): Add ioctlsort.c. 23333 (nodist_ioctlsort_SOURCES): Add ioctls.h and ioctldefs.h. 23334 (CLEANFILES): Add $(nodist_ioctlsort_SOURCES). 23335 (ioctlsort.$(OBJEXT)): Likewise. 23336 (ioctlsort): Remove. 23337 23338 2014-11-11 Lubomir Rintel <lkundrak (a] v3.sk> 23339 23340 Makefile.am: look for ioctl definitions in the kernel build tree by default 23341 While most of ioctl-related kernel headers are now exported by kernel's 23342 headers_install, some are still modules_install only. The kernel's 23343 headers installed into /usr/include/ are usually headers_install'ed and 23344 therefore don't contain some internal headers we need. The solution is 23345 to look for modules_install'ed headers for the running kernel, and fall 23346 back to old behavior if they aren't found. 23347 23348 2014-11-04 Lubomir Rintel <lkundrak (a] v3.sk> 23349 23350 Dump details for Bluetooth socket operations. 23351 * configure.ac (AC_CHECK_HEADERS): Add bluetooth/bluetooth.h. 23352 * xlat/bt_protocols.in: New file. 23353 * net.c [AF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Include bluetooth 23354 headers. 23355 [PF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Include "xlat/bt_protocols.h". 23356 (printsock) [AF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Dump details 23357 for AF_BLUETOOTH sockets. 23358 (sys_socket) [PF_BLUETOOTH && HAVE_BLUETOOTH_BLUETOOTH_H]: Decode 23359 protocol for PF_BLUETOOTH sockets. 23360 23361 2014-11-04 Philippe De Muyter <phdm (a] macqel.be> 23362 23363 Implement Video4Linux video-input ioctls decoder. 23364 Introduce v4l2.c, a decoder for the arguments of the video-input subset 23365 of the v4l2 ioctl's. This is a combination of 23366 - previous work by Peter Zotov <whitequark (a] whitequark.org>, found at 23367 https://gist.githubusercontent.com/whitequark/1263207/raw/strace-4.6-v4l2-ioctls.patch 23368 - previous work by William Manley <will (a] williammanley.net>, found at 23369 http://marc.info/?l=strace&m=139395588520675 23370 - forward port, additions and fixes by Philippe De Muyter <phdm (a] macqel.be> 23371 23372 As v4l2 is a moving target, I have made v4l2.c compilable with ancient 23373 linux kernels by testing the availability of some macros. It has been 23374 succesfully compiled on linux 3.10, 3.1, 2.6.31 and 2.6.22, and 23375 succesfully used on linux 3.10 with a camera device. 23376 23377 * configure.ac: Check for availabilty of V4L2_* enum constants. 23378 * Makefile.am (strace_SOURCES): Add v4l2.c. 23379 * defs.h (v4l2_ioctl): New prototype. 23380 * ioctl.c (ioctl_decode): Use v4l2_ioctl. 23381 * v4l2.c: New file. 23382 * xlat/v4l2_*.in: New files. 23383 23384 Cc: Peter Zotov <whitequark (a] whitequark.org> 23385 Cc: William Manley <will (a] williammanley.net> 23386 23387 2014-11-04 Dmitry V. Levin <ldv (a] altlinux.org> 23388 23389 Update ioctl entries. 23390 * linux/ioctlent.h.in: Regenerate from v3.17 headers. 23391 23392 Remove ioctl header file names from the executable. 23393 * defs.h (struct ioctlent): Remove "doth" field. 23394 * Makefile.am ($(ioctlent_h)): Remove 1st field. 23395 23396 2014-11-04 Dmitry V. Levin <ldv (a] altlinux.org> 23397 23398 Filter out redundant ioctl entries early. 23399 For two ioctl entries with the same code, if one's name is a prefix 23400 to another's name, keep the entry with a shorter name. Filter out 23401 redundant ioctl entries at ioctlsort stage so that distributed 23402 ioctlent.h.in files will be already filtered. 23403 23404 * linux/ioctlsort.c (is_not_prefix): New function. 23405 (main): Use it. 23406 * linux/ioctlent-filter.awk: Remove. 23407 * Makefile.am (EXTRA_DIST): Remove linux/ioctlent-filter.awk. 23408 ($(ioctlent_h)): Don't use linux/ioctlent-filter.awk. 23409 23410 2014-11-03 Dmitry V. Levin <ldv (a] altlinux.org> 23411 23412 ioctlent.sh: update the list of directories exported by headers_install. 23413 * linux/ioctlent.sh: Add drm, mtd, rdma, video, and xen directories. 23414 23415 2014-11-01 Masatake YAMATO <yamato (a] redhat.com> 23416 23417 Add a function for dumping iovec in msghdr used in sendmsg and recvmsg. 23418 Here is an example session: 23419 23420 $ ./strace -e write=all ip link change dev enp0s25 mtu 1501 > /dev/null 23421 sendmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"(... 23422 * 40 bytes in buffer 0 23423 | 00000 28 00 00 00 10 00 05 00 d0 d9 aa 53 00 00 00 00 (..........S.... | 23424 | 00010 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 ................ | 23425 | 00020 08 00 04 00 dd 05 00 00 ........ | 23426 ... 23427 23428 $ ./strace -e read=all ip link show > /dev/null 23429 recvmsg(3, {msg_name(12)={sa_family=AF_NETLINK, pid=0, groups=00000000}, msg_iov(1)=[{"... 23430 * 8192 bytes in buffer 0 23431 | 00000 34 00 00 00 02 00 00 00 00 00 00 00 ff 23 00 00 4............#.. | 23432 | 00010 ff ff ff ff 20 00 00 00 10 00 05 00 00 00 00 00 .... ........... | 23433 ... 23434 23435 * defs.h (dumpiov_in_msghdr): New prototype. 23436 * net.c (extractmsghdr): New function derived from printmsghdr. 23437 (printmsghdr): Use extractmsghdr. 23438 (dumpiov_in_msghdr): New function. 23439 * syscall.c (dumpio) [HAVE_SENDMSG]: Call dumpiov_in_msghdr for recvmsg 23440 and sendmsg syscalls. 23441 23442 2014-10-31 Maarten ter Huurne <maarten (a] treewalker.org> 23443 23444 Include <linux/ptrace.h> regardless of <sys/reg.h> existence. 23445 This fixes compilation with musl libc. 23446 This approach was already used in process.c, so I assume it is safe. 23447 23448 * signal.c: Move [HAVE_LINUX_PTRACE_H] code out of [HAVE_SYS_REG_H] check. 23449 * syscall.c: Likewise. 23450 * util.c: Likewise. 23451 23452 2014-10-31 Dmitry V. Levin <ldv (a] altlinux.org> 23453 23454 sock: decode SIOCSIFNAME on entering syscall. 23455 * sock.c (sock_ioctl): Handle SIOCSIFNAME on entering syscall. 23456 23457 2014-10-31 Mike Frysinger <vapier (a] gentoo.org> 23458 23459 sock: fix decoding of SIOCSIFNAME. 23460 The decoding of SIOCSIFNAME is incorrect. It does not use 23461 the ifr_index field to look things up, but ifr_newname. 23462 23463 * sock.c (sock_ioctl): Split out SIOCSIFNAME from SIOCGIFNAME and 23464 display ifr_newname. 23465 23466 2014-10-31 Mike Frysinger <vapier (a] gentoo.org> 23467 23468 sock: fix decoding of struct ifreq.ifr_name. 23469 The ifr name fields of the ifreq structure might not be NUL terminated. 23470 If the user makes an ioctl call where they aren't, then strace ends up 23471 reading random content from its own stack. Limit the printf lengths. 23472 23473 * sock.c (sock_ioctl): Add explicit length limits to ifr_name printfs. 23474 23475 2014-10-03 Elliott Hughes <enh (a] google.com> 23476 23477 Don't risk truncating open flags by using mode_t. 23478 On Android, 32-bit arm and x86 use __kernel_mode_t (an unsigned short) 23479 as their mode_t. The open(2) flags are actually an int, so high ones 23480 like O_CLOEXEC get truncated if you coerce them to mode_t. 23481 23482 * defs.h (tprint_open_modes, sprint_open_modes): Change argument type 23483 from mode_t to int. 23484 * file.c (tprint_open_modes, sprint_open_modes): Likewise. 23485 23486 2014-09-29 Dmitry V. Levin <ldv (a] altlinux.org> 23487 23488 Enhance sysinfo decoding. 23489 * configure.ac (AC_CHECK_MEMBERS): Check for struct sysinfo.totalhigh, 23490 struct sysinfo.freehigh, and struct sysinfo.mem_unit. 23491 * sysinfo.c (sys_sysinfo): Treat failed umove() call as syserror(). 23492 Print totalhigh, freehigh, and mem_unit members when struct sysinfo 23493 supports them. 23494 23495 Move sysinfo parser to a separate file. 23496 * sysinfo.c: New file. 23497 * Makefile.am (strace_SOURCES): Add it. 23498 * resource.c (sys_sysinfo): Move to sysinfo.c. 23499 23500 2014-09-29 Dmitry V. Levin <ldv (a] altlinux.org> 23501 23502 Fix build with musl libc. 23503 * resource.c: Include <sys/sysinfo.h> for struct sysinfo definition. 23504 23505 Reported-by: Steven Honeyman <stevenhoneyman (a] gmail.com> 23506 23507 2014-09-23 Dmitry V. Levin <ldv (a] altlinux.org> 23508 23509 tests: cleanup checks for basic programs. 23510 * tests/init.sh: Check for cat and rm. 23511 * tests/getdents.test: Check for awk. 23512 * tests/ptrace_setoptions.test: Check for grep. 23513 * tests/net-fd.test: Do not check for rm. 23514 * tests/net.test: Likewise. 23515 * tests/scm_rights-fd.test: Likewise. 23516 * tests/stat.test: Likewise. 23517 * tests/uio.test: Likewise. 23518 23519 tests: add a test for -yy option. 23520 * tests/net-yy.test: New test. 23521 * tests/inet-accept-connect-send-recv.c: New file. 23522 * tests/netlink_inet_diag.c: Likewise. 23523 * tests/net-yy-accept.awk: Likewise. 23524 * tests/net-yy-connect.awk: Likewise. 23525 * tests/.gitignore: Add inet-accept-connect-send-recv, 23526 netlink_inet_diag, *.tmp-*, and *.tmp.*. 23527 * tests/Makefile.am (check_PROGRAMS): Add inet-accept-connect-send-recv 23528 and netlink_inet_diag. 23529 (TESTS): Add net-yy.test. 23530 (EXTRA_DIST): Add net-yy-accept.awk and net-yy-connect.awk. 23531 23532 2014-09-22 Dmitry V. Levin <ldv (a] altlinux.org> 23533 23534 Move statfs related parsers to a separate file. 23535 * statfs.c: New file. 23536 * Makefile.am (strace_SOURCES): Add it. 23537 * file.c (sprintfstype, printstatfs, sys_statfs, sys_fstatfs): Move 23538 to statfs.c. 23539 [HAVE_STATFS64] (printstatfs64, printcompat_statfs64, sys_statfs64, 23540 sys_fstatfs64): Likewise. 23541 [ALPHA] (osf_statfs, osf_fstatfs): Likewise. 23542 23543 fsmagic: sort array by value and use bsearch for faster lookup. 23544 * defs.h (xlat_search): New prototype. 23545 * util.c (xlat_bsearch_compare, xlat_search): New functions. 23546 * file.c (sprintfstype): Use xlat_search for fsmagic lookup. 23547 * xlat/fsmagic.in: Sort by value and mark as not NULL-terminated. 23548 * tests/statfs.c: New file. 23549 * tests/statfs.test: New test. 23550 * tests/Makefile.am (check_PROGRAMS): Add statfs. 23551 (statfs_CFLAGS): Define. 23552 (TESTS): Add statfs.test. 23553 * tests/.gitignore: Add statfs. 23554 23555 2014-09-21 Dmitry V. Levin <ldv (a] altlinux.org> 23556 23557 fsmagic: update from <linux/magic.h> 23558 * xlat/fsmagic.in: Add new constants from <linux/magic.h>. 23559 Reported by Elliott Hughes. 23560 23561 2014-09-17 Dmitry V. Levin <ldv (a] altlinux.org> 23562 23563 Add -yy option: print ip and port associated with socket descriptors. 23564 When two ore more -y options are given, print local and remote ip:port 23565 pairs associated with socket descriptors. This implementation uses 23566 NETLINK_INET_DIAG for sockaddr lookup; it's based on the patch 23567 prepared by Zubin Mithra as a part of his GSoC 2014 strace project. 23568 23569 * Makefile.am (strace_SOURCES): Add socketutils.c 23570 (EXTRA_DIST): Add linux/inet_diag.h and linux/sock_diag.h. 23571 * defs.h (print_sockaddr_by_inode): New prototype. 23572 * linux/inet_diag.h: New file. 23573 * linux/sock_diag.h: Likewise. 23574 * socketutils.c: Likewise. 23575 * strace.1: Document -yy option. 23576 * strace.c (usage): Likewise. 23577 * util.c (printfd): Use print_sockaddr_by_inode. 23578 23579 2014-09-17 Vicente Olivert Riera <vincent (a] gentoo.org> 23580 23581 sigaction: wrap sa_restorer in #ifdef SA_RESTORER consistently. 23582 Wrap sa_restorer member definitions in #ifdef SA_RESTORER to be 23583 consistent with their use. 23584 If an architecture does not provide sa_restorer members but still 23585 defines SA_RESTORER macro, the latter has to be explicitly undefined. 23586 23587 This change fixes compilation failures like this one: 23588 signal.c: In function 'decode_old_sigaction': 23589 signal.c:631:21: error: 'struct old_sigaction' has no member named 'sa_restorer' 23590 signal.c: In function 'decode_new_sigaction': 23591 signal.c:1224:21: error: 'struct new_sigaction' has no member named 'sa_restorer' 23592 23593 * signal.c (struct old_sigaction, struct old_sigaction32, 23594 struct new_sigaction, struct new_sigaction32): 23595 Wrap sa_restorer member in #ifdef SA_RESTORER. 23596 (decode_old_sigaction, decode_new_sigaction): 23597 Wrap use of sa32.sa_restorer in #ifdef SA_RESTORER. 23598 23599 2014-09-17 Dmitry V. Levin <ldv (a] altlinux.org> 23600 23601 Fix compilation warnings reported by gcc -Wsign-compare. 23602 * configure.ac (gl_WARN_ADD): Add -Wsign-compare. 23603 * defs.h (struct tcb): Change 'currpers' type to unsigned. 23604 (struct xlat): Change 'val' type to unsigned 23605 (signame): Add 'const' qualifier to its argument. 23606 (xlookup, printxval): Add 'const' qualifier to the 2nd argument and 23607 change its type to unsigned. 23608 (printpathn): Change the 3rd argument type to unsigned. 23609 (ioctl_lookup): Change 1st argument type to unsigned. 23610 * count.c (call_summary_pers, call_summary): Change 'i' type to unsigned. 23611 * file.c (print_xattr_list): Fix comparisons between signed and unsigned 23612 long values. 23613 * ioctl.c (compare): Fix cast. 23614 (ioctl_lookup): Change 1st argument type to to unsigned. 23615 (ioctl_next_match): Change 'code' type to unsigned. 23616 * mem.c (sys_move_pages): Change 'i' type to unsigned. 23617 * mtd.c (mtd_ioctl): Change 'i' and 'j' types to unsigned. 23618 Print 'i' using %u format string. 23619 * process.c (sys_prctl): Change 'i' type to unsigned. 23620 (printargv): Change 'n' type to unsigned. 23621 (sys_ptrace): Change 'addr' type to unsigned. 23622 * scsi.c (print_sg_io_buffer): Add 'const' qualifier to 'len' argument 23623 and change its type to unsigned. Change 'i' and 'allocated' types 23624 to unsigned. 23625 * signal.c (signame): Add 'const' qualifier to its argument. 23626 Fix comparisons between signed and unsigned values. 23627 (sprintsigmask_n, printsiginfo): Fix comparisons between signed and 23628 unsigned values. 23629 * sock.c (sock_ioctl): Change 'i' and 'nifra' types to unsigned. 23630 * strace.c (expand_tcbtab, alloctcb): Change 'i' type to unsigned. 23631 (detach): Change 'sig' type to unsigned. 23632 (startup_attach): Change 'tcbi' type to unsigned. 23633 (startup_child): Change 'm', 'n', and 'len' types to unsigned. 23634 (init): Use new variable to iterate 'tcbtab'. 23635 (pid2tcb): Change 'i' type to unsigned. 23636 (cleanup): Change 'i' and 'sig' types to unsigned. 23637 * syscall.c (update_personality): Change 'personality' argument type 23638 to unsigned. 23639 (struct qual_options): Change 'bitflag' type to unsigned. 23640 (reallocate_qual): Add 'const' qualifier to its argument and change its 23641 type to unsigned. 23642 (qualify_one): Change 'n' and 'bitflag' arguments types to unsigned. 23643 Add 'const' qualifier to 'n', 'not', and 'pers' arguments. 23644 Change 'p' type to signed int. 23645 (qual_syscall): Change 'bitflag' argument type to unsigned. 23646 Add 'const' qualifier to 'bitflag' and 'not' arguments. 23647 Change 'p' type to signed int. 23648 (qual_signal): Change 'bitflag' argument type to unsigned. 23649 Add 'const' qualifier to 'bitflag' and 'not' arguments. 23650 Change 'i' type to unsigned. 23651 (qual_desc): Change 'bitflag' argument type to unsigned. 23652 Add 'const' qualifier to 'bitflag' and 'not' arguments. 23653 (qualify): Change 'i' type to unsigned. 23654 (get_scno): Change 'currpers' type to unsigned. 23655 Fix a comparison between signed and unsigned values. 23656 * system.c (sys_sysctl): Change 'cnt' and 'max_cnt' types to unsigned. 23657 Fix comparisons between signed and unsigned values. 23658 * util.c (xlookup, printxval): Add 'const' qualifier to 'val' argument 23659 and change its type to unsigned. 23660 (printuid): Fix a comparison between signed and unsigned values. 23661 (printpathn): Change 'n' argument type to unsigned. 23662 (printstr): Change 'size' type to unsigned. 23663 Fix a comparison between signed and unsigned values. 23664 (setbpt): Change 'i' type to unsigned. 23665 * net.c (printsock): Silence a compilation warning. 23666 * reboot.c (sys_reboot): Likewise. 23667 23668 2014-09-11 Dmitry V. Levin <ldv (a] altlinux.org> 23669 23670 Move dirent related parsers to a separate file. 23671 * dirent.c: New file. 23672 * Makefile.am (strace_SOURCES): Add it. 23673 * file.c (print_old_dirent, sys_readdir, sys_getdents, sys_getdents64): 23674 Move to dirent.c. 23675 23676 getdents, getdents64: fix potential out-of-bounds read issues. 23677 * file.c (sys_getdents): Check for invalid d_reclen. 23678 Avoid reading from uninitialized memory. 23679 (sys_getdents64): Likewise. 23680 * tests/getdents.awk: New file. 23681 * tests/getdents.test: New test. 23682 * tests/Makefile.am (TESTS): Add it. 23683 (EXTRA_DIST): Add getdents.awk. 23684 23685 2014-09-10 Dmitry V. Levin <ldv (a] altlinux.org> 23686 23687 tprint_sock_type: remove unused parameter. 23688 * net.c (tprint_sock_type): Remove unused parameter 'tcp'. 23689 (sys_socket, sys_socketpair): Update callers. 23690 23691 printsock: fix decoding of unrecognized AF_PACKET packet types. 23692 * net.c (printsock): Fix fallback string for AF_PACKET packet types. 23693 23694 2014-09-09 Dmitry V. Levin <ldv (a] altlinux.org> 23695 23696 decode_select: fix potential use of an uninitialized variable. 23697 A pointer to fd_set was used uninitialized when nfds == 0. 23698 23699 * desc.c (decode_select): Initialize fds. 23700 23701 Reported-by: Zubin Mithra <zubin.mithra (a] gmail.com> 23702 23703 2014-09-08 Dmitry V. Levin <ldv (a] altlinux.org> 23704 23705 Use external libaio.h. 23706 Stop using an outdated partial copy of libaio.h, switch back to external 23707 libaio.h from libaio. 23708 This partially reverts commit 2df03c494eb3c36c4178eba35c374831031d1a58. 23709 23710 * aio.c: Drop a partial copy of libaio.h, include <libaio.h> instead. 23711 (print_common_flags): Check for HAVE_STRUCT_IOCB_U_C_FLAGS. 23712 (sys_io_submit): Check for HAVE_DECL_IO_CMD_PWRITE and 23713 HAVE_DECL_IO_CMD_PWRITEV. 23714 * configure.ac: Check for libaio.h and declaration it provides. 23715 23716 2014-08-19 Dmitry V. Levin <ldv (a] altlinux.org> 23717 23718 maint: post-release administrivia. 23719 * NEWS: Add header line for next release. 23720 23721 2014-08-15 Dmitry V. Levin <ldv (a] altlinux.org> 23722 23723 Prepare for 4.9 release. 23724 * NEWS: Update for 4.9 release. 23725 * debian/changelog: 4.9-1. 23726 * strace.spec: 4.9-1. 23727 23728 Sync strace.spec and debian/ with packages. 23729 * debian/changelog: Sync with 4.8-1.1. 23730 * debian/control: Likewise. 23731 * debian/rules: Likewise. 23732 * strace.spec: Sync with 4.8-5. 23733 23734 NEWS: Update for 4.9 release. 23735 23736 2014-08-15 Mike Frysinger <vapier (a] gentoo.org> 23737 23738 Update syscall tables to the point where they include renameat2. 23739 * linux/dummy.h: Add printargs aliases for sys_sched_getattr and 23740 sys_sched_setattr. 23741 * linux/aarch64/syscallent1.h: Add kcmp/finit_module/sched_setattr/ 23742 sched_getattr/renameat2. 23743 * linux/alpha/syscallent.h: Add kcmp/finit_module. 23744 * linux/arm/syscallent.h: Add sched_setattr/sched_getattr/renameat2. 23745 * linux/hppa/syscallent.h: Add sched_setattr/sched_getattr/utimes/renameat2. 23746 * linux/i386/syscallent.h: Add sched_setattr/sched_getattr/renameat2. 23747 * linux/ia64/syscallent.h: Likewise. 23748 * linux/m68k/syscallent.h: Likewise. 23749 * linux/microblaze/syscallent.h: Likewise. 23750 * linux/mips/syscallent-n32.h: Likewise. 23751 * linux/mips/syscallent-n64.h: Add getdents64/sched_setattr/sched_getattr/ 23752 renameat2. 23753 * linux/mips/syscallent-o32.h: Add sched_setattr/sched_getattr/renameat2. 23754 * linux/powerpc/syscallent.h: Fix finit_module/kcmp order. Add sched_setattr/ 23755 sched_getattr/renameat2. 23756 * linux/s390/syscallent.h: Add sched_setattr/sched_getattr/renameat2. 23757 * linux/s390x/syscallent.h: Likewise. 23758 * linux/sparc/syscallent.h: Likewise. 23759 * linux/x32/syscallent.h: Likewise. 23760 * linux/x86_64/syscallent.h: Likewise. 23761 * linux/xtensa/syscallent.h: Add sched_setattr/sched_getattr. 23762 23763 renameat2: add decoding support. 23764 * file.c (decode_renameat, sys_renameat2): New functions. 23765 (sys_renameat): Use decode_renameat. 23766 * pathtrace.c (pathtrace_match): Handle sys_renameat2. 23767 * linux/syscall.h (sys_renameat2): New prototype. 23768 * xlat/rename_flags.in: New file. 23769 23770 2014-08-14 Mike Frysinger <vapier (a] gentoo.org> 23771 23772 CREDITS: fix generation in out of tree builds. 23773 The {...} code changes the working dir with `cd`, but the commands outside 23774 of that block expects to be in the original dir. Change to a subshell so 23775 the path outside of this block remains unchanged. 23776 23777 * Makefile.am ($(srcdir)/CREDITS): Change {...} to (...). 23778 23779 2014-08-14 Mike Frysinger <vapier (a] gentoo.org> 23780 23781 ia64: add missing syscalls. 23782 When the preadv/pwritev syscalls were added, the ones before it in the 23783 ia64 list were missed, so all the syscalls there and later were not in 23784 the right location (causing things to be decoded incorrectly). 23785 23786 Add the missing syscalls before preadv which also re-aligns all the 23787 syscalls after that point. This fixes the uio.test. 23788 23789 * linux/ia64/syscallent.h: Add syscalls 1310 through 1318. 23790 23791 2014-08-14 Mike Frysinger <vapier (a] gentoo.org> 23792 23793 ia64: fix sigaction decoding. 23794 Looks like ia64 doesn't have sa_restorer either, yet still defines 23795 SA_RESTORER. Deploy the same trick that HPPA is using to make the 23796 test pass. 23797 23798 * signal.c (SA_RESTORER): Undefine when IA64 is defined. 23799 (struct new_sigaction) [IA64]: Disable sa_restorer. 23800 23801 2014-08-12 Dmitry V. Levin <ldv (a] altlinux.org> 23802 23803 tests: skip detach-stopped.test when PTRACE_SEIZE doesn't work. 23804 detach-stopped.test is known to fail when PTRACE_SEIZE is not available, 23805 so skip the test in that case. 23806 23807 * tests/detach-stopped.test: Check for "strace -d" output and skip the 23808 test when it says that PTRACE_SEIZE doesn't work. 23809 23810 2014-08-11 Erik Johansson <erik (a] ejohansson.se> 23811 23812 sh: fix syscall numbering for recv and sendto. 23813 * linux/sh/syscallent.h: Swap recv and sendto syscall entries. 23814 23815 2014-08-11 Mike Frysinger <vapier (a] gentoo.org> 23816 23817 tests: fix uio building w/out preadv/pwritev. 23818 The preadv/pwritev symbols weren't added to glibc until the 2.10 release, 23819 so trying to build the uio test leads to link failures. Add configure 23820 tests and update uio.test to handle this. 23821 23822 * configure.ac (AC_CHECK_FUNCS): Add preadv/pwritev. 23823 * tests/uio.c: Include config.h. 23824 (main): Check for HAVE_PREADV and HAVE_PWRITEV. 23825 * tests/uio.test: Check exit status of uio helper. 23826 23827 2014-08-11 Mike Frysinger <vapier (a] gentoo.org> 23828 23829 tests: ignore *.tmp files. 23830 The tests like to generate random .tmp files, so ignore them. 23831 23832 * tests/.gitignore: Add *.tmp. 23833 23834 2014-08-11 Mike Frysinger <vapier (a] gentoo.org> 23835 23836 tests: fix shell errors in detach tests. 23837 The current detach test code does: 23838 set -e 23839 ... 23840 cleanup() { 23841 set +e 23842 kill ... 23843 wait ... 23844 } 23845 ... 23846 cleanup 23847 exit 0 23848 23849 The problem is that while `set -e` is disabled for the body of the 23850 cleanup function, it isn't necessarily disabled in the caller scope. 23851 So if the return value of the cleanup function (`wait` in this case) 23852 is non-zero, the script ends up failing overall. 23853 23854 Add an explicit return 0 to the cleanup function so that we don't kill 23855 the overall test pipeline. 23856 23857 * tests/detach-running.test (cleanup): Add return 0. 23858 * tests/detach-sleeping.test (cleanup): Likewise. 23859 * tests/detach-stopped.test (cleanup): Likewise. 23860 23861 2014-08-11 Mike Frysinger <vapier (a] gentoo.org> 23862 23863 set_ptracer_any: add a little documentation. 23864 This way I don't have to keep reading up on these options and wondering 23865 why the code isn't aborting when the call fails. 23866 23867 * tests/set_ptracer_any.c (main): Note prctl failures are ok. 23868 23869 2014-08-10 Mike Frysinger <vapier (a] gentoo.org> 23870 23871 signal: fix thinko in sa_restorer. 23872 Previous commit here re-added the bugs trying to be fixed due to a 23873 logic thinko. The patches were tested in isolation and hand merged 23874 later. Oops. 23875 23876 * signal.c (struct new_sigaction): Change || to &&. 23877 23878 2014-08-09 Mike Frysinger <vapier (a] gentoo.org> 23879 23880 sigaction test: support arches w/out SA_RESTORER and swapped args. 23881 Running Linux 3.15 (sparc64) and glibc 2.17 (sparc32) triggers a 23882 rt_sigaction call that does not use SA_RESTORER and has an order 23883 where it inserts a restorer and a size. The current tests don't 23884 support that ordering, so add another regex. 23885 23886 * tests/sigaction.awk: Support no SA_RESTORER and swapped args. 23887 23888 2014-08-09 Mike Frysinger <vapier (a] gentoo.org> 23889 23890 alpha/sparc: fix arg count for rt_sigaction. 23891 Both these arches have a rt_sigaction syscall that takes 5 args, not 4. 23892 23893 * linux/alpha/syscallent.h (rt_sigaction): Change nargs to 5. 23894 * linux/sparc/syscallent.h (rt_sigaction): Change nargs to 5. 23895 23896 2014-08-09 Mike Frysinger <vapier (a] gentoo.org> 23897 23898 hppa: fix sigaction decoding. 23899 Since the rt_sigaction syscall on hppa doesn't have a sa_restorer, 23900 do not include it in the kernel struct. 23901 23902 We also have to undefine SA_RESTORER so that code doesn't try to 23903 use it. The headers will export this, but the syscall doesn't 23904 actually respect it. 23905 23906 * signal.c (SA_RESTORER): Undefine when HPPA is defined. 23907 (struct new_sigaction): Disable sa_restorer on hppa. 23908 23909 2014-08-09 Mike Frysinger <vapier (a] gentoo.org> 23910 23911 alpha: fix sigaction decoding. 23912 Since the rt_sigaction syscall on alpha doesn't have a sa_restorer, 23913 do not include it in the kernel struct. 23914 23915 * signal.c (struct new_sigaction): Disable sa_restorer on alpha. 23916 23917 2014-08-08 Dmitry V. Levin <ldv (a] altlinux.org> 23918 23919 Prepare for -yy option support. 23920 * defs.h (show_fd_path): Change type to unsigned int. 23921 * strace.c (show_fd_path): Likewise. 23922 (init): Handle repeated -y option. 23923 23924 2014-08-07 Dmitry V. Levin <ldv (a] altlinux.org> 23925 23926 Fix preadv/pwritev offset decoding on ILP32 architectures. 23927 This fixes regression introduced by the previous commit. 23928 23929 * io.c (print_llu_from_low_high_val) [SIZEOF_LONG != SIZEOF_LONG_LONG]: 23930 Cast argument to unsigned long before casting it to unsigned long long. 23931 23932 2014-08-07 Dmitry V. Levin <ldv (a] altlinux.org> 23933 23934 Fix preadv/pwritev offset decoding on bigendian architectures. 23935 This partially reverts commit 7845a42b39e59e904d01e75e21f7bc7eb6462560. 23936 23937 * util.c (printllval): Remove align argument. 23938 * defs.h (printllval): Update prototype. 23939 (printllval_aligned, printllval_unaligned): Remove. 23940 * file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64, 23941 sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2, 23942 sys_fallocate): Replace printllval_aligned call with printllval. 23943 * io.c (sys_pread, sys_pwrite): Likewise. 23944 (print_llu_from_low_high_val): New function. 23945 (sys_preadv, sys_pwritev): Use it instead of printllval_unaligned. 23946 23947 2014-08-06 Dmitry V. Levin <ldv (a] altlinux.org> 23948 23949 Decode file descriptors returned by accept and accept4 syscalls. 23950 * net.c (do_accept): Rename to do_sockname. 23951 (sys_accept, sys_accept4): Update callers, return RVAL_FD. 23952 (sys_getsockname, sys_getpeername): Call do_sockname directly. 23953 * tests/net-fd.test: Update. 23954 23955 2014-08-01 Mike Frysinger <vapier (a] gentoo.org> 23956 23957 x32: update io_{setup,submit} syscalls. 23958 Starting in 3.16, these two syscalls have gotten their own entry 23959 point for x32. See linux 7fd44dacdd803c0bbf38bf478d51d280902bb0f1. 23960 23961 * linux/x32/syscallent.h: Change existing io_{setup,submit} to 64bit, 23962 and add new entry points for x32 specifically. 23963 23964 2014-06-18 Max Filippov <jcmvbkbc (a] gmail.com> 23965 23966 xtensa: sort values in struct_user_offsets. 23967 Otherwise ptrace syscall argument decoding is wrong: 23968 ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x4048eb]) = 0 23969 ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x3fa6cd30]) = 0 23970 ptrace(PTRACE_PEEKUSER, 296, syscall_nr, [0x8040676d]) = 0 23971 instead of 23972 ptrace(PTRACE_PEEKUSER, 296, pc, [0x4048eb]) = 0 23973 ptrace(PTRACE_PEEKUSER, 296, a1, [0x3fa6cd30]) = 0 23974 ptrace(PTRACE_PEEKUSER, 296, a0, [0x8040676d]) = 0 23975 23976 * process.c (struct_user_offsets) [XTENSA]: Sort values. 23977 23978 2014-06-18 Dmitry V. Levin <ldv (a] altlinux.org> 23979 23980 Document -k option as experimental. 23981 strace -k does not produce a reliable output on all supported 23982 configurations yet, even basic strace-k.test is known to fail 23983 on some of them. 23984 23985 * strace.c (usage): Document -k option as experimental. 23986 * strace.1: Likewise. 23987 * NEWS: Likewise. 23988 23989 2014-06-18 Dmitry V. Levin <ldv (a] altlinux.org> 23990 23991 tests: robustify -k test. 23992 Split stack-fcall.c into several compilation units so that intermediate 23993 function calls would not be optimized out by compiler. 23994 23995 * tests/stack-fcall.c: Move intermediate functions to ... 23996 * tests/stack-fcall-*.c: ... new files. 23997 * tests/Makefile.am (stack_fcall_SOURCES): Add stack-fcall-*.c. 23998 23999 2014-06-13 Dmitry V. Levin <ldv (a] altlinux.org> 24000 24001 tests: enhance -k test. 24002 Add two more function calls to the stack. Suggested by Masatake YAMATO. 24003 24004 * tests/stack-fcall.c (f1): Rename to f3. 24005 (f1, f2): New functions. 24006 * tests/strace-k.test: Update. 24007 24008 2014-06-13 Dmitry V. Levin <ldv (a] altlinux.org> 24009 24010 unwind: ignore memory mappings that have no PROT_EXEC bit set. 24011 * unwind.c (build_mmap_cache): For each memory mapping being scanned, 24012 save its PROT_EXEC bit and skip the mapping if it is not set. 24013 24014 unwind: cleanup build_mmap_cache. 24015 * unwind.c (build_mmap_cache): Move local variables to the code branch 24016 where they are used. Check return code of sscanf and strdup. Do not 24017 treat unusual memory mappings as fatal errors. Do not skip memory 24018 mappings with path names starting with "[". 24019 24020 unwind: remove unused field from mmap_cache_t. 24021 * unwind.c (mmap_cache_t): Remove "deleted" field. 24022 (build_mmap_cache): Remove initialization of "deleted" field. 24023 24024 2014-06-12 Dmitry V. Levin <ldv (a] altlinux.org> 24025 24026 unwind: refactor stacktrace_walk. 24027 * unwind.c (stacktrace_walk): Move stack frame printing code 24028 to separate function print_stack_frame. 24029 24030 unwind: constify binary_filename and symbol_name functions arguments. 24031 * unwind.c (call_action_fn, print_call_cb, sprint_call_or_error, 24032 queue_put, queue_put_call): Add const qualifier to binary_filename and 24033 symbol_name arguments. 24034 24035 2014-06-11 Luca Clementi <luca.clementi (a] gmail.com> 24036 24037 unwind: disable stack trace with multiple personalities. 24038 * unwind.c (unwind_cache_invalidate, unwind_print_stacktrace, 24039 unwind_capture_stacktrace): Disable stack tracing of non-default 24040 personality processes. 24041 24042 2014-06-05 Dmitry V. Levin <ldv (a] altlinux.org> 24043 24044 unwind: rename function_off_set to function_offset. 24045 * unwind.c (call_action_fn, stacktrace_walk, STACK_ENTRY_SYMBOL_FMT, 24046 print_call_cb, sprint_call_or_error, queue_put, queue_put_call): 24047 Rename function_off_set to function_offset. 24048 24049 unwind: fix a bug in range updating of binary search. 24050 * unwind.c (print_stacktrace): Fix another off-by-one error in binary search. 24051 24052 unwind: use fopen64 instead of fopen. 24053 * unwind.c (fopen_for_input): Define to fopen64 iff 24054 [_LARGEFILE64_SOURCE && HAVE_FOPEN64], otherwise define it to fopen. 24055 (build_mmap_cache): Use fopen_for_input instead of fopen. 24056 24057 2014-06-05 Dmitry V. Levin <ldv (a] altlinux.org> 24058 24059 unwind: fix build on 32-bit architectures. 24060 Fix compilation warnings in unwind.c on 32-bit architectures. 24061 On some architectures getuid is actually getuid32, so change the test 24062 to use getpid instead of getuid. 24063 24064 * unwind.c (STACK_ENTRY_SYMBOL_FMT): Explicitly cast function_off_set 24065 to unsigned long. 24066 (queue_put_error): Change the 3rd argument's type to unsigned long. 24067 * tests/stack-fcall.c (f1): Use getpid instead of getuid. 24068 * tests/strace-k.test: Likewise. 24069 24070 2014-06-05 Dmitry V. Levin <ldv (a] altlinux.org> 24071 24072 tests: robustify -w option test. 24073 * tests/count.test: Allow nanosleep to spend a bit less time than 1 second. 24074 24075 2014-06-04 Dmitry V. Levin <ldv (a] altlinux.org> 24076 24077 Fix delete_module decoding. 24078 * xlat/delete_module_flags.in: New file. 24079 * file.c (sys_delete_module): Move ... 24080 * bjm.c (sys_delete_module): ... to here. 24081 Decode 1st argument using printstr instead of printpath. 24082 * NEWS: Mention it. 24083 24084 2014-06-04 Zubin Mithra <zubin.mithra (a] gmail.com> 24085 24086 Decode paths associated with file descriptors returned by syscalls. 24087 * defs.h (RVAL_FD): New macro. 24088 (RVAL_MASK, RVAL_STR, RVAL_NONE): Update. 24089 * desc.c (sys_dup, sys_delete_module): New functions. 24090 (do_dup2, decode_open, sys_creat): Change return value to RVAL_FD. 24091 * linux/dummy.h (sys_delete_module, sys_dup): Remove. 24092 * linux/syscall.h (sys_delete_module, sys_dup): New prototypes. 24093 * syscall.c (trace_syscall_exiting): Handle RVAL_FD. 24094 24095 2014-06-03 Dmitry V. Levin <ldv (a] altlinux.org> 24096 24097 NEWS: Prepare for 4.9 release. 24098 24099 Warn about flags that have no effect with -c. 24100 * strace.c (init): Issue a warning if -i, -k, -r, -t, -T, or -y is used 24101 along with -c. 24102 This fixes Debian bug #443895. 24103 24104 debian: enable security hardening features. 24105 * debian/rules: Follow the advice in https://wiki.debian.org/Hardening 24106 and enable maximum hardening as for programs that handle untrusted data. 24107 Patch by Markus <waldeck (a] gmx.de>. 24108 24109 2014-06-03 Dmitry V. Levin <ldv (a] altlinux.org> 24110 24111 debian: update control file. 24112 * debian/control (strace64): Fix a typo in package description. 24113 Patch by Pascal De Vuyst <pascal.devuyst (a] gmail.com>. 24114 (strace, strace-udeb): Add x32 to architecture list. 24115 Patch by Guillaume Morin <guillaume (a] morinfr.org>. 24116 (strace, strace-udeb): Add or1k to architecture list. 24117 Patch by Christian Svensson <debian (a] cmd.nu>. 24118 (strace, strace-udeb): Add arm64 to architecture list, 24119 and remove defunct arm. 24120 Patch by Wookey <wookey (a] debian.org>. 24121 24122 This fixes Debian bugs: #697625, #727018, #742235, #749956. 24123 24124 2014-06-03 Dmitry V. Levin <ldv (a] altlinux.org> 24125 24126 manpage: minor corrections. 24127 $ groff -ww -mandoc -z strace.1 24128 strace.1:65: warning: macro `IX' not defined 24129 24130 * strace.1: define IX macro as empty for groff. 24131 Change remaining '-' as minus to '\-'. 24132 Have two word spaces after a full stop as an end of sentence. 24133 Use extra space ('\,' or '\/') between roman and italic characters. 24134 Based on patch by Bjarni Ingi Gislason <bjarniig (a] rhi.hi.is>. 24135 This fixes Debian bug #725987. 24136 24137 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24138 24139 unwind: tests: add a test for -k option. 24140 * tests/stack-fcall.c: New test target. 24141 * tests/strace-k.test: New test driver. 24142 * tests/Makefile.am (check_PROGRAMS): Add stack-fcall. 24143 (TESTS): Add strace-k.test. 24144 * tests/.gitignore: Add stack-fcall. 24145 24146 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24147 24148 unwind: move stacktrace capturing and mmap cache invalidating to trace_syscall_entering 24149 Instead of handling stacktrace capturing and mmap cache invalidating in 24150 sys_* functions, handle them uniformly in trace_syscall_entering using 24151 new flags introduced by previous two commits. 24152 24153 The patch is simpler than its older version(v3). The value of 24154 hide_log_until_execve is just ignored. I found the value is nothing 24155 to do with this patch. unwind_cache_invalidate is mentioned only 24156 once in trace_syscall_exiting. 24157 Both are suggested by Dmitry Levin. 24158 24159 2014-05-30 Dmitry V. Levin <ldv (a] altlinux.org> 24160 24161 unwind: add SE and SI flags to syscall entries for all architectures. 24162 Add SE flag to execve, exit, and exit_group syscall entries. 24163 Add SI flag to brk, execve, mmap, mprotect, mremap, munmap, 24164 remap_file_pages, shmat, and shmdt syscall entries. 24165 24166 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24167 24168 unwind: introduce markers specifying the needs of special care in unwinding 24169 Some system calls require capturing the stack trace before they are 24170 processed in kernel. Typical one is execve. Some system calls require 24171 invalidating mmap cache after they are processed in kernel. 24172 24173 In current implementation these requirements are handled directly by 24174 appropriate syscall handlers. However, it is difficult to keep the 24175 source code maintainable using this approach to cover all system calls 24176 which have such requirements. 24177 24178 A more generic way to implement this is to flag all syscalls that 24179 require special processing, and handle these flags right in 24180 trace_syscall_entering instead of changing syscall handlers. 24181 24182 This patch just defines new flags: STACKTRACE_INVALIDATE_CACHE and 24183 STACKTRACE_CAPTURE_ON_ENTER. 24184 24185 The names of macros are suggested by Dmitry Levin. 24186 24187 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24188 24189 unwind: enable dwarf cache of libunwind. 24190 Here is the benchmark of the dwarf cache. 24191 24192 Target program: 24193 24194 #include <sched.h> 24195 int main(void) 24196 { 24197 unsigned int max = 0x6fff, i; 24198 for (i = 0; i < max; i++) 24199 sched_yield(); 24200 return 0; 24201 } 24202 24203 Command line: 24204 24205 ./strace -o /dev/null -k a.out 24206 24207 With the dwarf cache: 24208 24209 real 0m12.081s 24210 user 0m3.858s 24211 sys 0m8.194s 24212 24213 Without the dwarf cache: 24214 24215 real 0m22.326s 24216 user 0m5.218s 24217 sys 0m16.952s 24218 24219 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24220 24221 unwind: report expected backtracing error. 24222 When a file mmap'ed to the target process is unlink'ed, backtracing the 24223 stack would fail. Current implementation reports it as 24224 "backtracing_error". To avoid confusion, the message is changed to 24225 "expected_backtracing_error". 24226 24227 Here is the reproducer: 24228 24229 $ cat ./p-deleted.c 24230 #include <unistd.h> 24231 24232 int main(int argc, char **argv) { 24233 return unlink(argv[0]) < 0; 24234 } 24235 24236 $ strace -e unlink -k ./p-deleted 24237 unlink("./p-deleted") = 0 24238 > /usr/lib64/libc-2.18.so(unlink+0x7) [0xe7f17] 24239 > /home/yamato/var/strace/t_unwind/p-deleted (deleted)(+0x0) [0x575] 24240 > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65] 24241 > backtracing_error [0x7ffff1365590] 24242 +++ exited with 0 +++ 24243 24244 p-deleted is deleted therefore backtracing_error is reported. This 24245 patch records the deleted marker when making mmap cache and refers the 24246 recorded information in the case "backtracing_error" to switch the 24247 message. 24248 24249 Here is the output of this patch: 24250 24251 $ strace -e unlink -k ./p-deleted 24252 unlink("./p-deleted") = 0 24253 > /usr/lib64/libc-2.18.so(unlink+0x7) [0xe7f17] 24254 > /home/yamato/var/strace/t_unwind/p-deleted (deleted)(+0x0) [0x575] 24255 > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65] 24256 > expected_backtracing_error [0x7ffff1365590] 24257 +++ exited with 0 +++ 24258 24259 This solution is not perfect: if a file is unlink'ed after making the 24260 mmap cache and before unwinding, strace cannot have a chance to record 24261 the deleted marker. 24262 24263 In this version of patch, hardcoded magic number used in comparing "(delete)" 24264 string is replaced with strlen as suggested by Dmitry Levin. 24265 24266 In old version of patch, the deleted entry was thrown away from mmap 24267 cache to avoid to report "backtracing_error". In this patch I keep it, 24268 and just switch the error message. 24269 Inspired by the review comment from Dmitry Levin. 24270 24271 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24272 24273 unwind: call unwind_tcb_fin before printing detached message. 24274 captured stacktrace is printed in unwind_tcb_fin if tcp->queue is not 24275 empty. This should happen before printing detached message, so 24276 unwind_tcb_fin is moved to the top of droptcb. 24277 24278 This is implicitly suggested by Dmitry Levin in patch review process. 24279 24280 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24281 24282 unwind: implement automatic mmap cache invalidation. 24283 A mmap cache belonging to a tcb was updated when a system call which 24284 changed the memory mapping was called. This implementation was assumed 24285 the mapping was changed only by the tcb. However, this assumption is 24286 incorrect if the target application is multi-threaded; more than two 24287 tcbs can shared the same memory mapping and a tcb can modify it without 24288 being noticed by the others. 24289 24290 This change introduces a global integer variable mmap_cache_generation, 24291 and mmap_cache_generation field to struct tcb. The variable 24292 is incremented each time a process enters a syscall that can modify its 24293 memory mapping. Each tcb records the value of this variable at the 24294 moment if building its mmap cache. Every mmap cache associated with 24295 the given tcb can be validated by comparing its mmap_cache_generation 24296 field with the variable mmap_cache_generation. 24297 24298 This implementation is inefficient. If strace attaches two processes 24299 which don't share the memory mapping, rebuilding mmap cache of a tcb 24300 triggered by another tcb's mmap system call is not necessary. 24301 24302 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24303 24304 unwind: introduce queue_t for capturing stacktrace. 24305 This is the second step for splitting capturing from printing. 24306 24307 New `queue' field is added to tcb. Captured stacktrace is stored here. 24308 The field is initialized/finalized at unwind_tcb_init/unwind_tcb_fin. 24309 24310 New API function unwind_capture_stacktrace is added. This function 24311 captures the currest stack using stracktrace_walker and records it in 24312 tcb. It's printing is delayed to the next call of 24313 unwind_print_stacktrace. 24314 24315 unwind_print_stacktrace is extended. Now it checks queue field of 24316 the given tcb at the start of function. If the function finds a 24317 captured stack trace, the latter is printed using stracktrace_walker. 24318 24319 Currently unwind_capture_stacktrace invocations are added directly to 24320 handlers of mmap, munmap, mprotect, and execve. 24321 24322 Here is the difference of output with/without patch: 24323 24324 (without patch) 24325 execve("./test-fork", ["./test-fork"], [/* 56 vars */]) = 0 24326 > /usr/lib64/ld-2.18.so(check_one_fd.part.0+0x82) [0x11f0] 24327 24328 (with patch) 24329 execve("./test-fork", ["./test-fork"], [/* 54 vars */]) = 0 24330 > /usr/lib64/libc-2.18.so(execve+0x7) [0xbcd27] 24331 > /home/yamato/var/strace/strace(exec_or_die+0x10c) [0x26ac] 24332 > /home/yamato/var/strace/strace(startup_child+0x346) [0x134f6] 24333 > /home/yamato/var/strace/strace(init+0x89f) [0x13dff] 24334 > /home/yamato/var/strace/strace(main+0xa) [0x26ca] 24335 > /usr/lib64/libc-2.18.so(__libc_start_main+0xf5) [0x21d65] 24336 > /home/yamato/var/strace/strace(_start+0x29) [0x2799] 24337 24338 In older version output lines of captured elements were built when 24339 printing. In this version they are built when capturing the stack. 24340 As result, unneeded dynamic memory allocations are avoided. 24341 Suggested by Luca Clementi. 24342 24343 In older version the combination of snprintf and realloc were used. 24344 In this version they are replaced with asprintf. 24345 Suggested by Dmitry Levin. 24346 24347 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24348 24349 unwind: introduce own debug macro. 24350 * unwind.c (DPRINTF): New macro, to be utilized in debugging cache 24351 management code. 24352 24353 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24354 24355 unwind: introduce stacktrace_walker. 24356 In current implementation, the stack trace is captured and printed at 24357 the same time, in trace_syscall_exiting. This approach cannot 24358 provide user expected information when a system call changes the 24359 memory mapping. In such cases, the stack trace should be captured on 24360 entering syscall and printed on exiting. 24361 24362 As the initial step for splitting capturing from printing, this change 24363 introduces stacktrace_walker utility function. It can be used both for 24364 capturing in trace_syscall_entering and printing in 24365 trace_syscall_exiting. 24366 24367 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24368 24369 unwind: give all exported functions "unwind_" prefix. 24370 * unwind.c (init_unwind_addr_space): Rename to unwind_init. 24371 (init_libunwind_ui): Rename to unwind_tcb_init. 24372 (free_libunwind_ui): Rename to unwind_tcb_fin. 24373 (delete_mmap_cache): Rename to unwind_cache_invalidate. 24374 (print_stacktrace): Rename to unwind_print_stacktrace. 24375 * defs.h: Update prototypes. 24376 * mem.c: All callers updated. 24377 * process.c: Likewise. 24378 * strace.c: Likewise. 24379 * syscall.c: Likewise. 24380 24381 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24382 24383 unwind: delete mmap cache in free_libunwind_ui. 24384 free_libunwind_ui is expected to release all unwind related resources 24385 attached to tcp. 24386 24387 * strace.c (droptcb): Move delete_mmap_cache call ... 24388 * unwind.c (free_libunwind_ui): ... to here. 24389 24390 2014-05-30 Masatake YAMATO <yamato (a] redhat.com> 24391 24392 unwind: make alloc_mmap_cache function local. 24393 * defs.h (alloc_mmap_cache): Remove. 24394 * unwind.c (alloc_mmap_cache): Add static qualifier. 24395 24396 unwind: fix a bug in range updating of binary search. 24397 * unwind.c (print_stacktrace): Fix off-by-one error in binary search. 24398 24399 2014-05-30 Luca Clementi <luca.clementi (a] gmail.com> 24400 24401 Add -k option to print stack trace after each syscall. 24402 Print the stack trace of the traced process after each system call when 24403 -k option is specified. It is implemented using libunwind to unwind the 24404 stack and to obtain the function name pointed by the IP. 24405 24406 Based on the code that was originally taken from strace-plus 24407 of Philip J. Guo. 24408 24409 * configure.ac: Add --with-libunwind option. Check libunwind support. 24410 * Makefile.am: Add libunwind support. 24411 * defs.h (struct tcb) [USE_LIBUNWIND]: Append libunwind specific fields. 24412 [USE_LIBUNWIND] (stack_trace_enabled, alloc_mmap_cache, 24413 delete_mmap_cache, print_stacktrace): New prototypes. 24414 * mem.c (print_mmap, sys_munmap, sys_mprotect): Add libunwind support. 24415 * process.c (sys_execve): Likewise. 24416 * strace.c (usage, alloctcb, droptcb, init): Likewise. 24417 * syscall.c (trace_syscall_exiting): Likewise. 24418 * unwind.c: New file. 24419 * strace.1: Document -k option. 24420 24421 2014-05-30 Dmitry V. Levin <ldv (a] altlinux.org> 24422 24423 sysctl: update CTL_*, KERN_*, NET_*, and VM_* constants. 24424 * configure.ac (AC_CHECK_DECLS): Add CTL_*, KERN_*, NET_*, and 24425 VM_* constants. 24426 * system.c (CTL_PROC, CTL_CPU): Remove definitions. 24427 * xlat/sysctl_*.in: Update. 24428 24429 Check for constants used by waitid function. 24430 * configure.ac (AC_CHECK_DECLS): Add P_* constants. 24431 24432 Check for LO_FLAGS_READ_ONLY constant. 24433 * configure.ac (AC_CHECK_DECLS): Add LO_FLAGS_READ_ONLY. 24434 24435 Compress blank lines. 24436 Suppress empty lines left after automated xlat conversion. 24437 24438 xlat: cleanup the aftermath of automatic conversion. 24439 24440 Generate xlat/*.in files. 24441 Automatically convert xlat structures from *.c files to xlat/*.in files 24442 using "./generate_xlat_in.sh *.c" command. 24443 24444 Rename several xlat structures to avoid collisions. 24445 * bjm.c (which): Rename to qm_which. 24446 * ipc.c (msg_flags): Rename to ipc_msg_flags. 24447 * time.c (which): Rename to itimer_which. 24448 24449 Enhance xlat generator. 24450 * xlat/gen.sh: Define all xlat structs not declared in defs.h as static. 24451 Some symbolic constants are not macros, extend #ifdef check to cover 24452 symbolic constants checked by AC_CHECK_DECLS. 24453 Handle complex symbolic constants in SYMBOL|... form. 24454 Handle symbolic constants in 1<<SYMBOL form. 24455 Handle numeric constants. 24456 Implement #unconditional directive that turns off preprocessor checks. 24457 Implement #unterminated directive that turns off adding XLAT_END. 24458 24459 2014-05-30 Dmitry V. Levin <ldv (a] altlinux.org> 24460 24461 Use bootstrap script consistently. 24462 Now that ./xlat/gen.sh has to be run before autoreconf, 24463 replace all autoreconf calls with ./bootstrap call. 24464 24465 * bootstrap: Forward arguments to autoreconf. 24466 * build_static_example.sh: Replace autoreconf call with bootstrap call. 24467 * make-dist: Likewise. 24468 * qemu_multiarch_testing/README: Likewise. 24469 24470 2014-05-30 Mike Frysinger <vapier (a] gentoo.org> 24471 24472 Implement xlat generator. 24473 * bootstrap: New file. 24474 * xlat/gen.sh: Likewise. 24475 * Makefile.am: Include xlat/Makemodule.am 24476 (EXTRA_DIST): Add $(XLAT_INPUT_FILES), $(XLAT_HEADER_FILES), and 24477 xlat/gen.sh. 24478 24479 2014-05-30 Dmitry V. Levin <ldv (a] altlinux.org> 24480 24481 tests: fix SCM_RIGHTS test for big-endian systems. 24482 * tests/scm_rights.c (main): Send zero integer to avoid issues with 24483 endianness. 24484 * tests/scm_rights-fd.test: Update grep patterns. 24485 24486 Decode file descriptors passed via SCM_RIGHTS control messages. 24487 * net.c (printcmsghdr): Print descriptors from SCM_RIGHTS control 24488 messages using printfd. 24489 * tests/scm_rights.c: New file. 24490 * tests/scm_rights-fd.test: New test. 24491 * tests/Makefile.am (check_PROGRAMS): Add scm_rights. 24492 (TESTS): Add scm_rights-fd.test. 24493 * tests/.gitignore: Add scm_rights and uio. 24494 24495 tests: add a test for -c and -w options. 24496 * tests/count.test: New test. 24497 * tests/Makefile.am (TESTS): Add it. 24498 24499 2014-05-29 Mark Hills <Mark.Hills (a] framestore.com> 24500 24501 Optionally produce stats on syscall latency. 24502 Time spent in system time is not useful where a syscall depends on some 24503 non-CPU resource, eg. typically open() or stat() to a network drive. 24504 24505 This patch adds a new flag (-w) to produce a summary of the time 24506 difference between beginning and end of the system call (ie. latency) 24507 24508 This functionality has been useful to profile slow processes that 24509 are not CPU-bound. 24510 24511 2014-05-29 Dmitry V. Levin <ldv (a] altlinux.org> 24512 24513 Constify count_syscall function. 24514 * count.c (count_syscall): Add const qualifier to timeval argument and 24515 rename it. Store the wall clock time spent while in syscall in separate 24516 timeval variable. 24517 * defs.h (count_syscall): Update prototype. 24518 * syscall.c (trace_syscall_exiting): Update count_syscall invocation. 24519 24520 Constify tv_* functions. 24521 * defs.h (tv_nz, tv_cmp, tv_float, tv_add, tv_sub, tv_mul, tv_div): Add 24522 const qualifier to read only arguments. 24523 * util.c (tv_nz, tv_cmp, tv_float, tv_add, tv_sub, tv_mul, tv_div): 24524 Likewise. 24525 24526 2014-05-28 Dmitry V. Levin <ldv (a] altlinux.org> 24527 24528 Use printstr for sethostname, setdomainname, and gethostname decoding. 24529 The argument passed to sethostname and setdomainname syscalls, as well 24530 as the string returned by gethostname syscall, is not a pathname, so 24531 printpathn is not the right method for its decoding. 24532 24533 * process.c (sys_sethostname, sys_setdomainname): Decode 1st argument 24534 using printstr instead of printpathn. 24535 [ALPHA] (sys_gethostname): Likewise. 24536 24537 2014-05-21 James Hogan <james.hogan (a] imgtec.com> 24538 24539 Fix {get,set}rlimit decoding with unreliable SIZEOF_RLIM_T. 24540 When strace is built with large file support definitions in CFLAGS (as 24541 may be provided by buildroot) the C library headers may expose a 64-bit 24542 rlim_t even though the struct rlimit fields used by the system call 24543 interface are only 32-bit. The SIZEOF_RLIM_T will then be 8 which 24544 results in bad decoding of the getrlimit and setrlimit syscalls. 24545 24546 This is fixed by replacing unreliable SIZEOF_RLIM_T based checks with 24547 checks for current_wordsize. 24548 24549 2014-05-13 Masatake YAMATO <yamato (a] redhat.com> 24550 24551 Enhance setns syscall decoding. 24552 * process.c (sys_setns): New function. 24553 Decode the 2nd syscall argument using clone_flags. 24554 * linux/syscall.h (sys_setns): New prototype. 24555 * linux/dummy.h (sys_setns): Remove. 24556 24557 2014-05-12 Dmitry V. Levin <ldv (a] altlinux.org> 24558 24559 mips: fix syscall entries that should have TP flag set. 24560 24561 xtensa: fix unshare syscall entry. 24562 24563 alpha, hppa, mips n64: fix waitid syscall entry. 24564 24565 Add TM flag to shmat and shmdt syscall entries. 24566 24567 Alias sys_vfork to sys_fork. 24568 * process.c (sys_vfork): Remove. 24569 * linux/syscall.h (sys_vfork): Likewise. 24570 * linux/dummy.h (sys_vfork): Alias to sys_fork. 24571 * linux/alpha/syscallent.h: Fix vfork entry. 24572 * util.c (setbpt): Do not check for sys_vfork. 24573 * syscall.c (syscall_fixup_for_fork_exec): Likewise. 24574 24575 2014-04-17 Dmitry V. Levin <ldv (a] altlinux.org> 24576 24577 epoll_ctl: fix EPOLL_CTL_DEL argument decoding. 24578 * desc.c (sys_epoll_ctl): Do not parse the event structure for 24579 EPOLL_CTL_DEL operation. 24580 24581 Reported-by: <socketpair (a] gmail.com> 24582 24583 2014-04-17 Dmitry V. Levin <ldv (a] altlinux.org> 24584 24585 Update CLOCK_* constants. 24586 * time.c (clocknames): Add CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, 24587 CLOCK_BOOTTIME_ALARM, CLOCK_SGI_CYCLE, and CLOCK_TAI. 24588 Fixes RH#1088455. 24589 24590 2014-04-17 Dmitry V. Levin <ldv (a] altlinux.org> 24591 24592 Fix preadv/pwritev offset decoding. 24593 * util.c (printllval): Add align argument. 24594 * defs.h (printllval): Update prototype. 24595 (printllval_aligned, printllval_unaligned): New macros. 24596 * file.c (sys_readahead, sys_truncate64, sys_ftruncate64, sys_fadvise64, 24597 sys_fadvise64_64, sys_sync_file_range, sys_sync_file_range2, 24598 sys_fallocate): Replace printllval call with printllval_aligned. 24599 * io.c (sys_pread, sys_pwrite): Likewise. 24600 (sys_preadv, sys_pwritev): Replace printllval call with 24601 printllval_unaligned. 24602 * linux/arm/syscallent.h: Set the number of preadv and pwritev 24603 arguments to 5. 24604 * linux/mips/syscallent-o32.h: Likewise. 24605 * linux/powerpc/syscallent.h: Likewise. 24606 * linux/sh/syscallent.h: Likewise. 24607 * linux/xtensa/syscallent.h: Likewise. 24608 24609 Reported-by: Dima Kogan <dima (a] secretsauce.net> 24610 24611 2014-04-16 Dmitry V. Levin <ldv (a] altlinux.org> 24612 24613 tests: add a test for pread/pwrite and preadv/pwritev offset decoding. 24614 * tests/uio.c: New file. 24615 * tests/uio.test: New test. 24616 * tests/Makefile.am (check_PROGRAMS): Add uio. 24617 (uio_CFLAGS): Define. 24618 (TESTS): Add uio.test. 24619 24620 2014-04-10 Dmitry V. Levin <ldv (a] altlinux.org> 24621 24622 Refactor LDT decoding. 24623 * configure.ac (AC_CHECK_TYPES): Remove struct user_desc. 24624 * ldt.c: New file. 24625 * Makefile.am (strace_SOURCES): Add ldt.c. 24626 * mem.c: Do not include <asm/ldt.h>. 24627 (print_ldt_entry): Remove. 24628 (sys_modify_ldt, sys_set_thread_area, sys_get_thread_area): Move... 24629 * ldt.c: ... here. 24630 * process.c: Do not include <asm/ldt.h>. 24631 (sys_clone) [I386 || X86_64 || X32]: Use print_user_desc. 24632 24633 2014-04-10 Denys Vlasenko <dvlasenk (a] redhat.com> 24634 24635 Make int3 example in comments more cut-n-pastable. 24636 I found that I use it quite often. Lets make it so that 24637 after cut-n-pasting it into a file, there is no need 24638 to edit the result (e.g. no need to remove C comment 24639 chars from every line. 24640 24641 2014-04-09 Dmitry V. Levin <ldv (a] altlinux.org> 24642 24643 mips: enable decoding of set_thread_area. 24644 * linux/dummy.h [MIPS]: Do not redirect sys_set_thread_area to printargs. 24645 * mem.c [MIPS] (sys_set_thread_area): Define. 24646 24647 x86_64, x32: enable decoding of modify_ldt, get_thread_area, and set_thread_area 24648 * linux/dummy.h [X86_64 || X32]: Do not redirect sys_modify_ldt, 24649 sys_get_thread_area, and sys_set_thread_area to printargs. 24650 24651 x32: decode clone LDT user_desc entries for x86 processes. 24652 * mem.c [X32]: Include asm/ldt.h. 24653 [X32] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area, 24654 sys_get_thread_area): Define. 24655 * process.c [X32]: Include asm/ldt.h. 24656 (sys_clone) [X32]: Decode LDT entry if current_personality == 1. 24657 24658 2014-04-09 Elliott Hughes <enh (a] google.com> 24659 24660 x86-64: decode clone LDT user_desc entries for x86 processes. 24661 * mem.c [X86_64]: Include asm/ldt.h. 24662 [X86_64] (print_ldt_entry, sys_modify_ldt, sys_set_thread_area, 24663 sys_get_thread_area): Define. 24664 * process.c [X86_64]: Include asm/ldt.h. 24665 (sys_clone) [X86_64]: Decode LDT entry if current_personality == 1. 24666 24667 2014-04-09 Dmitry V. Levin <ldv (a] altlinux.org> 24668 24669 x32: fix clone(2) argument order for x86 processes. 24670 Apply the same fix that was made for x86_64. 24671 24672 * process.c [X32] (ARG_CTID, ARG_TLS): Take current 24673 personality into account. 24674 24675 2014-04-09 Elliott Hughes <enh (a] google.com> 24676 24677 x86-64: fix clone(2) argument order for x86 processes. 24678 Without this patch, strace claims that parent_tidptr == tls, which is 24679 clearly wrong. It is expected that parent_tidptr == child_tidptr. 24680 24681 * process.c [X86_64] (ARG_CTID, ARG_TLS): Take current 24682 personality into account. 24683 24684 2014-04-06 Elliott Hughes <enh (a] google.com> 24685 24686 aarch64: Fix decoding of arm struct stat64. 24687 We need to handle this situation more like x86-64. 32-bit arm and i386 24688 actually have a common struct stat64, except the arm one must not be 24689 packed. Additionally, on aarch64 the 32-bit personality is personality 0. 24690 24691 2014-03-20 Dmitry V. Levin <ldv (a] altlinux.org> 24692 24693 ARM EABI: disable OABI support by default. 24694 OABI is rarely used in ARM EABI systems nowadays, so disable its support 24695 by default. Add --enable-arm-oabi option to enable ARM OABI support. 24696 24697 * configure.ac: New option --enable-arm-oabi. 24698 * syscall.c (get_scno) [ARM]: Check ENABLE_ARM_OABI macro defined by 24699 configure instead of undocumented STRACE_KNOWS_ONLY_EABI macro. 24700 24701 2014-03-12 Elliott Hughes <enh (a] google.com> 24702 24703 Fix stat decoding for LP64 bionic. 24704 Patch fb642bb6d63f7ffe2228bf48a6008bc8f56f67ff fixed building with 24705 HAVE_STAT64 for aarch64 with uapi kernel headers but not x86_64. 24706 The workaround needed to be applied to all LP64 architectures, not 24707 just aarch64. This patch fixes that and adds an explanatory comment. 24708 24709 2014-03-11 Masatake YAMATO <yamato (a] redhat.com> 24710 24711 Decode protocol argument for PF_NETLINK sockets. 24712 * net.c (protocols): Rename to inet_protocols. 24713 [PF_NETLINK] (netlink_protocols): New xlat structure. 24714 (sys_socket): Rename protocols to inet_protocols. 24715 [PF_NETLINK]: Decode protocol argument using netlink_protocols. 24716 24717 Acked-by: Mike Frysinger <vapier (a] gentoo.org> 24718 24719 2014-03-11 Dmitry V. Levin <ldv (a] altlinux.org> 24720 24721 Cleanup socketpair decoding. 24722 The only supported domain for socketpair syscall is AF_UNIX, so 24723 no decoding related to other domains is required for socketpair. 24724 24725 * net.c (sys_socketpair): Remove support for PF_INET and PF_IPX domains, 24726 print the protocol argument as is. 24727 24728 2014-03-11 Dmitry V. Levin <ldv (a] altlinux.org> 24729 24730 printsiginfo: add SIGSYS decoding. 24731 * configure.ac (AC_CHECK_MEMBERS): Check for siginfo_t.si_syscall. 24732 * signal.c (SYS_SECCOMP): Define if not yet defined. 24733 (sigsys_codes): new xlat structure. 24734 (printsiginfo): Decode SIGSYS. 24735 24736 Update siginfo codes. 24737 * signal.c (siginfo_codes): Add SI_DETHREAD. 24738 24739 Factor out printing of si_pid and si_uid members of siginfo_t. 24740 * signal.c (printsigsource): New function. 24741 (printsiginfo): Use it. 24742 24743 2014-03-10 Elliott Hughes <enh (a] google.com> 24744 24745 Improve SI_TIMER decoding. 24746 Decode siginfo_t more clearly for si_code SI_TIMER. 24747 The 'pid' is actually a POSIX timer id, and the 'uid' is actually the 24748 overrun. 24749 Also factor out the si_value dumping so it's the same for every si_code. 24750 24751 2014-03-03 Elliott Hughes <enh (a] google.com> 24752 24753 aarch64: fix decoding of arm syscall numbers. 24754 If an aarch64 strace is tracing a process using the arm personality, it 24755 also needs to call the shuffle_scno function for the ARM-specific 24756 syscalls. 24757 24758 * syscall.c (shuffle_scno): Define on AARCH64. 24759 (get_scno) [AARCH64]: Call shuffle_scno when the tracee is in 32-bit mode. 24760 24761 2014-03-03 Dmitry V. Levin <ldv (a] altlinux.org> 24762 24763 Fix fcntl decoding. 24764 Assume that F_SETLK64, F_SETLKW64, and F_GETLK64 are either defined or 24765 not defined altogether. 24766 Do not assume that sizeof(off_t) < sizeof(long long) when F_SETLK64 is 24767 undefined. 24768 24769 This change fixes build with musl libc on x86. 24770 24771 * configure.ac: Define SIZEOF_OFF_T. 24772 * desc.c (USE_PRINTFLOCK64): New macro. 24773 (struct flock64, printflock64): Do not define on X32. 24774 (printflock): Replace X32 specific workaround with SIZEOF_OFF_T check. 24775 Fix printing off_t members of struct flock. 24776 (sys_fcntl): Use USE_PRINTFLOCK64. 24777 24778 2014-03-01 Dmitry V. Levin <ldv (a] altlinux.org> 24779 24780 sys_fcntl: remove F_FREESP and F_FREESP64 support. 24781 F_FREESP and F_FREESP64 fcntl commands are not available in Linux 24782 and therefore the code implementing their decoding is useless. 24783 Besides that, F_FREESP64 decoding is too complicated to support. 24784 24785 * desc.c (fcntlcmds): Remove F_FREESP and F_FREESP64. 24786 Remove F_FREESP64 from the check whether to define struct flock64. 24787 (sys_fcntl): Remove F_FREESP and F_FREESP64 support. 24788 24789 2014-02-28 Elliott Hughes <enh (a] google.com> 24790 24791 Add multi-personality support to struct old_sigaction decoding. 24792 struct sigaction is another structure that contains members 24793 whose size differs between 32-bit and 64-bit personalities. 24794 24795 * signal.c [HAVE_SIGACTION] (old_sigaction32): New structure. 24796 [HAVE_SIGACTION] (decode_old_sigaction): Decode 32-bit struct 24797 old_sigaction on a 64-bit host. 24798 24799 2014-02-28 Elliott Hughes <enh (a] google.com> 24800 24801 Fix decoding of arm struct stat64 by aarch64 strace. 24802 aarch64's uapi header files have a struct stat but no struct stat64. 24803 To correctly decode a 32-bit process' s struct stat64 we need 24804 HAVE_STAT64, but then the build fails because there is no struct stat64. 24805 Luckily, the aarch64 struct stat is structurally equivalent to the arm 24806 struct stat64, so we can just reuse that. 24807 24808 * file.c [AARCH64] (stat64): Define to stat. 24809 24810 2014-02-28 Dmitry V. Levin <ldv (a] altlinux.org> 24811 24812 Remove obsolete ioctlsort.c. 24813 The generic version of ioctlsort.c became obsolete after commit 24814 v4.6-240-g5afdf12 that removed its last non-Linux users. 24815 24816 * ioctlsort.c: Remove. 24817 * Makefile.am (EXTRA_DIST): Remove ioctlsort.c. 24818 24819 Reported-by: Elliott Hughes <enh (a] google.com> 24820 24821 2014-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 24822 24823 Add multi-personality support to stack_t decoding. 24824 stack_t is one of many structures that contain members 24825 whose size differs between 32-bit and 64-bit personalities. 24826 24827 * signal.c (print_stack_t): Decode 32-bit stack_t on a 64-bit host. 24828 24829 Reported-by: Elliott Hughes <enh (a] google.com> 24830 24831 2014-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 24832 24833 Rewrite signal mask decoding without sigset_t. 24834 The sigset_t provided by libc is not quite convenient. 24835 In glibc, sigset_t is an array with space for 1024 bits, which is much 24836 more than required: all architectures supported by Linux have only 64 24837 signals except MIPS, which has 128. 24838 In bionic libc, LP32 sigset_t is only 4 bytes long, which is less than 24839 necessary. 24840 24841 With this change, signal mask is decoded without use of intermediate 24842 sigset_t structure, which saves us some cpu cycles in case of glibc with 24843 its inflated sigset_t, and enables build with libcs where sigset_t is 24844 broken. 24845 24846 Old implementation used to check each signal number in the given signal 24847 mask twice using sigismember(). 24848 New implementation is based on popcount and next_set_bit() so it's 24849 noticeably faster. 24850 24851 * configure.ac: Check for __builtin_popcount. 24852 * signal.c: Ensure that NSIG >= 32. 24853 (sprintsigmask, sprintsigmask_long, printsigmask): Remove. 24854 (popcount32, sprintsigmask_n): New functions. 24855 (tprintsigmask_addr, sprintsigmask_val, tprintsigmask_val): New macros. 24856 (print_sigset_addr_len, sys_sigsetmask, sys_sigreturn, sys_siggetmask, 24857 sys_sigsuspend, sys_sigprocmask, decode_new_sigaction): Update to use 24858 new signal mask decoding interface. 24859 * tests/sigaction.c (main): Add a test with almost filled signal mask. 24860 * tests/sigaction.awk: Update. 24861 24862 2014-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 24863 24864 Fix build with Bionic libc. 24865 Add generic tests for fopen64 and fputs_unlocked functions to fix build 24866 with Bionic libc that does not provide them. 24867 24868 * configure.ac (AC_CHECK_FUNCS): Add fopen64 and fputs_unlocked. 24869 * strace.c [_LARGEFILE64_SOURCE]: Use fopen instead of fopen64 24870 if !HAVE_FOPEN64. 24871 Use fputs instead of fputs_unlocked if !HAVE_FPUTS_UNLOCKED. 24872 * vsprintf.c: Use fputs instead of fputs_unlocked 24873 if !HAVE_FPUTS_UNLOCKED. 24874 24875 Reported-by: Elliott Hughes <enh (a] google.com> 24876 24877 2014-02-25 James Yang <james.yang (a] freescale.com> 24878 24879 powerpc64: fix 64-bit process detection on embedded. 24880 * syscall.c (get_scno) [POWERPC64]: Fix 64-bit process detection 24881 on embedded powerpc. 24882 24883 2014-02-25 Dmitry V. Levin <ldv (a] altlinux.org> 24884 24885 Do not compile scsi ioctl decoding if <scsi/sg.h> is not available. 24886 Add a generic test for <scsi/sg.h> availability to fix build with 24887 Bionic libc that does not provide <scsi/sg.h>. 24888 24889 * configure.ac (AC_CHECK_HEADERS): Add scsi/sg.h. 24890 * ioctl.c (ioctl_decode): Do not call scsi_ioctl if !HAVE_SCSI_SG_H. 24891 * scsi.c: Do not compile scsi ioctl decoding if !HAVE_SCSI_SG_H. 24892 24893 Reported-by: Elliott Hughes <enh (a] google.com> 24894 24895 2014-02-14 Dmitry V. Levin <ldv (a] altlinux.org> 24896 24897 Revert "Add support for Altera's Nios-II softcore architecture" 24898 The patch originally submitted by Ezequiel Garca was OK, but I somehow 24899 managed to mangle it so that most of the patch was not applied. 24900 24901 According to Ezequiel Garca, an architecture port based on the generic 24902 syscall ABI is in progress. 24903 24904 This reverts commit 61e426e87ac81be4b4ff9de581635b4ea585624f. 24905 24906 2014-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 24907 24908 tests: tighten sigaction check. 24909 * tests/sigaction.awk: Check that input conatins all expected lines. 24910 24911 2014-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 24912 24913 Fix sigaction reporting on non-x86 architectures. 24914 If SA_RESTORER is not defined by libc headers but defined by kernel 24915 headers, use the definition provided by kernel headers for proper 24916 sigaction decoding. 24917 24918 * signal.c [!SA_RESTORER]: Define to ASM_SA_RESTORER if the latter is 24919 defined, regardless of architecure. 24920 24921 2014-02-08 Dmitry V. Levin <ldv (a] altlinux.org> 24922 24923 Check for SA_RESTORER definition in <asm/signal.h> 24924 Kernel header <asm/signal.h> cannot be included from regular code 24925 because it conflicts with libc headers, but SA_RESTORER is needed in 24926 signal.c, so SA_RESTORER value is forwarded from <asm/signal.h> to 24927 config.h using a configure check. 24928 24929 * configure.ac (ASM_SA_RESTORER): Define if SA_RESTORER is defined 24930 in <asm/signal.h>. 24931 24932 2014-02-07 Dmitry V. Levin <ldv (a] altlinux.org> 24933 24934 arm: fix compilation warning. 24935 Fix "dereferencing type-punned pointer will break strict-aliasing rules" 24936 warning introduced by commit v4.8-54-g670b21b. 24937 24938 * signal.c (sys_sigreturn) [ARM]: Avoid dereferencing type-punned pointers. 24939 24940 2014-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 24941 24942 kexec: fix typo. 24943 * kexec.c (print_kexec_segments) [SUPPORTED_PERSONALITIES == 1]: Fix typo. 24944 24945 2014-02-06 Ezequiel Garcia <ezequiel (a] vanguardiasur.com.ar> 24946 24947 Add support for Altera's Nios-II softcore architecture. 24948 This commit adds strace support for Altera's Nios-II official 24949 kernel port as found in git://git.rocketboards.org/linux-socfpga.git 24950 24951 Notice that this an out-of-tree kernel architectural port, and uses the 24952 legacy (non-generic) system call ABI. In particular, the port doesn't 24953 support PTRACE_GETREGSET, so the implementation is based on PTRACE_GETREGS. 24954 24955 Given it's mandatory for new architectures to support the generic 24956 syscall ABI and PTRACE_GETREGSET, if the nios2 architecure is ever 24957 mainlined, the strace support will have to be re-factored accordingly. 24958 24959 * linux/nios2/ioctlent.h.in: New file. 24960 * linux/nios2/syscallent.h: Likewise. 24961 * Makefile.am (EXTRA_DIST): Add linux/nios2/ioctlent.h.in and 24962 linux/nios2/syscallent.h. 24963 * configure.ac: Add NIOS2 to the list of supported architectures. 24964 * defs.h [NIOS2]: Use register reading system. 24965 * process.c (struct_user_offsets): Add NIOS2 support. 24966 * syscall.c (get_regs, get_scno, get_syscall_args, 24967 get_syscall_result, get_error): Likewise. 24968 * util.c (change_syscall): Likewise. 24969 * mem.c (sys_getpagesize): Define on NIOS2. 24970 * system.c [NIOS2] (sys_cacheflush, sys_nios2cmpxchg): New functions. 24971 24972 Acked-by: Mike Frysinger <vapier (a] gentoo.org> 24973 24974 2014-02-05 Dmitry V. Levin <ldv (a] altlinux.org> 24975 24976 Implement add_key, keyctl, and request_key decoding. 24977 * keyctl.c: New file. 24978 * linux/keyctl.h: Likewise. 24979 * Makefile.am (strace_SOURCES): Add keyctl.c. 24980 (EXTRA_DIST): Add linux/keyctl.h. 24981 * linux/dummy.h (sys_add_key, sys_keyctl, sys_request_key): Remove. 24982 * linux/syscall.h (sys_add_key, sys_keyctl, sys_request_key): New 24983 prototypes. 24984 24985 Implement ioprio_get and ioprio_set decoding. 24986 * ioprio.c: New file. 24987 * Makefile.am (strace_SOURCES): Add ioprio.c. 24988 * linux/dummy.h (sys_ioprio_get, sys_ioprio_set): Remove. 24989 * linux/syscall.h (sys_ioprio_get, sys_ioprio_set): New prototypes. 24990 24991 Implement finit_module decoding. 24992 * bjm.c (module_init_flags): New xlat structure. 24993 (sys_finit_module): New function. 24994 * linux/dummy.h (sys_finit_module): Remove. 24995 * linux/syscall.h (sys_finit_module): New prototype. 24996 24997 Cleanup inotify syscalls decoding. 24998 * linux/inotify.h: New file. 24999 * file.c (inotify_modes, inotify_init_flags, sys_inotify_add_watch, 25000 sys_inotify_rm_watch, sys_inotify_init1): Move... 25001 * inotify.c: ... here. 25002 (inotify_modes): Rename to inotify_flags, convert to XLAT form. 25003 (inotify_init_flags): Convert to XLAT form. 25004 * Makefile.am (strace_SOURCES): Add inotify.c. 25005 (EXTRA_DIST): Add linux/inotify.h. 25006 25007 Enhance reboot decoding. 25008 * linux/reboot.h: New file. 25009 * system.c (bootflags1, bootflags2, bootflags3, sys_reboot): Move... 25010 * reboot.c: ... here. 25011 (bootflags2, bootflags3): Update constants. 25012 * Makefile.am (strace_SOURCES): Add reboot.c. 25013 (EXTRA_DIST): Add linux/reboot.h. 25014 25015 Implement kexec_load decoding. 25016 * kexec.c: New file. 25017 * linux/kexec.h: Likewise. 25018 * Makefile.am (strace_SOURCES): Add kexec.c. 25019 (EXTRA_DIST): Add linux/kexec.h. 25020 * linux/dummy.h (sys_kexec_load): Remove. 25021 * linux/syscall.h (sys_kexec_load): New prototype. 25022 25023 Use prepared editions of recently imported linux headers. 25024 * linux/fanotify.h: Replace with edition prepared with headers_install.sh. 25025 * linux/personality.h: Likewise. 25026 25027 Implement fanotify_init and fanotify_mark decoding. 25028 * fanotify.c: New file. 25029 * linux/fanotify.h: Likewise. 25030 * Makefile.am (strace_SOURCES): Add fanotify.c. 25031 (EXTRA_DIST): Add linux/fanotify.h. 25032 * defs.h (print_dirfd): New prototype. 25033 * file.c (print_dirfd): Export. 25034 * linux/dummy.h (sys_fanotify_init, sys_fanotify_mark): Remove. 25035 * linux/syscall.h (sys_fanotify_init, sys_fanotify_mark): New 25036 prototypes. 25037 * pathtrace.c (pathtrace_match): Handle sys_fanotify_init and 25038 sys_fanotify_mark. 25039 25040 Use XLAT_END macro. 25041 Automatically update all xlat structures using the following sed regexp: 25042 s/^[[:space:]]*{[[:space:]]*0[[:space:]]*,[[:space:]]*NULL[[:space:]]*,\?[[:space:]]*}[[:space:]]*,\?[[:space:]]*/\tXLAT_END/ 25043 25044 Itroduce XLAT_END macro to make xlat structures more compact. 25045 * defs.h (XLAT_END): New macro. 25046 25047 Convert personality_options to XLAT form. 25048 * linux/personality.h: New file. 25049 * Makefile.am (EXTRA_DIST): Add it. 25050 * system.c: Include <linux/personality.h>. 25051 (personality_options): Update PER_* constants, convert to XLAT form. 25052 25053 Convert futexops to XLAT form. 25054 * process.c: Define FUTEX_*_PRIVATE macros. 25055 (futexops): Convert to XLAT form. 25056 25057 Convert sigev_value to XLAT form. 25058 * time.c (sigev_value): Convert to XLAT form. 25059 (printsigevent32, printsigevent): Update use of sigev_value. 25060 25061 Use XLAT macro. 25062 Automatically convert all xlat structures to XLAT form 25063 using the following sed regexp: 25064 s/^[[:space:]]*{[[:space:]]*\([^",}[:space:]]\+\)[[:space:]]*,[[:space:]]*"\1",\?[[:space:]]*}[[:space:]]*/\tXLAT(\1)/ 25065 25066 2014-02-05 Dmitry V. Levin <ldv (a] altlinux.org> 25067 25068 Introduce XLAT macro to ease maintenance of xlat structures. 25069 * defs.h (XLAT): New macro. 25070 25071 Suggested-by: Mike Frysinger <vapier (a] gentoo.org> 25072 25073 2014-02-04 Stefan Srensen <stefan.sorensen (a] spectralink.com> 25074 25075 Decode ptp ioctls. 25076 * defs.h (ptp_ioctl): New prototype. 25077 * ioctl.c (ioctl_decode): Call ptp_ioctl when code is '='. 25078 * Makefile.am (strace_SOURCES): Add ptp.c. 25079 (EXTRA_DIST): Add linux/ptp_clock.h. 25080 * ptp.c: New file. 25081 * linux/ptp_clock.h: New file. 25082 25083 2014-02-03 Stefan Srensen <stefan.sorensen (a] spectralink.com> 25084 25085 Decode dynamic posix clocks. 25086 * time.c (cpuclocknames): New xlat structure. 25087 (printclockname): New function that decodes posix clock names, 25088 including dynamic fd encoded clocks. 25089 (sys_clock_settime, sys_clock_gettime, sys_clock_nanosleep, 25090 sys_clock_adjtime, sys_timer_create, sys_timerfd, sys_timerfd_create): 25091 Use it. 25092 25093 Update ADJ_* constants. 25094 * time.c (adjtimex_modes): Add ADJ_TAI, ADJ_SETOFFSET, ADJ_MICRO, 25095 ADJ_NANO, ADJ_OFFSET_SS_READ. 25096 25097 2014-02-02 Philippe Ombredanne <pombredanne (a] nexb.com> 25098 25099 Add decoding of sockets descriptor 'paths' for network calls. 25100 * net.c (sys_bind, sys_listen, do_accept, sys_send, sys_sendto, 25101 sys_sendmsg, sys_sendmmsg, sys_recv, sys_recvfrom, sys_recvmsg, 25102 sys_recvmmsg, sys_shutdown, sys_getsockopt, sys_setsockopt): Decode 25103 socket descriptor arguments using printfd. 25104 * pathtrace.c (pathtrace_match): Also check TRACE_NETWORK syscalls 25105 that take socket descriptor arguments. 25106 * tests/net-fd.test: New test for socket descriptor arguments decoding. 25107 * tests/Makefile.am (TESTS): Add net-fd.test. 25108 (net-fd.log): New dependency on net.log. 25109 25110 2014-02-02 Dmitry V. Levin <ldv (a] altlinux.org> 25111 25112 tests: rename all tests so that their names end in .test suffix. 25113 Due to automake limitations, some features work only for tests 25114 that end in one of the suffixes listed in TEST_EXTENSIONS. 25115 25116 * tests/detach-running: Rename to detach-running.test. 25117 * tests/detach-sleeping: Rename to detach-sleeping.test. 25118 * tests/detach-stopped: Rename to detach-stopped.test. 25119 * tests/net: Rename to net.test. 25120 * tests/ptrace_setoptions: Rename to ptrace_setoptions.test. 25121 * tests/qual_syscall: Rename to qual_syscall.test. 25122 * tests/sigaction.sh: Rename to sigaction.test. 25123 * tests/stat: Rename to stat.test. 25124 * tests/strace-f: Rename to strace-f.test. 25125 * tests/Makefile.am (TESTS): Update. 25126 (LOG_COMPILER): Rename to TEST_LOG_COMPILER. 25127 25128 2014-01-31 Mike Frysinger <vapier (a] gentoo.org> 25129 25130 net: add more sockopt options. 25131 This syncs with the defines as available in linux-3.13. 25132 25133 * net.c (sockipoptions): Add IP_IPSEC_POLICY, IP_XFRM_POLICY, 25134 IP_PASSSEC, IP_TRANSPARENT, IP_ORIGDSTADDR, IP_RECVORIGDSTADDR, 25135 IP_MINTTL, IP_NODEFRAG, IP_UNBLOCK_SOURCE, IP_BLOCK_SOURCE, 25136 IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, MCAST_JOIN_GROUP, 25137 MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP, 25138 MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, IP_MULTICAST_ALL, 25139 IP_UNICAST_IF. 25140 25141 2014-01-08 Chris Dearman <chris.dearman (a] imgtec.com> 25142 25143 mips: fix sigaction reporting. 25144 MIPS userland uses the same sigaction structure with a full signal 25145 mask for old_sigaction and new_sigaction and does does not have 25146 an sa_restorer field. 25147 25148 These changes have been tested on MIPS O32 big/little endian, MIPS N64 25149 big endian and x86-64. 25150 25151 * signal.c (old_sigaction) [MIPS]: Add definition for MIPS. 25152 (decode_old_sigaction) [MIPS]: Print sa_mask according to its definition. 25153 (new_sigaction) [MIPS]: Add definition for MIPS. 25154 25155 2014-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 25156 25157 Factor out struct sigaction printing code. 25158 * signal.c [HAVE_SIGACTION] (decode_old_sigaction): New function. 25159 [HAVE_SIGACTION] (sys_sigaction): Use it. 25160 (decode_new_sigaction): New function. 25161 (sys_rt_sigaction): Use it. 25162 25163 2014-01-08 Dmitry V. Levin <ldv (a] altlinux.org> 25164 25165 tests: add a test for rt_sigaction output. 25166 Since "struct sigaction" varies between architectures, rt_sigaction 25167 decoding sometimes produces incorrect output. This test is expected 25168 to catch basic rt_sigaction decoding bugs. 25169 25170 Based on a patch proposed by Chris Dearman. 25171 25172 * tests/sigaction.c: New file. 25173 * tests/sigaction.awk: Likewise. 25174 * tests/sigaction.sh: New test. 25175 * tests/Makefile.am (check_PROGRAMS): Add sigaction. 25176 (TESTS): Add sigaction.sh. 25177 (EXTRA_DIST): Add sigaction.awk. 25178 * tests/.gitignore: Add sigaction. 25179 25180 2014-01-05 Kirill A. Shutemov <kirill.shutemov (a] linux.intel.com> 25181 25182 mem: add missed MAP_HUGETLB mmap flag. 25183 * mem.c (mmap_flags): Add MAP_HUGETLB mmap flag. 25184 25185 Acked-by: Mike Frysinger <vapier (a] gentoo.org> 25186 25187 2013-12-31 Mike Frysinger <vapier (a] gentoo.org> 25188 25189 Delete old PTRACE_{PEEK,POKE}USR logic. 25190 The code base has settled on PTRACE_{PEEK,POKE}USER (with an E) and has 25191 logic in defs.h to make sure it's set sanely. Delete this old logic as 25192 the defs.h takes care of it now. 25193 25194 * process.c: Delete PTRACE_PEEKUSR/PTRACE_POKEUSR defines. 25195 * signal.c: Likewise. 25196 * syscall.c: Delete PTRACE_PEEKUSR define. 25197 * util.c: Likewise. 25198 25199 2013-12-31 Mike Frysinger <vapier (a] gentoo.org> 25200 25201 Decode the O_PATH flag. 25202 * file.c (open_mode_flags): Add O_PATH. 25203 25204 2013-11-13 Dmitry V. Levin <ldv (a] altlinux.org> 25205 25206 Remove unused configure checks. 25207 * configure.ac (AC_CHECK_FUNCS): Remove _sys_siglist and sys_siglist. 25208 (AC_CHECK_DECLS): Likewise. 25209 25210 2013-11-13 Dmitry V. Levin <ldv (a] altlinux.org> 25211 25212 Assume that <sys/ptrace.h> provides a valid ptrace prototype. 25213 We used to explicitly list architectures where <sys/ptrace.h> from glibc 25214 is known to provide a valid prototype for ptrace, and use a homegrown 25215 replacement for all the rest. Situation seems to be better nowadays, 25216 glibc is not the only libc available, so let's use ptrace prototype from 25217 <sys/ptrace.h> by default, leaving the replacement for rare broken cases 25218 if any. 25219 25220 * defs.h: Use ptrace prototype workaround iff 25221 NEED_PTRACE_PROTOTYPE_WORKAROUND is defined. 25222 25223 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25224 25225 Stop using _LFS64_LARGEFILE. 25226 There is only one place left in the code where strace guesses whether 25227 libc provides LFS64 functions and structures. The most natural thing to 25228 do there is to check for _LARGEFILE64_SOURCE - the macro provided by 25229 glibc. Other libc implementations that provide nondegenerate LFS64 25230 interfaces are expected to define this macro as well. 25231 25232 * defs.h (_LFS64_LARGEFILE): Remove. 25233 * strace.c: Use _LARGEFILE64_SOURCE instead of _LFS64_LARGEFILE. 25234 25235 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25236 25237 Define truncate64, ftruncate64, and getdents64 decoders unconditionally. 25238 These decoders are referenced by most architectures, there were no 25239 undefined references so far because _LFS64_LARGEFILE appears to be 25240 always defined by glibc when _GNU_SOURCE is defined. 25241 25242 * file.c (sys_truncate64, sys_ftruncate64, sys_getdents64): Define 25243 unconditionally. 25244 25245 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25246 25247 Define printflock64 only if it is referenced by other code. 25248 * configure.ac (AC_CHECK_TYPES): Add struct flock64. 25249 * desc.c (HAVE_F_SETLK64, HAVE_F_SETLKW64, HAVE_F_GETLK64): New macros. 25250 [!HAVE_STRUCT_FLOCK64] (struct flock64): Define. 25251 (printflock64): Define only if referenced by other code. 25252 (sys_fcntl): Handle F_FREESP64, F_SETLK64, F_SETLKW64, and F_GETLK64 iff 25253 these constants are defined and differ from their non-64bit versions. 25254 25255 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25256 25257 Make PTRACE_PEEKUSER/PTRACE_POKEUSER checks less glibc specific. 25258 * configure.ac (AC_CHECK_DECLS): Add PTRACE_PEEKUSER and 25259 PTRACE_POKEUSER. 25260 * defs.h: Define PTRACE_PEEKUSER and PTRACE_POKEUSER only if 25261 they are not provided by <sys/ptrace.h>. 25262 25263 Reported by John Spencer. 25264 25265 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25266 25267 Remove unneeded redefinitions of IPPROTO_* macros. 25268 IPPROTO_* macros are defined by <netinet/in.h>, no need to redefine 25269 them. 25270 25271 * net.c (IPPROTO_EGP, IPPROTO_PUP, IPPROTO_IDP, IPPROTO_IGMP, 25272 IPPROTO_RAW, IPPROTO_MAX): Remove. 25273 25274 Reported by John Spencer. 25275 25276 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25277 25278 Remove unused AC_OFF_T_IS_LONG_LONG configure check. 25279 * configure.ac: Remove AC_OFF_T_IS_LONG_LONG. 25280 * m4/long_long.m4: Likewise. 25281 25282 Remove unused code. 25283 * configure.ac (AC_CHECK_TYPES): Remove struct opthdr and 25284 struct t_opthdr. 25285 * net.c (print_sock_optmgmt): Remove. 25286 25287 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25288 25289 Use struct sigcontext instead of struct sigcontext_struct. 25290 * configure.ac (AC_CHECK_TYPES): Remove struct sigcontext_struct. 25291 * signal.c (sys_sigreturn) [S390 || S390X || POWERPC || ALPHA): Replace 25292 struct sigcontext_struct with struct sigcontext. 25293 25294 Reported by John Spencer. 25295 25296 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25297 25298 Use standard names of sched_param structure members. 25299 * process.c (sys_sched_setscheduler, sys_sched_getparam, 25300 sys_sched_setparam): Use portable struct sched_param member name 25301 sched_priority instead of glibc specific __sched_priority. 25302 25303 Reported by John Spencer. 25304 25305 2013-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 25306 25307 Make SIGEV_THREAD_ID decoding less glibc specific. 25308 SIGEV_THREAD_ID decoding requires access to an internal member of 25309 struct sigevent. There seems to be no portable way to do it besides 25310 adding a configure check. 25311 25312 * configure.ac (AC_CHECK_MEMBERS): Check for 25313 struct sigevent._sigev_un._pad and struct sigevent.__pad. 25314 * time.c (printsigevent): Use an appropriate struct sigevent member 25315 to print thread id. 25316 25317 Reported by John Spencer. 25318 25319 2013-11-11 Dmitry V. Levin <ldv (a] altlinux.org> 25320 25321 Remove unused configure checks. 25322 * configure.ac (AC_CHECK_MEMBERS): Remove T_conn_res.QUEUE_ptr, 25323 T_conn_res.ACCEPTOR_id, dqblk.dqb_curblocks, sigcontext.sc_hi2. 25324 25325 2013-11-11 Dmitry V. Levin <ldv (a] altlinux.org> 25326 25327 Assume "long long" availability. 25328 Most of the code already uses long long types unconditionally. 25329 25330 * configure.ac: Remove the check for long long. 25331 * file.c (printstat64): Remove HAVE_LONG_LONG checks, use %llu format 25332 string unconditionally. 25333 25334 2013-11-11 Dmitry V. Levin <ldv (a] altlinux.org> 25335 25336 Include <sys/poll.h> only if there is no <poll.h> 25337 * pathtrace.c: Do not include <sys/poll.h> if <poll.h> is available. 25338 * stream.c: Likewise. 25339 25340 Move io_* syscalls decoding to a separate file. 25341 * desc.c (sys_io_setup, sys_io_destroy, sys_io_submit, sys_io_cancel, 25342 sys_io_getevents, declarations from libaio.h): Move to ... 25343 * aio.c: new file. 25344 * Makefile.am (strace_SOURCES): Add aio.c. 25345 25346 2013-11-11 Denys Vlasenko <dvlasenk (a] redhat.com> 25347 25348 Stop using external libaio.h. 25349 This change incorporates a partial copy instead 25350 of using external libaio.h. 25351 Why? 25352 Because we want to properly decode 32-bit aio calls 25353 by 64-bit strace. For that, we need more definitions than 25354 libaio.h provides. 25355 (These defs are not done yet, but will eventually be done). 25356 Keeping our local 32-bit compat defs in sync with libaio.h 25357 _without seeing libaio structs_ is hard/more bug prone. 25358 A smaller benefit is that we don't need libaio installed. 25359 25360 2013-11-11 Denys Vlasenko <dvlasenk (a] redhat.com> 25361 25362 sys_io_submit: simplify iocb_cmd_lookup() helper. 25363 This helper returns two values (a string and an enum). 25364 The caller prints the string. It's simpler to just print 25365 the string in the caller itself. This eliminates 25366 "return by reference" and more importantly, an intermediate 25367 static string buffer for the string result. 25368 25369 Since function of the helper is different now, 25370 it is renamed to tprint_lio_opcode(). 25371 25372 2013-11-11 Denys Vlasenko <dvlasenk (a] redhat.com> 25373 25374 sys_io_submit: stop traversing iocb vector after first failure. 25375 The program may use a very large nr but supply either outright 25376 invalid iocbpp[], or one with far fewer elements than nr. 25377 We used to try reading iocbpp[i] until i == nr. 25378 With this change, we stop on the first failure. 25379 25380 2013-11-09 Denys Vlasenko <dvlasenk (a] redhat.com> 25381 25382 Fix pathtrace_match() to match recent fixes to select decoding. 25383 25384 Fix select decoding on e.g. 32-bit ppc process by 64-bit strace. 25385 Added next_set_bit() function which finds the next set bit, 25386 properly taking into account word size of the traced process. 25387 Use it in decode_select() instead of fd_isset(). 25388 Also, properly round fdsize up to word size of traced process, 25389 not to strace's word size. 25390 25391 2013-11-06 Denys Vlasenko <dvlasenk (a] redhat.com> 25392 25393 Speed up and explain fd_isset() 25394 25395 2013-11-05 Dr. David Alan Gilbert <dave (a] treblig.org> 25396 25397 Add a test for the latest select decoding fix. 25398 * test/select.c (main): Add a test for nfds larger than FD_SETSIZE. 25399 25400 2013-11-05 Dmitry V. Levin <ldv (a] altlinux.org> 25401 25402 Fix select decoding for glibc in _FORTIFY_SOURCE mode. 25403 glibc in _FORTIFY_SOURCE mode raises SIGABRT when descriptor greater 25404 or equal to FD_SETSIZE is passed to FD_ISSET. Select family syscalls, 25405 however, can legitimately accept such descriptors. To overcome this 25406 limitation, we have to replace FD_ISSET with an equivalent that imposes 25407 no such restrictions. 25408 25409 * desc.c (fd_isset): New function. 25410 (decode_select): Use it instead of FD_ISSET. 25411 25412 2013-11-05 Dmitry V. Levin <ldv (a] altlinux.org> 25413 25414 More select decoding fixes. 25415 * desc.c (decode_select): Actually print arg[0] as int on entering 25416 syscall. When arg[0] is negative, do not attempt to fetch and decode 25417 descriptor sets on entering syscall, kernel will reject it anyway. 25418 On exiting syscall, stop checking descriptor sets as soon as all 25419 returned descriptors are found. 25420 25421 2013-11-05 Denys Vlasenko <dvlasenk (a] redhat.com> 25422 25423 Truncate arg[0] to int in select decoding. 25424 This matches kernel's behavior. 25425 25426 test/select.c: make comment more understandable. 25427 25428 2013-11-05 Dr. David Alan Gilbert <dave (a] treblig.org> 25429 25430 Fix select decoding with bogus (huge or negative) nfds. 25431 We used to allocate and fetch bit arrays using a sanitized 25432 length, but then iterate over them with "j < arg[0]" condition, 25433 where arg[0] is not sanitized. This segfaults if arg[0] is huge 25434 or negative. This change fixes this. 25435 25436 Add test/select.c to capture the case. 25437 25438 2013-09-26 Ali Polatel <alip (a] exherbo.org> 25439 25440 Work around conflict between <sys/ptrace.h> and <linux/ptrace.h> 25441 Since glibc-2.18~39 <sys/ptrace.h> defines ptrace_peeksiginfo_args 25442 which collides with <linux/ptrace.h>. 25443 25444 * configure.ac: Check for `struct ptrace_peeksiginfo_args' in 25445 <sys/ptrace.h>. 25446 * process.c: Work around potential conflict between <sys/ptrace.h> 25447 and <linux/ptrace.h> by redefining ptrace_peeksiginfo_args. 25448 * signal.c: Likewise. 25449 * syscall.c: Likewise. 25450 * util.c: Likewise. 25451 25452 2013-09-11 Vineet Gupta <Vineet.Gupta1 (a] synopsys.com> 25453 25454 Add support for ARC Cores from Synopsys. 25455 Take #2 on mainlining strace support for ARC (last one was 4.6 based back 25456 in March 2011), see 25457 http://sourceforge.net/p/strace/mailman/message/27210168/ 25458 25459 The syscall ABI is asm-generic/unistd.h based (so no legacy syscalls), 25460 hence very similar to metag port. 25461 25462 test/* all seem to work well. 25463 25464 * linux/arc/ioctlent.h.in: New file. 25465 * linux/arc/syscallent.h: Likewise. 25466 * Makefile.am (EXTRA_DIST): Add linux/arc/ioctlent.h.in and 25467 linux/arc/syscallent.h. 25468 * configure.ac: Add ARC to the list of supported architectures. 25469 * defs.h: Add ARC support. 25470 * process.c (struct_user_offsets): Likewise. 25471 * signal.c (sys_sigreturn): Likewise. 25472 * syscall.c (print_pc, get_regset, get_regs, get_scno, get_syscall_args, 25473 get_syscall_result, get_error): Likewise. 25474 * util.c (change_syscall): Likewise. 25475 25476 Acked-by: Mike Frysinger <vapier (a] gentoo.org> 25477 25478 2013-09-11 William Manley <william.manley (a] youview.com> 25479 25480 Add support for decoding sync_file_range. 25481 * file.c (sync_file_range_flags): New xlat structure. 25482 (sys_sync_file_range, sys_sync_file_range2): New functions. 25483 * linux/syscall.h (sys_sync_file_range, sys_sync_file_range2): New 25484 prototypes. 25485 * linux/dummy.h (sys_sync_file_range, sys_sync_file_range2): Remove. 25486 * linux/mips/syscallent-o32.h: Set the number of sync_file_range 25487 arguments to 7. 25488 25489 2013-09-11 Mike Frysinger <vapier (a] gentoo.org> 25490 25491 fanotify_mark: fix number of args for 32bit arches. 25492 The fanotify_mark func takes a 64bit mask, so 32bit arches have to split 25493 it up into two fields. When the syscall was added, it was listed as only 25494 having 5 fields total (since that's correct for 64bit systems). 25495 25496 * linux/arm/syscallent.h: Set the number of fanotify_mark arguments to 6. 25497 * linux/bfin/syscallent.h: Likewise. 25498 * linux/hppa/syscallent.h: Likewise. 25499 * linux/i386/syscallent.h: Likewise. 25500 * linux/m68k/syscallent.h: Likewise. 25501 * linux/metag/syscallent.h: Likewise. 25502 * linux/microblaze/syscallent.h: Likewise. 25503 * linux/mips/syscallent-o32.h: Likewise. 25504 * linux/or1k/syscallent.h: Likewise. 25505 * linux/powerpc/syscallent.h: Likewise. 25506 * linux/s390/syscallent.h: Likewise. 25507 * linux/sh/syscallent.h: Likewise. 25508 * linux/sparc/syscallent.h: Likewise. 25509 * linux/tile/syscallent1.h: Likewise. 25510 25511 Acked-by: Chris Metcalf <cmetcalf (a] tilera.com> [for tile] 25512 25513 2013-09-11 Dmitry V. Levin <ldv (a] altlinux.org> 25514 25515 x86, x86_64: fix compilation warnings. 25516 Fix "dereferencing type-punned pointer will break strict-aliasing rules" 25517 warnings introduced by commit v4.8-52-gb51f364. 25518 25519 * signal.c (sys_sigreturn): Avoid dereferencing type-punned pointers. 25520 25521 2013-07-18 Denys Vlasenko <dvlasenk (a] redhat.com> 25522 25523 Remove rt parameter from [s]printsigmask() 25524 In almost all cases, the parameter was 1 ("decode RT sigs too"). 25525 This change hardwires it to be 1. 25526 25527 The cases where it was 0 are, and why the change to "decode RT sigs too" 25528 is fine: 25529 25530 IA64: 64-bit arch, all 64 signals fit in one word in any case. 25531 S390[x]: sc.oldmask is a sigset_t on kernel side, 25532 (sigset_t *)&sc.oldmask[0] does contain all 64 signals. 25533 TILE: uc.uc_sigmask is a sigset_t on kernel side, 25534 memcpy(&sigm, &uc.uc_sigmask, NSIG / 8) copies all 64 signals. 25535 25536 2013-07-18 Denys Vlasenko <dvlasenk (a] redhat.com> 25537 25538 Convert some uses of long_to_sigmask+printsigmask to sprintsigmask_long. 25539 This allows to drop long_to_sigmask function, 25540 and a whole bunch of sigset_t variables. 25541 25542 Simplify some sigmask manipulations. 25543 25544 Add compat support for sys_pselect6. 25545 25546 I386: fix signedness mismatch warning. 25547 &i386_regs.esp is a pointer to long, not unsigned long. 25548 It needs a cast. 25549 25550 2013-07-18 Denys Vlasenko <dvlasenk (a] redhat.com> 25551 25552 Fix sigset printing via print_sigset(). 25553 Replace print_sigset() with print_sigset_addr_len(), 25554 which takes not only addr, but also len parameter. 25555 This allows us to drop "do we need to print RT signals?" parameter, 25556 and this fixes RT signals printing in many syscalls. 25557 25558 sys_epoll_pwait: print RT signals too, print sigmask size argument. 25559 25560 sys_sigprocmask: print_sigset -> print_sigset_addr_len(current_wordsize), 25561 no change in functionality. 25562 25563 sys_sigpending: use print_sigset_addr_len(current_wordsize) 25564 instead of open-coding it. 25565 25566 sys_rt_sigprocmask: use print_sigset_addr_len instead of open-coding it. 25567 sys_rt_sigpending: ditto. 25568 sys_rt_sigsuspend: ditto. 25569 sys_rt_sigtimedwait: ditto. 25570 25571 do_signalfd: print_sigset -> print_sigset_addr_len. This fixes 25572 RT signals printing (wasn't showing them before). 25573 25574 sys_ppoll: ditto. 25575 25576 copy_sigset_len() is folded into its only user, print_sigset_addr_len(), 25577 and copy_sigset() is gone. 25578 25579 While at it, checked kernel sources and noted where kernel enforces 25580 sigset_size == NSIG / 8 (== sizeof(kernel_sigset_t)), 25581 and where it allows word-sized sigset_size ([rt_]sigpending). 25582 25583 2013-07-18 Denys Vlasenko <dvlasenk (a] redhat.com> 25584 25585 sys_rt_sigaction: fix sigset copying. 25586 In practice, we always copy as many bytes as syscall param says 25587 (8, or 16 on mips). However, malicious program can call sigaction 25588 with wrong sigset size. Such syscall will result in EINVAL, 25589 but we (strace) end up copying 128 bytes (sizeof(sigset_t)), 25590 which copyes some garbage from stack after struct sigaction. 25591 25592 Now we always copy NSIG / 8 bytes (which is 8 bytes, or 16 on mips). 25593 25594 2013-07-18 Denys Vlasenko <dvlasenk (a] redhat.com> 25595 25596 ARM: remove wrong NSIG = 32 define. 25597 ARM in fact has 64 signals (1..64), and NSIG should be 65 25598 (as usual, rememebr that NSIG_libc == NSIG_kernel+1). 25599 25600 I carefully reviewed all usages of NSIG. In syscall.c, 25601 the only usage is: 25602 for (i = 0; i <= NSIG; i++) 25603 if (strcasecmp(s, signame(i) + 3) == 0)... 25604 which is safe even if NSIG is way too big - signame(i) 25605 returns a well-formed string for any i. 25606 25607 In signal.c, memcpy(&sigset, &sc.sc_mask, NSIG / 8) is used by 25608 IA64 and TILE code, so ARM change can't affect it. And final 25609 usage is: 25610 struct new_sigaction::unsigned long sa_mask[NSIG / sizeof(long)]; 25611 It will grow on ARM (and become correct in the process). 25612 Its only use is 25613 memcpy(&sigset, &sa.sa_mask, NSIG / 8); 25614 printsigmask(&sigset, 1); 25615 which used to copy garbage in high bits, now it will copy actual data. 25616 25617 2013-07-17 Denys Vlasenko <dvlasenk (a] redhat.com> 25618 25619 ARM: fix sigreturn decoding. 25620 Decoding of test/sigreturn testcase: 25621 Was: 25622 sigreturn() (mask [QUIT TRAP ABRT BUS SEGV USR2 PIPE STKFLT STOP XCPU VTALRM PROF WINCH IO PWR RTMIN]) = 0 25623 Now: 25624 sigreturn() (mask [CHLD RT_1 RT_3 RT_31 RT_32]) = 0 25625 25626 2013-07-16 Denys Vlasenko <dvlasenk (a] redhat.com> 25627 25628 Group USE_CUSTOM_PRINTF define with other tweakables. 25629 No code changes. 25630 25631 2013-07-16 Denys Vlasenko <dvlasenk (a] redhat.com> 25632 25633 Improve sigreturn decoding on x86 to show RT signal bits too. 25634 This includes decoding of 32-bit sigreturn by 64-bit strace, 25635 which previously wasn't done. 25636 25637 Added a test for it. 25638 25639 2013-07-12 Anton Blanchard <anton (a] samba.org> 25640 25641 powerpc: enhance 32/64bit detection. 25642 We were using uname to determine if userspace was 32 or 64bit. 25643 This fails when we have a 64bit kernel and a 32bit userspace. 25644 25645 * configure.ac (powerpc*): Similar to x86, use a runtime test 25646 to determine if we are 32 or 64bit. 25647 25648 2013-07-12 Anton Blanchard <anton (a] samba.org> 25649 25650 powerpc: fix some compiler warnings. 25651 Fix a number of differing signedness warnings when building on 25652 powerpc. 25653 25654 powerpc: fix iflag build issue (static -> extern) 25655 25656 2013-07-10 Denys Vlasenko <dvlasenk (a] redhat.com> 25657 25658 PTRACE_SEIZE can set ptrace options immediately, use this feature. 25659 This eliminates some rare bugs, such as post-execve SIGTRAP 25660 generation when we attach to a process, and it manages to finish 25661 execve'ing before we set TRACEEXEC option to suppress that. 25662 25663 2013-07-08 Denys Vlasenko <dvlasenk (a] redhat.com> 25664 25665 If -o|logger is in use, exit trace loop if nprocs == 0. 25666 25667 Exit trace loop if got ECHILD, not if nprocs == 0. 25668 Comment gives a testcase which wasn't handled correctly 25669 by the old code. 25670 25671 2013-07-07 Denys Vlasenko <dvlasenk (a] redhat.com> 25672 25673 s390[x]: get rid of syscall_mode, delete code which never triggers. 25674 Before this change, the logic was as follows: 25675 syscall entry: 25676 get_scno: 25677 syscall_mode = GPR2 25678 scno = syscall_mode unless syscall_mode == -ENOSYS 25679 (if -ENOSYS, scn is retrieved by decoding current insn) 25680 fixup: 25681 gpr2 = GPR2 25682 syscall_mode = scno unless syscall_mode == -ENOSYS 25683 if (gpr2 != syscall_mode) stray_entry 25684 syscall exit: 25685 get_res: 25686 gpr2 = GRP2 25687 fixup: 25688 syscall_mode = scno unless syscall_mode == -ENOSYS 25689 if (WAITEXECVE && gpr2 in (-ENOSYS, scno)) gpr2 = 0; 25690 get_error: 25691 gpr2 is retval 25692 25693 Entry fixup's if() can never trigger: 25694 regardless whether GPR2 is -ENOSYS or not, syscall_mode is always 25695 equal to GRP2 value there. So it can be removed. 25696 25697 On sysexit path, syscall mode is never used. 25698 25699 Therefore, syscall_mode variable is deleted. grp2 is read from 25700 GPR2 register in get_scno, redundant read in entry fixup is removed. 25701 As a result, entry fixup's s390 code block vanishes completely. 25702 25703 gpr2 variable is renamed s390_gpr2 to match the convention used 25704 by other arches. 25705 25706 2013-07-04 Denys Vlasenko <dvlasenk (a] redhat.com> 25707 25708 ARM: add STRACE_KNOWS_ONLY_EABI define which can be used to omit OABI support 25709 25710 Add paranoia check before passing a long to pid2tcb(int pid) 25711 25712 2013-07-02 Denys Vlasenko <dvlasenk (a] redhat.com> 25713 25714 In debug output, show waitpid status with 6 hex digits, not 4. 25715 This shows event byte values better (without variable offset): 25716 25717 [wait(0x01057f) = 29491] WIFSTOPPED,sig=SIGTRAP,EVENT_FORK (1) 25718 [wait(0x80057f) = 29492] WIFSTOPPED,sig=SIGTRAP,EVENT_STOP (128) 25719 ^^ 25720 25721 2013-07-02 Denys Vlasenko <dvlasenk (a] redhat.com> 25722 25723 Replace suspicious popen_pid assignment with an obviously correct one. 25724 popen_pid = vfork() does work correctly, but for a subtle reason 25725 that wrong assignment of 0 happens in the child _first_, 25726 and _then_ correct value overwrites it in the parent. 25727 25728 (And in a hyphothetical system where vfork = fork, 25729 popen_pid wouldn't be shared, so it will also be ok.) 25730 25731 However, it's not necessary to be difficult. 25732 This change makes it so that assignment is done only in parent. 25733 25734 2013-07-01 Denys Vlasenko <dvlasenk (a] redhat.com> 25735 25736 Convert trace() from returning int to returning void. 25737 The cleanup sequence in error cases, and on normal code path 25738 was nearly the same, no point in duplicating it. 25739 25740 Remove ia64-specific printing of current address on signal delivery. 25741 The address is printed anyway by printleader() if -i is active. 25742 25743 Rename ia32 to ia64_ia32mode, and make it bool, not long. 25744 Grepping for just ia32 was turning up many false positives. 25745 25746 2013-06-30 Denys Vlasenko <dvlasenk (a] redhat.com> 25747 25748 Fold is_restart_error() into its sole user. 25749 25750 2013-06-29 Denys Vlasenko <dvlasenk (a] redhat.com> 25751 25752 Update qemu_multiarch_testing/README. 25753 25754 2013-06-28 Denys Vlasenko <dvlasenk (a] redhat.com> 25755 25756 sys_clone: add a comment about CLONE_PTRACE and CLONE_UNTRACED. 25757 No code changes. 25758 25759 POWERPC: get rid of "static long ppc_result" 25760 25761 POWERPC: read ppc_regs.nip if -i. 25762 25763 POWERPC: if GETREGS fails with EIO, don't try it again. 25764 25765 Get rid of powerpc_getreg(), it's a copy of upeek() 25766 25767 Change upeek() to take pid, not full tcp. 25768 This will be used by next change. 25769 25770 2013-06-26 Anton Blanchard <anton (a] samba.org> 25771 25772 powerpc: Provide a fallback for old kernels without PTRACE_GETREGS. 25773 PTRACE_GETREGS was added to the ppc kernel in 2.6.23. In order to 25774 provide backward compatibility for very old kernels, add a manual 25775 fallback. 25776 25777 * syscall.c (powerpc_getreg, powerpc_getregs_old): New functions. 25778 (get_regs): Call powerpc_getregs_old if PTRACE_GETREGS is not supported. 25779 25780 2013-06-26 Anton Blanchard <anton (a] samba.org> 25781 25782 powerpc: Use PTRACE_GETREGS to fetch all registers. 25783 * defs.h: declare ppc_regs and get_regs_error. 25784 * signal.c (sys_sigreturn): Use ppc_regs instead of upeek. 25785 * syscall.c: define ppc_regs. 25786 (printcall): Use ppc_regs instead of upeek. 25787 (get_scno): Replace multiple upeek calls with one PTRACE_GETREGS call. 25788 (get_syscall_result): Likewise. 25789 25790 2013-06-26 Denys Vlasenko <dvlasenk (a] redhat.com> 25791 25792 Another manpage tweak. 25793 25794 Manpage update. 25795 25796 Update build_static_example.sh. 25797 Now it also contains a tested example of i686 build on 64-bit host. 25798 25799 In -f mode, do not assume that new pid is stopped - handle exits too. 25800 25801 2013-06-26 Denys Vlasenko <dvlasenk (a] redhat.com> 25802 25803 Set strace_child only in the right branch. 25804 "strace_child = pid" assignment was racing in NOMMU case 25805 because of vfork (no way to know which process would win). 25806 25807 After this change, strace_child is set to nonzero only 25808 in one process after [v]fork. 25809 25810 2013-06-26 Denys Vlasenko <dvlasenk (a] redhat.com> 25811 25812 Get rid of TCB_INUSE and TCB_STRACE_CHILD. 25813 We can use tcb::pid == 0 as an indicator of free tcb, 25814 and we already have strace_child variable which holds 25815 pid of our child, if any. 25816 25817 2013-06-21 Denys Vlasenko <dvlasenk (a] redhat.com> 25818 25819 Fix debug output of wait4 result (was reusing buf[] on unknown events) 25820 25821 Show PTRACE_EVENT_STOP correctly in debug output. 25822 25823 2013-06-21 Denys Vlasenko <dvlasenk (a] redhat.com> 25824 25825 Panic a bit less when we see an unknown pid. 25826 I stumbeld over this case when I used "exec stace ...". 25827 25828 * strace.c (trace): Do not exit if we see an unknown pid in wait4. 25829 25830 2013-06-21 Denys Vlasenko <dvlasenk (a] redhat.com> 25831 25832 detach(): Reorganize code. Logic is the same. 25833 * strace.c (detach): Use goto's instead of excessive nesting. 25834 Drop sigstop_expected and interrupt_done variables. 25835 25836 Eat pending SIGSTOP _before_ PTRACE_DETACH in detach() 25837 * strace.c (detach): If TCB_IGNORE_ONE_SIGSTOP is set, 25838 di not PTRACE_DETACH - wait for SIGSTOP first. 25839 25840 2013-06-20 Denys Vlasenko <dvlasenk (a] redhat.com> 25841 25842 detach(): warn if we see ECHILD from waitpid. 25843 * strace.c (detach): Warn if we see ECHILD from waitpid. 25844 Explain in comments that we don't normally expect !WIFSTOPPED 25845 either, and also that PTRACE_CONT failure isn't expected 25846 (the "break" there is a "I'm confused, bailing out" code style).. 25847 25848 Improve error messages in detach() 25849 * strace.c (detach): Change return type from int to void. 25850 Improve error meesages: show PID, tell exactly which operation fails. 25851 25852 2013-06-20 Denys Vlasenko <dvlasenk (a] redhat.com> 25853 25854 Remove workarounds for ancient kernels lacking __WALL. 25855 __WALL is available and working at least since 2.4 kernels: 10 years ago. 25856 25857 * strace (detach): Remove workarounds for ancient kernels lacking __WALL. 25858 Add missing EINTR check. 25859 (trace): Remove workarounds for ancient kernels lacking __WALL. 25860 Remove redundant double error printout. 25861 25862 2013-06-20 Denys Vlasenko <dvlasenk (a] redhat.com> 25863 25864 USE_SEIZE: fix detaching from stopped processes. 25865 V3: split SEIZE/!SEIZE code paths to reduce confusion. 25866 Extensively comment every possible case. 25867 Verified that all tests/detach* tests work in both SEIZE and !SEIZE 25868 cases. 25869 25870 * strace.c (detach): If PTRACE_SEIZE API is in use, stop the tracee 25871 using PTRACE_INTERRUPT instead of sending it a SIGSTOP. 25872 In a subsequent waitpid loop, correctly wait and suppress SIGSTOP 25873 on detach if PTRACE_INTERRUPT wasn't used, or wait for any ptrace 25874 stop and detach without suppressing signals. 25875 25876 2013-06-19 Dmitry V. Levin <ldv (a] altlinux.org> 25877 25878 tests: disable /proc based checks when /proc is not mounted. 25879 * tests/detach-running: Disable /proc based checks when 25880 /proc/self/status is not available. 25881 * tests/detach-sleeping: Likewise. 25882 * tests/detach-stopped: Likewise. 25883 25884 2013-06-19 Denys Vlasenko <dvlasenk (a] redhat.com> 25885 25886 tests/detach-{running,sleeping,stopped}: check post-detach state. 25887 Check that traced process still exists and is in a right state 25888 after strace detached from it. 25889 25890 2013-06-19 Dmitry V. Levin <ldv (a] altlinux.org> 25891 25892 tests: ensure that strace can detach from running processes. 25893 * tests/detach-running: New test. 25894 * tests/Makefile.am (TESTS): Add it. 25895 25896 tests: ensure that strace does not leave sleeping processes stopped. 25897 * tests/detach-sleeping: Do not send SIGCONT to the sleeping process. 25898 25899 2013-06-18 Dmitry V. Levin <ldv (a] altlinux.org> 25900 25901 tests: fix parallel-tests support in detach-* tests. 25902 * tests/detach-sleeping: Use $LOG file for set_ptracer_any output. 25903 * tests/detach-stopped: Likewise. 25904 25905 tests: parametrize "sleep 1" 25906 * tests/init.sh (SLEEP_A_BIT): New variable. 25907 * tests/detach-sleeping: Use it. 25908 * tests/detach-stopped: Likewise. 25909 25910 tests: ensure that strace can detach from sleeping and stopped processes 25911 * tests/set_ptracer_any.c: New file. 25912 * tests/detach-sleeping: New test. 25913 * tests/detach-stopped: Likewise. 25914 * tests/Makefile.am (check_PROGRAMS): Add set_ptracer_any. 25915 (TESTS): Add detach-sleeping and detach-stopped. 25916 * tests/.gitignore: Add set_ptracer_any. 25917 25918 2013-06-18 Dmitry V. Levin <ldv (a] altlinux.org> 25919 25920 tests: enhance timeout checks. 25921 Run each test using a wrapper that does all necessary timeout checks. 25922 25923 * tests/run.sh: New file. 25924 * tests/Makefile.am (EXTRA_DIST, LOG_COMPILER): Add it. 25925 * tests/init.sh (check_strace, check_timeout): Remove. 25926 * tests/detach-stopped: Update callers. 25927 * tests/net: Likewise. 25928 * tests/ptrace_setoptions: Likewise. 25929 * tests/qual_syscall: Likewise. 25930 * tests/stat: Likewise. 25931 * tests/strace-f: Likewise. 25932 25933 2013-06-18 Dmitry V. Levin <ldv (a] altlinux.org> 25934 25935 tests: enable parallel-tests support. 25936 * configure.ac (AM_INIT_AUTOMAKE): Add parallel-tests. 25937 25938 tests: prepare for parallel-tests support. 25939 * tests/Makefile.am (CLEANFILES): Calculate dynamically from TESTS. 25940 * tests/init.sh (LOG): New variable. 25941 * tests/detach-stopped: Use it. 25942 * tests/net: Likewise. 25943 * tests/qual_syscall: Likewise. 25944 * tests/stat: Likewise. 25945 * tests/strace-f: Likewise. 25946 25947 2013-06-18 Denys Vlasenko <dvlasenk (a] redhat.com> 25948 25949 Cleanups. No logic changes. 25950 * defs.h: Define new ptrace constants unconditionally. 25951 * strace.c (detach): Fix comment. 25952 (trace): Remove now unnecessary "if USE_SEIZE". 25953 25954 2013-06-05 Dmitry V. Levin <ldv (a] altlinux.org> 25955 25956 maint: post-release administrivia. 25957 * NEWS: Add header line for next release. 25958 25959 2013-06-03 Dmitry V. Levin <ldv (a] altlinux.org> 25960 25961 ioctlent: add UAPI support. 25962 * Makefile.am (IOCTLSORT_INCLUDEDIR): Define. 25963 (ioctlsort): Use it. 25964 * linux/ioctlent.sh (lookup_ioctls): Look into uapi directory tree. 25965 Strip "uapi/" prefix from output path names. 25966 * linux/ioctlent.h.in: Regenerate from v3.9 headers. 25967 * NEWS: Mention it. 25968 25969 Prepare for 4.8 release. 25970 * NEWS: Update for 4.8 release. 25971 * debian/changelog: 4.8-1. 25972 * strace.spec: 4.8-1. 25973 25974 2013-06-02 Dmitry V. Levin <ldv (a] altlinux.org> 25975 25976 Fix "make dist" on recently added architectures. 25977 * Makefile.am (EXTRA_DIST): Add linux/aarch64/errnoent1.h, 25978 linux/aarch64/ioctlent.h.in, linux/aarch64/ioctlent1.h, 25979 linux/aarch64/signalent1.h, linux/aarch64/syscallent.h, 25980 linux/aarch64/syscallent1.h, linux/metag/ioctlent.h.in, 25981 linux/metag/syscallent.h, linux/or1k/ioctlent.h.in, 25982 linux/or1k/syscallent.h, linux/tile/errnoent1.h, linux/tile/ioctlent1.h, 25983 linux/tile/signalent1.h, linux/tile/syscallent1.h, linux/ubi-user.h, 25984 linux/xtensa/ioctlent.h.in, and linux/xtensa/syscallent.h. 25985 25986 Fix "make dist" regression introduced by commit v4.7-184-gd648f29. 25987 * Makefile.am (EXTRA_DIST): Add linux/ubi-user.h. 25988 25989 2013-05-28 Dmitry V. Levin <ldv (a] altlinux.org> 25990 25991 Do not suppress signal delivery messages with -qq. 25992 Current implementation of -qq does not allow suppressing exit status 25993 messages without suppressing signal delivery messages, which is not 25994 good. There is a traditional "-e signal=none" syntax that can be used 25995 to suppress all signal delivery messages. 25996 This partially reverts commit v4.7-222-g01997cf. 25997 25998 * strace.c (trace): Do not suppress signal delivery messages with -qq. 25999 * strace.1: Update documentation about -qq option. 26000 26001 2013-05-23 Chris Metcalf <cmetcalf (a] tilera.com> 26002 26003 tile: use siginfo_t, not struct siginfo. 26004 As of glibc 2.16, "struct siginfo" is no longer supported, 26005 and "siginfo_t" must be used instead. 26006 26007 tile: remove MAP_CACHE_xxx support in mem.c. 26008 These flags support functionality in mmap() that has not been 26009 pushed back to the community, and which may or may not eventually 26010 end up being the final community model. In the interim, having 26011 these flags unconditionally present for "#ifdef TILE" just means 26012 that the TILE build breaks if using the community versions of 26013 the kernel and glibc, so just revert the code until such time 26014 as it may end up in the community. 26015 26016 2013-05-17 Mike Frysinger <vapier (a] gentoo.org> 26017 26018 Rename COPYRIGHT to COPYING. 26019 The standard name people have adopted is "COPYING" rather than 26020 "COPYRIGHT". Use that as a lot of license scanning tools look for it. 26021 26022 * COPYRIGHT: Rename to ... 26023 * COPYING: ... this. 26024 * Makefile.am (EXTRA_DIST): Rename COPYRIGHT to COPYING. 26025 * README: Likewise. 26026 * strace.spec (%files): Likewise. 26027 26028 2013-05-17 Dmitry V. Levin <ldv (a] altlinux.org> 26029 26030 Sync strace.spec and debian/ with packages. 26031 * debian/changelog: Sync with 4.7-1. 26032 * debian/strace.docs: Likewise. 26033 * strace.spec: Sync with 4.7-3. 26034 26035 Update PTRACE_O_* constants. 26036 * process.c (ptrace_setoptions_flags): Sync with Linux 3.9. 26037 26038 Update AF_*, PF_*, MSG_*, and TCP_* constants. 26039 * net.c (domains, addrfams, protocols, socktcpoptions): Sync with 26040 Linux 3.9. 26041 26042 2013-05-14 Dmitry V. Levin <ldv (a] altlinux.org> 26043 26044 NOMMU: do not hide startup syscalls unless in -D mode. 26045 On NOMMU systems in "strace PROG" case, we have no way to attach to 26046 the tracee before it calls execve unless in -D mode. That is, the 26047 first execve call is very likely to be missed, and setting 26048 hide_log_until_execve just results to empty log. 26049 26050 * strace.c (init) [NOMMU_SYSTEM]: Do not set hide_log_until_execve 26051 unless in -D mode. 26052 26053 2013-05-14 Dmitry V. Levin <ldv (a] altlinux.org> 26054 26055 Make -D mode work when the Yama LSM is enabled. 26056 * strace.c [HAVE_PRCTL]: Include sys/prctl.h. 26057 (startup_child) [HAVE_PRCTL && PR_SET_PTRACER && PR_SET_PTRACER_ANY]: 26058 In -D mode, allow tracing the process that is going to become the 26059 tracee. 26060 26061 Update PR_* constants. 26062 * process.c (prctl_options): Add PR_SET_PTRACER. 26063 26064 2013-05-14 Denys Vlasenko <dvlasenk (a] redhat.com> 26065 26066 Hide startup syscalls. 26067 Tested with "./strace [-D] [-q] [-bexecve] env true", 26068 all cases seem to work. 26069 26070 * defs.h: Declare new variable: bool hide_log_until_execve. 26071 * strace.c: Define hide_log_until_execve. 26072 Rename skip_startup_execve to skip_one_b_execve. 26073 (startup_child): Do not set skip_one_b_execve = 1 here. 26074 (init): If "strace PROG" case (as opposed to "strace -pPID"), 26075 set skip_one_b_execve and hide_log_until_execve to 1. 26076 (trace): Don't print signal messages if hide_log_until_execve == 1. 26077 * syscall.c (trace_syscall_entering): 26078 Skip syscall printing if hide_log_until_execve == 1. 26079 Reset hide_log_until_execve if we enter execve syscall. 26080 (trace_syscall_exiting): Skip syscall printing if hide_log_until_execve == 1. 26081 26082 2013-05-13 Daniel P. Berrange <berrange (a] redhat.com> 26083 26084 Allow -q to be repeated for very quiet output. 26085 Even with the -q flag specified, tracing output is still mixed 26086 with messages about signals and process exit status, which is 26087 often irrelevant. Allow the -q option to be repeated to force 26088 the suppression of signals / exit status info too. 26089 26090 * defs.h: Change 'qflag' from 'bool' to 'unsigned int'. 26091 * strace.1: Document ability to repeat '-q' option. 26092 * strace.c: Allow '-q' to be repeated to quieten process 26093 exit status and signal messages. 26094 26095 2013-05-11 Dmitry V. Levin <ldv (a] altlinux.org> 26096 26097 mips o32: fix syscall table. 26098 * linux/mips/syscallent-o32.h: Add entries for getpmsg, putpmsg, 26099 get_mempolicy, set_mempolicy and vserver. Fix names for umount, 26100 umount2, mmap, mmap2, pread64, pwrite64, sigaltstack and fstatat64 26101 syscalls. 26102 26103 2013-05-10 Dmitry V. Levin <ldv (a] altlinux.org> 26104 26105 mips n64: fix syscall table. 26106 * linux/mips/syscallent-n64.h: Add entries for get_mempolicy, 26107 set_mempolicy and timerfd syscalls. Fix entry for socket syscall. 26108 Fix names for pread64, pwrite64, shmat, rt_sigsuspend, sigaltstack 26109 and umount2 syscalls. 26110 26111 mips n32: fix syscall table. 26112 * linux/mips/syscallent-n32.h: Add entries for mbind, get_mempolicy, 26113 set_mempolicy and timerfd syscalls. Fix entry for socket syscall. 26114 Fix handlers for truncate, ftruncate and getdents64 syscalls. 26115 Fix names for pread64, pwrite64, shmat, rt_sigsuspend, sigaltstack, 26116 umount2, and getdents64 syscalls. 26117 26118 2013-05-08 Dmitry V. Levin <ldv (a] altlinux.org> 26119 26120 sync_file_range: fix number of syscall arguments. 26121 * linux/avr32/syscallent.h: Set the number of sync_file_range arguments 26122 to 6. 26123 * linux/bfin/syscallent.h: Likewise. 26124 * linux/hppa/syscallent.h: Likewise. 26125 * linux/i386/syscallent.h: Likewise. 26126 * linux/m68k/syscallent.h: Likewise. 26127 * linux/microblaze/syscallent.h: Likewise. 26128 * linux/mips/syscallent-o32.h: Likewise. 26129 * linux/or1k/syscallent.h: Likewise. 26130 * linux/s390/syscallent.h: Likewise. 26131 * linux/sh/syscallent.h: Likewise. 26132 * linux/powerpc/syscallent.h: Change sync_file_range to 26133 sync_file_range2, set the number of sync_file_range2 arguments to 6. 26134 * linux/tile/syscallent.h: Change sync_file_range to sync_file_range2, 26135 set the number of sync_file_range2 arguments to 4. 26136 * linux/tile/syscallent1.h: Change sync_file_range to sync_file_range2. 26137 update handler. 26138 * linux/xtensa/syscallent.h: Likewise. 26139 26140 Add syscall entries for new linux syscalls. 26141 * linux/dummy.h: Add printargs aliases for sys_finit_module, sys_kcmp 26142 and sys_sync_file_range2. 26143 * linux/alpha/syscallent.h: Add entries for process_vm_readv 26144 and process_vm_writev. 26145 * linux/bfin/syscallent.h: Likewise. 26146 * linux/arm/syscallent.h: Add entries for sync_file_range2, kcmp 26147 and finit_module. 26148 * linux/hppa/syscallent.h: Add entries for process_vm_readv, 26149 process_vm_writev, kcmp and finit_module. 26150 * linux/tile/syscallent.h: Likewise. 26151 * linux/tile/syscallent1.h: Likewise. 26152 * linux/ia64/syscallent.h: Add entry for finit_module. 26153 * linux/i386/syscallent.h: Add entries for kcmp and finit_module. 26154 * linux/m68k/syscallent.h: Likewise. 26155 * linux/metag/syscallent.h: Likewise. 26156 * linux/microblaze/syscallent.h: Likewise. 26157 * linux/mips/syscallent-n32.h: Likewise. 26158 * linux/mips/syscallent-n64.h: Likewise. 26159 * linux/mips/syscallent-o32.h: Likewise. 26160 * linux/or1k/syscallent.h: Likewise. 26161 * linux/powerpc/syscallent.h: Likewise. 26162 * linux/sh/syscallent.h: Likewise. 26163 * linux/sh64/syscallent.h: Likewise. 26164 * linux/x32/syscallent.h: Likewise. 26165 * linux/x86_64/syscallent.h: Likewise. 26166 * linux/xtensa/syscallent.h: Likewise. 26167 * linux/s390/syscallent.h: Add entries for s390_runtime_instr, kcmp 26168 and finit_module. 26169 * linux/s390x/syscallent.h: Likewise. 26170 * linux/sparc/syscallent.h: Add entries for kern_features, kcmp 26171 and finit_module. 26172 26173 tests/net: fix portability issues. 26174 * tests/net-accept-connect.c: Fix address length passed to bind() 26175 and connect(). 26176 * tests/net: Update regexps. 26177 26178 tests: add a test for basic network syscalls. 26179 * tests/.gitignore: Add net-accept-connect, *.o and *.log.*. 26180 * tests/Makefile.am (AM_CFLAGS): New variable. 26181 (check_PROGRAMS): Add net-accept-connect. 26182 (TESTS): Add net. 26183 * tests/net-accept-connect.c: New file. 26184 * tests/net: New file. 26185 26186 tests: do not skip tests when timeout utility is not available. 26187 * tests/init.sh (check_timeout): New function. 26188 * tests/ptrace_setoptions: Use it. 26189 * tests/qual_syscall: Likewise. 26190 * tests/stat: Likewise. 26191 * tests/strace-f: Likewise. 26192 26193 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26194 26195 Move subcall decoding configuration out of the common code. 26196 * Makefile.am (EXTRA_DIST): Add linux/subcall.h. 26197 * linux/syscall.h (SYS_socket_subcall): Remove. 26198 (SYS_socket_nsubcalls, SYS_ipc_subcall, SYS_ipc_nsubcalls): Move to ... 26199 * linux/subcall.h: ... new file. 26200 * linux/arm/syscallent.h: Define SYS_socket_subcall, include subcall.h. 26201 * linux/i386/syscallent.h: Likewise. 26202 * linux/m68k/syscallent.h: Likewise. 26203 * linux/powerpc/syscallent.h: Likewise. 26204 * linux/s390/syscallent.h: Likewise. 26205 * linux/s390x/syscallent.h: Likewise. 26206 * linux/sh/syscallent.h: Likewise. 26207 * linux/sh64/syscallent.h: Likewise. 26208 * linux/sparc/syscallent.h: Likewise. 26209 26210 Suggested by Mike Frysinger and Chris Metcalf. 26211 26212 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26213 26214 sparc: remove some unused declarations and macros. 26215 * linux/syscall.h [SPARC || SPARC64] (sys_msgsys, sys_semsys, 26216 sys_shmsys): Remove declarations. 26217 [SPARC || SPARC64] (SYS_semsys_subcall, SYS_semsys_nsubcalls, 26218 SYS_msgsys_subcall, SYS_msgsys_nsubcalls, SYS_shmsys_subcall, 26219 SYS_shmsys_nsubcalls): Remove macros. 26220 26221 2013-05-07 Mike Frysinger <vapier (a] gentoo.org> 26222 26223 mips: fix build regression. 26224 The recent commit (2690fadc8b35190dddd29274a7405bac13adc469) shuffled 26225 the mips headers around causing it to check the ABI defines before it 26226 included the header which set those up. Now all mips builds fail with: 26227 In file included from count.c:36:0: 26228 defs.h:48:4: error: #error Unsupported _MIPS_SIM 26229 26230 * defs.h [MIPS]: Move sgidefs.h above _MIPS_SIM check. 26231 26232 2013-05-07 James Hogan <james.hogan (a] imgtec.com> 26233 26234 metag: rename llseek syscall to _llseek. 26235 The raw llseek syscall is called _llseek from userland, so fix the 26236 naming of it for metag to allow the stat test to pass. 26237 26238 * linux/metag/syscallent.h: Rename llseek syscall to _llseek. 26239 26240 2013-05-07 James Hogan <james.hogan (a] imgtec.com> 26241 26242 metag: disable socket and ipc subcall support. 26243 The metag architecture also uses dedicated syscalls and doesn't need to 26244 multiplex ipc and socket subcalls. 26245 26246 * linux/syscall.h [METAG]: Do not define SYS_socket_subcall and 26247 SYS_ipc_subcall. 26248 26249 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26250 26251 pread, pwrite: fix number of syscall arguments. 26252 The number of pread and pwrite arguments depends on architecture and 26253 personality. For 64bit and ilp32 it equals to 4, for unaligned 26254 32bit it equals to 5, and for aligned 32bit it equals to 6. 26255 26256 * linux/aarch64/syscallent1.h: Change the number of pread and pwrite 26257 arguments to 4. 26258 * linux/alpha/syscallent.h: Likewise. 26259 * linux/mips/syscallent-n32.h: Likewise. 26260 * linux/mips/syscallent-n64.h: Likewise. 26261 * linux/s390x/syscallent.h: Likewise. 26262 * linux/sh64/syscallent.h: Likewise. 26263 * linux/tile/syscallent.h: Likewise. 26264 * linux/x32/syscallent.h: Likewise. 26265 * linux/x86_64/syscallent.h: Likewise. 26266 * linux/or1k/syscallent.h: Change the number of pread and pwrite 26267 arguments to 5. 26268 26269 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26270 26271 preadv, pwritev: fix number of syscall arguments. 26272 The number of preadv and pwritev arguments depends on architecture and 26273 personality. For 64bit and ilp32 it equals to 4, for unaligned 32bit 26274 it equals to 5, and for aligned 32bit it equals to 6. 26275 26276 * linux/aarch64/syscallent1.h: Change the number of preadv and pwritev 26277 arguments to 4. 26278 * linux/alpha/syscallent.h: Likewise. 26279 * linux/ia64/syscallent.h: Likewise. 26280 * linux/mips/syscallent-n32.h: Likewise. 26281 * linux/mips/syscallent-n64.h: Likewise. 26282 * linux/s390x/syscallent.h: Likewise. 26283 * linux/sh64/syscallent.h: Likewise. 26284 * linux/tile/syscallent.h: Likewise. 26285 * linux/x32/syscallent.h: Likewise. 26286 * linux/x86_64/syscallent.h: Likewise. 26287 * linux/powerpc/syscallent.h: Change the number of preadv and pwritev 26288 arguments to 6. 26289 * linux/sh/syscallent.h: Likewise. 26290 * linux/xtensa/syscallent.h: Likewise. 26291 26292 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26293 26294 ftruncate64, truncate64: fix number of syscall arguments. 26295 The number of ftruncate64/truncate64 arguments depends on architecture 26296 and personality. For 64bit and ilp32 it equals to 2, for unaligned 26297 32bit it equals to 3, and for aligned 32bit it equals to 4. 26298 26299 * linux/or1k/syscallent.h: Change the number of ftruncate64 and 26300 truncate64 arguments to 3. 26301 * linux/sh/syscallent.h: Likewise. 26302 * linux/sh64/syscallent.h: Change ftruncate64 and truncate64 handlers. 26303 * linux/sparc/syscallent.h: Change ftruncate64 handler, change the 26304 number of its arguments to 3. 26305 * linux/xtensa/syscallent.h: Change the number of ftruncate64 and 26306 truncate64 arguments to 4. 26307 26308 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26309 26310 fallocate: fix number of syscall arguments. 26311 The number of fallocate arguments depends on architecture and 26312 personality. For 64bit and ilp32 it equals to 4, 26313 for 32bit it equals to 6. 26314 26315 * linux/aarch64/syscallent1.h: Change the number of fallocate arguments 26316 to 4. 26317 * linux/alpha/syscallent.h: Likewise. 26318 * linux/mips/syscallent-n32.h: Likewise. 26319 * linux/mips/syscallent-n64.h: Likewise. 26320 * linux/s390x/syscallent.h: Likewise. 26321 * linux/sh64/syscallent.h: Likewise. 26322 * linux/tile/syscallent.h: Likewise. 26323 * linux/x32/syscallent.h: Likewise. 26324 * linux/x86_64/syscallent.h: Likewise. 26325 * linux/microblaze/syscallent.h: Set fallocate handler and flags. 26326 26327 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26328 26329 fadvise64, fadvise64_64: fix handlers and number of syscall arguments. 26330 The number of fadvise64 arguments depends on architecture and 26331 personality. For 64bit and ilp32 it equals to 4, for unaligned 26332 32bit it equals to 5, and for aligned 32bit it equals to 6. 26333 26334 The number of fadvise64_64 arguments is 4 for 64bit and ilp32, for 26335 unaligned 32bit and most of aligned 32bit it equals to 6, and for 26336 mips o32 it equals to 7. 26337 26338 * linux/alpha/syscallent.h: Set fadvise64 handler. 26339 * linux/s390/syscallent.h: Likewise. 26340 * linux/hppa/syscallent.h: Set fadvise64_64 handler, change the number 26341 of syscall arguments to 6. 26342 * linux/ia64/syscallent.h: Change the number of fadvise64 arguments 26343 to 4. 26344 * linux/mips/syscallent-n32.h: Likewise. 26345 * linux/tile/syscallent1.h: Change the number of fadvise64 arguments 26346 to 5. 26347 * linux/mips/syscallent-o32.h: Change the number of fadvise64_64 26348 arguments to 7. 26349 * linux/s390x/syscallent.h: Change fadvise64_64 handler. Set fadvise64 26350 handler. Change numbers of fadvise64 and fadvise64_64 arguments to 4. 26351 * linux/sh64/syscallent.h: Change fadvise64_64 handler. 26352 Change numbers of fadvise64 and fadvise64_64 arguments to 4. 26353 * linux/sparc/syscallent.h: Set fadvise64 and fadvise64_64 handlers, 26354 change numbers of their arguments to 5 and 6. 26355 * linux/x86_64/syscallent.h: Change fadvise64 handler. 26356 26357 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26358 26359 mips o32: raise the max number of syscall arguments to 7. 26360 On mips o32, fadvise64_64 takes 7 arguments. 26361 26362 * defs.h [LINUX_MIPSO32]: Raise MAX_ARGS to 7. 26363 26364 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26365 26366 mips: split syscallent.h. 26367 linux/mips/syscallent.h consisted of several parts that had little in 26368 common. Split them into separate files to ease maintenance. 26369 26370 * linux/mips/syscallent-compat.h: New file. 26371 * linux/mips/syscallent-n32.h: Likewise. 26372 * linux/mips/syscallent-n64.h: Likewise. 26373 * linux/mips/syscallent-o32.h: Likewise. 26374 * linux/mips/syscallent.h: Include them. 26375 * Makefile.am (EXTRA_DIST): Add them. 26376 26377 2013-05-07 Dmitry V. Levin <ldv (a] altlinux.org> 26378 26379 readahead: fix number of syscall arguments. 26380 The number of readahead arguments depends on architecture and 26381 personality. For 64bit and ilp32 it equals to 3, for unaligned 32bit it 26382 equals to 4, and for aligned 32bit it equals to 5. 26383 26384 * linux/aarch64/syscallent1.h: Set number of readahead arguments to 3. 26385 * linux/alpha/syscallent.h: Likewise. 26386 * linux/ia64/syscallent.h: Likewise. 26387 * linux/s390x/syscallent.h: Likewise. 26388 * linux/sh64/syscallent.h: Likewise. 26389 * linux/x32/syscallent.h: Likewise. 26390 * linux/x86_64/syscallent.h: Likewise. 26391 * linux/or1k/syscallent.h: Set number of readahead arguments to 4. 26392 * linux/sh/syscallent.h: Likewise. 26393 * linux/tile/syscallent.h: Likewise. 26394 * linux/xtensa/syscallent.h: Set number of readahead arguments to 5. 26395 26396 2013-05-06 Dmitry V. Levin <ldv (a] altlinux.org> 26397 26398 linux/syscall.h: make subcall decoding configuration more readable. 26399 * linux/syscall.h: Inverse and sort the subcall ifdef, 26400 add a comment why subcall decoding support is not enabled 26401 on some architectures. 26402 26403 2013-05-06 Chris Zankel <chris (a] zankel.net> 26404 26405 xtensa: disable socket and ipc subcall support. 26406 The Xtensa architecture also uses dedicated syscalls and doesn't 26407 need to multiplex ipc and socket subcalls. 26408 26409 * linux/syscall.h [XTENSA]: Do not define SYS_socket_subcall and 26410 SYS_ipc_subcall. 26411 26412 2013-05-06 Dmitry V. Levin <ldv (a] altlinux.org> 26413 26414 Fix syscall flags. 26415 * linux/aarch64/syscallent1.h: Fix syscall flags for send. 26416 * linux/alpha/syscallent.h: Fix syscall flags for fchdir, getcwd, 26417 oldumount, sigaltstack, umount, uselib, and utimes. 26418 * linux/arm/syscallent.h: Fix syscall flags for close, creat, dup, dup2, 26419 fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, fdatasync, flock, 26420 fsetxattr, fsync, getdents, getdents64, ioctl, oldfstat, oldselect, 26421 open, pipe, poll, pread, pwrite, read, readahead, readdir, readv, 26422 select, socketcall, write, and writev. 26423 * linux/avr32/syscallent.h: Fix syscall flags for inotify_init and 26424 unshare. 26425 * linux/bfin/syscallent.h: Fix syscall flags for pread64 and pwrite64. 26426 * linux/hppa/syscallent.h: Fix syscall flags for fchdir, flistxattr, 26427 getcwd, pause, signal, umount2, uselib, utime, and vfork. 26428 * linux/ia64/syscallent.h: Fix syscall flags for creat, fchdir, 26429 lstat, umount, uselib, and utimes. Fix syscall handlers for 26430 fgetxattr, flistxattr, fremovexattr, and fsetxattr. 26431 * linux/m68k/syscallent.h: Fix syscall flags for close, creat, dup, 26432 dup2, fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, fdatasync, 26433 flock, fsetxattr, getdents, ioctl, oldfstat, oldselect, open, pipe, 26434 poll, pread64, pwrite64, read, readahead, readdir, readv, select, 26435 socketcall, write, and writev. 26436 * linux/metag/syscallent.h: Fix syscall flags for fanotify_init, 26437 prlimit64, process_vm_readv, process_vm_writev, and quotactl. 26438 * linux/microblaze/syscallent.h: Fix syscall flags for close, creat, 26439 dup, dup2, fchdir, fchmod, fchown, fchown32, fcntl, fcntl64, 26440 fdatasync, flock, fsetxattr, getdents, ioctl, oldfstat, oldselect, 26441 open, perf_event_open, pipe, poll, pread64, pwrite64, read, readahead, 26442 readdir, readv, select, socketcall, write, and writev. 26443 * linux/mips/syscallent.h: Fix syscall flags for close, creat, dup, 26444 dup2, fchdir, fchmod, fchown, fcntl, fcntl64, fdatasync, flock, 26445 fsetxattr, getdents, getdents64, getxattr, ioctl, lgetxattr, 26446 listxattr, llistxattr, lremovexattr, lsetxattr, oldfstat, open, pipe, 26447 pivot_root, poll, pread, pwrite, read, readahead, readv, removexattr, 26448 select, setxattr, socketcall, statfs, write, and writev. 26449 * linux/or1k/syscallent.h: Fix syscall flags for fchdir and quotactl. 26450 * linux/powerpc/syscallent.h: Fix syscall flags for fchdir. 26451 * linux/sh/syscallent.h: Fix syscall flags for getcwd. 26452 * linux/sparc/syscallent.h: Fix syscall flags for getresgid, getresuid, 26453 setresgid, setresgid32, and setresuid. 26454 * linux/xtensa/syscallent.h: Fix syscall flags for close, creat, dup, 26455 dup2, fallocate, fchdir, fchmod, fchown, fcntl, fcntl64, fdatasync, 26456 flock, fsetxattr, fstatfs, fstatfs64, fsync, getdents, getdents64, 26457 ioctl, open, pipe, pivot_root, poll, pread64, pwrite64, read, 26458 readahead, readv, rt_sigreturn, select, setfsgid, setfsuid, setuid, 26459 swapoff, times, utime, write, and writev. 26460 26461 tests/stat: enhance regexps. 26462 * tests/stat: Enhance regexps that check tracing of stat/stat64 and 26463 fstatat/fstatat64 syscalls. 26464 26465 2013-05-06 Chris Metcalf <cmetcalf (a] tilera.com> 26466 26467 tests/stat: support fstatat syscall for stat() 26468 Newer Linux architectures don't support the stat/stat64 syscalls. 26469 Instead they use fstatat() with AT_FDCWD and an extra flags argument. 26470 Support seeing this output in the 'strace -efile' test. 26471 26472 As part of this change, use "grep -E -x" syntax consistently for 26473 all stat tests, since the number of \(foo\)\? expressions was becoming 26474 pretty unwieldy. 26475 26476 * tests/stat: Update stat/stat64 check regexp to handle architectures 26477 that use fstatat instead. Use "grep -E -x" syntax consistently. 26478 26479 2013-05-06 Dmitry V. Levin <ldv (a] altlinux.org> 26480 26481 ARM OABI: fix 64-bit arguments decoding. 26482 ARM OABI and ARM EABI have different function parameters passing rules, 26483 see commit v4.6-11-g7a5b08f for details. 26484 26485 * util.c (printllval): Do not align argument number in case of ARM OABI. 26486 * file.c (sys_fadvise64_64): Likewise. 26487 26488 2013-05-06 Mike Frysinger <vapier (a] gentoo.org> 26489 26490 printllval: fix 64bit unpacking on mips/o32 and xtensa. 26491 The mips/o32 ABI and xtensa arch also do 64bit aligning, so add it to the 26492 printllval list for this. 26493 26494 Normally for sys_fadvise64_64 we'd handle the same list of arches, but 26495 mips/o32 ABI is funky and doesn't shift -- it has 7 args. So just add 26496 xtensa to it. 26497 26498 * file.c (sys_fadvise64_64): Add XTENSA to the shifted list. 26499 * util.c (printllval): Add LINUX_MIPSO32 and XTENSA to the shifted list. 26500 26501 2013-05-06 Chris Metcalf <cmetcalf (a] tilera.com> 26502 26503 tile: disable socket and ipc subcall support. 26504 The tile arch just has the dedicated syscalls, so disable 26505 the logic for parsing subcalls. 26506 26507 * linux/syscall.h [TILE]: Do not define SYS_socket_subcall and 26508 SYS_ipc_subcall. 26509 26510 2013-05-06 Mike Frysinger <vapier (a] gentoo.org> 26511 26512 Blackfin: disable socketcall and ipc subcall support. 26513 The Blackfin arch does not have a socketcall or ipc subcall 26514 (it has dedicated syscalls broken out), so disable the logic for it. 26515 26516 * linux/syscall.h [BFIN]: Do not define SYS_socket_subcall and 26517 SYS_ipc_subcall. 26518 26519 2013-05-05 Mike Frysinger <vapier (a] gentoo.org> 26520 26521 s390: fix # of args truncate64/ftruncate64 takes. 26522 * linux/s390/syscallent.h: Change nargs to 3 for truncate64/ftruncate64. 26523 26524 2013-05-05 Mike Frysinger <vapier (a] gentoo.org> 26525 26526 mtd: clamp ubi name strings. 26527 Since the length fields with the ubi volnames are signed 16bit values, 26528 make sure we clamp that number to the size of the buffer we've allocated 26529 on the stack to prevent buffer overflows. 26530 26531 * mtd.c (ubi_ioctl): Clamp length to string_quote to 0/UBI_MAX_VOLUME_NAME. 26532 Check the return of string_quote and tweak the output accordingly. 26533 26534 2013-05-04 Dmitry V. Levin <ldv (a] altlinux.org> 26535 26536 printxval: support more architectures. 26537 * configure.ac: Define SIZEOF_LONG_LONG. 26538 * util.c (printllval): Handle all architectures with sizeof(long) > 4 26539 and sizeof(long) == sizeof(long long). 26540 26541 2013-05-04 Mike Frysinger <vapier (a] gentoo.org> 26542 26543 Fix building for sparc64 targets. 26544 * util.c (printllval): Handle SPARC64 define. 26545 26546 Fix building for mips n64 targets. 26547 * util.c (printllval): Handle LINUX_MIPSN64 define. 26548 26549 2013-05-03 Dmitry V. Levin <ldv (a] altlinux.org> 26550 26551 hppa: fix stat64 and fstat64 decoding. 26552 * file.c [HPPA]: Do not redefine stat64 to hpux_stat64. 26553 26554 arm, aarch64, ppc: fix printllval-based decoders. 26555 * util.c (printllval) [ARM || POWERPC]: Align argument number. 26556 [AARCH64]: Align argument number in 32bit mode. 26557 * file.c (sys_fadvise64_64) [ARM || POWERPC]: Remove no longer needed 26558 printllval workaround. 26559 [AARCH64]: Fix printing POSIX_FADV_* constants in 32bit mode. 26560 26561 2013-05-02 Mike Frysinger <vapier (a] gentoo.org> 26562 26563 Decode mtd/ubi ioctls. 26564 Been playing with UBI of late and it'd help if I could see what it was 26565 doing. Not entirely sure about the decoding of UBI_IOCVOLUP -- it takes 26566 a pointer to a 64bit value, not a strict. 26567 26568 * util.c (MAX, MIN): Move to ... 26569 * defs.h (MAX, MIN): ... here. 26570 (CLAMP): Define. 26571 (ubi_ioctl): New prototype. 26572 * ioctl.c (ioctl_decode): Call ubi_ioctl when code is 'o' or 'O'. 26573 * mtd.c: Include ubi user API header. 26574 (ubi_volume_types): New enum decode. 26575 (ubi_volume_props): Likewise. 26576 (ubi_ioctl): Define. 26577 * linux/ubi-user.h: Import from linux 3.8. 26578 26579 2013-05-02 Mike Frysinger <vapier (a] gentoo.org> 26580 26581 test: add mtd/ubi test helpers. 26582 I used these to develop the mtd/ubi ioctl decoders. 26583 26584 * test/.gitignore: Add mtd/ubi. 26585 * test/Makefile: Declare all tests in a PROGS var. 26586 Declare build targets .PHONY. 26587 (all): Depend on $(PROGS) instead of hardcoded list. 26588 (clean): Remove $(PROGS) instead of hardcoded list. 26589 * test/mtd.c: New file. 26590 * test/ubi.c: Likewise. 26591 26592 2013-05-02 Mike Frysinger <vapier (a] gentoo.org> 26593 26594 test: include headers for used funcs. 26595 These funcs use things like wait/write/read/strcmp but sometimes 26596 don't include the right header for them. 26597 26598 * test/Makefile: Add -Wall to CFLAGS. 26599 * test/clone.c: Include unistd.h. 26600 * test/fork.c: Include sys/wait.h. 26601 * test/sig.c: Include unistd.h. 26602 * test/sigkill_rain.c: Include sys/wait.h. 26603 * test/vfork.c: Include sys/wait.h. 26604 * test/wait_must_be_interruptible.c: Include string.h 26605 26606 2013-05-02 Dmitry V. Levin <ldv (a] altlinux.org> 26607 26608 ia64: fix compilation warnings introduced by commit v4.7-174-g44f0ed1. 26609 * linux/ia64/syscallent.h: Undefine sys_oldlstat, sys_lstat and 26610 sys_lstat64 before redefining them to printargs. 26611 26612 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 26613 26614 2013-05-02 Mike Frysinger <vapier (a] gentoo.org> 26615 26616 tests: stat: fix clean up of sample file. 26617 * tests/stat: Also rm the sample file at the end of the test. 26618 26619 Ignore more files. 26620 * .gitignore: Add gdb related files. 26621 * tests/.gitignore: Ignore test logs. 26622 26623 2013-05-02 Dmitry V. Levin <ldv (a] altlinux.org> 26624 26625 x32: fix decoding of i386 truncate and ftruncate syscalls. 26626 * linux/x32/syscallent1.h: Remove sys_*truncate64 redirections. 26627 26628 x32: fix printllval-based decoders of i386 syscalls. 26629 * util.c (printllval) [X32]: Handle i386 personality. 26630 26631 tests: add basic test for ftruncate, lseek and stat family syscalls. 26632 * tests/stat: New test. 26633 * tests/Makefile.am (TESTS): Add stat. 26634 26635 2013-05-01 Dmitry V. Levin <ldv (a] altlinux.org> 26636 26637 x32: fix build regressions introduced by commit v4.7-96-g8435d67. 26638 * desc.c (printflock) [X32]: Add special handling required for 26639 this architecture with sizeof(long) < sizeof(off_t). 26640 * file.c [X32] (struct stat64): Add __attribute__((packed)). 26641 [X32] (HAVE_STAT64): Define. 26642 (printstat) [X32]: Redirect to printstat64. 26643 (printstat64) [X32]: Use "struct stat" instead of "struct stat64". 26644 [X32] (realprintstat64): Rename to printstat64_x32. 26645 (sys_stat64, sys_fstat64) [X32]: Remove second definitions of these 26646 functions. Call printstat64_x32 instead of printstat64 26647 * linux/x32/syscallent.h: Fix handlers for truncate and ftruncate. 26648 26649 Alias sys_*lstat* syscall printing functions. 26650 * file.c (sys_lstat, sys_lstat64, sys_oldlstat): Remove. 26651 * linux/dummy.h: Move !HAVE_STRUCT___OLD_KERNEL_STAT aliases forward. 26652 (sys_lstat): Alias to sys_stat. 26653 (sys_lstat64): Alias to sys_stat64. 26654 (sys_oldlstat): Alias to sys_oldstat. 26655 * linux/syscall.h (sys_lstat, sys_lstat64, sys_oldlstat): Remove. 26656 * linux/x32/syscallent1.h (sys_lstat64): Remove. 26657 26658 x86_64: decode __old_kernel_stat based syscalls. 26659 * linux/x86_64/syscallent1.h: Remove sys_old*stat redirections. 26660 26661 x32: fix decoding of __old_kernel_stat based syscalls. 26662 * file.c [X32] (struct __old_kernel_stat): Define. 26663 * linux/x32/syscallent1.h: Remove sys_old*stat redirections. 26664 26665 2013-05-01 James Hogan <james.hogan (a] imgtec.com> 26666 26667 test/threaded_execve: fix on metag. 26668 The metag ABI has stacks growing upwards so clone expects the stack 26669 argument to point at the bottom of the stack instead of the top. 26670 26671 * test/threaded_execve.c [__metag__]: Define clone2 differently 26672 to avoid a segfault at runtime. 26673 26674 2013-05-01 James Hogan <james.hogan (a] imgtec.com> 26675 26676 test/skodic: make a bit more portable. 26677 * test/skodic.c (main): Don't use MAP_FIXED since valid virtual addresses 26678 vary between architectures (as far as I can tell the use of MAP_FIXED is 26679 not relevant to the test). Also don't assume the file desriptor returned 26680 by open call is 3 when passing it to mmap. 26681 26682 2013-05-01 Mike Frysinger <vapier (a] gentoo.org> 26683 26684 printllval: handle s390x. 26685 This is a 64bit arch w/no personalities, so fix printing. 26686 It can now trace a simple call like readahead: 26687 $ cat test.c 26688 main(){readahead(-1, (unsigned long long)1 << 50, 0);} 26689 $ gcc test.c 26690 $ ./strace -ereadahead ./a.out 26691 readahead(-1, 1125899906842624, 0) = -1 EBADF (Bad file descriptor) 26692 26693 * util.c (printllval): Handle S390X define. 26694 26695 2013-05-01 Mike Frysinger <vapier (a] gentoo.org> 26696 26697 Stop using old AM_CONFIG_HEADER macro. 26698 Building with automake-1.13 throws an error: 26699 configure.ac:6: error: 'AM_CONFIG_HEADER': this macro is obsolete. 26700 You should use the 'AC_CONFIG_HEADERS' macro instead. 26701 26702 * configure.ac (AM_CONFIG_HEADER): Rename to AC_CONFIG_HEADERS. 26703 26704 2013-04-30 Dmitry V. Levin <ldv (a] altlinux.org> 26705 26706 build: introduce git-version-gen. 26707 * .gitignore: Add .version. 26708 * Makefile.am (EXTRA_DIST, BUILT_SOURCES): Add $(srcdir)/.version. 26709 Add rules to check NEWS, generate $(srcdir)/.version and 26710 $(distdir)/.tarball-version files. 26711 Change ChangeLog and CREDITS generation rules to depend on 26712 $(srcdir)/.version instead of $(srcdir)/.git/refs/heads/*. 26713 * NEWS: Add dates to recent releases. 26714 * configure.ac (AC_INIT): Use git-version-gen. 26715 (AM_INIT_AUTOMAKE): Remove check-news. 26716 * git-version-gen: Import from gnulib. 26717 * make-dist: Check NEWS. 26718 26719 Makefile.am: sort long lists to ease maintenance. 26720 * Makefile.am (strace_SOURCES, EXTRA_DIST): Sort, place one list element 26721 per line. 26722 26723 build: fix "make dist" regression introduced by commit v4.7-105-g7270de5 26724 * Makefile.am (EXTRA_DIST): Remove linux/arm/syscallent1.h, 26725 linux/arm/signalent1.h, linux/arm/ioctlent1.h and linux/arm/errnoent1.h. 26726 26727 build: fix "make dist" regression introduced by commit v4.7-29-g17e3860. 26728 * Makefile.am (EXTRA_DIST): Add linux/ioctlent-filter.awk. 26729 26730 2013-04-30 Mike Frysinger <vapier (a] gentoo.org> 26731 26732 Blackfin: tweak sram_alloc syscall decode. 26733 * system.c (sys_sram_alloc): The 2nd argument of sram_alloc syscall 26734 is a bit field, not a specific value, so decode it as such. 26735 26736 2013-03-31 Zev Weiss <zev (a] bewilderbeest.net> 26737 26738 Print io_submit() offsets in decimal. 26739 This makes output formatting more consistent with pread()/pwrite(), 26740 which print their offset parameters in decimal. 26741 26742 * desc.c (sys_io_submit): Change offset output format from %llx to %lld. 26743 26744 2013-03-30 Andreas Schwab <schwab (a] suse.de> 26745 26746 Fix building outside source directory. 26747 The file linux/ioctlent.h is generated in the build directory, so 26748 "../ioctlent.h" won't find it. 26749 26750 * linux/aarch64/ioctlent1.h: Remove "../" from include file name. 26751 * linux/powerpc/ioctlent1.h: Likewise. 26752 * linux/tile/ioctlent1.h: Likewise. 26753 * linux/x32/ioctlent1.h: Likewise. 26754 * linux/x86_64/ioctlent1.h: Likewise. 26755 * linux/x86_64/ioctlent2.h: Likewise. 26756 26757 2013-03-30 Andreas Schwab <schwab (a] suse.de> 26758 26759 AArch64: Fix printing of long long value. 26760 * util.c (printllval): Fix printing of long long values on 26761 AArch64. 26762 26763 2013-03-27 Dmitry V. Levin <ldv (a] altlinux.org> 26764 26765 Update PR_* constants. 26766 * process.c (prctl_options): Add more PR_* constants from linux/prctl.h. 26767 26768 2013-03-25 Chris Zankel <chris (a] zankel.net> 26769 26770 Add support for the XTENSA architecture. 26771 * configure.ac: Add XTENSA to the list of supported architectures. 26772 * defs.h: Add XTENSA support. 26773 * linux/xtensa/syscallent.h: New file. 26774 * linux/xtensa/ioctlent.h.in: Likewise. 26775 * process.c (struct_user_offsets): Add XTENSA support. 26776 * signal.c (sys_sigreturn): Likewise. 26777 * syscall.c (printcall, get_scno, get_syscall_args, 26778 get_syscall_result, get_error): Likewise. 26779 * util.c (change_syscall): Likewise. 26780 26781 2013-03-22 Denys Vlasenko <vda.linux (a] googlemail.com> 26782 26783 Add example script which builds static (possibly cross-compiled) strace. 26784 26785 2013-03-21 Dmitry V. Levin <ldv (a] altlinux.org> 26786 26787 Use 64-bit versions of stat, readdir and setrlimit functions when available 26788 strace already has a mechanism to use fopen64 for output when the 64-bit 26789 version of fopen is available on 32-bit architectures. Apply this 26790 mechanism for other three functions to make strace fully adopted for 26791 64-bit types. 26792 26793 * strace.c (struct_stat, stat_file, struct_dirent, read_dir, 26794 struct_rlimit, set_rlimit): New macros. 26795 (startup_attach): Use read_dir. 26796 (startup_child): Use struct_stat and stat_file. 26797 (main): Use struct_rlimit and set_rlimit. 26798 26799 2013-03-20 Dmitry V. Levin <ldv (a] altlinux.org> 26800 26801 Do not use struct dirent in readdir decoding. 26802 struct dirent from libc should not be used for umove'ing into because it 26803 contains fixed size d_name. 26804 26805 * file.c (printdir): Rename to print_old_dirent. 26806 [SH64]: Decode using struct kernel_dirent. 26807 [!SH64]: Decode using an open-coded struct with 32-bit d_ino and d_off. 26808 (sys_readdir): Update. 26809 26810 2013-03-20 Dmitry V. Levin <ldv (a] altlinux.org> 26811 26812 Do not use off_t in sendfile decoding. 26813 sendfile parser used to decode off_t* parameter as a pointer to host 26814 off_t type. With this change, it is decoded as a pointer to target long 26815 type. 26816 26817 * io.c (print_off_t): New function. 26818 (sys_sendfile): Use it. 26819 * linux/aarch64/syscallent1.h: Use sys_sendfile64 for sendfile decoding. 26820 * linux/tile/syscallent.h: Likewise. 26821 * linux/x32/syscallent.h: Likewise. 26822 * linux/x86_64/syscallent.h: Likewise. 26823 * linux/hppa/syscallent.h: Use sys_sendfile64 for sendfile64 decoding. 26824 * linux/metag/syscallent.h: Correct sendfile syscall name. 26825 * linux/or1k/syscallent.h: Likewise. 26826 26827 2013-03-18 Dmitry V. Levin <ldv (a] altlinux.org> 26828 26829 Fix build with older versions of libaio.h. 26830 * configure.ac: When libaio.h is available, check for 26831 struct iocb.u.c.flags, IO_CMD_PWRITE and IO_CMD_PWRITEV. 26832 * desc.c (print_common_flags): Check for HAVE_STRUCT_IOCB_U_C_FLAGS. 26833 (sys_io_submit): Check for HAVE_DECL_IO_CMD_PWRITE and 26834 HAVE_DECL_IO_CMD_PWRITEV. 26835 26836 Fix io_submit decoding. 26837 * desc.c (print_common_flags, sys_io_submit): Add missing ", " to 26838 SUB_COMMON output, remove extra ", " from SUB_VECTOR output. 26839 26840 2013-03-18 Maxin B. John <maxin.john (a] enea.com> 26841 26842 tests: relax check_prog to allow timeout command provided by busybox. 26843 Busybox version of timeout doesn't have --version option. 26844 Relax check_prog to handle those cases. 26845 26846 * tests/init.sh (check_prog): Use type builtin to check program 26847 availability. 26848 26849 2013-03-18 Dmitry V. Levin <ldv (a] altlinux.org> 26850 26851 Reorganize get_regs code, hopefully without functional changes. 26852 * syscall.c [I386 || ARM || OR1K || METAG] (ARCH_REGS_FOR_GETREGSET): 26853 New macro. 26854 (get_regset): Implement for AARCH64, METAG, OR1K and X32. 26855 (get_regs) [AARCH64 || METAG || OR1K || X32]: Use it. 26856 26857 arm, i386: use PTRACE_GETREGSET if available. 26858 * syscall.c [ARM || I386 || X86_64] (get_regset): New function. 26859 (get_regs) [ARM || I386 || X86_64]: Use it. 26860 26861 Include <sys/uio.h> and <elf.h> on all architectures. 26862 * syscall.c: Include <sys/uio.h> and <elf.h> on all architectures. 26863 26864 x86-64: enhance PTRACE_GETREGSET test. 26865 * syscall.c (get_regs) [X86_64]: Check whether PTRACE_GETREGSET 26866 works regardless of the kernel version. 26867 26868 x32: use PTRACE_GETREGSET unconditionally. 26869 * syscall.c (get_regs) [X32]: Assume that PTRACE_GETREGSET always works 26870 regardless of the kernel version. 26871 26872 x86-64, x32: do not include linux/ptrace.h unnecessarily. 26873 * syscall.c [X86_64 || X32]: Stop including linux/ptrace.h. 26874 26875 i386, tile, x32: do not redefine ptrace prototype. 26876 * defs.h [I386 || TILE || X32]: Use ptrace prototype from sys/ptrace.h. 26877 26878 ptrace: decode note segment descriptor types. 26879 * configure.ac (AC_CHECK_HEADERS): Add elf.h. 26880 * process.c: Include elf.h. 26881 (nt_descriptor_types): New xlat structure. 26882 (sys_ptrace): Use it. 26883 26884 2013-03-14 Dmitry V. Levin <ldv (a] altlinux.org> 26885 26886 Update MADV_* constants. 26887 * mem.c (madvise_cmds): Add more MADV_* constants from 26888 asm-generic/mman-common.h 26889 26890 Reported-by: Robin Hack <hack.robin (a] gmail.com> 26891 26892 2013-03-07 Denys Vlasenko <vda.linux (a] googlemail.com> 26893 26894 Tweaks for -c: fixed setitimer/getitimer hack; optimized call_summary_pers() 26895 count_syscall() was calling setitimer/getitimer once in order to find 26896 smallest "tick" OS uses in time accounting, in order to use it 26897 for syscalls which apparently spent less than that time in syscall. 26898 The code assumed that this "tick" is not zero... but it is zero 26899 on linux-3.6.11. Which means that this hack doesn't work... 26900 26901 At least this change prevents this measurement from being done 26902 _repeatedly_, by initializing one_tick to -1, not 0. 26903 26904 While at it, added comments in count_syscall() explaining what we are doing. 26905 26906 Optimized call_summary_pers() a bit, by eliminating redundant tv -> float 26907 conversions, and prevented 0.0/0.0 which was resulting in "% time" 26908 being shown as "-nan" if total CPU time spent was 0.000000 26909 (try "strace -c /bin/true"). 26910 26911 The code seems to seriously underestimate CPU usage: 26912 "strace -c ls -lR /usr/share >/dev/null" shows total time spent 26913 in syscalls to be only ~10..20% of what "time ls -lR /usr/share >/dev/null" 26914 shows. 26915 26916 It might be useful to have a mode where we show wall clock time 26917 spent in syscalls, not CPU time. It might also be more accurate. 26918 26919 text data bss dec hex filename 26920 245019 676 5708 251403 3d60b strace_old 26921 244923 684 5676 251283 3d593 strace 26922 26923 2013-03-06 Denys Vlasenko <vda.linux (a] googlemail.com> 26924 26925 Open-code isprint(c) and isspace(c) 26926 We don't call setlocale, thus we always use C locale. 26927 But libc supports various other locales, and therefore 26928 its ctype interface is general and at times inefficient. 26929 For example, in glibc these macros result in function call, 26930 whereas for e.g. isprint(c) just c >= ' ' && c <= 0x7e 26931 suffices. 26932 26933 By open-coding ctype checks (we have only 4 of them) 26934 we avoid function calls, we get smaller code: 26935 26936 text data bss dec hex filename 26937 245127 680 5708 251515 3d67b strace_old 26938 245019 676 5708 251403 3d60b strace 26939 26940 and we don't link in ctype tables (beneficial for static builds). 26941 26942 2013-03-06 Denys Vlasenko <vda.linux (a] googlemail.com> 26943 26944 Makefile: add commented-out tweak to generate link map. 26945 26946 Stop using a large static buffer in getfdpath. 26947 text data bss dec hex filename 26948 245075 680 9836 255591 3e667 strace_old 26949 245143 680 5708 251531 3d68b strace 26950 26951 2013-03-05 Denys Vlasenko <vda.linux (a] googlemail.com> 26952 26953 Fix wrongly indented closing curly brace. No code changes. 26954 26955 strace_vfprintf: if malloc fails, exit gracefully. 26956 26957 2013-03-05 Dmitry V. Levin <ldv (a] altlinux.org> 26958 26959 Use sysconf(_SC_PAGESIZE) instead of hardcoded PAGE_SHIFT. 26960 PAGE_SHIFT couldn't be reliably obtained at compile time, 26961 thanks to Chris Metcalf for the hint. 26962 26963 * mem.c: Do not include <sys/user.h>. 26964 [SH64] Do not include <asm/page.h>. 26965 (get_pagesize): New function. 26966 (sys_mmap_pgoff, sys_old_mmap_pgoff): Use it. 26967 26968 2013-03-05 Denys Vlasenko <vda.linux (a] googlemail.com> 26969 26970 Emit better message for ERESTARTNOHAND return. 26971 26972 Disable STREAMS syscalls for non-SPARC. 26973 text data bss dec hex filename 26974 3002 0 1024 4026 fba stream.o.old 26975 1729 0 1024 2753 ac1 stream.o 26976 26977 Fix printstrbufarg's address argument to be long, not int. 26978 26979 Remove variable tracing_paths and check in pathtrace_match. 26980 26981 2013-03-05 Denys Vlasenko <vda.linux (a] googlemail.com> 26982 26983 Use dynamically-sized selected[] array for -P PATH. 26984 While at it, added a small optimization of not remembering 26985 the path twice if it happens to be the same. 26986 26987 text data bss dec hex filename 26988 245111 680 10860 256651 3ea8b strace_old 26989 245075 680 9804 255559 3e647 strace 26990 26991 2013-03-05 Denys Vlasenko <vda.linux (a] googlemail.com> 26992 26993 metag,or1k: whitesace style fix. no code changes. 26994 26995 Assorted fixes to syscallent.h. 26996 or1k was missing TM on many memory-related syscalls 26997 sys_lookup_dcookie is 3-arg on 64-bit arches, and isn't TF 26998 sys_recvmsg is 3-arg on all arches 26999 sys_nfsservctl is 3-arg on all arches 27000 sys_timerfd_create is 2-arg on all arches 27001 sys_[f]truncate64 is 4-arg or 3-arg, never 5-arg 27002 truncate64 is TF 27003 sys_[l]lseek is TD 27004 fstat[64] is TD 27005 27006 2013-03-05 James Hogan <james.hogan (a] imgtec.com> 27007 27008 Add support for Imagination Technologies Meta. 27009 Add support for Imagination Technologies Meta architecture (the 27010 architecture/ABI is usually referred to as metag in code). The Meta 27011 Linux kernel port is in the process of being upstreamed for v3.9 so it 27012 uses generic system call numbers. 27013 27014 sys_lookup_dcookie writes a filename to buffer argument, so I've set 27015 TF flag. 27016 nfsservctl appears to be set to sys_ni_syscall in asm-generic/unistd.h 27017 so I've left it blank. 27018 truncate64/ftruncate64/pread64/pwrite64/readahead have unaligned 64bit 27019 args which are packed tightly on metag, so less arguments on metag. 27020 fchdir/llseek takes a file descriptor so s/TF/TD/ 27021 sync_file_range has 2 64bit args so uses 6 args, so s/4/6/ 27022 timerfd_create/msgget/msgctl/msgrcv/semget/segtimedop/semop/shmget/ 27023 shmctl/shmat/shmdt/recvmsg/migrate_pages have different number of args. 27024 oldgetrlimit is just getrlimit for metag. 27025 add TM flag to various memory syscalls. 27026 metag doesn't directly use sys_mmap_pgoff for mmap2. 27027 prlimit64/process_vm_readv/process_vm_writev take a pid so add TP flag. 27028 fanotify_init doesn't appear to take a file descriptor so remove TD. 27029 Add kcmp syscall. 27030 27031 Cc: Christian Svensson <blue (a] cmd.nu> 27032 27033 2013-03-01 Denys Vlasenko <vda.linux (a] googlemail.com> 27034 27035 umovestr: speed up check for NUL byte in the fetched word. 27036 27037 2013-03-01 Dmitry V. Levin <ldv (a] altlinux.org> 27038 27039 Fix trace=set regression introduced by commit v4.7-111-g9cbc15b. 27040 * syscall.c (qual_syscall, qualify): Pass personality down to 27041 qualify_one. 27042 * tests/qual_syscall: New test. 27043 * tests/Makefile.am (TESTS): Add qual_syscall. 27044 27045 2013-03-01 Chris Metcalf <cmetcalf (a] tilera.com> 27046 27047 tile: handle printllval like x86_64 or powerpc64. 27048 Without this fix the tilegx build fails when it hits the new #error 27049 about SIZEOF_LONG > 4. 27050 27051 * util.c (printllval): Fix printing of long long values on TILE. 27052 27053 2013-02-27 Denys Vlasenko <vda.linux (a] googlemail.com> 27054 27055 Make -b take SYSCALL param, document it in --help and in manpage. 27056 To not waste an option letter for just one trick, 27057 extend -b to take a parameter: 27058 "on which syscalls do you want to detach?". 27059 Currently supports only execve. 27060 27061 While at it, fixed (by removing non-Linux and stale info) 27062 and extended manpage text about -f. 27063 27064 2013-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 27065 27066 Cleanup umoven and umovestr. 27067 Cleanup sloppy error handling. 27068 27069 First, EFAULT kind of errors from process_vm_readv by itself is not 27070 something unusual, so a warning message will not be issued unless a 27071 short read is detected. 27072 27073 Second, clients of umoven and umovestr are not prepared to detect and 27074 handle short reads that can happen in these functions. The most safe 27075 way to handle them is to return an error code. 27076 27077 * util.c (umoven, umovestr): Cleanup handling of errors coming from 27078 process_vm_readv and PTRACE_PEEKDATA. 27079 27080 2013-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 27081 27082 pathtrace: fix umovestr return code check. 27083 * pathtrace.c (upathmatch): Only NUL-terminated strings can be 27084 path-matched, so fix the umovestr return code check to filter out 27085 unsuitable strings. 27086 27087 2013-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 27088 27089 Fix compilation errors uncovered by -Werror=enum-compare. 27090 This fixes regression introduced by commit v4.7-111-g9cbc15b. 27091 27092 * syscall.c: Merge all nsyscalls* enums into single enum. 27093 Likewise merge nerrnos*, nsignals*, and nioctlents* into single enums. 27094 27095 2013-02-26 Denys Vlasenko <vda.linux (a] googlemail.com> 27096 27097 Mass replace error_msg("%s", "literal") -> error_msg("literal") 27098 There is no need to print literal strings through "%s". 27099 Only untrusted strings such as filenames need that. 27100 27101 2013-02-26 Ben Noordhuis <info (a] bnoordhuis.nl> 27102 27103 Make umoven report success as 0, not >=0, stop returning success on partial reads 27104 umoven() uses process_vm_readv() when available but it returns the 27105 return value of that syscall, which is the number of bytes copied, 27106 while its callers expect it to simply return zero on success. 27107 27108 It was causing syscalls that take a user-space argument to print 27109 the abbreviated version, e.g.: 27110 27111 epoll_ctl(5, EPOLL_CTL_ADD, 10, {...}) 27112 27113 Instead of: 27114 27115 epoll_ctl(5, EPOLL_CTL_ADD, 10, {EPOLLIN, {u32=10, u64=10}}) 27116 27117 * util.c (umoven): Make umove[n] report success as 0, not >=0, 27118 stop returning "success" on partial reads. 27119 27120 2013-02-26 Denys Vlasenko <vda.linux (a] googlemail.com> 27121 27122 Assorted NOMMU fixes. 27123 With -D, strdup'ing of pathname is necessary only on NOMMU. 27124 27125 Don't set skip_startup_execve to 1 if NOMMU and not in daemonized mode 27126 (try "strace [-D] -b env echo HI" to see whether we detach on correct execve). 27127 27128 Fix test_ptrace_FOO shortcuts on NOMMU to always assume success 27129 and _properly_ set all variables. 27130 27131 2013-02-26 Denys Vlasenko <vda.linux (a] googlemail.com> 27132 27133 Shorten help text - no need to show deprecated option -F. 27134 27135 2013-02-23 Denys Vlasenko <vda.linux (a] googlemail.com> 27136 27137 Merge adjacent tprint's. 27138 27139 Correct i > MAX_NSYSCALLS commparison: should be i >= MAX_NSYSCALLS. 27140 27141 2013-02-22 Denys Vlasenko <vda.linux (a] googlemail.com> 27142 27143 Fix wrong offset display in dumpstr. 27144 BTW, the new code from prev commit is 5 times faster 27145 than old one :) 27146 27147 2013-02-22 Denys Vlasenko <vda.linux (a] googlemail.com> 27148 27149 Fix a bug in dumpstr (no null termination). Essentially rewrote dumpstr. 27150 This is a 14 year old bug (!). 27151 27152 It wasn't biting us merely because outstr[80] was static, thus ended up 27153 in bss and whatever was after it "accidentally" provided the NUL byte. 27154 When dumpstr was changed to use on-stack buffer, the bug reared its ugly head. 27155 27156 This is a rewrite which is smaller and should be significantly faster 27157 for _long_ strings. 27158 27159 text data bss dec hex filename 27160 244627 680 10860 256167 3e8a7 strace.t9/strace 27161 244563 680 10860 256103 3e867 strace.ta/strace 27162 27163 * util.c (dumpstr): Rewrite to be faster and smaller. 27164 27165 2013-02-22 Denys Vlasenko <vda.linux (a] googlemail.com> 27166 27167 Eliminate MAX_QUALS, make qualifier array dynamic. 27168 MAX_QUALS was 2048, even though most arches used less than 500 entries 27169 in it. MAX_QUALS had to be maintained by hand to be higher than syscall 27170 count. It also limited the highest possible fd to track. 27171 27172 This change makes qual_flagsN[] arrays start sized to the required minimum 27173 (number of syscalls) and grow dynamically if user requested 27174 -e read=BIGNUM. As a precaution, BIGNUM should be < 2^15, but this limit 27175 can be raised with no cost for normal strace invocations. 27176 27177 qual_flags is now a define to qual_vec[current_personality]. 27178 27179 As a bonus, this patch aliases sysent, errnoent, signalent, ioctlent 27180 names in one-personality arches to their corresponding <foo>0 arrays, 27181 removing one indirection level. 27182 27183 text data bss dec hex filename 27184 244471 700 12928 258099 3f033 strace.t7/strace 27185 244627 680 10860 256167 3e8a7 strace.t8/strace 27186 27187 2013-02-22 Denys Vlasenko <vda.linux (a] googlemail.com> 27188 27189 Create and use struct_sysent and struct_ioctlent typedefs. 27190 This is a preparatory mass replace patch with no code changes. 27191 27192 The future change will need to typedef sysent to sysent0, 27193 which results in compile failures when "struct sysent" string 27194 gets mangled into "struct sysent0". 27195 27196 2013-02-22 Denys Vlasenko <vda.linux (a] googlemail.com> 27197 27198 Use tcp->qual_flg instead of qual_flags[] in verbose() and abbrev() 27199 We have hundreds of uses of these macros. 27200 Result is more efficient and 1.1 kbyte shorter code: 27201 27202 text data bss dec hex filename 27203 245579 700 12928 259207 3f487 strace.t5/strace 27204 244471 700 12928 258099 3f033 strace.t6/strace 27205 27206 2013-02-21 Denys Vlasenko <vda.linux (a] googlemail.com> 27207 27208 Remove unused QUAL_FAULT code (was used by non-Linux code only). 27209 27210 2013-02-21 Denys Vlasenko <vda.linux (a] googlemail.com> 27211 27212 Use uint8_t for qual_flags[] instead of ints. 27213 Resulting bss reduction is ~6kbytes: 27214 27215 text data bss dec hex filename 27216 245703 700 19072 265475 40d03 strace.t4/strace 27217 245687 700 12928 259315 3f4f3 strace.t5/strace 27218 27219 2013-02-21 Denys Vlasenko <vda.linux (a] googlemail.com> 27220 27221 Eliminate many SCNO_IS_VALID checks. 27222 By adding tcp->s_ent pointer tot syscall table entry, 27223 we can replace sysent[tcp->scno] references by tcp->s_ent. 27224 More importantly, we may ensure that tcp->s_ent is always valid, 27225 regardless of tcp->scno value. This allows us to drop 27226 SCNO_IS_VALID(tcp->scno) checks before we access syscall 27227 table entry. 27228 27229 We can optimize (qual_flags[tcp->scno] & QUAL_foo) checks 27230 with a similar technique. 27231 27232 Resulting code shrink: 27233 text data bss dec hex filename 27234 245975 700 19072 265747 40e13 strace.t3/strace 27235 245703 700 19072 265475 40d03 strace.t4/strace 27236 27237 * count.c (count_syscall): Use cheaper SCNO_IN_RANGE() check. 27238 * defs.h: Add "int qual_flg" and "const struct sysent *s_ent" 27239 to struct tcb. Remove "int u_nargs" from it. 27240 Add UNDEFINED_SCNO constant which will mark undefined scnos 27241 in tcp->qual_flg. 27242 * pathtrace.c (pathtrace_match): Drop SCNO_IS_VALID check. 27243 Use tcp->s_ent instead of sysent[tcp->scno]. 27244 * process.c (sys_prctl): Use tcp->s_ent->nargs instead of tcp->u_nargs. 27245 (sys_waitid): Likewise. 27246 * strace.c (init): Add compile-time check that DEFAULT_QUAL_FLAGS 27247 constant is consistent with init code. 27248 * syscall.c (decode_socket_subcall): Use tcp->s_ent->nargs 27249 instead of tcp->u_nargs. Set tcp->qual_flg and tcp->s_ent. 27250 (decode_ipc_subcall): Likewise. 27251 (printargs): Use tcp->s_ent->nargs instead of tcp->u_nargs. 27252 (printargs_lu): Likewise. 27253 (printargs_ld): Likewise. 27254 (get_scno): [MIPS,ALPHA] Use cheaper SCNO_IN_RANGE() check. 27255 If !SCNO_IS_VALID, set tcp->s_ent and tcp->qual_flg to default values. 27256 (internal_fork): Use tcp->s_ent instead of sysent[tcp->scno]. 27257 (syscall_fixup_for_fork_exec): Remove SCNO_IS_VALID check. 27258 Use tcp->s_ent instead of sysent[tcp->scno]. 27259 (get_syscall_args): Likewise. 27260 (get_error): Drop SCNO_IS_VALID check where it is redundant. 27261 (dumpio): Drop SCNO_IS_VALID check where it is redundant. 27262 Use tcp->s_ent instead of sysent[tcp->scno]. 27263 (trace_syscall_entering): Use (tcp->qual_flg & UNDEFINED_SCNO) instead 27264 of SCNO_IS_VALID check. Use tcp->s_ent instead of sysent[tcp->scno]. 27265 Drop SCNO_IS_VALID check where it is redundant. 27266 Print undefined syscall name with undefined_scno_name(tcp). 27267 (trace_syscall_exiting): Likewise. 27268 * util.c (setbpt): Use tcp->s_ent instead of sysent[tcp->scno]. 27269 27270 2013-02-21 Denys Vlasenko <vda.linux (a] googlemail.com> 27271 27272 ARM: make it one-personality arch. 27273 ARM in fact _is_ one personality. 27274 27275 We had two personalities for it because it has a handful of 27276 syscalls with huge scnos (0x000f00xx). 27277 27278 Extending syscall table to have [0x000f0005] index is of course 27279 not a good idea. 27280 27281 Someone decided to handle that by having a separate personality 27282 just for these syscalls. 27283 27284 But multi-personality arch does a bit more work in other parts. 27285 27286 This patch is another alternative: "move" 0x000f00nn syscalls 27287 down to the entries just above last ordinary syscall, 27288 by manipulating scno if it falls into the 0x000f00xx range. 27289 27290 In order to not worsen genuine undefined scnos' printing, 27291 the code remaps scno back to actual value before printing 27292 "syscall_NNN" string. 27293 27294 * defs.h: Remove multi-reprsonality defines from ARM. 27295 * syscall.c (shuffle_scno): New function. 27296 (undefined_scno_name): New function. 27297 (get_scno): [ARM] Replace personality setting with scno shuffling. 27298 (trace_syscall_entering): Print unknown syscall name using 27299 undefined_scno_name(). 27300 (trace_syscall_exiting): Likewise. 27301 * linux/arm/syscallent.h: Add ARM specific syscalls at the end. 27302 * linux/arm/errnoent1.h: Deleted. 27303 * linux/arm/ioctlent1.h: Deleted. 27304 * linux/arm/signalent1.h: Deleted. 27305 * linux/arm/syscallent1.h: Deleted. 27306 27307 2013-02-20 Denys Vlasenko <vda.linux (a] googlemail.com> 27308 27309 arm: shorten syscall table for EABI - no point in storing NULL entries. 27310 Also, reformatted ARM code in get_scno(), mostly improved comments, 27311 without code changes. 27312 27313 Use the same style of includes in linux/*/* files. 27314 While at it, fix some comments which say 27315 "we use i386 syscalls/ioctls/errnos" but in reality 27316 common ones are used. 27317 27318 2013-02-19 Denys Vlasenko <vda.linux (a] googlemail.com> 27319 27320 Fix compiler warnings. 27321 With constant current_wordsize == 4 and 32-bit longs, 27322 gcc was spooked by "1ul << (8 * current_wordsize)" = "1ul << 32". 27323 27324 Make such places conditional on SIZEOF_LONG > 4. 27325 27326 2013-02-19 Denys Vlasenko <vda.linux (a] googlemail.com> 27327 27328 Improve comment text. No code changes. 27329 27330 2013-02-19 Denys Vlasenko <vda.linux (a] googlemail.com> 27331 27332 Fix NOMMU + daemonized tracer SEGV. 27333 pathname[] was getting destroyed, execve of garbage pathname 27334 failing, and to top it off, the tracer's stack was also 27335 smashed and trecer segfaulted. 27336 27337 * strace.c (exec_or_die): New function. 27338 (startup_child): Don't use pathname[] contents after vfork, 27339 make a malloced copy instead. Explain "NOMMU + -D bug" 27340 and how we work around it. 27341 27342 2013-02-19 Denys Vlasenko <vda.linux (a] googlemail.com> 27343 27344 Make it possible to to do test builds for NOMMU architectures. 27345 And while using it, I discovered that -D doesn't work too well 27346 on NOMMU. Added a comment about it. 27347 27348 2013-02-19 Denys Vlasenko <vda.linux (a] googlemail.com> 27349 27350 Clean up mmap decoding. 27351 Previous code merges too many similar, but different ways 27352 of decoding mmap. For example, sys_old_mmap is "params in memory" 27353 API... except SH[64], where it is "params in regs", 27354 i.e. what sys_mmap ("new mmap") function does on other arches! 27355 27356 It's much simpler when every mmap handler has same API regardless 27357 of arch. Where API means whether params are in regs or in memory, 27358 and whether offset is in bytes, pages, or 4k blocks. 27359 27360 Then we just insert correct function pointers into 27361 arch syscall tables. 27362 27363 It turns out there are four common mmap APIs over 27364 all architectures which exist in Linux kernel, 27365 and one outlier for S390. 27366 27367 A number of mmap decoders were plain wrong in arch tables. 27368 For example, BFIN has no old_mmap. It returns ENOSYS. 27369 I checked kernel sources for all arches nad fixed the tables. 27370 27371 There was dead code for x86_64 for old_mmap: 27372 x86_64 has no old_mmap. 27373 27374 * mem.c: Refactor mmap functions so that we have five mmap syscall 27375 handlers, each with the fixed API (not varying by arch). 27376 * pathtrace.c (pathtrace_match): Adjust sys_func == mmap_func checks. 27377 * linux/syscall.h: Declare new mmap syscall handler functions. 27378 * linux/arm/syscallent.h: mmap2 is sys_mmap_pgoff. 27379 * linux/avr32/syscallent.h: mmap is sys_mmap_pgoff. 27380 * linux/bfin/syscallent.h: old_mmap is ENOSYS, mmap2 is sys_mmap_pgoff. 27381 * linux/hppa/syscallent.h: mmap2 is sys_mmap_4koff. 27382 * linux/i386/syscallent.h: mmap2 is sys_mmap_pgoff. 27383 * linux/ia64/syscallent.h: mmap2 is sys_mmap_pgoff. 27384 * linux/m68k/syscallent.h: mmap2 is sys_mmap_pgoff. 27385 * linux/microblaze/syscallent.h: old_mmap is sys_mmap, mmap2 is sys_mmap_pgoff. 27386 * linux/mips/syscallent.h: mmap is sys_mmap_4kgoff. 27387 * linux/or1k/syscallent.h: mmap2 is sys_mmap_pgoff. 27388 * linux/powerpc/syscallent.h: mmap2 is sys_mmap_4kgoff. 27389 * linux/s390/syscallent.h: mmap2 is sys_old_mmap_pgoff. 27390 * linux/s390x/syscallent.h: mmap is sys_old_mmap and thus has 1 arg. 27391 * linux/sh/syscallent.h: old_mmap2 is sys_mmap, mmap2 is sys_mmap_4koff. 27392 * linux/sh64/syscallent.h: Likewise. 27393 * linux/sparc/syscallent1.h: mmap is TD|TM. 27394 * linux/tile/syscallent1.h: mmap2 is sys_mmap_4koff. 27395 27396 2013-02-18 Denys Vlasenko <vda.linux (a] googlemail.com> 27397 27398 Remove unused function sys_mmap64. 27399 No wonder that it is unused. 27400 It's code looked quite questionable. 27401 27402 * mem.c (sys_mmap64): Remove this function. 27403 27404 2013-02-18 Denys Vlasenko <vda.linux (a] googlemail.com> 27405 27406 Remove code which supports systems with long long off_t. 27407 While looking at mmap mess, did experimenting in order 27408 to figure out what gets used when. 27409 27410 Tried building armv4tl, armv5l, armv6l, mips, mipsel, i686, 27411 x86_64 and none of they have long long off_t, 27412 which isn't suprprising: we aren't using glibc defines 27413 which enable that. 27414 27415 Moreover, we SHOULD NOT use off_t in syscall decode! 27416 Its size depends on libc, not on arch! I.e. it is essentially 27417 unpredictable and can even in theory vary on the same arch 27418 with different libc. 27419 27420 We should use longs or long longs, in a way which matches 27421 architectural ABI for the given syscall. There are usually 27422 *at most* two permutations, no need to add yet another variable 27423 (sizeof(off_t)) to the mix. 27424 27425 This change removes almost all HAVE_LONG_LONG_OFF_T conditionals, 27426 which will reveal further possible simplifications. 27427 27428 * mem.c: Remove code conditional on HAVE_LONG_LONG_OFF_T. 27429 As a result, never remap sys_mmap64 to sys_mmap. 27430 (print_mmap): Compile unconditionally. 27431 (sys_old_mmap): Compile unconditionally. 27432 (sys_mmap): Compile unconditionally. 27433 * io.c (sys_sendfile): Add a FIXME comment. 27434 * file.c: Remove code conditional on HAVE_LONG_LONG_OFF_T. 27435 As a result, never remap sys_*stat64 to sys_*stat etc. 27436 (sys_truncate): Compile unconditionally. 27437 (realprintstat): Likewise. 27438 (sys_stat): Likewise. 27439 (sys_fstat): Likewise. 27440 (sys_lstat): Likewise. 27441 * desc.c (printflock): Likewise. 27442 27443 2013-02-18 Denys Vlasenko <vda.linux (a] googlemail.com> 27444 27445 Fixes in "new" mmap. 27446 * mem.c (sys_mmap): Ensure unsigned expansion of tcp->u_arg[5]. 27447 Add page shift of offset for I386. 27448 Use tcp->ext_arg[5] as offset for X32. 27449 (sys_old_mmap): [X32] Remove this function, X32 doesn't use is. 27450 27451 Preliminary simplifications in mmap functions. 27452 * mem.c: Move "define sys_mmap64 sys_mmap" from the top 27453 to the only place it affects. 27454 (print_mmap): Make offset argument unsigned, for safer implicit conversions. 27455 (sys_old_mmap): [IA64] use unsigned narrow_arg[]. 27456 Cast u_arg[5] (offset param) to unsigned long, to prevent erroneous signed 27457 expansion. 27458 27459 2013-02-17 Denys Vlasenko <vda.linux (a] googlemail.com> 27460 27461 Remove broken HAVE_LONG_LONG conditionals. 27462 We use printllval without HAVE_LONG_LONG guards in many places, 27463 but define it only if HAVE_LONG_LONG. This means that 27464 on !HAVE_LONG_LONG systems we won't build for some time now. 27465 27466 * defs.h: Remove HAVE_LONG_LONG guard around LONG_LONG() macro 27467 and printllval() function declaration. 27468 * util.c: Remove HAVE_LONG_LONG guard around printllval() 27469 function definition. 27470 (printllval): Add compile-time error check for using wrong 27471 if branch. Explain places where we deliberately use mismatched 27472 types for printf formats. 27473 27474 2013-02-17 Denys Vlasenko <vda.linux (a] googlemail.com> 27475 27476 Use explicit long type instead of off_t. 27477 * file.c (sys_lseek): Use long instead of off_t. 27478 27479 Merge two identical tables. 27480 * defs.h: Declare whence_codes[]. 27481 * desc.c: Delete static whence[]. 27482 (printflock[64]): Use whence_codes. 27483 * file.c: Make whence_codes[] non-static. 27484 Add SEEK_DATA and SEEK_HOLE to them. 27485 27486 2013-02-17 Denys Vlasenko <vda.linux (a] googlemail.com> 27487 27488 Remove wrong x32-specific lseek. 27489 Testing confirmed what I suspected: x32 lseek uses kernel-sized 27490 (i.e. wide) long for offset parameter. 27491 27492 * file.c: Delete sys_lseek32. 27493 * linux/syscall.h: Likewise. 27494 * linux/x32/syscallent1.h: Likewise. 27495 * test/x32_lseek.c: New file. 27496 27497 2013-02-17 Denys Vlasenko <vda.linux (a] googlemail.com> 27498 27499 Fix SEGV in lseek. 27500 I found hard way why the code was using "_whence" name. 27501 27502 * file.c: Rename whence[] to whence_codes[]. 27503 (sys_lseek): Fix printxval() to use whence_codes[]. 27504 (sys_lseek32): Likewise. 27505 27506 2013-02-17 Denys Vlasenko <vda.linux (a] googlemail.com> 27507 27508 Comment inner workings of sys_[l]lseek. 27509 The code doesn't look fully correct to me, but I need to experiment 27510 on actual x32 machine before I start "fixing" things. 27511 For now, add comments, and optimize out one tprints() call... 27512 27513 * file.c (sys_lseek): Rename '_whence' as 'whence'. 27514 Merge printing of ", " into subsequent tprintf. 27515 (sys_lseek32): Likewise. 27516 (sys_llseek): Likewise. 27517 27518 2013-02-17 Denys Vlasenko <vda.linux (a] googlemail.com> 27519 27520 Cosmetic fixes to syscall tables, no code changes. 27521 27522 2013-02-16 Denys Vlasenko <vda.linux (a] googlemail.com> 27523 27524 Make linux/mips/syscallent.h smaller. 27525 * linux/mips/syscallent.h: Remove trailing empty elements. 27526 Compactify huge stretches of NULL elements in the middle. 27527 27528 Simple optimization in get_error. 27529 * defs.h: Define SCNO_IN_RANGE(scno) macro. 27530 * syscall.c (get_error): Change return type to void. 27531 Use SCNO_IN_RANGE instead of SCNO_IS_VALID. 27532 (trace_syscall_exiting): Stop checking get_error() return value. 27533 27534 Mass rename of SCNO_IN_RANGE define to SCNO_IS_VALID. 27535 27536 Finish prefixing regs struct names with arch_ 27537 * defs: Rename regs -> sparc_regs. 27538 * signal.c (sys_sigreturn): Use new variable name. 27539 * syscall.c: Rename regs -> sparc_regs, regs -> avr32_regs. 27540 (getrval2): Use new variable names. 27541 (printcall): Likewise. 27542 27543 2013-02-15 Denys Vlasenko <vda.linux (a] googlemail.com> 27544 27545 Use the same type for i386_regs on 32-bit and 64-bit x86. 27546 * defs.h: Stop including <asm/ptrace.h> for x86. 27547 Change i386_regs from "struct pt_regs" to "struct user_regs_struct". 27548 * syscall.c: Likewise. 27549 27550 Fix build error on Tile. 27551 * syscall.c (get_scno): [TILE] Remove TCB_WAITEXECVE check, 27552 it is never true on Tile, and stopped compiling when 27553 TCB_WAITEXECVE define was removed for Tile. 27554 27555 2013-02-15 Denys Vlasenko <vda.linux (a] googlemail.com> 27556 27557 x86: zero-extend 32-bit args in syscall entry instead of sign-extension. 27558 Zero-extension is slightly more common that sign-extension: 27559 all pointers are zero-extended, and some other params are unsigned. 27560 27561 Whereas signed ones (fds, pids, etc) are often treated as 27562 _32-bit ints_ even by kernel, so just unconditionally casting 27563 such tcp->u_arg[N] to int works. 27564 27565 * syscall.c (get_syscall_args): [X86] Zero-extend 32-bit args 27566 instead of sign-extension. 27567 27568 2013-02-15 Denys Vlasenko <vda.linux (a] googlemail.com> 27569 27570 Macroize conditional signed widening operation. 27571 * defs.h: Define widen_to_long() macro. 27572 * signal.c (sys_kill): Use it instead of open-coding it. 27573 (sys_tgkill): Use widen_to_long() on pids. 27574 * resource.c (decode_rlimit): Formatting fix. 27575 27576 2013-02-15 Denys Vlasenko <vda.linux (a] googlemail.com> 27577 27578 A better handling of current_wordsize. 27579 On x86_64: 27580 text data bss dec hex filename 27581 435661 26628 47424 509713 7c711 strace_old 27582 435501 26612 47440 509553 7c671 strace_new_clever_wordsize 27583 27584 On x32 and arm it should be even better, current_wordsize becomes 27585 a constant there. 27586 27587 * defs.h: Declare current_wordsize as a variable if needed, 27588 else declare as a constant define. 27589 Remove declatation of personality_wordsize[]. 27590 * syscall.c: Make personality_wordsize[] static. 27591 Declare current_wordsize as a variable if needed. 27592 (set_personality): Set current_wordsize only if non-constant. 27593 27594 2013-02-15 Denys Vlasenko <vda.linux (a] googlemail.com> 27595 27596 Remove unnecessary "return 0" statements. 27597 * util.c (change_syscall): Remove dummy "return 0"s. 27598 27599 2013-02-14 Denys Vlasenko <vda.linux (a] googlemail.com> 27600 27601 x86: fix required kernel version for GETREGSET. 27602 * syscall.c (get_regs): [X86] Use GETREGSET only if kernel >= 2.6.35 27603 27604 Whitespace fix, no code changes. 27605 27606 2013-02-14 Christian Svensson <blue (a] cmd.nu> 27607 27608 Add support for the OpenRISC 1000 platform. 27609 * configure.ac: Added or1k architecture.. 27610 * defs.h: Added or1k to use register reading system. 27611 * linux/or1k/ioctlent.h.in: Use i386 ioctls. 27612 * linux/or1k/syscallent.h: New file. 27613 * process.c: Added or1k register defs to struct_user_offsets[]. 27614 * syscall.c: Added or1k_io iovec for or1k GETREGSET, 27615 regset structure for or1k. 27616 (printcall): Added handling for or1k. 27617 (get_regs): Likewise. 27618 (get_scno): Likewise. 27619 (get_syscall_args): Likewise. 27620 (get_syscall_result): Likewise. 27621 (get_error): Likewise. 27622 * util.c (change_syscall): Added dummy handling for or1k. 27623 * system.c (sys_or1k_atomic): New function (or1k specific syscall). 27624 27625 2013-02-14 Denys Vlasenko <vda.linux (a] googlemail.com> 27626 27627 [X86] Use ptrace(PTRACE_GETREGSET, NT_PRSTATUS) to get registers. 27628 Unlike PTRACE_GETREGS, this new method detects 32-bit processes 27629 reliably, without checking segment register values which 27630 are undocumented and aren't part of any sort of API. 27631 While at it, also fixed x32 detection to use __X32_SYSCALL_BIT, 27632 as it should have been from the beginning. 27633 27634 * defs.h: Declare os_release and KERNEL_VERSION. 27635 * strace.c: Make os_release non-static, remove KERNEL_VERSION define. 27636 * syscall.c: New struct i386_user_regs_struct, 27637 static union x86_regs_union and struct iovec x86_io. 27638 (printcall): Use i386_regs or x86_64_regs depending on x86_io.iov_len. 27639 (get_regs): On x86 and kernels 2.6.30+, use PTRACE_GETREGSET, 27640 on earlier kernels fall back to old method. 27641 (get_scno): [X86] Determine personality based on regset size 27642 on scno & __X32_SYSCALL_BIT. 27643 (syscall_fixup_on_sysenter): Use i386_regs or x86_64_regs depending 27644 on x86_io.iov_len. 27645 (get_syscall_args): Likewise. 27646 (get_error): Likewise. 27647 27648 2013-02-13 Denys Vlasenko <vda.linux (a] googlemail.com> 27649 27650 Rename some register statics by prefixing their names with arch. 27651 This makes it easier to grep for them. 27652 27653 * syscall.c: Rename variables: 27654 r0 -> bfin_r0,alpha_r0,sh_r0. 27655 a3 -> mips_a3. 27656 r2 -> mips_r2. 27657 (get_scno): Use new variable names. 27658 (get_syscall_result): Likewise. 27659 (get_error): Likewise. 27660 27661 2013-02-13 Denys Vlasenko <vda.linux (a] googlemail.com> 27662 27663 Factor out code to check addr, fetch and print siginfo. 27664 * defs.h: Declare new function printsiginfo_at(tcp, addr). 27665 * process.c (sys_waitid): Use printsiginfo_at(). 27666 (sys_ptrace): Likewise. 27667 * signal.c: (printsiginfo_at): Implement this new function. 27668 (sys_rt_sigsuspend): Use printsiginfo_at(). 27669 (sys_rt_sigtimedwait): Likewise. 27670 27671 Decode struct iov in PTRACE_GET/SETREGSET. 27672 * process.c (sys_ptrace): Decode struct iov in PTRACE_GET/SETREGSET. 27673 27674 2013-02-12 Denys Vlasenko <vda.linux (a] googlemail.com> 27675 27676 Unify representations of struct user fields for subarchitectures. 27677 * process.c: Unify MIPS and LINUX_MIPSN32, and SH and SH64 parts of 27678 struct_user_offsets[]. 27679 27680 Add start_code and start_data members of struct user. 27681 * process.c: Add start_code and start_data members of struct user 27682 in struct_user_offsets[], where appropriate. 27683 27684 Remove hacks for old kernels for architectures which require new kernels 27685 * util.c (change_syscall): For MICROBLAZE, replace code 27686 with dummy "return 0" and a comment explaining why that is ok 27687 for this architecture. 27688 27689 2013-02-12 Denys Vlasenko <vda.linux (a] googlemail.com> 27690 27691 Remove stray syscall result reading code on syscall entry for s390. 27692 This is a leftover from sysenter/sysexit split. 27693 I can't run-test it, but from code inspection it seems to be correct. 27694 27695 * syscall.c (get_scno): Remove stray syscall result reading for s390[x]. 27696 27697 2013-02-12 Denys Vlasenko <vda.linux (a] googlemail.com> 27698 27699 Deobfuscate definitions of struct user offsets. 27700 The maze of ifdefs/ifndefs was scaring new contributors. 27701 Format it so that every arch has its own ifdef block. 27702 27703 * process.c: Deobfuscate definitions of struct user offsets. 27704 27705 2013-02-12 Denys Vlasenko <vda.linux (a] googlemail.com> 27706 27707 Remove hacks for old kernels for architectures which require new kernels 27708 * defs.h: Do not define TCB_WAITEXECVE for AARCH64. 27709 * util.c (change_syscall): For AARCH64 and X32, replace code 27710 with dummy "return 0" and a comment explaining why that is ok 27711 for these architectures. 27712 27713 Remove old kernel hacks for architectures which require new kernels. 27714 * defs.h: Do not define TCB_WAITEXECVE for AVR32, BFIN and TILE. 27715 * util.c (change_syscall): For AVR32, BFIN and TILE, replace code 27716 with dummy "return 0" and a comment explaining why that is ok 27717 for these architectures. 27718 27719 Handle recv[m]msg for non-native 32-bit personality syscalls. 27720 * net.c (printmsghdr): If current_wordsize is 4 and long is wider than it, 27721 read 32-bit struct msghdr and expand it into a native one before using it. 27722 (printmmsghdr): Likewise for struct mmsghdr. 27723 27724 2013-02-12 Denys Vlasenko <vda.linux (a] googlemail.com> 27725 27726 Fix is_negated_errno() check for X32. 27727 X32's return value is 64-bit. We were truncating it to 32-bit long 27728 before checking for -errno. 27729 27730 * syscall.c (is_negated_errno_x32): New function. 27731 (get_error): Use is_negated_errno_x32 for X32 architecture. 27732 27733 2013-02-12 Denys Vlasenko <vda.linux (a] googlemail.com> 27734 27735 Remove unused / ambiguously used defines. 27736 We sometimes use LINUXSPARC and sometimes (more often) 27737 use "defined(SPARC) || defined(SPARC64)". Better to use 27738 one construct consistently. 27739 LINUX_MIPS64 is altogether unused. 27740 27741 * defs.h: Remove LINUXSPARC and LINUX_MIPS64 defines. 27742 Move PTRACE_xxx compat defines up, before arch-specific 27743 machinery. Use defined(SPARC) || defined(SPARC64) 27744 instead of LINUXSPARC. 27745 * file.c: Use defined(SPARC) || defined(SPARC64) instead of LINUXSPARC. 27746 * signal.c: Likewise. 27747 27748 2013-02-11 Denys Vlasenko <vda.linux (a] googlemail.com> 27749 27750 Preparatory patch for "new" x86 personality detection. 27751 * syscall.c: Move PT_FLAGS_COMPAT define to its only user, get_scno(). 27752 Rename arm_regs_union's fields to names less likely to collide with 27753 system defines. 27754 (get_regs): Use sizeof(arm_regs_union) instead of sizeof(aarch64_regs). 27755 This should be the same, but htis way it's cleaner. 27756 Remove __X32_SYSCALL_MASK and use __X32_SYSCALL_BIT instead. 27757 Explain 64-bit check in X32 build better. 27758 27759 2013-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 27760 27761 Fix sigaltstack decoder. 27762 strace used to hang when decoding sigaltstack called with invalid 27763 stack_t pointers because of mishandling umove() return code. 27764 27765 * signal.c (print_stack_t): Handle unfetchable stack_t properly. 27766 Change return type to void. 27767 (sys_sigaltstack): Update print_stack_t() usage. 27768 27769 Reported-by: kawillia (a] ucalgary.ca 27770 27771 2013-02-09 Mike Frysinger <vapier (a] gentoo.org> 27772 27773 Fix decoding of sysctl() when oldval fields are NULL. 27774 If you call glibc's syscall wrapper like so: 27775 static int name[] = { CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE }; 27776 int buffer[2] = { 32768, 61000 }; 27777 size_t size = sizeof(buffer); 27778 sysctl(name, 3, 0, 0, buffer, size); 27779 (note that oldval/oldlenp are NULL). 27780 27781 The current strace code complains like so: 27782 _sysctl({{CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE, 38}, 3, process_vm_readv: Bad address 27783 (nil), 0, 0x7fffe23c3960, 8}) = -1 EACCES (Permission denied) 27784 27785 Since passing NULL for the old values is valid, handle that explicitly. 27786 This also simplifies the code a bit by splitting up the handling of the 27787 new and old args so that we only handle the new args once. 27788 27789 Now the output looks like: 27790 _sysctl({{CTL_NET, NET_IPV4, NET_IPV4_LOCAL_PORT_RANGE, 38}, 3, NULL, 0, 0x7fff8c0c91b0, 8) = -1 EACCES (Permission denied) 27791 27792 * system.c (sys_sysctl): Check if info.oldval is NULL first. Move the 27793 processing of oldlen/info.newval/info.newlen out so they always get 27794 executed. Fix the format strings so we use %lu for unsigned long rather 27795 than a mix of %ld and %lu. 27796 27797 2013-02-08 Denys Vlasenko <vda.linux (a] googlemail.com> 27798 27799 If we are on a glibc system, assume it's at least glibc 2.1. 27800 It is not likely anyone uses glibc older that that: 27801 glibc 2.1.1 was released in 1999 27802 27803 * net.c: Remove test for glibc >= 2.1. 27804 * signal.c: Remove code which is compiled only for glibc < 2.1. 27805 * util.c: Likewise. 27806 27807 2013-02-08 Denys Vlasenko <vda.linux (a] googlemail.com> 27808 27809 S390: stop using needlessly static long pc variable. 27810 * syscall.c: Remove "static long pc" variable. 27811 (get_scno): Use an automatic long variable instead of a static. 27812 27813 Dying suddenly with abort() is rude, avoid if possible. 27814 * file.c (sys_utime): Don't call abort() if wordsize is strange. 27815 Instead, warn user about it. 27816 * desc.c (printflock): Use the same message string as in sys_utime. 27817 27818 Remove vestigial hacks around non-Linux struct sigactions. 27819 * signal.c: Stop using __sighandler_t glibc'ism. Remove SA_HANDLER macro. 27820 Explain why we can't use "sa_handler" as a field name. 27821 (sys_sigaction): Use __sa_handler instead of SA_HANDLER macro. 27822 (sys_rt_sigaction): Likewise. 27823 27824 2013-02-08 Denys Vlasenko <vda.linux (a] googlemail.com> 27825 27826 Optimize AArch64 handling of 32-bit personality. 27827 By putting aarch64_regs and arm_regs into a union, 27828 register copying is eliminated. 27829 No need to check and change personality on syscall exit. 27830 27831 * defs.h: Remove unused NUM_ARM_REGS define. Fix indentation. 27832 * syscall.c: Put aarch64_regs and arm_regs into a union. 27833 (update_personality): Shorten bitness message. 27834 (printcall): Add commented-out PC printing. 27835 (get_regs): Remove now-unnecessary 64-to-32 bits register copying. 27836 (get_syscall_result): Drop personality changing code. 27837 27838 2013-02-07 Denys Vlasenko <vda.linux (a] googlemail.com> 27839 27840 Rename some register statics by prefixing their names with arch. 27841 This makes it easier to grep for them. 27842 27843 * syscall.c: Make IA64's r8, r10 global variables static. 27844 Rename variables: 27845 r8,r10 -> ia64_r8,ia64_r10. 27846 d0 -> m68k_d0. 27847 a3 -> alpha_a3. 27848 r28 -> hppa_r28. 27849 r9 -> sh64_r9. 27850 r10 -> cris_r10. 27851 r3 -> microblaze_r3. 27852 (get_scno): Use new variable names. 27853 (syscall_fixup_on_sysenter): Likewise. 27854 (get_syscall_result): Likewise. 27855 (get_error): Likewise. 27856 27857 2013-02-06 Denys Vlasenko <vda.linux (a] googlemail.com> 27858 27859 Rename ARM's regs structure to arm_regs. 27860 Compile-tested. 27861 27862 * defs.h: Rename regs structure to arm_regs. 27863 * syscall.c: Likewise. 27864 (printcall): Use new name instead of old one. 27865 (get_regs): Likewise. 27866 (get_scno): Likewise. 27867 (get_syscall_args): Likewise. 27868 (get_error): Likewise. 27869 * signal.c (sys_sigreturn): Likewise. 27870 27871 2013-02-06 Denys Vlasenko <vda.linux (a] googlemail.com> 27872 27873 Stop needlessly using static variable. 27874 * syscall.c: Remove static long psr. 27875 (get_scno): Use local psr variable. 27876 (get_syscall_result): Likewise. 27877 27878 2013-02-06 Denys Vlasenko <vda.linux (a] googlemail.com> 27879 27880 Shortcut tests for fork/exec syscalls. 27881 This change should speed up strace by a tiny bit. 27882 27883 More importantly, it makes it much more clear that 27884 fork and exec fixups are not necessary for any reasonably 27885 recent kernels. IOW: syscall_fixup_for_fork_exec() and its callees 27886 are all dead code. 27887 27888 * defs.h: Declare new need_fork_exec_workarounds flag variable. 27889 * strace.c: Define need_fork_exec_workarounds flag variable. 27890 (test_ptrace_setoptions_followfork): Return 0/1 as success/fail indicator. 27891 (test_ptrace_setoptions_for_all): Likewise. 27892 (init): Set need_fork_exec_workarounds to TRUE if needed. 27893 * syscall.c: Rename internal_syscall() to syscall_fixup_for_fork_exec(). 27894 (trace_syscall_entering): Call syscall_fixup_for_fork_exec() only if 27895 need_fork_exec_workarounds == TRUE. 27896 (trace_syscall_exiting): Likewise. 27897 27898 2013-02-05 Ben Noordhuis <info (a] bnoordhuis.nl> 27899 27900 Improve perf_event_open argument decoding. 27901 * configure.ac (AC_CHECK_HEADERS): Add linux/perf_event.h. 27902 * desc.c [HAVE_LINUX_PERF_EVENT_H]: Include <linux/perf_event.h>. 27903 (perf_event_open_flags): New xlat structure. 27904 (sys_perf_event_open): New function. 27905 * linux/dummy.h (sys_perf_event_open): Remove. 27906 * linux/syscall.h (sys_perf_event_open): New prototype. 27907 27908 2013-02-05 Chris Metcalf <cmetcalf (a] tilera.com> 27909 27910 tile: fix merge skew with new get_regs architecture. 27911 * defs.h [TILE]: Declare clear_regs(), get_regs() and get_regs_error. 27912 * syscall.c (get_regs) [TILE]: Fix merge skew. 27913 (printcall) [TILE]: fix a compiler warning about pt_reg_t in 27914 a printf expression. 27915 27916 2013-02-05 Bernhard Reutner-Fischer <rep.dot.nop (a] gmail.com> 27917 27918 mount: decode MS_NOSEC. 27919 * system.c (MS_NOSEC): Define. 27920 (mount_flags): Add MS_NOSEC. 27921 27922 mmap: decode MAP_UNINITIALIZED. 27923 * mem.c (mmap_flags): Add MAP_UNINITIALIZED. 27924 27925 2013-02-05 Dmitry V. Levin <ldv (a] altlinux.org> 27926 27927 Print 64-bit instruction pointers zero padded. 27928 * syscall.c (printcall): Print 64-bit instruction pointers zero padded. 27929 27930 x86_64: fix compilation warning introduced in previous commit. 27931 * syscall.c (printcall): Cast x86_64_regs.rip to the type being printed. 27932 27933 2013-02-05 Denys Vlasenko <vda.linux (a] googlemail.com> 27934 27935 Simple bug fix for x86_86. 27936 * syscall.c (printcall): Use x86_64_regs.rip, not x86_64_regs.ip. 27937 27938 2013-02-05 Chris Metcalf <cmetcalf (a] tilera.com> 27939 27940 Add tilegx support to strace. 27941 tilegx support has been in the kernel since 3.0. 27942 In addition, fix some issues with the tilepro support already 27943 present in strace, primarily the decision to use the 27944 <asm/unistd.h> numbering space for system calls. 27945 27946 * defs.h [TILE]: Include <asm/ptrace.h> and provide an extern 27947 struct pt_regs tile_regs for efficiency. Provide compat 32-bit 27948 personality via SUPPORTED_PERSONALITIES, PERSONALITY0_WORDSIZE, 27949 PERSONALITY1_WORDSIZE, and DEFAULT_PERSONALITY. 27950 * linux/tile/errnoent1.h: New file, includes linux/errnoent.h. 27951 * linux/tile/ioctlent1.h: New file, includes linux/ioctlent.h. 27952 * linux/tile/signalent1.h: New file, includes linux/signalent.h. 27953 * linux/tile/syscallent.h: Update with new asm-generic syscalls. 27954 The version previously committed was the from the first tile patch 27955 to LKML, which subsequently was changed to use <asm-generic/unistd.h>. 27956 * linux/tile/syscallent1.h: Copy from linux/tile/syscallent.h. 27957 * mem.c (addtileflags) [TILE]: use %ld properly for a "long" variable. 27958 * process.c [TILE]: Choose clone arguments correctly and properly 27959 suppress all "struct user" related offsets in user_struct_offsets. 27960 * signal.c [TILE]: Use tile_regs not upeek. 27961 * syscall.c (update_personality) [TILE]: Print mode. 27962 (PT_FLAGS_COMPAT) [TILE]: Provide if not in system headers. 27963 (tile_regs) [TILE]: Define 'struct pt_regs' variable to hold state. 27964 (get_regs) [TILE]: use PTRACE_GETREGS to set tile_regs rather than using upeek. 27965 (get_scno) [TILE]: Set personality. 27966 (get_syscall_args) [TILE]: Use tile_regs. 27967 (get_syscall_result) [TILE]: Update tile_regs. 27968 (get_error) [TILE]: Use tile_regs. 27969 (printcall) [TILE]: Print pc. 27970 (arg0_offset, arg1_offset, restore_arg0, restore_arg1) [TILE]: 27971 Properly handle tile call semantics and support tilegx. 27972 27973 2013-02-05 Denys Vlasenko <vda.linux (a] googlemail.com> 27974 27975 Small optimization for SPARC[64] get_scno. 27976 * syscall.c: Remove static unsigned long trap veriable. 27977 (get_scno): Use local trap variable. 27978 27979 Do not compile getrval2() if not needed. 27980 * syscall.c (getrval2): Do not compile it for architetures where 27981 it isn't ever used. 27982 27983 2013-02-05 Denys Vlasenko <vda.linux (a] googlemail.com> 27984 27985 Optimize out PTRACE_PEEKUSER with -i. 27986 strace -i was fetching PC with a separate PEEKUSER 27987 despite having GETREGS data: 27988 27989 ptrace(PTRACE_GETREGS, 22331, 0, 0x8087f00) = 0 27990 ptrace(PTRACE_PEEKUSER, 22331, 4*EIP, [0x80dd7b7]) = 0 27991 write(3, "[080dd7b7] ioctl(0, SNDCTL_TMR_T"..., 82) = 82 27992 ptrace(PTRACE_SYSCALL, 22331, 0, SIG_0) = 0 27993 27994 Now it does this: 27995 27996 ptrace(PTRACE_GETREGS, 22549, 0, 0x8087ea0) = 0 27997 write(3, "[080dd7b7] ioctl(0, SNDCTL_TMR_T"..., 82) = 82 27998 ptrace(PTRACE_SYSCALL, 22549, 0, SIG_0) = 0 27999 28000 Analogous improvement in sys_sigreturn() is also implemented. 28001 28002 * defs.h: Declare extern struct pt_regs regs for SPARC[64] and ARM. 28003 Declare clear_regs(), get_regs() and get_regs_error flag variable. 28004 * strace.c (trace): Call get_regs(pid) as soon as we know the tcb 28005 and that it is stopped. 28006 * syscall.c (get_regs): New function. Used to fetch registers early, 28007 just after tracee has stopped. 28008 (printcall): Move it here from util.c. Use global regs.REG data, 28009 if available on the arch, instead of re-fetching it. 28010 (get_scno): Use global regs.REG data. 28011 (get_syscall_result): Likewise. 28012 * signal.c (sys_sigreturn): Likewise. 28013 * util.c (printcall): Moved to syscall.c. 28014 28015 2012-12-15 Stanislav Brabec <sbrabec (a] suse.cz> 28016 28017 Fix sys_semtimedop decoding on s390x. 28018 The s390 and s390x pass semtimedop arguments differently from other 28019 architectures. sys_semtimedop parser was fixed for s390 by commit 28020 v4.6-177-ge0f5fd8, and s390x requires the same fix. 28021 28022 * linux/ipc.c (sys_semtimedop): Fix timespec decoding on s390x. 28023 28024 2012-12-08 Dmitry V. Levin <ldv (a] altlinux.org> 28025 28026 Fix *xattr decoding. 28027 * file.c (print_xattr_val): Do not attempt to decode a zero sized array. 28028 Fixes RH#885233. 28029 28030 2012-12-08 Stanislav Brabec <sbrabec (a] suse.cz> 28031 28032 sys_semtimedop: fix timeval argument index in wrapped call. 28033 Looking at the implementation of wrapped semtimedop() call inside glibc 28034 and kernel, I started to believe that timeval should be located in 28035 tcp->u_arg[4] and not tcp->u_arg[5]. Fortunately, tcp->u_arg[5] now 28036 works correctly as well, due to side effects of decode_ipc_subcall(). 28037 28038 declaration in header: 28039 int semtimedop(semid, *sops, nsops, *timeout); 28040 0 1 2 3 28041 28042 sys_ipc arguments in glibc on all patforms except s390*: 28043 semid, (int) nsops, 0, CHECK_N (sops, nsops), timeout 28044 0 1 2 3 4 28045 We have to use indexes: 0 3 1 4 28046 28047 sys_ipc arguments on s390*: 28048 semid, (int) nsops, timeout, sops 28049 0 1 2 3 28050 We have to use indexes: 0 3 1 2 28051 28052 * ipc.c (sys_semtimedop) [!S390]: Fix timeval argument index in 28053 indirect_ipccall case. 28054 28055 2012-12-06 John Spencer <maillist-strace (a] barfooze.de> 28056 28057 Fix glibc version checks. 28058 * util.c: Check if __GLIBC__ is defined before using it. 28059 * signal.c: Likewise. Fix __GLIBC_MINOR__ checks. 28060 28061 2012-11-29 James Hogan <james.hogan (a] imgtec.com> 28062 28063 Add state argument to change_syscall and fix SPARC. 28064 Add a state argument to change_syscall() so that SPARC can modify that 28065 instead of read-modify-writing the whole register set. This function is 28066 always called within an arg_setup/arg_finish_change sequence which on 28067 certain architectures like SPARC will also be doing a read-modify-write. 28068 This prevents the second write (from arg_finish_change) from undoing the 28069 effects of the change_syscall call. 28070 28071 * util.c (change_syscall): Move below definition of arg_setup_state. 28072 Add state argument. 28073 [SPARC || SPARC64] Change to set state->u_regs[U_REG_G1] rather than 28074 read-modify-writing it with PTRACE_GETREGS and PTRACE_SETREGS. 28075 (setbpt, clearbpt): Pass state argument to change_syscall. 28076 28077 2012-11-12 Steve McIntyre <steve.mcintyre (a] linaro.org> 28078 28079 Add support for tracing 32-bit ARM EABI binaries on AArch64. 28080 * defs.h [AARCH64]: Copy in the definition of arm_pt_regs and the 28081 accessor macros, so it's possible to build on AArch64 without 28082 ARM system headers. Set SUPPORTED_PERSONALITIES to 2. 28083 Define PERSONALITY0_WORDSIZE and PERSONALITY1_WORDSIZE. 28084 Set DEFAULT_PERSONALITY to 1. 28085 * linux/aarch64/errnoent1.h: New file, includes generic errnoent.h. 28086 * linux/aarch64/ioctlent1.h: New file, includes generic ioctlent.h. 28087 * linux/aarch64/signalent1.h: New file, includes generic signalent.h. 28088 * linux/aarch64/syscallent1.h: Rename from linux/aarch64/syscallent.h. 28089 * linux/aarch64/syscallent.h: New file, includes arm/syscallent.h. 28090 * syscall.c [AARCH64]: Define aarch64_regs. 28091 (update_personality) [AARCH64]: Add debug output. 28092 (get_scno) [AARCH64]: Determine if we're in ARM or AArch64 mode by 28093 checking the size of the returned uio structure from PTRACE_GETREGSET 28094 and interpret the structure accordingly. 28095 (get_syscall_result): Likewise. 28096 (get_syscall_args): Merge the AArch64 and ARM sections so that on 28097 AArch64 we can fall back to supporting the ARM personality. 28098 (get_error): Likewise. 28099 28100 2012-11-12 Dmitry V. Levin <ldv (a] altlinux.org> 28101 28102 Move asm-generic ioctl definitions to linux/ioctlent.h.in. 28103 * linux/ioctlent.h.in: Add asm-generic ioctl entries from all 28104 linux/*/ioctlent.h.in files. 28105 * linux/bfin/ioctlent.h.in: Remove asm-generic ioctl entries. 28106 * linux/i386/ioctlent.h.in: Likewise. 28107 * linux/powerpc/ioctlent.h.in: Likewise. 28108 * linux/s390/ioctlent.h.in: Likewise. 28109 * linux/sparc/ioctlent.h.in: Likewise. 28110 28111 2012-10-27 Dmitry V. Levin <ldv (a] altlinux.org> 28112 28113 Filter out redundant "*32" ioctl entries. 28114 * linux/ioctlent-filter.awk: New file. 28115 * Makefile.am: Use it. 28116 * linux/ioctlent.h.in: Removed redundant "*32" entries. 28117 28118 2012-10-26 Dmitry V. Levin <ldv (a] altlinux.org> 28119 28120 Enhance quotactl decoding. 28121 * quota.c (sys_quotactl): Decode 2nd syscall argument using printpath. 28122 * pathtrace.c (pathtrace_match): Add quotactl support. 28123 * linux/*/syscallent.h: Add TF flag to quotactl entry. 28124 28125 2012-10-26 Steve McIntyre <steve.mcintyre (a] linaro.org> 28126 28127 Add AArch64 support to strace. 28128 AArch64 has been included in linux from 3.7 onwards. 28129 Add support for AArch64 in strace, tested on linux in a simulator. 28130 28131 * configure.ac: Support AArch64. 28132 * defs.h [AARCH64]: Include <sys/ptrace.h>, define TCB_WAITEXECVE. 28133 * ipc.c (indirect_ipccall): Support AArch64. 28134 * process.c (struct_user_offsets): Likewise. 28135 * syscall.c [AARCH64]: Include <asm/ptrace.h>, <sys/uio.h>, and 28136 <elf.h>. Define struct user_pt_regs regs. 28137 (get_scno, get_syscall_result): Support AArch64 using PTRACE_GETREGSET. 28138 (get_syscall_args, get_error): Support AArch64. 28139 * linux/aarch64/ioctlent.h.in: New file. 28140 * linux/aarch64/syscallent.h: New file, based on linux 3.7 version of 28141 asm-generic/unistd.h. 28142 28143 2012-10-26 Steve McIntyre <steve.mcintyre (a] linaro.org> 28144 28145 linux: add new errno values for EPROBE_DEFER and EOPENSTALE. 28146 New definitions match updates in Linux 3.4 and Linux 3.5 respectively. 28147 28148 * linux/errnoent.h (ERRNO_517): Change to EPROBE_DEFER. 28149 (ERRNO_518): Change to EOPENSTALE. 28150 28151 2012-10-26 Namhyung Kim <namhyung.kim (a] lge.com> 28152 28153 Add -e trace=memory option. 28154 Add a new 'memory' category for tracing memory mapping related syscalls. 28155 28156 Affected syscalls are: break, brk, get_mempolicy, madvise, mbind, 28157 migrate_pages, mincore, mlock, mlockall, mmap, move_pages, mprotect, 28158 mremap, msync, munlock, munlockall, munmap, remap_file_pages, and 28159 set_mempolicy. 28160 28161 * defs.h (TRACE_MEMORY): New macro. 28162 * syscall.c (lookup_class): Handle trace=memory option. 28163 * strace.1: Document it. 28164 * linux/alpha/syscallent.h: Add TM flag to memory mapping related syscalls. 28165 * linux/arm/syscallent.h: Likewise. 28166 * linux/avr32/syscallent.h: Likewise. 28167 * linux/bfin/syscallent.h: Likewise. 28168 * linux/hppa/syscallent.h: Likewise. 28169 * linux/i386/syscallent.h: Likewise. 28170 * linux/ia64/syscallent.h: Likewise. 28171 * linux/m68k/syscallent.h: Likewise. 28172 * linux/microblaze/syscallent.h: Likewise. 28173 * linux/mips/syscallent.h: Likewise. 28174 * linux/powerpc/syscallent.h: Likewise. 28175 * linux/s390/syscallent.h: Likewise. 28176 * linux/s390x/syscallent.h: Likewise. 28177 * linux/sh/syscallent.h: Likewise. 28178 * linux/sh64/syscallent.h: Likewise. 28179 * linux/sparc/syscallent.h: Likewise. 28180 * linux/tile/syscallent.h: Likewise. 28181 * linux/x32/syscallent.h: Likewise. 28182 * linux/x86_64/syscallent.h: Likewise. 28183 28184 2012-09-28 Mike Frysinger <vapier (a] gentoo.org> 28185 28186 x32: add 64bit annotation too. 28187 Since someone can invoke these entry points directly with syscall(), 28188 at least decode their name and show that they're 64bit versions rather 28189 than just showing syscall_###. 28190 28191 * linux/x32/syscallent.h: Sync all missing entries below 312 with x86_64. 28192 28193 2012-09-28 Dmitry V. Levin <ldv (a] altlinux.org> 28194 28195 Ignore fflush(3) return value. 28196 strace used to honor fflush(3) return value in trace_syscall_entering 28197 which resulted to tracees not being PTRACE_SYSCALL'ed which in turn 28198 caused nasty hangups like this one: 28199 28200 $ strace -o'|:' pwd 28201 |:: Broken pipe 28202 28203 There is little strace can do in case of fflush(3) returning EOF, and 28204 hangup is certainly not the best solution for the issue. 28205 28206 * syscall.c (trace_syscall_entering): Ignore fflush(3) return value. 28207 28208 2012-09-28 Dmitry V. Levin <ldv (a] altlinux.org> 28209 28210 Use perror_msg instead of perror. 28211 * signal.c (sys_sigreturn): Use perror_msg instead of perror. 28212 * strace.c (tprintf, tprints, detach, startup_attach): Likewise. 28213 * syscall.c (get_scno): Likewise. 28214 * util.c (umoven, umovestr): Likewise. 28215 28216 2012-09-27 Denys Vlasenko <vda.linux (a] googlemail.com> 28217 28218 process_vm_readv may return ESRCH if tracee was killed, don't complain. 28219 Discovered by running test/sigkill_rain under strace. 28220 28221 * util.c (umoven): Do not emit error message if process_vm_readv 28222 fails with ESRCH. 28223 (umovestr): LikeWise. 28224 28225 2012-09-13 Denys Vlasenko <vda.linux (a] googlemail.com> 28226 28227 Trivial fixes, no code changes. 28228 * strace.c: Fix compiler warning message about tgkill - we don't use it. 28229 Fix indentation of preprocessor directives. 28230 (trace): Remove outdated comment. 28231 28232 2012-08-24 Dmitry V. Levin <ldv (a] altlinux.org> 28233 28234 Always check setreuid return code. 28235 * strace.c (startup_child): Check setreuid return code. 28236 28237 2012-08-24 Mike Frysinger <vapier (a] gentoo.org> 28238 28239 x32: update {g,s}etsockopt syscall numbers. 28240 Starting with linux 3.6 (and backported to earlier kernels), these two 28241 syscalls have changed numbers (moving from native to compat entry points). 28242 Update the strace syscall list accordingly. 28243 28244 * linux/x32/syscallent.h: Move setsockopt from 54 to 541, and move 28245 getsockopt from 55 to 542. 28246 28247 2012-08-16 Dmitry V. Levin <ldv (a] altlinux.org> 28248 28249 Decode file type returned by getdents system call. 28250 * file.c (sys_getdents): Decode d_type in unabbreviated mode. 28251 28252 2012-07-12 Dmitry V. Levin <ldv (a] altlinux.org> 28253 28254 Close pipe and wait for the pipe process termination. 28255 In case of normal strace termination, when the trace output is 28256 redirected to a file or a pipe, close it and wait for the pipe 28257 process termination. 28258 28259 * strace.c (main): Before normal exit, close shared_log when it 28260 differs from stderr, and wait for popen_pid termination. 28261 28262 2012-07-10 Denys Vlasenko <vda.linux (a] googlemail.com> 28263 28264 Enable usage of PTRACE_SEIZE. 28265 * defs.h: Define USE_SEIZE to 1. Remove PTRACE_SEIZE_DEVEL 28266 and PTRACE_EVENT_STOP1. 28267 * strace.c (ptrace_attach_or_seize): Replace PTRACE_SEIZE_DEVEL 28268 with 0. 28269 (trace): Do not check for PTRACE_EVENT_STOP1. 28270 28271 2012-06-05 Mike Frysinger <vapier (a] gentoo.org> 28272 28273 x32: update syscall table. 28274 This syncs with the syscall table as it is in linux 3.4. 28275 28276 * linux/x32/syscallent.h (59): Fix comment typo. 28277 (78): Add missing getdents entry. 28278 (174): Delete create_module entry (not in the kernel). 28279 (181, 182, 183, 184, 185): Add missing entries. 28280 (524, 536, 539, 540): Fix spacing. 28281 28282 2012-05-18 Denys Vlasenko <vda.linux (a] googlemail.com> 28283 28284 Merge adjacent printing operations in a few places. 28285 * file.c (sys_readahead): Merge tprints() with following printllval(). 28286 (sys_ftruncate64): Likewise. 28287 (sys_fadvise64): Likewise. 28288 (sys_fadvise64_64): Likewise. 28289 (sys_fallocate): Merge tprints() with following tprintf(). 28290 28291 2012-05-16 Denys Vlasenko <vda.linux (a] googlemail.com> 28292 28293 Use %d printf format instead of %i everywhere. 28294 * loop.c (loop_ioctl): Use %d instead of %i. 28295 * mtd.c (mtd_ioctl): Likewise. 28296 28297 Fix a few goofs in sys_sysctl() 28298 * system.c (sys_sysctl): Cast pointer to long, not size_t, 28299 when we intend to use it as an address. Set oldlen to 0 prior 28300 to reading into it - we want to have deterministic result 28301 if read fails. 28302 28303 2012-05-16 Denys Vlasenko <vda.linux (a] googlemail.com> 28304 28305 Stop using non-standard %Zu and %Zd formats for size_t printing. 28306 The documented formats are %zu and %zd, but since our (normally disabled) 28307 "fast" printf code doesn't support those too, I convert them to %lu and %ld. 28308 28309 * bjm.c (sys_query_module): Convert %Zd usages to %lu. 28310 * system.c (sys_sysctl): Likewise. 28311 28312 2012-05-15 Denys Vlasenko <vda.linux (a] googlemail.com> 28313 28314 Remove outdated comment about suspending new tracees. 28315 We no longer track parent/child relationship between tracees. 28316 Therefore, we no longer suspend new tracee until parent is seen 28317 exiting form [v]fork/clone. The comment is obsolete. 28318 28319 * strace.c (trace): Remove outdated comment. 28320 28321 2012-05-15 Denys Vlasenko <vda.linux (a] googlemail.com> 28322 28323 Make sure current_wordsize and PERSONALITY0_WORDSIZE are ints in all arches 28324 On 64bit systems with a single personality, they used to be sizeof(long), 28325 which has type "long", not "int", which complicates printf formats. 28326 28327 * defs.h: Ensure that PERSONALITY0_WORDSIZE;s tyoe is int. 28328 This in turn makes sure current_wordsize is also an int. 28329 * count.c (call_summary): Revert the change which added cast to int. 28330 28331 2012-05-15 Dmitry V. Levin <ldv (a] altlinux.org> 28332 28333 Add configure --enable-gcc-Werror option. 28334 * configure.ac: New option --enable-gcc-Werror. 28335 28336 Make x86-64 build free of artificial warnings. 28337 * signal.c (sys_sigreturn): Do not issue "no sys_sigreturn" warning 28338 on X86_64. 28339 28340 2012-05-14 Dmitry V. Levin <ldv (a] altlinux.org> 28341 28342 Fix kernel release string parsing. 28343 * strace.c (get_os_release): Handle "X.Y-something" utsname.release 28344 strings properly. 28345 28346 Reported-by: Bryce Gibson <bryce (a] gibson-consulting.com.au> 28347 28348 2012-05-14 Denys Vlasenko <vda.linux (a] googlemail.com> 28349 28350 On clearing "breakpopint", restore syscall number too. 28351 This fixes Fedora bug 659382. 28352 Low risk: this code is not supposed to be used on any non-acient kernel. 28353 28354 * util.c (clearbpt): Restore syscall number too. 28355 28356 2012-05-05 Mike Frysinger <vapier (a] gentoo.org> 28357 28358 util: fix building when glibc has a stub process_vm_readv. 28359 If you have a newer glibc which provides process_vm_readv, but it is built 28360 against older kernel headers which lack __NR_process_vm_readv, the library 28361 will contain a stub implementation that just returns ENOSYS. Autoconf 28362 checks for this case explicitly and will declare it as unavailable. So we 28363 end up in a case where the headers provide the prototype, but autoconf has 28364 not defined HAVE_PROCESS_VM_READV, so we hit the same build failure again: 28365 28366 util.c:738:16: error: static declaration of 'process_vm_readv' follows non-static declaration 28367 /usr/include/bits/uio.h:58:16: note: previous declaration of 'process_vm_readv' was here 28368 28369 So rename our local function to something unique, and add a define so the 28370 callers all hit the right place. 28371 28372 * util.c (strace_process_vm_readv): Rename from process_vm_readv. 28373 (process_vm_readv): Define to strace_process_vm_readv. 28374 28375 2012-05-03 Dmitry V. Levin <ldv (a] altlinux.org> 28376 28377 doc: describe documentation policy. 28378 * README-hacking: Describe documentation policy. 28379 28380 2012-05-02 Dmitry V. Levin <ldv (a] altlinux.org> 28381 28382 maint: post-release administrivia. 28383 * NEWS: Add header line for next release. 28384 28385 Prepare for 4.7 release. 28386 * configure.ac: Version 4.7. 28387 * debian/changelog: 4.7-1. 28388 * strace.spec: 4.7-1. 28389 28390 Fix build with <linux/loop.h> from 2.6.18 kernel headers. 28391 * configure.ac: Check for LO_FLAGS_AUTOCLEAR and LO_FLAGS_PARTSCAN 28392 declarations. 28393 * loop.c (loop_flags_options): Use LO_FLAGS_AUTOCLEAR and 28394 LO_FLAGS_PARTSCAN only when appropriate declarations are available. 28395 (loop_ioctl): Use LOOP_SET_CAPACITY only when it is defined. 28396 28397 2012-05-01 Dmitry V. Levin <ldv (a] altlinux.org> 28398 28399 * vsprintf.c: Check for USE_CUSTOM_PRINTF earlier. 28400 28401 Remove duplicate names from CREDITS. 28402 * .mailmap: Merge email addresses. 28403 * CREDITS.in: Remove a duplicate name. 28404 28405 2012-05-01 Dmitry V. Levin <ldv (a] altlinux.org> 28406 28407 tests: raise strace check timeout to 60 seconds. 28408 * tests/init.sh (check_timeout): New variable. 28409 * tests/ptrace_setoptions: Use it. 28410 * tests/strace-f: Likewise. 28411 28412 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 28413 28414 2012-05-01 Dmitry V. Levin <ldv (a] altlinux.org> 28415 28416 Update STA_* constants. 28417 * time.c (adjtimex_status): Add STA_NANO, STA_MODE, and STA_CLK. 28418 * NEWS (Improvements): Mention it. 28419 28420 NEWS: update for release. 28421 * NEWS (Improvements): Mention recent recvmsg/recvmmsg decoders 28422 enhancements. 28423 (Portability): Add a recommendation for the minimum Linux kernel 28424 version to use. 28425 28426 Make printing of utsname.domainname more portable. 28427 * configure.ac: Check for struct utsname.domainname field. 28428 * process.c (sys_uname): Print utsname.domainname when the field is 28429 available. 28430 28431 2012-05-01 Dmitry V. Levin <ldv (a] altlinux.org> 28432 28433 Fix recvmmsg decode: do not show more data than actually returned. 28434 This change complements recent fix for recvmsg decoding. 28435 28436 * net.c (printmmsghdr): Add msg_len parameter to pass down to do_msghdr. 28437 When this parameter is zero, pass mmsghdr.msg_len to do_msghdr instead. 28438 (decode_mmsg): Add msg_len parameter, pass it down to printmmsghdr. 28439 (sys_sendmmsg): Call decode_mmsg with msg_len == (unsigned long) -1L. 28440 (sys_recvmmsg): Call decode_mmsg with msg_len == 0. 28441 28442 2012-05-01 Dmitry V. Levin <ldv (a] altlinux.org> 28443 28444 Remove recently introduced use of ULONG_MAX. 28445 * io.c: Remove limits.h inclusion. 28446 (tprint_iov): Use "(unsigned long) -1L" instead of "ULONG_MAX". 28447 * net.c: Remove limits.h inclusion. 28448 (printmmsghdr, sys_sendmsg): Use "(unsigned long) -1L" instead of 28449 "ULONG_MAX". 28450 28451 2012-04-28 Denys Vlasenko <vda.linux (a] googlemail.com> 28452 28453 Enable printing of uts.domainname in uname syscall. 28454 * process.c (sys_uname): Enable printing of uts.domainname 28455 28456 2012-04-28 Denys Vlasenko <vda.linux (a] googlemail.com> 28457 28458 Fix printstr's len parameter width. 28459 We often pass syscall params and other long-sized values 28460 as printstr(len). Truncating them to int may be a bad thing. 28461 28462 * defs.h: Change len parameter's type from int to long in 28463 string_quote and printstr function declarations. 28464 * util.c (string_quote): Special-case only len==-1, not all len<0. 28465 (printstr): Likewise. 28466 28467 2012-04-28 Denys Vlasenko <vda.linux (a] googlemail.com> 28468 28469 Fix recvmsg decode: do not show more data than actually returned. 28470 I noticed that "hostname -d" talks over netlink and gets 20 bytes 28471 of response, but we show entire 1024 bytes of iov. 28472 This changes fixes that. 28473 28474 * defs.h: New function tprint_iov_upto. 28475 * io.c (tprint_iov_upto): Definition of this function. 28476 (tprint_iov): Call tprint_iov_upto. 28477 * net.c (do_msghdr): Add data_size parameter, pass it down to tprint_iov_upto. 28478 (printmsghdr): Add data_size parameter, pass it down to do_msghdr. 28479 (printmmsghdr): Call do_msghdr with data_size==ULONG_MAX. 28480 (sys_sendmsg): Call printmsghdr with data_size==ULONG_MAX. 28481 (sys_recvmsg): Call printmsghdr with data_size==tcp->u_rval. 28482 28483 2012-04-27 Dmitry V. Levin <ldv (a] altlinux.org> 28484 28485 Package strace-log-merge. 28486 * strace.spec (%files): Add strace-log-merge. 28487 28488 2012-04-27 Mike Frysinger <vapier (a] gentoo.org> 28489 28490 NEWS: clarify & fix typo. 28491 28492 2012-04-27 Mike Frysinger <vapier (a] gentoo.org> 28493 28494 Cast current_wordsize to an int. 28495 On 64bit systems with a single personality, we see: 28496 count.c: In function 'call_summary': 28497 count.c:223:5: warning: format '%u' expects type 'unsigned int', 28498 but argument 3 has type 'long unsigned int' 28499 28500 Since on multi-personality systems this is an array of ints, cast 28501 the multiplication to an int and update the printf format. 28502 28503 * count.c (call_summary): Change %u to %d and cast first argument to int. 28504 28505 2012-04-20 Dmitry V. Levin <ldv (a] altlinux.org> 28506 28507 Update NEWS for upcoming 4.7 release. 28508 * NEWS: Update for 4.7 release. 28509 28510 Sync strace.spec and debian/ with packages. 28511 * debian/changelog: Sync with 4.5.20-2.3. 28512 * debian/control: Likewise. 28513 * strace.spec: Sync with 4.6-2. 28514 28515 2012-04-18 Mike Frysinger <vapier (a] gentoo.org> 28516 28517 Decode /dev/loop ioctls. 28518 Needed to debug some losetup failures, and it's easier when you can see 28519 what the kernel is getting vs what you think you're sending, so add some 28520 decoders for those ioctls. 28521 28522 * loop.c: New file. 28523 * Makefile.am (strace_SOURCES): Add loop.c. 28524 * defs.h (loop_ioctl): New prototype. 28525 (string_quote): Likewise. 28526 * ioctl.c (ioctl_decode): Call loop_ioctl when code is 'L'. 28527 * util.c (string_quote): Remove static keyword. 28528 28529 2012-04-18 H.J. Lu <hongjiu.lu (a] intel.com> 28530 28531 x32: add ia32 support. 28532 * Makefile.am (EXTRA_DIST): Add linux/x32/errnoent1.h, 28533 linux/x32/ioctlent1.h, linux/x32/signalent1.h and 28534 linux/x32/syscallent1.h. 28535 * configure.ac: Remove AC_GNU_SOURCE, obsoleted by 28536 AC_USE_SYSTEM_EXTENSIONS. 28537 * defs.h (SUPPORTED_PERSONALITIES): Set to 2 for X32. 28538 (PERSONALITY1_WORDSIZE): Set to 4 for X32. 28539 * file.c (stat64): New struct for X32. 28540 (sys_lseek32): New function for X32. 28541 (stat64): Undef. 28542 (sys_fstat64): Likewise. 28543 (sys_stat64): Likewise. 28544 (realprintstat64): New function for X32. 28545 (sys_fstat64): Likewise. 28546 (sys_stat64): Likewise. 28547 * mem.c (sys_old_mmap): New function for X32. 28548 * pathtrace.c (pathtrace_match): Also check sys_old_mmap for X32. 28549 * syscall.c (update_personality): Add X32 support. 28550 (get_scno): Support currpers == 1 for X32. 28551 * linux/syscall.h (sys_lseek32): New function prototype for X32. 28552 * linux/x32/errnoent1.h: New file. 28553 * linux/x32/ioctlent1.h: Likewise. 28554 * linux/x32/signalent1.h: Likewise. 28555 * linux/x32/syscallent1.h: Likewise. 28556 28557 2012-04-17 H.J. Lu <hongjiu.lu (a] intel.com> 28558 28559 Cast clock_t type to unsigned long long. 28560 * resource.c (sys_times): Cast clock_t type to unsigned long long. 28561 * signal.c (printsiginfo): Likewise. 28562 28563 2012-04-16 Denys Vlasenko <vda.linux (a] googlemail.com> 28564 28565 Add custom (faster) vfprintf implementation (disabled by default) 28566 * defs.h: Declare strace_vfprintf either as a alias to vfprintf 28567 or as a bona fide function. USE_CUSTOM_PRINTF define controls whether 28568 we use strace_vfprintf. By default, we don't. 28569 * strace.c (tprintf): Call strace_vfprintf instead of vfprintf. 28570 * vsprintf.c: New file, implements strace_vfprintf. 28571 28572 2012-04-16 Denys Vlasenko <vda.linux (a] googlemail.com> 28573 28574 Stop using %h[h]u format specifiers. 28575 This is needed for simplified printf, and reduces code size a bit. 28576 28577 * block.c (block_ioctl): Cast the value to unsinged and use %u 28578 instead of using %hu. 28579 * desc.c (sys_io_cancel): Likewise. 28580 * resource.c (sys_sysinfo): Likewise. 28581 28582 2012-04-16 Denys Vlasenko <vda.linux (a] googlemail.com> 28583 28584 Trivial speed optimization. 28585 * strace.c (tprints): Use fputs_unlocked instead of fputs. 28586 28587 2012-04-16 H.J. Lu <hongjiu.lu (a] intel.com> 28588 28589 Fix a problem with sys_lseek on x32. 28590 * file.c (sys_lseek): Use MIPS-n32 variant also for x32 28591 28592 2012-04-16 H.J. Lu <hongjiu.lu (a] intel.com> 28593 28594 Add x32 support to strace. 28595 X32 support is added to Linux kernel 3.4. In a nutshell, x32 is x86-64 with 28596 32bit pointers. At system call level, x32 is also identical to x86-64, 28597 as shown by many changes like "defined(X86_64) || defined(X32)". The 28598 main differerence bewteen x32 and x86-64 is off_t in x32 is long long 28599 instead of long. 28600 28601 This patch adds x32 support to strace. Tested on Linux/x32. 28602 28603 * configure.ac: Support X32. 28604 * defs.h: Set SUPPORTED_PERSONALITIES to 3 for X86_64, 28605 Set PERSONALITY2_WORDSIZE to 4 for X86_64. 28606 Add tcb::ext_arg for X32. 28607 * file.c (stat): New for X32. 28608 (sys_lseek): Use 64-bit version for X32. 28609 (printstat64): Check current_personality != 1 for X86_64. 28610 * ipc.c (indirect_ipccall): Check current_personality == 1 28611 for X86_64. 28612 * mem.c (sys_mmap64): Also use tcp->u_arg for X32. Print NULL 28613 for zero address. Call printllval for offset for X32. 28614 * pathtrace.c (pathtrace_match): Don't check sys_old_mmap for 28615 X32. 28616 * process.c (ARG_FLAGS): Defined for X32. 28617 (ARG_STACK): Likewise. 28618 (ARG_PTID): Likewise. 28619 (change_syscall): Handle X32. 28620 (struct_user_offsets): Support X32. 28621 (sys_arch_prctl): Likewise. 28622 * signal.c: Include <asm/sigcontext.h> for X32. 28623 (SA_RESTORER): Also define for X32. 28624 * syscall.c (update_personality): Support X32 for X86_64. 28625 (is_restart_error): Likewise. 28626 (syscall_fixup_on_sysenter): Likewise. 28627 (get_syscall_args): Likewise. 28628 (get_syscall_result): Likewise. 28629 (get_error): Likewise. 28630 (__X32_SYSCALL_BIT): Define if not defined. 28631 (__X32_SYSCALL_MASK): Likewise. 28632 (get_scno): Check DS register value for X32. Use 28633 __X32_SYSCALL_MASK on X32 system calls. 28634 * util.c (printllval): Use ext_arg for X32. 28635 (printcall): Support X32. 28636 (change_syscall): Likewise. 28637 (arg0_offset): Likewise. 28638 (arg1_offset): Likewise. 28639 * Makefile.am (EXTRA_DIST): Add linux/x32/errnoent.h, 28640 linux/x32/ioctlent.h.in, linux/x32/signalent.h, 28641 linux/x32/syscallent.h, linux/x86_64/errnoent2.h, 28642 linux/x86_64/ioctlent2.h, linux/x86_64/signalent2.h and 28643 linux/x86_64/syscallent2.h. 28644 * linux/x32/errnoent.h: New. 28645 * linux/x32/ioctlent.h.in: Likewise. 28646 * linux/x32/signalent.h: Likewise. 28647 * linux/x32/syscallent.h: Likewise. 28648 * linux/x86_64/errnoent2.h: Likewise. 28649 * linux/x86_64/ioctlent2.h: Likewise. 28650 * linux/x86_64/signalent2.h: Likewise. 28651 * linux/x86_64/syscallent2.h: Likewise. 28652 28653 2012-04-16 H.J. Lu <hongjiu.lu (a] intel.com> 28654 28655 Restore tcb::u_lrval; fix lseek on MIPS-n32. 28656 Linux kernel v3.4 adds x32 support. Both x32 and n32 use 64bit offset 28657 for lseek parameter and return value. We need u_lrval to handle it 28658 properly. Also we shouldn't check HAVE_LONG_LONG_OFF_T for n32 lseek. 28659 This patch fixes it properly and prepares lseek for x32. 28660 28661 * defs.h (tcb): Restore tcb::u_lrval field, RVAL_Lfoo constants. 28662 Set RVAL_MASK to 7. 28663 * file.c (sys_lseek): Print 64bit offset and return RVAL_LUDECIMAL 28664 for n32. 28665 * syscall.c (get_error): Set u_lrval for MIPS-n32. 28666 (trace_syscall_exiting): Handle RVAL_Lfoo return value types. 28667 28668 2012-04-06 Mike Frysinger <vapier (a] gentoo.org> 28669 28670 Decode mtd ioctls. 28671 I got tired of figuring out mtd structures (which show up a lot 28672 in the embedded space), so add decoders for those ioctls. 28673 28674 * defs.h (mtd_ioctl): New prototype. 28675 (print_loff_t): Likewise. 28676 * io.c (print_loff_t): Delete static keyword 28677 * ioctl.c (ioctl_decode): Call mtd_ioctl when code is 'M'. 28678 * Makefile.am (strace_SOURCES): Add mtd.c. 28679 (EXTRA_DIST): Add linux/mtd-abi.h. 28680 * mtd.c: New file. 28681 * linux/mtd-abi.h: New file. 28682 28683 2012-04-05 Mike Frysinger <vapier (a] gentoo.org> 28684 28685 Fix indefinite hang on no-mmu systems. 28686 The ptrace setoptions code will fork a child which goes to sleep and 28687 expects the parent to continue on to do tests. Unfortunately, this 28688 does not work on no-mmu systems as fork() is actually vfork() and any 28689 vforked children will hang the parent until it exits or execs. 28690 28691 We might be able to make this test work on no-mmu systems with a bit 28692 of work, but easier to just disable this for the release so it works 28693 now. 28694 28695 * strace.c (test_ptrace_setoptions_for_all): Return if strace_vforked. 28696 28697 2012-03-29 Denys Vlasenko <vda.linux (a] googlemail.com> 28698 28699 Makefile.am: whitespace fix. 28700 28701 2012-03-27 Anton Blanchard <anton (a] samba.org> 28702 28703 powerpc: Add syscall entries for direct socket system calls. 28704 * linux/powerpc/syscallent.h: Add direct socket system calls. 28705 28706 2012-03-26 Dmitry V. Levin <ldv (a] altlinux.org> 28707 28708 qual_syscall: fix potential NULL dereference. 28709 Fix regression introduced by commit 28710 c1371ebc400fe9578908beca87f2bf407daf1506 28711 28712 * syscall.c (qual_syscall): Handle null sys_name. 28713 28714 Reported-by: Fr. Br. George <george (a] altlinux.org> 28715 28716 2012-03-26 Dmitry V. Levin <ldv (a] altlinux.org> 28717 28718 strace-log-merge: fix file suffix calculation. 28719 * strace-log-merge: Quote file prefix to fix file suffix calculation. 28720 28721 Reported-by: Denys Vlasenko <vda.linux (a] googlemail.com> 28722 Suggested-by: Andreas Schwab <schwab (a] linux-m68k.org> 28723 28724 2012-03-26 Denys Vlasenko <vda.linux (a] googlemail.com> 28725 28726 Remove unreachable code. 28727 * strace.c (process_opt_p_list): Remove unreachable code. 28728 28729 manpage: remove false info about -p being limited to 32 processes. 28730 28731 Tweak help text and manpage (added -In to manpage) 28732 28733 2012-03-25 Dmitry V. Levin <ldv (a] altlinux.org> 28734 28735 printstr: check for potential integer overflow. 28736 * util.c (printstr): Check for potential integer overflow during outstr 28737 buffer size calculation. 28738 28739 Robustify parsing of numbers from strings. 28740 * defs.h (string_to_uint): New prototype. 28741 * util.c (string_to_uint): New function. 28742 * strace.c (error_opt_arg): New function. 28743 (process_opt_p_list): Use string_to_uint instead of atoi. 28744 Terminate in case of invalid process id. 28745 (init): Use string_to_uint instead of atoi. 28746 Use error_opt_arg in case of invalid option argument. 28747 * syscall.c (qual_syscall, qual_signal, qual_desc): Use string_to_uint 28748 instead of atoi. 28749 28750 strace-log-merge: enhance usage error diagnostics. 28751 * strace-log-merge: Add --help option. Check number of arguments. 28752 Issue an error message when no strace output was merged. 28753 28754 configure.ac: sort lists and use m4_normalize to ease maintenance. 28755 * configure.ac (AC_CHECK_FUNCS, AC_CHECK_HEADERS, AC_CHECK_MEMBERS, 28756 AC_CHECK_DECLS): Sort lists, use m4_normalize. 28757 28758 2012-03-23 Denys Vlasenko <vda.linux (a] googlemail.com> 28759 28760 Simple optimizations. 28761 Why open-coding isdigit is a good idea? 28762 28763 Before: call __ctype_b_loc 28764 movzbl (%ebx),%edx 28765 mov (%eax),%eax 28766 testb $0x8,0x1(%eax,%edx,2) 28767 je lbl 28768 28769 After: movzbl (%eax),%edx 28770 sub $0x30,%edx 28771 cmp $0x9,%dl 28772 ja lbl 28773 28774 text data bss dec hex filename 28775 236869 704 18944 256517 3ea05 strace.before 28776 236719 700 18944 256363 3e96b strace 28777 28778 * defs.h: Alias sigemptyset to __sigemptyset on glibc. 28779 * syscall.c (qual_syscall): Open-code isdigit. 28780 (qual_desc): Likewise. 28781 (qual_signal): Open-code isdigit. Remove string copying 28782 which was done for no apparent reason. 28783 28784 2012-03-23 Denys Vlasenko <vda.linux (a] googlemail.com> 28785 28786 Reorder declarations in defs.h. No code changes. 28787 * defs.h: Reorder declarations (such as: keep all printing functions together). 28788 28789 2012-03-22 Denys Vlasenko <vda.linux (a] googlemail.com> 28790 28791 Simplify current tcp switching and current column handling. 28792 Instead of using "static FILE *outf and static unsigned int curcol" 28793 to cache current outfile and its position, we can simply 28794 remember current tcb and use its ->outf and ->curcol. 28795 This allows to drop numerous "tcp->curcol = curcol" ops in trace(). 28796 28797 Turns out we can't drop "static FILE *outf", but now its role is 28798 a bit clearer: it newer changes after init, stays == stderr or 28799 opened to shared log (which may be the same thing if neither -o 28800 nor -ff was specified). Let's rename it then. 28801 28802 text data bss dec hex filename 28803 236953 704 18944 256601 3ea59 strace.before.prev.commit 28804 236905 704 18944 256553 3ea29 strace.before 28805 236869 704 18944 256517 3ea05 strace 28806 28807 * strace.c: Replace curcol static variable by struct tcb *current_tcp. 28808 Rename static FILE *outf to shared_log (since it no longer caches tcp->outf). 28809 (ptrace_restart): Use current_tcp->curcol instead of curcol. 28810 (tprintf): Check current_tcp != NULL instead of outf != NULL. 28811 Use current_tcp->outf instead of outf, current_tcp->curcol instead of curcol. 28812 (tprints): Likewise. 28813 (line_ended): Likewise. 28814 (printleader): Switch current tcb by "current_tcp = tcp" istead of 28815 assignments to outf and curcol. 28816 (droptcb): Set current_tcp to NULL if we dropped it. 28817 (startup_child): Rename outf to shared_log. 28818 (init): Likewise. 28819 (cleanup): Likewise. 28820 (trace): Simplify current tcp switching and current column handling. 28821 28822 2012-03-22 Denys Vlasenko <vda.linux (a] googlemail.com> 28823 28824 Make threaded execve handling code more reabable and somewhat simpler. 28825 * strace.c (droptcb): Remove outfname check in "outfname && followfork >= 2" - 28826 with recent changes, followfork >= 2 check guarantees that outfile 28827 was specified, and _is already opened_. 28828 (trace): Move tcb existence check before threaded execve handling. 28829 This allows to remove tcp != NULL checks in threaded execve handling. 28830 Rewrite threaded execve handling code to be less indented, 28831 keeping the same logic. 28832 28833 2012-03-21 Denys Vlasenko <vda.linux (a] googlemail.com> 28834 28835 simple cleanups in defs.h. No logic changes. 28836 * defs.h: Move offsetof macro definition into "libc stuff" section. 28837 Renumber TCB_foo constants (smaller constants -> sometimes smaller code). 28838 Remove uoff macro. 28839 * process.c: Move uoff macro here (sole user). 28840 28841 Show "+++ exited..." with -C. 28842 * strace.c (trace): Show "+++ exited..." with -C too. 28843 Save tcp->curcol after PTRACE_LISTEN failure too, just in case. 28844 28845 Slight tweak to qemu_multiarch_testing scripts. 28846 28847 2012-03-21 Denys Vlasenko <vda.linux (a] googlemail.com> 28848 28849 Replace reprinting decision logic. 28850 After this change, we no longer need to decide when we need 28851 to set TCB_REPRINT, and when we don't: it's never needed :) 28852 28853 Well, almost. That pesky pid-changing execve needs special treatment. 28854 If not it, it'd be possible to nuke TCB_REPRINT... 28855 28856 While at it, fix a case of mishandled -C. 28857 28858 * strace.c (printleader): Do not set TCB_REPRINT. 28859 (trace): Set TCB_REPRINT only for execve with changing pid. 28860 Fix mishandling of -C. 28861 * syscall.c (trace_syscall_entering): Do not clear TCB_REPRINT. 28862 (trace_syscall_exiting): Replace reprinting decision logic. 28863 Remove call to printargs(): it is known to just return 0 here. 28864 28865 2012-03-21 Denys Vlasenko <vda.linux (a] googlemail.com> 28866 28867 Report some ptrace failures; nuke tcp->ptrace_errno. 28868 Report some (not all) ptrace errors, namely, 28869 errors on ptrace restart operations. 28870 28871 Before: 10533 sendto(-1, 0x804895e, 17, 0, NULL, 0 <unfinished ...> 28872 After: 10533 sendto(-1, 0x804895e, 17, 0, NULL, 0 <ptrace(SYSCALL):No such process> 28873 28874 This tells user that strace failed to let sendto syscall 28875 to be entered - process was dead at that point of time. 28876 It is (marginally) better than to always say "<unfinished ...>" 28877 28878 While at it, patch removes tcp->ptrace_errno. 28879 I added it many months ago, and it looks that after all 28880 it is not needed for ptrace error detection: I failed to execute 28881 a single existing code path which is accessible 28882 through that variable only. 28883 28884 * defs.h: Remove struct tcp::ptrace_errno field. 28885 * strace.c (ptrace_restart): Emit message to log on error. 28886 (printleader): Remove "if (printing_tcp->ptrace_errno)..." code. 28887 (trace): Remove !tcp->ptrace_errno check, it's always true. 28888 28889 2012-03-20 Denys Vlasenko <vda.linux (a] googlemail.com> 28890 28891 Eliminate redundant checks of res variable. 28892 * syscall.c (trace_syscall_entering): Eliminate redundant checks of res variable. 28893 (trace_syscall_exiting): Likewise. 28894 28895 Rename POWERPC-specific static variable result to ppc_result. 28896 * syscall.c: Rename POWERPC-specific static variable result to ppc_result. 28897 28898 Remove redundant checks in syscall entry/exit, rename badly named function 28899 * syscall.c (syscall_enter): Rename to get_syscall_args. 28900 Document its return values. 28901 (trace_syscall_entering): Don't check get_syscall_args() return 28902 value for 0, it never returns that. 28903 (syscall_fixup_on_sysexit): Make it return void. 28904 (trace_syscall_exiting): Fix up syscall_fixup_on_sysexit() 28905 call site accordingly. 28906 28907 Trivial tweaks. No logic changes. 28908 * process.c (sys_ptrace): Remove unneeded line wrapping. 28909 * syscall.c (trace_syscall_entering): Use tprints() instead of tprintf(). 28910 28911 Make ptrace_restart() static. No code changes. 28912 * defs.h: Remove ptrace_restart() declaration. 28913 * strace.c (ptrace_restart): Move its definition here. 28914 * util.c (ptrace_restart): Remove its definition. 28915 28916 2012-03-20 Dmitry V. Levin <ldv (a] altlinux.org> 28917 28918 Do not include limits.h unnecessarily. 28919 * ioctl.c: Remove limits.h inclusion left after the reverted change. 28920 28921 2012-03-20 Denys Vlasenko <vda.linux (a] googlemail.com> 28922 28923 Partially revert last change. 28924 Thank you Dmitry for spotting it. 28925 28926 * ioctl.c (compare): Partially revert last change - the new 28927 comparison logic was buggy. 28928 28929 2012-03-20 Denys Vlasenko <vda.linux (a] googlemail.com> 28930 28931 Simplify search in ioctl table. 28932 text data bss dec hex filename 28933 236973 704 18944 256621 3ea6d strace.before 28934 236929 704 18944 256577 3ea41 strace 28935 28936 * ioctl.c (compare): Simplify generation of compare result. 28937 (ioctl_lookup): Pass key directly, not as part of dummy struct. 28938 (ioctl_next_match): More readable code. No logic changes. 28939 28940 2012-03-19 Denys Vlasenko <vda.linux (a] googlemail.com> 28941 28942 Update qemu build script: now tries to upload result back to host. 28943 28944 2012-03-19 Denys Vlasenko <vda.linux (a] googlemail.com> 28945 28946 Shrink space needed by undefined syscalls in syscall tables. 28947 Undefined syscall looked like this before this change: 28948 { 5, 0, printargs, "SYS_53" }, 28949 That is, "SYS_53" string had to be allocated and stored in strace binary. 28950 Since now SCNO_IN_RANGE() macro requires sysent[scno].sys_func != NULL 28951 for valid syscalls, we can replace printargs with NULL in such lines 28952 and make them "invalid", thus not requiring syscall name string. 28953 28954 Savings on i386: 28955 text data bss dec hex filename 28956 237389 704 18944 257037 3ec0d strace.before 28957 236973 704 18944 256621 3ea6d strace 28958 Savings on mips: 28959 336551 153692 38320 528563 810b3 strace.before 28960 275543 153688 38320 467551 7225f strace 28961 28962 Tested to still decode undefined syscalls correctly (syscall no. 222 on i386). 28963 28964 * linux/*/syscallent.h: Replace 'printargs, "SYS_nnn"' with 28965 'NULL, NULL'. 28966 28967 2012-03-19 Denys Vlasenko <vda.linux (a] googlemail.com> 28968 28969 Optimize code if we have only one personality. 28970 On i386: 28971 text data bss dec hex filename 28972 238025 672 18980 257677 3ee8d strace.before 28973 237389 704 18944 257037 3ec0d strace 28974 28975 * defs.h: Define PERSONALITY0_WORDSIZE as sizeof(long) if not defined. 28976 Introduce new define, current_wordsize as 28977 (personality_wordsize[current_personality]). 28978 Make set_personality() no-op, current_personality constant zero, 28979 current_wordsize as PERSONALITY0_WORDSIZE if we have only one personality. 28980 * count.c (call_summary): Use current_wordsize instead of 28981 personality_wordsize[current_personality]. 28982 * desc.c (printflock): Likewise. 28983 * file.c (sys_utime): Likewise. 28984 * io.c (tprint_iov): Likewise. 28985 * process.c (printargv): Likewise. 28986 * resource.c (decode_rlimit): Likewise. 28987 * signal.c (sys_kill): Likewise. 28988 (sys_rt_sigaction): Likewise. 28989 * time.c (sprinttv): Likewise. 28990 (sprint_timespec): Likewise. 28991 (printitv_bitness): Likewise. 28992 (tprint_timex): Likewise. 28993 (printsigevent): Likewise. 28994 * util.c (dumpiov): Likewise. 28995 (umoven): Likewise. 28996 (umovestr): Likewise. 28997 * syscall.c: Initialize sysent to sysent0 etc. 28998 Make current_personality, personality_wordsize[], set_personality() 28999 conditional on SUPPORTED_PERSONALITIES > 1. 29000 29001 2012-03-18 Denys Vlasenko <vda.linux (a] googlemail.com> 29002 29003 Fix mips64 build failure: sys_pwrite64 doesn't exist. 29004 sys_pwrite seems to do the same thing as sys_pwrite64 29005 which we deleted when we removed non-Linux code. 29006 29007 * linux/mips/syscallent.h: s/sys_pwrite64/sys_pwrite/ 29008 29009 2012-03-18 Denys Vlasenko <vda.linux (a] googlemail.com> 29010 29011 qemu_multiarch_testing/: a directory with scripts for build testing. 29012 29013 2012-03-18 Denys Vlasenko <vda.linux (a] googlemail.com> 29014 29015 Make internal_fork and internal_exec static. 29016 text data bss dec hex filename 29017 237917 672 18980 257569 3ee21 strace 29018 237845 672 18980 257497 3edd9 strace_new 29019 29020 * defs.h: Remove declarations of internal_fork and internal_exec. 29021 * process.c: Remove definitions of internal_fork and internal_exec. 29022 * syscall.c: Move them here. 29023 (internal_syscall): Return void instead of int. We were always 29024 returning zero, and callers weren't checking it anyway. 29025 29026 2012-03-18 Denys Vlasenko <vda.linux (a] googlemail.com> 29027 29028 Remove code which is not used on Linux. 29029 Compile tested in qemu on armv4l,armv4tl,armv5l,armv6l,i686, 29030 mipsel,mips,x86_64 29031 29032 * syscall.c: Remove code which handles RVAL_Lfoo constants. 29033 * defs.h: Remove struct tcb::u_lrval member - it is never set. 29034 Remove RVAL_Lfoo constants which signify return of "long" result - 29035 they are never used. 29036 29037 2012-03-18 Denys Vlasenko <vda.linux (a] googlemail.com> 29038 29039 Remove unused version of sys_lseek. 29040 It is buggy: it returns RVAL_LUDECIMAL, which means the return value 29041 is in tcp->u_lrval. But tcp->u_lrval is never set 29042 (on Linux - it used to be set on other OSes). 29043 29044 * file.c (sys_lseek): Remove a version of this function which is 29045 supposed to be used if off_t is long long. It appears to be buggy 29046 and unused. 29047 29048 2012-03-17 Denys Vlasenko <vda.linux (a] googlemail.com> 29049 29050 Revert "Remove underscores from a few syscall names which have them" 29051 This reverts commit 31972d52b1059d8faca1c5f417c2db1a90b868ae. 29052 29053 2012-03-17 Denys Vlasenko <vda.linux (a] googlemail.com> 29054 29055 Simplify sys_lseek64 conditional compilation. 29056 It looks like sys_lseek64() is never used. 29057 For one, it is buggy (always shows 0 return value), and no one complains. 29058 29059 From code inspection: sys_lseek64 name is not used anywhere. 29060 It is defined to sys_lseek if HAVE_LONG_LONG_OFF_T is true. 29061 Thus, if !HAVE_LONG_LONG_OFF_T, it is never used. 29062 Therefore "if _LFS64_LARGEFILE || HAVE_LONG_LONG_OFF_T" 29063 conditional it sits in can be simplified to 29064 "if HAVE_LONG_LONG_OFF_T". 29065 Therefore, we can move it a bit up and merge with 29066 "if !HAVE_LONG_LONG_OFF_T, use this sys_lseek()" code block, 29067 by addind an "else" clause to it. 29068 To simplify it more, drop define and just rename sys_lseek64 -> 29069 sys_lseek. 29070 29071 Since the function is buggy, I think it is unused and we can 29072 just drop it. (I checked: at least I386 never uses it). 29073 29074 * file.c (sys_lseek64): Rename to sys_lseek; don't compile it 29075 if _LFS64_LARGEFILE but !HAVE_LONG_LONG_OFF_T since in this case 29076 it is never used. 29077 29078 2012-03-17 Denys Vlasenko <vda.linux (a] googlemail.com> 29079 29080 Remove underscores from a few syscall names which have them. 29081 Affected names are "_newselect", "_llseek", "_sysctl". 29082 I see no apparent reason why they have leading underscores. 29083 Moreover, some arches have underscored names and some have 29084 non-underscored ones. This is not consistent. 29085 29086 I verified that every architectire I touched did not have 29087 a similarly named syscall without underscore, thus this change 29088 does not introduce new ambiquities. 29089 29090 I left "_exit" untouched for now, but the same points stand for it too: 29091 some architectures use "exit" and no one complains. So why many 29092 arches are using "_exit"? 29093 29094 * linux/*/syscallent.h: Remove underscores from displayed 29095 syscall names for _newselect, _llseek, _sysctl. 29096 29097 2012-03-17 Denys Vlasenko <vda.linux (a] googlemail.com> 29098 29099 Remove unused struct tcb::baddr field. 29100 * defs.h: Remove unused struct tcb::baddr field. 29101 29102 Remove unused PTRACE_WRITE{TEXT,DATA} constants (they are from SunOS) 29103 * util.c: Remove unused PTRACE_WRITE{TEXT,DATA} constants. 29104 29105 Reindent case labels. No code changes. 29106 * net.c (printsockopt): Reindent case labels. 29107 * signal.c (sys_signal): Likewise. 29108 29109 Remove unused constants. No code changes. 29110 * syscall.c: Remove unused ENOIOCTLCMD constant. Fix indentation. 29111 * util.c: Remove unused CLONE_STOPPED constant. 29112 29113 Move change_syscall() to its only user and make it static. 29114 * defs.h: Remove declaration of change_syscall(). 29115 * process.c (change_syscall): Remove definition of this function. 29116 * util.c (change_syscall): Add definition of change_syscall(). 29117 29118 MAP_ANON is the same as MAP_ANONYMOUS, no need to have the former. 29119 * mem.c: Do not allocate string for MAP_ANON if it is the same as 29120 MAP_ANONYMOUS. 29121 29122 Indentation and whitespace fixes. No code changes. 29123 29124 test/threaded_execve: make it also test a case when leader is not in syscall 29125 29126 2012-03-16 Dmitry V. Levin <ldv (a] altlinux.org> 29127 29128 Implement prlimit64 decoding, rewrite [gs]etrlimit decoding. 29129 * configure.ac: Remove AC_RLIM_T_IS_LONG_LONG call. 29130 Define SIZEOF_RLIM_T. 29131 * m4/long_long.m4 (AC_RLIM_T_IS_LONG_LONG): Remove. 29132 * linux/dummy.h (sys_prlimit64): Remove. 29133 * linux/syscall.h (sys_prlimit64): New prototype. 29134 * resource.c (resources): Reindent, add RLIMIT_RTTIME. 29135 (sprintrlim, print_rlimit32, sys_getrlimit, sys_setrlimit): Remove. 29136 [HAVE_LONG_LONG_RLIM_T]: Remove dead code. 29137 [_LFS64_LARGEFILE || HAVE_LONG_LONG_RLIM_T]: Likewise. 29138 (sprint_rlim64, print_rlimit64, decode_rlimit64, sprint_rlim32, 29139 print_rlimit32, decode_rlimit, sys_getrlimit, sys_setrlimit, 29140 sys_prlimit64): New functions. 29141 29142 2012-03-16 Denys Vlasenko <vda.linux (a] googlemail.com> 29143 29144 Remove another "interrupt to quit" message. 29145 * strace.c (startup_attach): Remove another "interrupt to quit" message. 29146 29147 Fix "strace -oFILE -ff -p<nonexistant_pid>" behavior. 29148 * strace.c (newoutf): Set tcp->outf in non-ff mode too. 29149 (alloctcb): This define is removed. 29150 (alloc_tcb): Renamed to alloctcb. Does not set tcp->outf anymore. 29151 Lost 'command_options_parsed' flag parameter. 29152 (startup_attach): Do not say "interrupt to quit" in attach message - 29153 ^C does not work in all cases, we mislead users. 29154 Call newoutf(tcp) after successful attach. 29155 (startup_child): Call newoutf(tcp) after successful attach. 29156 (trace): Call newoutf(tcp) when we picked up already attached child. 29157 29158 2012-03-16 Denys Vlasenko <vda.linux (a] googlemail.com> 29159 29160 Make alloc_tcb and droptcb static. No code changes. 29161 The change is trivial. Diff is large because it is confused 29162 by function definitions being moved around. 29163 29164 * defs.h: Remove declarations of alloc_tcb and droptcb. 29165 * strace.c: Make alloc_tcb and droptcb static. 29166 Shuffle functions around to make compiler happy. 29167 29168 2012-03-16 Denys Vlasenko <vda.linux (a] googlemail.com> 29169 29170 Tidy up includes and copyright notices, fix indentation. 29171 The files not mentioned in changelog below had only 29172 copyright notices fixes and indentation fixes. 29173 29174 * defs.h: Include <stdint.h> and <inttypes.h>. 29175 * file.c: Do not include <inttypes.h>. 29176 Move struct kernel_dirent declaration below top include block. 29177 * block.c: Do not include <stdint.h> and <inttypes.h>. 29178 * quota.c: Likewise. 29179 * desc.c: Likewise. 29180 * signal.c: Likewise. 29181 29182 2012-03-16 Dmitry V. Levin <ldv (a] altlinux.org> 29183 29184 scsi.c: add copyright header. 29185 * scsi.c: This file was added back in 2007 without a copyright header. 29186 Add it now. 29187 29188 2012-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 29189 29190 Enhance capget and capset syscalls decoding. 29191 * system.c (cap_version): New xlat structure. 29192 (print_cap_header, print_cap_data): New functions. 29193 (sys_capget, sys_capset): Use them. 29194 29195 Remove unused code. 29196 * syscall.c (subcall_style, decode_subcall): Remove. 29197 [SYS_socket_subcall] (decode_socket_subcall): New function, based on 29198 decode_subcall in deref_style. 29199 [SYS_ipc_subcall] (decode_ipc_subcall): New function, based on 29200 decode_subcall in shift_style. 29201 (trace_syscall_entering): Use decode_socket_subcall and 29202 decode_ipc_subcall instead of decode_subcall. 29203 29204 Fix IPC decoding on alpha and arm. 29205 * ipc.c (indirect_ipccall): Return 0 on ALPHA and ARM EABI. 29206 (sys_shmat): Use indirect_ipccall for proper return value decoding. 29207 29208 arm: fix compilation warnings. 29209 * configure.ac: Define SIZEOF_LONG. 29210 * signal.c (sys_rt_sigaction) [SUPPORTED_PERSONALITIES > 1]: Help 29211 compiler to optimize out unreachable code that is not expected to work 29212 on platforms where sizeof(long) <= 4. 29213 29214 2012-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 29215 29216 tests: robustify again buggy shells. 29217 * tests/init.sh (check_strace): Use "${parameter:-word}" shell syntax 29218 instead of "${parameter-word}". 29219 29220 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 29221 29222 2012-03-15 Mike Frysinger <vapier (a] gentoo.org> 29223 29224 improve ifdef check with decode_subcall. 29225 Use the same ifdef logic around the call sites of decode_subcall() 29226 to protect the definition of the func itself. This fixes warnings 29227 for targets like hppa which don't use this func. 29228 29229 * syscall.c (decode_subcall): Wrap in SYS_socket_subcall and 29230 SYS_ipc_subcall define checks. 29231 29232 2012-03-15 Mike Frysinger <vapier (a] gentoo.org> 29233 29234 alpha: fix decode of osf_sigprocmask. 29235 The alpha sigprocmask syscall is special in that it comes from OSF rather 29236 than the style that everyone else uses. 29237 29238 Tested with this simple code: 29239 $ cat test.c 29240 #include <signal.h> 29241 main() { 29242 sigset_t set, oldset; 29243 sigemptyset(&set); 29244 sigaddset(&set, SIGINT); 29245 sigaddset(&set, SIGHUP); 29246 sigprocmask(SIG_SETMASK, &set, &oldset); 29247 sigprocmask(SIG_UNBLOCK, &oldset, &set); 29248 sleep(3); 29249 } 29250 $ gcc test.c && ./strace ./a.out 29251 ... 29252 osf_sigprocmask(SIG_SETMASK, [HUP INT]) = 0 (old mask []) 29253 osf_sigprocmask(SIG_UNBLOCK, []) = 0x3 (old mask [HUP INT]) 29254 osf_sigprocmask(SIG_BLOCK, [CHLD]) = 0x3 (old mask [HUP INT]) 29255 ... 29256 29257 * linux/alpha/syscallent.h: Call sys_sigprocmask for osf_sigprocmask, 29258 and change number of arguments to two. 29259 * signal.c (sys_sigprocmask): Fix decoding of alpha osf sigprocmask. 29260 29261 2012-03-15 Denys Vlasenko <vda.linux (a] googlemail.com> 29262 29263 Fix array size calculation in previous commit. 29264 * pathtrace.c (getfdpath): Fix array size calculation. 29265 29266 2012-03-15 Denys Vlasenko <vda.linux (a] googlemail.com> 29267 29268 pathtrace_select() is never called with NULL, remove dead code. 29269 pathtrace_select() is only called for -P FILE options, 29270 and FILE is never a NULL pointer. 29271 29272 text data bss dec hex filename 29273 239453 672 19012 259137 3f441 strace.before 29274 239329 672 19012 259013 3f3c5 strace 29275 29276 * pathtrace.c (pathtrace_select): Remove "if (path == NULL)...". 29277 (pathtrace_select): Remove code which only executes if path == NULL. 29278 The code was also buggy, it can free non-malloced pointer. 29279 (getfdpath): Simplify snprintf to sprintf. 29280 (pathmatch): Use strcmp() == 0 idiom for string equality test. 29281 (pathtrace_match): Likewise. 29282 29283 2012-03-15 Denys Vlasenko <vda.linux (a] googlemail.com> 29284 29285 manpage: remove bugs which are fixed. 29286 "A traced process ignores SIGSTOP" - fixed, expected to be in linux-3.4.x. 29287 "A traced process which tries to block SIGTRAP will be sent a SIGSTOP 29288 in an attempt to force continuation of tracing." - not needed 29289 and no longer done. 29290 "On Linux, exciting as it would be, tracing the init process is forbidden" 29291 - not true anymore. 29292 "When a traced process receives a SIGTRAP signal not 29293 associated with tracing, strace will not report that signal correctly." 29294 - not true anymore. 29295 29296 Simplify SIGCHLD handler setting. 29297 * strace.c (init): Set SIGCHLD to SIG_DFL earlier. 29298 (startup_child): Do not bother restoring SIGCHLD handler. 29299 29300 When reporting signals, use short signal names (SIGfoo) instead of strerror 29301 * defs.h: Remove strsignal declaration. 29302 * signal.c: Better check for SI_FROMUSER define. 29303 * strace.c (strerror): Remove this function. 29304 (trace): Use short signal names (SIGfoo) instead of strerror. 29305 29306 Remove TODO file: it's eleven years old and completely outdated. 29307 29308 Clean up defs.h order. No code changes. 29309 * defs.h: Group together related declarations. No code changes. 29310 29311 2012-03-15 Denys Vlasenko <vda.linux (a] googlemail.com> 29312 29313 Fix lame kernel version checking code. 29314 The code "os_release[0] >= '3'" is not good for any 29315 finer-grained checks such as "kernel >= 3.2.1". 29316 Let's proactively fix it. 29317 29318 * strace.c: Change os_release from string to integer. 29319 (get_os_release): Parse uname.release to KERNEL_VERSION 29320 representation. 29321 (init): Convert kernel version check to KERNEL_VERSION. 29322 29323 2012-03-15 Denys Vlasenko <vda.linux (a] googlemail.com> 29324 29325 Experimental support for "detach on execve" feature. 29326 * strace.c: Define new detach_on_execve, skip_startup_execve bool variables. 29327 (init): Set detach_on_execve on -b, set skip_startup_execve if 29328 "strace PROG" form is used. 29329 (trace): Detach from process if -b and we see PTRACE_EVENT_EXEC event. 29330 29331 Simple fixes. 29332 * strace.c (usage): Document -d; document that -F is deprecated. 29333 (droptcb): Print "<detached ...>" correctly for non-ff mode too. 29334 (detach): Suppress a warning. 29335 29336 Remove an outdated comment. 29337 * defs.h: Remove an outdated comment. 29338 29339 Remove extra include directives. No code changes. 29340 * defs.h: Include <signal.h> unconditionally. 29341 Other files were doing it unconditionally, so no harm done. 29342 * bjm.c: Remove system includes which are already included by defs.h. 29343 * pathtrace.c: Likewise. 29344 * process.c: Likewise. 29345 * signal.c: Likewise. 29346 * strace.c: Likewise. 29347 * stream.c: Likewise. 29348 * syscall.c: Likewise. 29349 * system.c: Likewise. 29350 * util.c: Likewise. 29351 29352 2012-03-15 Denys Vlasenko <vda.linux (a] googlemail.com> 29353 29354 Tidy up order of includes; make bool variables explicit. 29355 Bool variables are more compact in data and (on x86) on code too: 29356 29357 text data bss dec hex filename 29358 237950 676 19044 257670 3ee86 strace.before 29359 237838 676 19012 257526 3edf6 strace 29360 29361 * defs.h: Group library includes at the top of the file. 29362 Rename dtime to Tflag, debug to debug_flag. 29363 Change debug_flag,Tflag,qflag,not_failing_only,show_fd_path,tracing_paths 29364 variable declarations from int to bool. 29365 * strace.c: Change corresponding definitions. Do the same for static 29366 variables iflag,rflag,print_pid_pfx. 29367 Rename dtime to Tflag, debug to debug_flag. 29368 * syscall.c: Rename dtime to Tflag, debug to debug_flag. 29369 29370 2012-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 29371 29372 Fix compiler warnings about breaking strict-aliasing rules. 29373 * system.c (sys_capget, sys_capset): Use proxy unions to cast long* 29374 pointers to cap_user_header_t and cap_user_data_t pointers without 29375 breaking strict-aliasing rules. 29376 29377 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 29378 29379 2012-03-15 Mike Frysinger <vapier (a] gentoo.org> 29380 29381 ppc64: drop unused pid variable. 29382 * syscall.c (get_scno) [POWERPC64]: Delete unused pid variable. 29383 29384 2012-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 29385 29386 ia64: fix compilation warnings. 29387 * linux/ia64/syscallent.h: Remove improper defines and undefs. 29388 29389 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 29390 29391 2012-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 29392 29393 Ensure that SWAP_FLAG_* constants are defined. 29394 * file.c: Define those of SWAP_FLAG_* constants which are not yet 29395 provided by <sys/swap.h>. 29396 29397 Reported-by: Mike Frysinger <vapier (a] gentoo.org> 29398 29399 2012-03-14 Dmitry V. Levin <ldv (a] altlinux.org> 29400 29401 Enhance *listxattr syscalls decoding. 29402 * file.c (print_xattr_list): New function. 29403 (sys_listxattr, sys_flistxattr): Use it. 29404 29405 2012-03-13 Dmitry V. Levin <ldv (a] altlinux.org> 29406 29407 Fix *at syscalls flags decoding. 29408 Several *at decoders were defining own incomplete *atflags xlat 29409 structures. That was error prone, and fchownat decoder actually 29410 failed to recognize AT_EMPTY_PATH. Merging these incomplete 29411 structures into the single at_flags xlat structure will fix 29412 flags handling in all these decoders altogether. 29413 29414 * file.c: Define all AT_* constants used by *at decoders. 29415 (at_flags): New xlat structure, with records for all AT_* constants. 29416 (fstatatflags, linkat_flags, unlinkatflags): Remove. 29417 (sys_newfstatat, sys_linkat, sys_unlinkat, sys_fchownat, 29418 sys_utimensat): Use at_flags. 29419 29420 2012-03-13 Dmitry V. Levin <ldv (a] altlinux.org> 29421 29422 Fix linkat flags decoding. 29423 * file.c (linkat_flags): New xlat structure. 29424 (sys_linkat): Decode flags using linkat_flags. 29425 29426 Implement sys_rt_tgsigqueueinfo syscall decoder. 29427 * linux/dummy.h (sys_rt_tgsigqueueinfo): Remove. 29428 * linux/syscall.h (sys_rt_tgsigqueueinfo): New prototype. 29429 * signal.c (print_sigqueueinfo): New function, based on 29430 sys_rt_sigqueueinfo. 29431 (sys_rt_sigqueueinfo): Use print_sigqueueinfo. 29432 (sys_rt_tgsigqueueinfo): New function. 29433 29434 Implement syslog syscall decoder. 29435 * linux/dummy.h (sys_syslog): Remove. 29436 * linux/syscall.h (sys_syslog): New prototype. 29437 * system.c (syslog_action_type): New xlat structure. 29438 (sys_syslog): New function. 29439 29440 2012-03-13 Denys Vlasenko <vda.linux (a] googlemail.com> 29441 29442 Less ugly debug display of ptrace events. 29443 * strace.c (trace): Less ugly debug display of ptrace events. 29444 29445 Make manpage mention that -p "`pidof PROG`" works. 29446 29447 2012-03-13 Denys Vlasenko <vda.linux (a] googlemail.com> 29448 29449 Fix logging for "strace -o FILE -ff test/threaded_execve" test case. 29450 Our logic which was deciding whether to print "<unfinished ...>" 29451 thingy wasn't working properly for -ff case. 29452 29453 * defs.h: Group log generation-related declarations together. 29454 Add a large comment which explains how it works. 29455 Add declaration of line_ended() function. 29456 * strace.c (line_ended): New function which sets up internal data 29457 to indicate that previous line was finished. 29458 (printleader): Change logic to fix log generation in -ff mode. 29459 (newoutf): Make check for -ff mode consistent with other places. 29460 (droptcb): Print "<detached ...>" if last line for this tcp wasn't finished. 29461 (cleanup): Remove code to print "<unfinished ...>", printleader() 29462 or detach() will do it instead. 29463 (trace): Remove code to print "<unfinished ...>". 29464 Add code which finishes threaded execve's incomplete line 29465 with " <pid changed to PID ...>" message. Replace printing_tcp = NULL 29466 followed by fflush() by line_ended() call. 29467 * process.c (sys_exit): Call line_ended() to indicate that we finished priting. 29468 * syscall.c (trace_syscall_exiting): Set printing_tcp to current tcp. 29469 Call line_ended() to indicate that we finished priting. 29470 Remove call to fflush(), it is done by line_ended() now. 29471 29472 2012-03-13 Dmitry V. Levin <ldv (a] altlinux.org> 29473 29474 net.c: recognize MSG_WAITFORONE. 29475 * net.c (msg_flags): Add MSG_WAITFORONE. 29476 29477 2012-03-12 Denys Vlasenko <vda.linux (a] googlemail.com> 29478 29479 Treat -ff without -o FILE as single -f. 29480 * strace.c (init): Treat -ff without -o FILE as single -f. 29481 29482 Style fix. No code changes. 29483 * strace.c (process_opt_p_list): Style fix. 29484 29485 2012-03-12 Denys Vlasenko <vda.linux (a] googlemail.com> 29486 29487 Reduce stack usage by ~0.5k. 29488 main() uses ~0.5k of stack for local variables and such. When we enter 29489 main tracing loop, most of these variables are no longer used. 29490 But they still take up stack for the entire life of strace. 29491 We can avoid this wastage if we move init code into a separate function. 29492 (Need to be careful and not allow automatic inlining). 29493 29494 * strace.c (init): New function. Most of pre-existing code of 29495 main is now living here. 29496 (main): Call init() to do initialization. 29497 29498 2012-03-12 Denys Vlasenko <vda.linux (a] googlemail.com> 29499 29500 Preparatory cosmetic changes for the next commit. 29501 * strace.c (tprintf): Move function up in the source file. No code changes. 29502 (tprints): Likewise. 29503 (printleader): Likewise. 29504 (tabto): Likewise. 29505 29506 2012-03-11 Dmitry V. Levin <ldv (a] altlinux.org> 29507 29508 Implement sendmmsg syscall decoder. 29509 * linux/dummy.h (sys_sendmmsg): Remove. 29510 * linux/syscall.h (sys_sendmmsg): New prototype. 29511 * net.c (printmmsghdr): Add index argument specifying the element in 29512 mmsghdr array to print. 29513 (decode_mmsg): New function, prints the whole mmsghdr array, its length 29514 and message flags. 29515 (sys_sendmmsg): New function. 29516 (sys_recvmmsg): Use decode_mmsg to fix mmsghdr array decoding. 29517 29518 Implement sched_rr_get_interval syscall decoder. 29519 * linux/dummy.h (sys_sched_rr_get_interval): Remove. 29520 * linux/syscall.h (sys_sched_rr_get_interval): New prototype. 29521 * process.c (sys_sched_rr_get_interval): New function. 29522 29523 Implement migrate_pages syscall decoder. 29524 * linux/dummy.h (sys_migrate_pages): Remove. 29525 * linux/syscall.h (sys_migrate_pages): New prototype. 29526 * mem.c (sys_migrate_pages): New function. 29527 29528 Implement get_robust_list syscall decoder. 29529 * linux/dummy.h (sys_get_robust_list): Remove. 29530 * linux/syscall.h (sys_get_robust_list): New prototype. 29531 * process.c (sys_get_robust_list): New function. 29532 29533 Define sys_set_robust_list as an alias to sys_munmap. 29534 * linux/dummy.h (sys_set_robust_list): Redefine to sys_munmap. 29535 29536 Implement clock_adjtime syscall decoder. 29537 * linux/dummy.h (sys_clock_adjtime): Remove. 29538 * linux/syscall.h (sys_clock_adjtime): New prototype. 29539 * time.c (do_adjtimex): New function, based on sys_adjtimex. 29540 (sys_adjtimex): Use it. 29541 (sys_clock_adjtime): New function. 29542 29543 Define sys_setns as an alias to sys_inotify_rm_watch. 29544 * linux/dummy.h (sys_setns): Redefine to sys_inotify_rm_watch. 29545 29546 Sort definitions of dummy parsers. No code changes. 29547 * linux/dummy.h: Sort definitions of parsers implemented as aliases. 29548 29549 Correct inotify_rm_watch decoder. 29550 * file.c (sys_inotify_rm_watch): Print second argument as int. 29551 29552 Alias sys_fsync to sys_close. 29553 * file.c (sys_fsync): Remove. 29554 * linux/syscall.h (sys_fsync): Likewise. 29555 * linux/dummy.h (sys_fsync): Alias to sys_close. 29556 * linux/m68k/syscallent.h: Add TD flag to fsync entry. 29557 * linux/microblaze/syscallent.h: Likewise. 29558 * linux/mips/syscallent.h: Likewise. 29559 29560 2012-03-10 Dmitry V. Levin <ldv (a] altlinux.org> 29561 29562 Update ioctl entries. 29563 * linux/ioctlent.h.in: Regenerate from v3.3 headers. 29564 * linux/i386/ioctlent.h.in: Likewise. 29565 29566 strace-log-merge: cleanup. 29567 * strace-log-merge: Redirect usage to stderr, make the check 29568 for numeric suffix simpler. 29569 29570 Add syscall entries for new linux syscalls. 29571 * linux/i386/syscallent.h: Update process_vm_writev handler. 29572 * linux/powerpc/syscallent.h: Likewise. 29573 * linux/x86_64/syscallent.h: Likewise. 29574 * linux/alpha/syscallent.h: Add entries for accept4 and sendmmsg. 29575 * linux/arm/syscallent.h: Add entries for process_vm_readv and 29576 process_vm_writev. 29577 * linux/m68k/syscallent.h: Likewise. 29578 * linux/mips/syscallent.h: Likewise. 29579 * linux/s390/syscallent.h: Likewise. 29580 * linux/s390x/syscallent.h: Likewise. 29581 * linux/sh/syscallent.h: Likewise. 29582 * linux/sh64/syscallent.h: Likewise. 29583 * linux/sparc/syscallent.h: Likewise. 29584 * linux/ia64/syscallent.h: Add entries for process_vm_readv, 29585 process_vm_writev and accept4. 29586 * linux/microblaze/syscallent.h: Add entries for sendmmsg, 29587 process_vm_readv and process_vm_writev. 29588 29589 Implement process_vm_writev decoder. 29590 * process.c (sys_process_vm_writev): New function. 29591 * linux/syscall.h (sys_process_vm_writev): New prototype. 29592 29593 Output iovec length in vmsplice and process_vm_readv decoders. 29594 * io.c (sys_vmsplice): Output iovec length. 29595 * process.c (sys_process_vm_readv): Likewise. 29596 29597 2012-03-09 Dmitry V. Levin <ldv (a] altlinux.org> 29598 29599 swapon: decode swap flags. 29600 * file.c: Include <sys/swap.h>. 29601 (swap_flags): New xlat structure. 29602 (sys_swapon): New function. 29603 * linux/dummy.h (sys_swapon): Remove. 29604 * linux/syscall.h (sys_swapon): New declaration. 29605 29606 2012-03-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29607 29608 Trivial simplification. 29609 * strace.c (detach): Use waitpid instead of wait4. 29610 29611 2012-03-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29612 29613 Don't consider PROG to be our child in "strace -D PROG" case. 29614 TCB_STRACE_CHILD is used for the case when "strace PROG" is ^C-ed 29615 or something like that. strace should not just exit - it should 29616 do something with its child (such as signal it too). 29617 29618 In -D case, PROG is not really a child of _strace_, it is a child 29619 of strace's parent. It's ok to handle it exactly as an attached process. 29620 29621 While we are at it, remove nonsensical special-casing of TCB_STRACE_CHILD 29622 in printing of "<unfinished ...>" message. 29623 29624 * strace.c (startup_attach): Don't set TCB_STRACE_CHILD if -D. 29625 (trace): Print "<unfinished ...>" on error regardless of TCB_STRACE_CHILD. 29626 29627 2012-03-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29628 29629 Fix the case where we try to detach unattached processes. 29630 Before this change: 29631 $ strace -D -p1 29632 strace: -D and -p are mutually exclusive options 29633 Process 1 detached <==== WRONG! (and we try to SIGSTOP it!!!) 29634 29635 * defs.h: Change the meaning of TCB_ATTACHED: now it means "this tracee 29636 is attached to us". Add TCB_STRACE_CHILD: "this tracee is our child". 29637 * strace.c (kill_save_errno): Move up. No code changes. 29638 (process_opt_p_list): Don't set TCB_ATTACHED on new tcb. 29639 (startup_attach): Change how we work with TCB_ATTACHED. 29640 Set TCB_STRACE_CHILD on -D. 29641 (startup_child): Use kill_save_errno instead of kill. 29642 Set TCB_ATTACHED and TCB_STRACE_CHILD on attached strace child. 29643 If we are in -D case, don't set TCB_ATTACHED (we aren't attached yet). 29644 (detach): do not do PTRACE_DETACH if TCB_ATTACHED is not set. 29645 (cleanup): Check TCB_STRACE_CHILD instead of TCB_ATTACHED. 29646 (trace): Likewise. 29647 29648 2012-03-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29649 29650 Call PTRACE_CONT with addr=0. 29651 * strace.c (trace): Call PTRACE_CONT with addr=0. 29652 29653 install strace-log-merge by "make install" 29654 29655 strace_log_merge: new file. Helper to merge timestamped strace -ff logs. 29656 29657 2012-03-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29658 29659 Fix PID prefix printing in "strace -oLOG -ff -p1 -p2 -p3" case. 29660 In this case we were printing PIDs to LOG.* files 29661 even though it is not necessary. 29662 29663 The fix is in the addition of "&& followfork < 2" condition. 29664 29665 * strace.c: Remove pflag_seen variable, add print_pid_pfx one. 29666 (process_opt_p_list): Do not pflag_seen++. 29667 (main): Use "nprocs != 0" condition instead of "pflag_seen != 0". 29668 Set print_pid_pfx before entering main tracing loop. 29669 (printleader): Use print_pid_pfx to decide whether to print pid prefix. 29670 29671 2012-03-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29672 29673 Allow -p PID to take comma or whitespace-separated list of PIDs. 29674 * defs.h: Clarify meaning of TCB_ATTACHED. No code changes. 29675 * strace.c (process_opt_p_list): New function. 29676 (main): Call process_opt_p_list to process -p PIDs argument. 29677 29678 2012-03-08 Denys Vlasenko <vda.linux (a] googlemail.com> 29679 29680 Pass addr=0 instead of 1 into restarting ptrace calls. 29681 While we are at it, fold do_ptrace into its lone caller. 29682 We no longer set tcp->ptrace_errno = ESRCH on ESRC error in upeek. 29683 Other code paths where ptrace fails wern't doing it, and the code which 29684 checks tcp->ptrace_errno even assumes it is never set to ESRCH. 29685 (It was me who added this code sometime ago, so it was my fault 29686 that it was a bit messy) 29687 29688 I ran sigkill_rain test and verified that unfinished syscalls are 29689 still handled correctly. 29690 29691 * util.c (ptrace_restart): Do not pass addr=1 to ptrace(), pass 0 instead. 29692 I have no idea why we were passing 1. Ptrace documentation says 29693 that addr parameter is ignored. 29694 (do_ptrace): Remove this function. 29695 (upeek): Use ptrace() instead of do_ptrace(). 29696 * defs.h: Remove do_ptrace() declaration. 29697 29698 2012-03-08 Denys Vlasenko <vda.linux (a] googlemail.com> 29699 29700 Trivial tweaks to error messages. 29701 * strace.c (test_ptrace_setoptions_followfork): Use kill_save_errno 29702 instead of kill. 29703 (trace): Use perror_msg instead of perror. 29704 * count.c (set_sortby): Use error_msg_and_die instead of fprintf. 29705 * syscall.c (qualify): Likewise. 29706 * util.c (ptrace_restart): Expand error message. 29707 (umoven): Likewise. 29708 (umovestr): Likewise. 29709 (upeek): Use perror_msg instead of sprintf + perror. 29710 29711 2012-02-28 Denys Vlasenko <vda.linux (a] googlemail.com> 29712 29713 Remove stray sys_swapon() declaration. 29714 * linux/syscall.h: Remove stray sys_swapon() declaration. 29715 * linux/mips/syscallent.h: Include dummy.h with correct relative path. 29716 * linux/dummy.h: Tweak one place where spaces are used instead of tabs. 29717 * linux/dummy_check.sh: New script. It helps in finding stray syscall 29718 handler declarations. 29719 29720 2012-02-27 Denys Vlasenko <vda.linux (a] googlemail.com> 29721 29722 Correct syscall entries for t[g]kill. 29723 * linux/hppa/syscallent.h: Make tgkill use sys_tgkill, not printargs. 29724 * linux/sh/syscallent.h: Change tkill type TD -> TS. 29725 * linux/sh64/syscallent.h: Likewise. 29726 * linux/mips/syscallent.h: Change tkill type 0 -> TS. 29727 * linux/x86_64/syscallent.h: Likewise. 29728 * linux/avr32/syscallent.h: Likewise. 29729 29730 2012-02-27 Denys Vlasenko <vda.linux (a] googlemail.com> 29731 29732 Assorted trivial optimizations. 29733 text data bss dec hex filename 29734 236448 672 19044 256164 3e8a4 strace.before 29735 236360 672 19044 256076 3e84c strace 29736 29737 * file.c (sprintmode): Use smaller static buffer, eliminate strlen call. 29738 (sprinttime): Use smaller static buffer. 29739 (printstat_sparc64): Coalesce two printing calls into one. 29740 (printstat_powerpc32): Likewise. 29741 (printcompat_statfs6): Likewise. 29742 (sys_utime): Do not fetch personality_wordsize[current_personality] 29743 repeatedly - cache it in local variable instead. 29744 * process.c (printargv): Likewise. 29745 * resource.c (sprintrlim): Return const char*, not char*. This allows 29746 to eliminate sprintf(buf, "RLIM_INFINITY"). Use smaller static buffer. 29747 (sprintrlim64): Likewise. 29748 * strace.c (strerror): Use smaller static buffer. 29749 (strsignal): Likewise. 29750 29751 2012-02-27 Denys Vlasenko <vda.linux (a] googlemail.com> 29752 29753 Alias a few more syscall printing functions. 29754 text data bss dec hex filename 29755 237384 672 19044 257100 3ec4c strace.before 29756 236448 672 19044 256164 3e8a4 strace 29757 29758 * defs.h: Declare new functions printargs_lu(), printargs_ld() 29759 which simply print syscall all args as unsigned or signed longs. 29760 * desc.c (sys_epoll_create): Call printargs_ld() instead of open-coding it. 29761 * linux/syscall.h: Remove declarations of the following functions: 29762 sys_alarm, sys_getresgid, sys_getsid, sys_nice, sys_setgid, sys_setpgid, 29763 sys_setpgrp, sys_setregid, sys_setresgid. 29764 * process.c (sys_setgid): Delete this function: now aliased to sys_setuid(). 29765 (sys_getresgid): Delete this function: now aliased to sys_getresuid(). 29766 (sys_setregid): Delete this function: now aliased to sys_setreuid(). 29767 (sys_setresgid): Delete this function: now aliased to sys_setresuid(). 29768 (sys_setpgrp): Delete this function: now aliased to printargs_lu(). 29769 (sys_getsid): Likewise. 29770 (sys_setpgid): Likewise. 29771 (sys_alarm): Likewise. 29772 (sys_getpgrp): Delete this function: was unused - was already shadowed 29773 by a define in linux/dummy.h. 29774 (sys_setsid): Likewise. 29775 (sys_getpgid): Likewise. 29776 * resource.c (sys_nice): Delete this function: now aliased to printargs_ld(). 29777 * linux/dummy.h: Define new aliases (see above for the list). 29778 * syscall.c (printargs_lu): New function. 29779 (printargs_ld): New function. 29780 29781 2012-02-27 Denys Vlasenko <vda.linux (a] googlemail.com> 29782 29783 Style fixes, no code changes. 29784 * desc.c (sys_io_getevents): Indentation fix. 29785 * file.c (sys_xstat): Remove space after function name. 29786 (decode_mknod): Indentation fix. 29787 * net.c (printsockopt): Indentation fix. 29788 * process.c (unalignctl_string): Indentation fix. 29789 (sys_sched_getscheduler): Remove space after ! operator. 29790 29791 2012-02-25 Dmitry V. Levin <ldv (a] altlinux.org> 29792 29793 Compress blank lines. 29794 Suppress repeated empty lines left after automated code removal. 29795 This change was made by filtering every source code file through 29796 "cat -s". 29797 29798 2012-02-25 Dmitry V. Levin <ldv (a] altlinux.org> 29799 29800 Remove parts of automake machinery which are not needed on Linux. 29801 This change is a verbatim part of Dmitry's changes to remove support 29802 for non-Linux architectures. 29803 29804 * Makefile.am: Don't install PORTING file. Install README-linux-ptrace file. 29805 Set OS variable to linux unconditionally. 29806 * configure.ac: Remove code to set opsys variable, and its usage. 29807 Remove checks for headers which are never present on Linux. 29808 * m4/stat.m4: Remove 'ifdef LINUX' check. 29809 * m4/statfs.m4: Likewise. 29810 29811 2012-02-25 Dmitry V. Levin <ldv (a] altlinux.org> 29812 29813 Remove and update documentation. 29814 This change is a verbatim part of Dmitry's changes to remove support 29815 for non-Linux architectures. 29816 29817 * PORTING: Deleted. 29818 * INSTALL: Modified. 29819 * README: Modified. 29820 * strace.1: Modified: bugs should be reported to mailing list, not Debian. 29821 * strace.spec: do not install PORTING file. 29822 29823 2012-02-25 Denys Vlasenko <vda.linux (a] googlemail.com> 29824 29825 Remove a few more code parts which are unused on Linux. 29826 This change is abapted from Dmitry's changes to remove support for 29827 non-Linux architectures. 29828 29829 * Makefile.am: Remove if LINUX/endif pairs. 29830 * defs.h: Remove stream_ioctl() declaration. 29831 * ioctl.c (ioctl_decode): Remove 'ifdef HAVE_SYS_STREAM_H' block. 29832 * resource.c: Use 'defined(FOO)' instead of 'defined FOO' form. 29833 * util.c: Likewise. 29834 * signal.c: Remove conditional includes which are never used on Linux. 29835 * stream.c: Likewise. 29836 * file.c: Remove excessive empty lines. 29837 29838 2012-02-25 Denys Vlasenko <vda.linux (a] googlemail.com> 29839 29840 Build fixes after non-Linux code removal. 29841 * configure.ac: Remove calls to proc-based ptrace checks. 29842 * proc.c: Remove, it's empty now. 29843 * Makefile.am: Remove reference to proc.c. 29844 * net.c: Remove trailing newlines. 29845 * quota.c: Likewise 29846 * resource.c: Likewise 29847 * strace.c: Likewise 29848 * stream.c: Likewise 29849 * time.c: Likewise 29850 29851 Fix defined(FOO) style. 29852 * file.c: Consistently use defined(FOO) instead of defined (FOO). 29853 * mem.c: Likewise. 29854 * net.c: Likewise. 29855 * signal.c: Likewise. 29856 * sock.c: Likewise. 29857 * linux/mips/syscallent.h: Likewise. 29858 29859 Reindent preprocessor directives in util.c; fix style. 29860 * util.c: Fix indentation of preprocessor directives broken by 29861 automatic removal of non-Linux code. Fix style to use consistent 29862 defined(FOO) instead of defined (FOO). 29863 29864 Reindent preprocessor directives in syscall.c; fix style. 29865 * syscall.c: Fix indentation of preprocessor directives broken by 29866 automatic removal of non-Linux code. Fix style to use consistent 29867 defined(FOO) instead of defined (FOO). 29868 29869 Reindent defs.h preprocessor directives. 29870 * defs.h: Fix indentation of preprocessor directives broken by 29871 automatic removal of non-Linux code. 29872 29873 Cleanup after non-Linux code removal. 29874 Conditions such as defined(LINUX) are always true now, 29875 defined(FREEBSD) etc are always false. 29876 When if directive has them as subexpressions, it can be simplified. 29877 Another trivial changes here are fixes for directive indentation. 29878 29879 2012-02-25 Denys Vlasenko <vda.linux (a] googlemail.com> 29880 29881 Manual removal of non-Linux source, documentation, etc. 29882 Remove non-Linux source directories: freebsd/, svr4/, sunos4/, svr4/. 29883 Remove README-freebsd, README-sunos4, README-svr4, m4/procfs.m4. 29884 29885 linux/sparc/{errnoent1,ioctlent1,signalent1}.h used to point to svr4/ files - 29886 replace their contents with copies of used (and now deleted) files. 29887 Make linux/sparc64/{errnoent1,ioctlent1,signalent1}.h include these files 29888 instead of svr4/* ones. 29889 29890 Makefile.am: remove references to deleted files. 29891 configure.ac: Remove a few tests which make no sense on Linux. 29892 Man page: remove non-Linux quirks information. 29893 29894 2012-02-25 Denys Vlasenko <vda.linux (a] googlemail.com> 29895 29896 Automated removal of non-Linux code. 29897 This change is generated by running every source through the following command: 29898 29899 unifdef -DLINUX -Dlinux -USUNOS4 -USVR4 -UUNIXWARE -UFREEBSD 29900 -USUNOS4_KERNEL_ARCH_KLUDGE -UHAVE_MP_PROCFS 29901 -UHAVE_POLLABLE_PROCFS -UHAVE_PR_SYSCALL -UUSE_PROCFS file.c 29902 29903 2012-02-24 Denys Vlasenko <vda.linux (a] googlemail.com> 29904 29905 When accessing data blocks, truncate addr to wordsize. 29906 * util.c (umoven): Truncate addr to wordsize before use. 29907 29908 2012-02-22 Dmitry V. Levin <ldv (a] altlinux.org> 29909 29910 strace.1: fix a typo. 29911 * strace.1: Fix a typo in example description. 29912 This fixes Debian bug #653309. 29913 29914 Fix sockaddr_un.sun_path name in decoded output. 29915 * net.c (printsock): Show sockaddr_un.sun_path as "sun_path". 29916 This fixes Debian bug #554946. 29917 29918 Avoid potential core file clobbering on exit. 29919 * strace.c (main): Set RLIMIT_CORE to zero before terminating itself 29920 with a deadly signal. 29921 This fixes Debian bug #656398. 29922 29923 2012-02-20 Dmitry V. Levin <ldv (a] altlinux.org> 29924 29925 Eliminate native_scno and known_scno. 29926 * defs.h (known_scno): Remove. 29927 (sysent): Remove native_scno field. 29928 * process.c [IA64]: Replace known_scno(tcp) with tcp->scno. 29929 (internal_fork) [USE_PROCFS || !LINUX]: Likewise. 29930 * syscall.c: Do not define NR_SYSCALL_BASE. 29931 (known_scno): Remove. 29932 (syscall_fixup_on_sysenter) [USE_PROCFS]: Replace known_scno(tcp) 29933 with tcp->scno. 29934 (trace_syscall_entering) [SVR4 || FREEBSD || SUNOS4]: Likewise. 29935 (syscall_fixup_on_sysexit) [SUNOS4]: Likewise. 29936 29937 Remove initialization of native_scno field. 29938 * linux/i386/syscallent.h: Remove native_scno initialization for clone, 29939 fork and vfork. 29940 * linux/ia64/syscallent.h (sys_fork, sys_vfork): Remove redirections 29941 to printargs. 29942 * linux/syscall.h [IA64]: Do not define SYS_fork and SYS_vfork. 29943 * util.c (printcall) [IA64]: Likewise. 29944 (setbpt): Use sys_func to check for clone, fork and vfork syscalls. 29945 29946 Do not use SYS_ipc and SYS_socketcall. 29947 * linux/dummy.h (sys_ipc, sys_socketcall): Remove redirections to 29948 printargs. 29949 * linux/ia64/syscallent.h: Likewise. 29950 * linux/i386/syscallent.h: Remove native_scno initialization for "ipc" 29951 and "socketcall". 29952 * linux/syscall.h (sys_ipc, sys_socketcall): New prototypes. 29953 (SYS_ipc, SYS_socketcall): Remove no longer used constants. 29954 [IA64]: Remove undefining of ipc and socket SYS_* constants. 29955 [SPARC || SPARC64]: Remove unused ipc SYS_* constants. 29956 * ipc.c (sys_ipc): New function. 29957 * sock.c (sys_socketcall): Likewise. 29958 * syscall.c (trace_syscall_entering): Use sys_func to check for ipc and 29959 socket subcalls. 29960 29961 2012-02-20 Dmitry V. Levin <ldv (a] altlinux.org> 29962 29963 Remove initialization of native_scno field for most of syscalls. 29964 The native_scno field is not so much used in the code than before. 29965 In many cases sys_func is checked instead, and for most of syscall 29966 entries there is no need to initialize native_scno. 29967 29968 * linux/i386/syscallent.h: Remove native_scno initialization for 29969 _exit, read, write, waitpid, execve, wait4, sysfs, readv, writev, 29970 pread64, pwrite64, exit_group, waitid, send, recv, sendto and 29971 recvfrom syscall entries. 29972 * linux/syscall.h: Do not define no longer used SYS_waitid and 29973 SYS_sub_* constants. 29974 [IA64]: Do not define SYS_waitpid and SYS32_* constants. 29975 * defs.h: Do not define no longer used __NR_exit_group constant. 29976 * strace.c [USE_PROCFS] (proc_open): Use sys_func to check for execve. 29977 29978 2012-02-14 Mike Frysinger <vapier (a] gentoo.org> 29979 29980 util: check for process_vm_readv in C library. 29981 glibc-2.15 provides process_vm_readv, so trying to provide it ourselves 29982 with that version fails. 29983 29984 * configure.ac (AC_CHECK_FUNCS): Add process_vm_readv. 29985 * util.c: Handle HAVE_PROCESS_VM_READV. 29986 29987 2012-02-09 Denys Vlasenko <vda.linux (a] googlemail.com> 29988 29989 README-linux-ptrace: correct the description of suppressed signals. 29990 29991 2012-02-06 Dmitry V. Levin <ldv (a] altlinux.org> 29992 29993 strace -P: fix handling of invalid syscalls. 29994 * pathtrace.c (pathtrace_match): Check the given syscall number using 29995 SCNO_IN_RANGE. 29996 29997 2012-02-06 H.J. Lu <hongjiu.lu (a] intel.com> 29998 29999 Skip the syscall entry if the sys_func field is NULL. 30000 Avoid NULL dereference when there are holes in sysent tables. 30001 It can happen with syscall (number, ...) and number is in those holes. 30002 There are no targets with holey systent tables so far, but at least 30003 one such a target, x32, is already on the horizon. 30004 30005 * defs.h (SCNO_IN_RANGE): Also check the sys_func field. 30006 30007 2012-02-06 H.J. Lu <hongjiu.lu (a] intel.com> 30008 30009 Define RLIM64_INFINITY only if not defined. 30010 * resource.c (RLIM64_INFINITY): Define only if it isn't defined. 30011 30012 2012-02-06 H.J. Lu <hongjiu.lu (a] intel.com> 30013 30014 Cast to long for %l in printf. 30015 Cast a value to long for %l in printf to avoid compiler warning 30016 on systems where it may be long long. 30017 30018 * count.c (call_summary_pers): Cast to long. 30019 * ipc.c (sys_mq_open, printmqattr): Likewise. 30020 * quota.c (decode_cmd_data): Likewise. 30021 * resource.c (sys_sysinfo): Likewise. 30022 * time.c (tprint_timex): Likewise. 30023 30024 2012-02-06 H.J. Lu <hongjiu.lu (a] intel.com> 30025 30026 Check HAVE_LONG_LONG_OFF_T when printing offset. 30027 When HAVE_LONG_LONG_OFF_T is defined, we need to use %llu to print 30028 offset. 30029 30030 * io.c (sys_sendfile): Check HAVE_LONG_LONG_OFF_T when printing 30031 offset. 30032 30033 2012-02-06 H.J. Lu <hongjiu.lu (a] intel.com> 30034 30035 Define old stat functions only if needed. 30036 When HAVE_LONG_LONG_OFF_T is defined, those old stat functions aren't 30037 used and strace won't link since they use realprintstat which isn't 30038 defined when HAVE_LONG_LONG_OFF_T is defined. 30039 30040 * file.c (convertoldstat, sys_oldstat, sys_oldfstat, sys_oldlstat): 30041 Define only if HAVE_LONG_LONG_OFF_T isn't defined. 30042 30043 2012-02-06 H.J. Lu <hongjiu.lu (a] intel.com> 30044 30045 Print NULL for zero address in sys_mmap64. 30046 * mem.c (sys_mmap64): Print NULL for zero address so that it is 30047 consistent with sys_mmap. 30048 30049 2012-02-04 Dmitry V. Levin <ldv (a] altlinux.org> 30050 30051 Remove unused sys_pread64 and sys_pwrite64 parsers on Linux. 30052 * io.c [HAVE_LONG_LONG_OFF_T]: Remove sys_pread64 and sys_pwrite64 30053 aliases. 30054 (sys_pread64, sys_pwrite64): Define these functions only on 30055 [SVR4 && _LFS64_LARGEFILE] platform. 30056 * linux/mips/syscallent.h: Use sys_pread and sys_pwrite to handle 30057 appropriate syscalls. 30058 * linux/syscall.h (sys_pread64, sys_pwrite64): Remove. 30059 * syscall.c (dumpio): Check sys_pread64 and sys_pwrite64 only on 30060 [SVR4 && _LFS64_LARGEFILE] platform. 30061 30062 2012-02-03 Denys Vlasenko <vda.linux (a] googlemail.com> 30063 30064 Trivial changes to help text. No code changes. 30065 * strace.c (usage): Tweak help text: remove unpaired closing brackets, 30066 make -V and -h sit on separate lines (hard to see them otherwise). 30067 30068 2012-01-29 Denys Vlasenko <vda.linux (a] googlemail.com> 30069 30070 Simple optimizations. 30071 text data bss dec hex filename 30072 239474 672 20484 260630 3fa16 strace.before 30073 239234 668 19044 258946 3f382 strace 30074 30075 * file.c (sprint_open_modes): Reduce static buffer size. 30076 Simplify separator printing. 30077 * signal.c (sprintsigmask): Reduce static buffer size. 30078 Simplify separator printing and printing of almost full masks. 30079 Use stpcpy instead of sprintf and strcpy+strlen. 30080 * strace.c (startup_child): Don't strchr() for ':' twice in a row. 30081 * util.c (sprintflags): Exit loop early if possible. 30082 30083 2012-01-29 Denys Vlasenko <vda.linux (a] googlemail.com> 30084 30085 Trivial optimization. 30086 * strace.c (cleanup): Read 'interrupted' volatile variable only once. 30087 30088 2012-01-29 Denys Vlasenko <vda.linux (a] googlemail.com> 30089 30090 Make interactive-ness directly controllable via command line option. 30091 Defaults are often ok, but when they are not, people get confused. 30092 "Why can't I kill strace?" and "Why strace dies on ^C when I want 30093 to _tracee_ to die instead?" are typical complaints. 30094 30095 * strace.c: Replace 'interactive' variable with 'opt_intr' variable. 30096 Define INTR_foo constants for its possible values. 30097 Define 'interactive' as a macro. 30098 (usage): Document -I n option. 30099 (main): Parse -I n option, modify signal handling to accomidate new 30100 -I 1 and -I 4 modes. 30101 30102 2012-01-29 Denys Vlasenko <vda.linux (a] googlemail.com> 30103 30104 Suppress compiler warning. 30105 * strace.c (trace): Frame potentially unused label with ifdef/endif. 30106 30107 On Ctrl-C induced detach, send SIGINT to child tracee, not SIGTERM. 30108 * strace.c (interrupt): Remember signal number. 30109 (cleanup): If we exiting due to signal, send that signal to child tracee. 30110 30111 2012-01-29 Denys Vlasenko <vda.linux (a] googlemail.com> 30112 30113 Add experimental code to use PTRACE_SEIZE, disabled by default. 30114 All new code is predicated on "ifdef USE_SEIZE". If it is not defined, 30115 behavior is not changed. 30116 30117 If USE_SEIZE is enabled and run-time check shows that PTRACE_SEIZE works, then: 30118 - All attaching is done with PTRACE_SEIZE + PTRACE_INTERRUPT. 30119 This means that we no longer generate (and possibly race with) SIGSTOP. 30120 - PTRACE_EVENT_STOP will be generated if tracee is group-stopped. 30121 When we detect it, we issue PTRACE_LISTEN instead of PTRACE_SYSCALL. 30122 This leaves tracee stopped. This fixes the inability to SIGSTOP or ^Z 30123 a straced process. 30124 30125 * defs.h: Add commented-out "define USE_SEIZE 1" and define PTRACE_SEIZE 30126 and related constants. 30127 * strace.c: New variable post_attach_sigstop shows whether we age going 30128 to expect SIGSTOP on attach (IOW: are we going to use PTRACE_SEIZE). 30129 (ptrace_attach_or_seize): New function. Uses PTRACE_ATTACH or 30130 PTRACE_SEIZE + PTRACE_INTERRUPT to attach to given pid. 30131 (startup_attach): Use ptrace_attach_or_seize() instead of ptrace(PTRACE_ATTACH). 30132 (startup_child): Conditionally use alternative attach method using PTRACE_SEIZE. 30133 (test_ptrace_setoptions_followfork): More robust parameters to PTRACE_TRACEME. 30134 (test_ptrace_seize): New function to test whether PTRACE_SEIZE works. 30135 (main): Call test_ptrace_seize() while initializing. 30136 (trace): If PTRACE_EVENT_STOP is seen, restart using PTRACE_LISTEN in order 30137 to not let tracee run. 30138 * process.c: Decode PTRACE_SEIZE, PTRACE_INTERRUPT, PTRACE_LISTEN. 30139 * util.c (ptrace_restart): Add "LISTEN" to a possible error message. 30140 30141 2012-01-28 Denys Vlasenko <vda.linux (a] googlemail.com> 30142 30143 process_vm_readv gets EINVAL if process is gone (SIGKILLed). Don't complain. 30144 * util.c (umoven): Don't complain on EINVAL from process_vm_readv. 30145 (umovestr): Likewise. 30146 30147 Revert last change. Add a comment to prevent further misunderstanding. 30148 * time.c (sys_nanosleep): Display remaining time only on interrupt. 30149 30150 Fix nanosleep decoding: second argument was not shown after success. 30151 * time.c (sys_nanosleep): Fix bug - inverted is_restart_error() check. 30152 * syscall.c (is_restart_error): Remove redundant check. 30153 30154 2012-01-28 Denys Vlasenko <vda.linux (a] googlemail.com> 30155 30156 Use process_vm_readv instead of PTRACE_PEEKDATA to read data blocks. 30157 Currently, we use PTRACE_PEEKDATA to read things like filenames and 30158 data passed by I/O syscalls. 30159 PTRACE_PEEKDATA gets one word per syscall. This is VERY expensive. 30160 For example, in order to print fstat syscall, we need to perform 30161 more than twenty trips into kernel to fetch one struct stat! 30162 30163 Kernel 3.2 got a new syscall, process_vm_readv(), which can be used to 30164 copy data blocks out of process' address space. 30165 30166 This change uses it in umoven() and umovestr() functions if possible, 30167 with fallback to old method if process_vm_readv() fails. 30168 If it returns ENOSYS, we don't try to use it anymore, eliminating 30169 overhead of trying it on older kernels. 30170 30171 Result of "time strace -oLOG ls -l /usr/lib >/dev/null": 30172 before patch: 0.372s 30173 After patch: 0.262s 30174 30175 * util.c (process_vm_readv): Wrapper to call process_vm_readv syscall. 30176 (umoven): Use process_vm_readv for block reads of tracee memory. 30177 (umovestr): Likewise. 30178 * linux/syscall.h: Declare new function sys_process_vm_readv. 30179 * process.c (sys_process_vm_readv): Decoder for new syscall. 30180 * linux/i386/syscallent.h: Add process_vm_readv, process_vm_writev syscalls. 30181 * linux/x86_64/syscallent.h: Likewise. 30182 * linux/powerpc/syscallent.h: Likewise. 30183 30184 2012-01-28 Denys Vlasenko <vda.linux (a] googlemail.com> 30185 30186 Fix a case of broken output if last seen syscall was exit. 30187 * defs.h: Rename tcp_last to printing_tcp. Explain what it means. 30188 Remove printtrailer() function. 30189 * process.c (sys_exit): Convert printtrailer() call to "printing_tcp = NULL". 30190 * strace.c: Add new variable printing_tcp. 30191 (cleanup): Convert printtrailer() call to "printing_tcp = NULL". 30192 (trace): Likewise. 30193 (trace): Fix checks for incomplete line - it was working wrongly if last syscall was exit. 30194 (printleader): Set printing_tcp. 30195 (printtrailer): Remove this function. 30196 * syscall.c: Remove tcp_last variable. 30197 (trace_syscall_entering): Don't set printing_tcp, printleader call now does it. 30198 (trace_syscall_exiting): Convert printtrailer() call to "printing_tcp = NULL". 30199 30200 2012-01-28 Denys Vlasenko <vda.linux (a] googlemail.com> 30201 30202 Fix handling of test/threaded_execve.c testcase. 30203 Since 3.0, Linux has a way to identify which thread execve'ed. 30204 This patch makes use of it in order to properly dispose 30205 of disappeared ("superseded") thread leader, 30206 and replace it with execve'ed thread. 30207 30208 Before this patch, strace was "leaking" thread which exec'ed. 30209 It was thinking that it still runs. It would look like this: 30210 30211 18460 pause( <unfinished ...> <=== thread leader 30212 18466 execve("/proc/self/exe", ["exe", "exe"], [/* 47 vars */] <unfinished ...> 30213 18465 +++ exited with 0 +++ <=== exits from other threads 30214 18460 <... pause resumed> ) = 0 30215 30216 The last line is wrong: it's not pause resumed, it's execve resumed. 30217 If thread leader would do exit instead of pause, it is much worse: 30218 strace panics because it thinks it sees return from exit syscall! 30219 30220 And strace isn't aware 18466 (exec'ed thread) is gone. 30221 It still thinks it's executes execve syscall. 30222 30223 * strace.c: New variable "static char *os_release". 30224 (get_os_release): New static function. 30225 (main): Call get_os_release to retrieve Linux version. 30226 (trace): If we see PTRACE_EVENT_EXEC, retrieve old pid, and if it 30227 differs from new one, free one of tcbs and print correct messages. 30228 30229 2012-01-27 Denys Vlasenko <vda.linux (a] googlemail.com> 30230 30231 Fix readlink result display - was printing bogus "..." semi-randomly. 30232 * file.c (decode_readlink): Use printstr() instead of printpathn(). 30233 30234 Add new test program: test/threaded_execve.c. 30235 30236 Make pid2tcb static. 30237 * defs.h: Remove pid2tcb declaration. 30238 * strace.c (pid2tcb): Make this function static. 30239 30240 2012-01-24 Denys Vlasenko <vda.linux (a] googlemail.com> 30241 30242 Per Dmitry's request, remove paranoid check in verror_msg() 30243 * strace.c (verror_msg): Remove redundant check for msg != NULL. 30244 30245 More robust error check for vasprintf. 30246 * strace.c (verror_msg): More robust error check for vasprintf. 30247 30248 2012-01-24 Denys Vlasenko <vda.linux (a] googlemail.com> 30249 30250 Slightly more compact handling of argv[] 30251 text data bss dec hex filename 30252 238274 672 20484 259430 3f566 strace.before 30253 238226 672 20484 259382 3f536 strace 30254 30255 * strace.c (main): Slightly more compact handling of argv[] 30256 30257 2012-01-24 Denys Vlasenko <vda.linux (a] googlemail.com> 30258 30259 Trivial optimization. 30260 * strace.c: Set default interactive = 1 statically instead 30261 of doing it in main(). 30262 30263 2012-01-24 Denys Vlasenko <vda.linux (a] googlemail.com> 30264 30265 Allocate -o OUTFILE buffer only if needed. 30266 text data bss dec hex filename 30267 238258 668 28676 267602 41552 strace.before 30268 238274 668 20484 259426 3f562 strace 30269 30270 * strace.c (main): Allocate -o OUTFILE buffer only if needed: 30271 unused buffer in bss is not entirely free. 30272 30273 2012-01-24 Denys Vlasenko <vda.linux (a] googlemail.com> 30274 30275 Use single fprintf in verror_msg() 30276 This change partially reverts commit 44d0532. 30277 30278 In code before commit 44d0532, single fprintf was used on purpose: 30279 we want to send entire message as one write() call. Since stderr 30280 is unbuffered, separate fprintf's to it always result in separate 30281 writes, they are not coalesced. If we aren't the only program 30282 which writes to this particular stderr, this may result 30283 in interleaved messages. 30284 30285 Since this function is not performance critical, I guess 30286 it's ok to make it less efficient. 30287 30288 * strace.c (verror_msg): Attempt to print the message in single 30289 write operation. Use separate fprintfs as a fallback if malloc fails. 30290 30291 2012-01-21 Denys Vlasenko <vda.linux (a] googlemail.com> 30292 30293 Improve code readability (logic is unchanged) 30294 * util.c (umoven): Move assignment out of function call. Make assignment 30295 to a flag variable later, closer to the place where it will be used. 30296 (umovestr): Likewise. 30297 (uload): Likewise. 30298 30299 2012-01-20 Denys Vlasenko <vda.linux (a] googlemail.com> 30300 30301 Change umovestr API: return > 0 instead of 0 if NUL was seen. 30302 * pathtrace.c (upathmatch): Adjust umovestr return value check for new API. 30303 * util.c (printpathn): Use umovestr() > 0 return value for more efficient 30304 (and robust - we don't depend on "no overwrote past NUL" behavior anymore) 30305 handling of terminating NUL. 30306 (printstr): Remove useless NUL placement before umovestr() call. 30307 Allocate 1 byte more to outstr[] array - for NUL. 30308 (umovestr): Change to return 1 if NUL was seen. 30309 30310 umovestr result may have no NUL, use "%.*s" instead of "%s" to print it. 30311 * system.c (sys_mount): Be careful when printing umovestr result, 30312 it may have no terminating NUL. 30313 (sys_sysmips): Likewise. 30314 30315 2012-01-20 Denys Vlasenko <vda.linux (a] googlemail.com> 30316 30317 Eliminate code duplication in time printing, reduce a few static buffers 30318 text data bss dec hex filename 30319 238454 664 28772 267890 41672 strace.before 30320 238106 664 28676 267446 414b6 strace 30321 30322 * defs.h: Add TIMESPEC_TEXT_BUFSIZE and TIMEVAL_TEXT_BUFSIZE defines. 30323 Add 'int special' parameter to sprinttv(). 30324 * time.c (sprinttv): Add 'int special' parameter, and use it 30325 similarly to 'int special' parameter of printtv_bitness(). 30326 (printtv_bitness): Use sprinttv() instead of duplicating its code. 30327 (print_timespec): Use sprint_timespec() instead of duplicating 30328 its code. 30329 * desc.c (decode_select): Use TIMEVAL_TEXT_BUFSIZE instead of 128 30330 when checking remaining buffer size. 30331 * net.c (sys_recvmsg): Use TIMESPEC_TEXT_BUFSIZE instead of 128 30332 for static buffer size. 30333 * stream.c (decode_poll): Use TIMESPEC_TEXT_BUFSIZE instead of 128 30334 when checking remaining buffer size. 30335 30336 2012-01-19 Denys Vlasenko <dvlasenk (a] redhat.com> 30337 30338 Reduce bss usage and speed up string printing. 30339 text data bss dec hex filename 30340 237913 660 49284 287857 46471 strace.before 30341 237973 660 28772 267405 4148d strace 30342 30343 This reduces L1 D-cache pressure a bit: instead of dirtying 30344 20k of bss, we will reuse already dirty stack area. 30345 30346 * util.c (printpathn): Use on-stack buffers instead of static ones. 30347 Saves 5*MAXPATHLEN in bss. 30348 (printstr): Use tprints() instead of tprintf("%s") when printing 30349 formatted string. May be a bit faster, depending on libc. 30350 30351 2012-01-18 Andreas Schwab <schwab (a] linux-m68k.org> 30352 30353 Add support for compat_statfs64. 30354 * file.c (struct compat_statfs64, printcompat_statfs64): Define. 30355 (sys_statfs64, sys_fstatfs64): Use it. 30356 30357 Add support for statfs64.f_flags. 30358 * file.c (printstatfs64): Print f_flags if available. 30359 30360 Fix missing parens. 30361 * signal.c (sys_sigreturn): Add missing parens. 30362 30363 2012-01-18 Denys Vlasenko <dvlasenk (a] redhat.com> 30364 30365 Get rid of TCB_SIGTRAPPED. 30366 On attempts to block or set SIGTRAP handler, 30367 for example, using sigaction syscall, we generate 30368 an additional SIGSTOP. 30369 30370 This change gets rid of this SIGSTOP sending/ignoring. 30371 It appears to work just fine. 30372 30373 It also works if I force strace to not use PTRACE_O_TRACESYSGOOD, 30374 which means strace stops will be marked with SIGTRAP, 30375 not (SIGTRAP | 0x80) - I wondered maybe that's when 30376 this hack is needed. 30377 30378 So, why we even have TCB_SIGTRAPPED? No one knows. It predates 30379 version control: this code was present in the initial commit, 30380 in 1999. No adequate comments, either. 30381 30382 Moreover, TCB_SIGTRAPPED is not set in sys_rt_sigaction 30383 and sys_sigprocmask syscalls - the ones which are most usually 30384 used to implement signal blocking, it is only set in obsolete 30385 sys_signal, sys_sigaction, sys_sigsetmask, and in some dead 30386 non-Linux code. 30387 30388 I think whatever bug it was fixing is gone long ago - 30389 at least as long as sys_rt_sigaction is used by glibc. 30390 Again, since glibc (and uclibc) uses sys_rt_sigaction 30391 and sys_sigprocmask, modified code paths are not used 30392 by most programs anyway. 30393 30394 * defs.h: Remove definition of TCB_SIGTRAPPED. 30395 * signal.c (sys_sigvec): Don't set TCB_SIGTRAPPED and don't send SIGSTOP. 30396 (sys_sigsetmask): Likewise. 30397 (sys_sigaction): Likewise. 30398 (sys_signal): Likewise. 30399 * strace.c (trace): Remove code which executes if TCB_SIGTRAPPED is set. 30400 30401 2012-01-18 Denys Vlasenko <dvlasenk (a] redhat.com> 30402 30403 When we write log, flush output buffers in a few more cases. 30404 I observed a case when signal delivery message was buffered 30405 by stdio until it was flushed along with the next syscall 30406 entry message. 30407 30408 * strace.c (trace): Flush output buffers in a few more cases. 30409 30410 2012-01-18 Denys Vlasenko <dvlasenk (a] redhat.com> 30411 30412 Fix old sigaction display. 30413 * signal.c (sys_sigaction): Fix display of sigaction with 30414 SIG_DFL/SIG_IGN handlers. 30415 30416 Change x86_64_regs struct type from pt_regs to user_regs_struct. 30417 * syscall.c: Change x86_64_regs struct type from 30418 pt_regs to user_regs_struct, and explain the change in comment. 30419 30420 2012-01-17 Dmitry V. Levin <ldv (a] altlinux.org> 30421 30422 Fix struct pt_regs declaration on i386 and x86-64. 30423 * defs.h [I386] (i386_regs): Replace definition with declaration. 30424 [X86_64] (x86_64_regs): Remove. 30425 * syscall.c [X86_64] (x86_64_regs): Make static. 30426 30427 2012-01-12 Denys Vlasenko <dvlasenk (a] redhat.com> 30428 30429 Make ERESTARTxyz messages more descriptive. 30430 There is widespread confusion about exact meaning 30431 of ERESTARTxyz codes. Before this change, we were showing 30432 all four of them the same: as "(To be restarted)". 30433 30434 This change prints better explanations for these codes, 30435 and contains verbose comments which explain *why* we display 30436 codes that way - or else someone confused 30437 is bound to come later and mangle them again. 30438 New messages are: 30439 30440 ERESTARTSYS (To be restarted if SA_RESTART is set) 30441 ERESTARTNOINTR (To be restarted) 30442 ERESTARTNOHAND (Interrupted by signal) 30443 ERESTART_RESTARTBLOCK (Interrupted by signal) 30444 30445 * syscall.c (trace_syscall_exiting): Make ERESTARTxyz messages 30446 more descriptive. 30447 30448 2012-01-10 Denys Vlasenko <dvlasenk (a] redhat.com> 30449 30450 Fix sigreturn arg count from 1 to 0 on all architectures. 30451 * linux/alpha/syscallent.h: Change [rt_]sigreturn's arg count to 0. 30452 * linux/arm/syscallent.h: Likewise. 30453 * linux/avr32/syscallent.h: Likewise. 30454 * linux/bfin/syscallent.h: Likewise. 30455 * linux/m68k/syscallent.h: Likewise. 30456 * linux/microblaze/syscallent.h: Likewise. 30457 * linux/mips/syscallent.h: Likewise. 30458 * linux/powerpc/syscallent.h: Likewise. 30459 * linux/sh/syscallent.h: Likewise. 30460 * linux/sh64/syscallent.h: Likewise. 30461 * linux/sparc/syscallent.h: Likewise. 30462 * linux/tile/syscallent.h: Likewise. 30463 30464 2012-01-10 Denys Vlasenko <dvlasenk (a] redhat.com> 30465 30466 Display mask on enter to sigreturn, not on exit. 30467 sys_sigreturn() performs ugly manipulations in order to show 30468 signal mask which is restored by this syscall: on syscall entry, 30469 fetches it from the stack, saves it in tcp->u_arg[] 30470 (where it used to overflow this array - fixed sometime ago), 30471 then retrieves the mask and displays it on syscall exit. 30472 30473 Apparently, the motivation is to make it slightly more obvious 30474 to user that signal mask is restored only when this syscall returns. 30475 IMO, this hardly justifies the necessary hacks. It is much easier 30476 to display the mask at the point when we fetch it - on syscall entry. 30477 30478 While at it, I made it so that we do display returned value/errno. 30479 I see no point in hiding it and showing uninformative "= ?" instead. 30480 30481 Example of pause() being interrupted by ALRM which has installed handler 30482 which re-arms ALRM: 30483 30484 Before the patch: 30485 30486 rt_sigsuspend([INT]) = ? ERESTARTNOHAND (To be restarted) 30487 --- {si_signo=SIGALRM, si_code=SI_KERNEL} (Alarm clock) --- 30488 alarm(1) = 0 30489 sigreturn() = ? (mask now [INT]) 30490 30491 After: 30492 30493 rt_sigsuspend([INT]) = ? ERESTARTNOHAND (To be restarted) 30494 --- {si_signo=SIGALRM, si_code=SI_KERNEL} (Alarm clock) --- 30495 alarm(1) = 0 30496 sigreturn() (mask [INT]) = -1 EINTR (Interrupted system call) 30497 30498 * defs.h: Declare struct pt_regs i386_regs and struct pt_regs x86_64_regs. 30499 * syscall.c: Remove "static" keywork from these structures' definitions. 30500 * signal.c (sys_sigreturn): Display mask on enter, not on exit. 30501 30502 2012-01-04 Denys Vlasenko <dvlasenk (a] redhat.com> 30503 30504 Do not detach from tracee which experienced ptrace error. 30505 Before this patch, if a thread got nuked by exit in another thread 30506 and we happened to poke it at the same time, we print "????(" thingy 30507 and detach the thread. Since we removed "detach before death" logic, 30508 this no longer matches the behavior of other threads. 30509 Before patch: 30510 [pid 1780] exit_group(1) = ? 30511 [pid 1778] ????( <unfinished ...> 30512 Process 1778 detached 30513 [pid 5860] +++ exited with 1 +++ 30514 After: 30515 [pid 17765] exit_group(1) = ? 30516 [pid 21680] ????( <unfinished ...> 30517 [pid 17791] +++ exited with 1 +++ 30518 [pid 21680] +++ exited with 1 +++ 30519 30520 * strace (trace): Do not detach from tracee which experienced ptrace error. 30521 30522 2012-01-04 Denys Vlasenko <dvlasenk (a] redhat.com> 30523 30524 Remove sig parameter from detach() 30525 * strace.c (detach): Drop sig parameter - it is zero in all calls. 30526 (cleanup): Don't pass sig = 0 to detach() call. 30527 (detach): Ditto. 30528 30529 2011-12-26 Dmitry V. Levin <ldv (a] altlinux.org> 30530 30531 Enhance decoding for personalities with small wordsize. 30532 * util.c (umoven, umovestr) [SUPPORTED_PERSONALITIES > 1]: If current 30533 personality's wordsize is less than sizeof(long), use only significant 30534 bits of the given address. 30535 30536 2011-12-23 Dmitry V. Levin <ldv (a] altlinux.org> 30537 30538 Enhance personality switching. 30539 On syscall entry, save current personality in the tcb structure 30540 along with scno. 30541 On syscall exit, restore current personality from the tcb structure. 30542 * defs.h (struct tcb) [SUPPORTED_PERSONALITIES > 1]: Add currpers 30543 field. 30544 * strace.c (alloc_tcb) [SUPPORTED_PERSONALITIES > 1]: Initialize 30545 tcp->currpers. 30546 * syscall.c (update_personality) [SUPPORTED_PERSONALITIES > 1]: New 30547 function. 30548 (get_scno, trace_syscall_exiting): Use it. 30549 30550 Reported-by: Michael A Fetterman <mafetter (a] nvidia.com> 30551 30552 2011-12-01 Dmitry V. Levin <ldv (a] altlinux.org> 30553 30554 * net.c (socktcpoptions): Add more TCP_* constants from linux/tcp.h. 30555 Reported-by: Rick Jones <rick.jones2 (a] hp.com> 30556 30557 2011-12-01 Heiko Carstens <heiko.carstens (a] de.ibm.com> 30558 30559 Fix sys_ipc/sys_semtimedop decoding on s390. 30560 The s390 kernel sys_ipc system call only takes five arguments instead of 30561 six arguments which the common code sys_ipc implementation takes. 30562 One of the arguments of the sys_semtimedop subcall is therefore passed in 30563 a different register than in the common code implementation. 30564 This leads to broken decoding of the timespec argument: 30565 30566 semtimedop(0, 0x3ffffb43832, 1, {...}) = -1 EAGAIN 30567 30568 Fixed it looks like this: 30569 30570 semtimedop(0, 0x3ffffc2c842, 1, {0, 10000000}) = -1 EINTR 30571 30572 * linux/ipc.c (sys_semtimedop): Fix timespec decoding on s390. 30573 30574 2011-11-29 Dmitry V. Levin <ldv (a] altlinux.org> 30575 30576 strace.c (trace): Fix compilation warning. 30577 30578 2011-11-28 Dmitry V. Levin <ldv (a] altlinux.org> 30579 30580 linux/syscall.h: Remove redundant function declarations. 30581 Remove 51 function declarations aliased to other declarations in 30582 linux/dummy.h file. 30583 30584 linux/syscall.h: Sort function declarations. 30585 30586 linux/syscall.h: Place one function declaration per line. 30587 30588 Remove redundant parsers. 30589 * desc.c (sys_dup): Remove. 30590 * file.c (sys_pivotroot, sys_rmdir, sys_fchdir, sys_chroot, sys_fchroot, 30591 sys_unlink, sys_symlink, sys_rename): Remove. 30592 * linux/syscall.h (sys_chroot, sys_dup, sys_fchdir, sys_pivotroot, 30593 sys_rename, sys_rmdir, sys_symlink, sys_unlink): Remove. 30594 * linux/dummy.h: Add aliases for sys_chroot, sys_dup, sys_pivotroot, 30595 sys_rename, sys_rmdir, sys_symlink, sys_unlink. 30596 * pathtrace.c (pathtrace_match): Update. 30597 * sunos4/dummy.h: Add aliases for sys_chroot, sys_dup, sys_fchdir, 30598 sys_fchroot, sys_rename, sys_rmdir, sys_symlink, sys_unlink. 30599 * svr4/dummy.h: Likewise. 30600 * sunos4/syscall.h (sys_chroot, sys_dup, sys_fchdir, sys_fchroot, 30601 sys_rename, sys_rmdir, sys_symlink, sys_unlink): Remove. 30602 * svr4/syscall.h (sys_chroot, sys_dup, sys_fchdir, sys_fchroot, 30603 sys_rename, sys_rmdir, sys_symlink, sys_unlink): Remove. 30604 30605 Reflect the fact that nfsservctl syscall was removed from linux kernels. 30606 linux/dummy.h: Move nfsservctl to "unimplemented" section. 30607 30608 2011-11-27 Dmitry V. Levin <ldv (a] altlinux.org> 30609 30610 x86_64: add getcpu syscall entry. 30611 * linux/x86_64/syscallent.h: Add syscall entry for getcpu. 30612 30613 2011-11-26 Dmitry V. Levin <ldv (a] altlinux.org> 30614 30615 Add syscall entries for new linux syscalls. 30616 * linux/dummy.h: Add printargs parsers for new syscalls. 30617 * linux/arm/syscallent.h: Add entries for sys_clock_adjtime, 30618 sys_name_to_handle_at, sys_open_by_handle_at, sys_sendmmsg, sys_setns 30619 and sys_syncfs. 30620 * linux/i386/syscallent.h: Likewise. 30621 * linux/ia64/syscallent.h: Likewise. 30622 * linux/mips/syscallent.h: Likewise. 30623 * linux/powerpc/syscallent.h: Likewise. 30624 * linux/sh/syscallent.h: Likewise. 30625 * linux/sh64/syscallent.h: Likewise. 30626 * linux/sparc/syscallent.h: Likewise. 30627 * linux/x86_64/syscallent.h: Likewise. 30628 * linux/alpha/syscallent.h: Add entries for sys_clock_adjtime, 30629 sys_name_to_handle_at, sys_open_by_handle_at, sys_setns and sys_syncfs. 30630 * linux/m68k/syscallent.h: Likewise. 30631 * linux/microblaze/syscallent.h: Likewise. 30632 * linux/s390/syscallent.h: Likewise. 30633 * linux/s390x/syscallent.h: Likewise. 30634 * linux/avr32/syscallent.h: Add entry for sys_setns. 30635 * linux/bfin/syscallent.h: Add entries for sys_sendmmsg and sys_setns. 30636 * linux/hppa/syscallent.h: Add entries for sys_clock_adjtime, 30637 fanotify_init, fanotify_mark, sys_name_to_handle_at, 30638 sys_open_by_handle_at, sys_sendmmsg, sys_setns and sys_syncfs. 30639 30640 Fix prctl syscall entries. 30641 * linux/mips/syscallent.h: Fix prctl handler. 30642 * linux/tile/syscallent.h: Likewise. 30643 30644 arm: fix io_* syscall entries. 30645 * linux/arm/syscallent.h: Fix handlers for io_setup, io_destroy, 30646 io_getevents, io_submit and io_cancel. 30647 30648 Fix mincore syscall entries. 30649 * linux/arm/syscallent.h: Fix mincore handler. 30650 * linux/avr32/syscallent.h: Likewise. 30651 * linux/mips/syscallent.h: Likewise. 30652 * linux/sh/syscallent.h: Likewise. 30653 * linux/sh64/syscallent.h: Likewise. 30654 30655 2011-11-25 Dmitry V. Levin <ldv (a] altlinux.org> 30656 30657 Fix sendmsg syscall entries. 30658 * linux/arm/syscallent.h: Fix number of sendmsg arguments. 30659 * linux/avr32/syscallent.h: Likewise. 30660 * linux/bfin/syscallent.h: Likewise. 30661 * linux/hppa/syscallent.h: Likewise. 30662 * linux/i386/syscallent.h: Likewise. 30663 * linux/m68k/syscallent.h: Likewise. 30664 * linux/microblaze/syscallent.h: Likewise. 30665 * linux/powerpc/syscallent.h: Likewise. 30666 * linux/s390/syscallent.h: Likewise. 30667 * linux/s390x/syscallent.h: Likewise. 30668 * linux/sh/syscallent.h: Likewise. 30669 * linux/sh64/syscallent.h: Likewise. 30670 * linux/sparc/syscallent.h: Likewise. 30671 * linux/tile/syscallent.h: Likewise. 30672 * linux/x86_64/syscallent.h: Likewise. 30673 30674 Fix epoll_wait syscall entries. 30675 * linux/arm/syscallent.h: Fix epoll_wait flags and handler. 30676 * linux/m68k/syscallent.h: Fix epoll_wait flags. 30677 * linux/microblaze/syscallent.h: Fix number of epoll_wait arguments. 30678 * linux/sh/syscallent.h: Likewise. 30679 * linux/sh64/syscallent.h: Likewise. 30680 * linux/x86_64/syscallent.h: Likewise. 30681 30682 Fix epoll_ctl syscall entries. 30683 * linux/arm/syscallent.h: Fix epoll_ctl flags and handler. 30684 * linux/m68k/syscallent.h: Fix epoll_ctl flags. 30685 * linux/x86_64/syscallent.h: Fix number of epoll_ctl arguments. 30686 30687 arm: fix epoll_create syscall entry. 30688 * linux/arm/syscallent.h: Fix epoll_create handler. 30689 30690 Fix mlockall syscall entries. 30691 * linux/arm/syscallent.h: Fix number of mlockall arguments. 30692 * linux/avr32/syscallent.h: Likewise. 30693 * linux/bfin/syscallent.h: Likewise. 30694 * linux/i386/syscallent.h: Likewise. 30695 * linux/m68k/syscallent.h: Likewise. 30696 * linux/microblaze/syscallent.h: Likewise. 30697 * linux/s390/syscallent.h: Likewise. 30698 * linux/s390x/syscallent.h: Likewise. 30699 * linux/sh/syscallent.h: Likewise. 30700 * linux/sh64/syscallent.h: Likewise. 30701 * linux/sparc/syscallent.h: Likewise. 30702 * linux/tile/syscallent.h: Likewise. 30703 * linux/x86_64/syscallent.h: Likewise. 30704 30705 Fix epoll_pwait syscall entries. 30706 * linux/alpha/syscallent.h: Fix number of epoll_pwait arguments. 30707 * linux/arm/syscallent.h: Likewise. 30708 * linux/avr32/syscallent.h: Likewise. 30709 * linux/bfin/syscallent.h: Likewise. 30710 * linux/i386/syscallent.h: Likewise. 30711 * linux/ia64/syscallent.h: Likewise. 30712 * linux/m68k/syscallent.h: Likewise. 30713 * linux/microblaze/syscallent.h: Likewise. 30714 * linux/mips/syscallent.h: Likewise. 30715 * linux/powerpc/syscallent.h: Likewise. 30716 * linux/s390/syscallent.h: Likewise. 30717 * linux/s390x/syscallent.h: Likewise. 30718 * linux/sh/syscallent.h: Likewise. 30719 * linux/sh64/syscallent.h: Likewise. 30720 * linux/sparc/syscallent.h: Likewise. 30721 * linux/tile/syscallent.h: Likewise. 30722 * linux/x86_64/syscallent.h: Likewise. 30723 30724 Fix reboot syscall entries. 30725 * linux/alpha/syscallent.h: Fix number of reboot arguments. 30726 * linux/arm/syscallent.h: Likewise. 30727 * linux/avr32/syscallent.h: Likewise. 30728 * linux/bfin/syscallent.h: Likewise. 30729 * linux/hppa/syscallent.h: Likewise. 30730 * linux/i386/syscallent.h: Likewise. 30731 * linux/ia64/syscallent.h: Likewise. 30732 * linux/m68k/syscallent.h: Likewise. 30733 * linux/microblaze/syscallent.h: Likewise. 30734 * linux/mips/syscallent.h: Likewise. 30735 * linux/powerpc/syscallent.h: Likewise. 30736 * linux/s390/syscallent.h: Likewise. 30737 * linux/s390x/syscallent.h: Likewise. 30738 * linux/sh/syscallent.h: Likewise. 30739 * linux/sh64/syscallent.h: Likewise. 30740 * linux/sparc/syscallent.h: Likewise. 30741 * linux/tile/syscallent.h: Likewise. 30742 * linux/x86_64/syscallent.h: Likewise. 30743 30744 Fix swapon syscall entries. 30745 * linux/arm/syscallent.h: Fix number of swapon arguments. 30746 * linux/avr32/syscallent.h: Likewise. 30747 * linux/bfin/syscallent.h: Likewise. 30748 * linux/i386/syscallent.h: Likewise. 30749 * linux/m68k/syscallent.h: Likewise. 30750 * linux/microblaze/syscallent.h: Likewise. 30751 * linux/mips/syscallent.h: Likewise. 30752 * linux/powerpc/syscallent.h: Likewise. 30753 * linux/s390/syscallent.h: Likewise. 30754 * linux/s390x/syscallent.h: Likewise. 30755 * linux/sh/syscallent.h: Likewise. 30756 * linux/sh64/syscallent.h: Likewise. 30757 * linux/sparc/syscallent.h: Likewise. 30758 * linux/tile/syscallent.h: Likewise. 30759 * linux/x86_64/syscallent.h: Likewise. 30760 * linux/alpha/syscallent.h: Fix number of swapon arguments, add TF flag. 30761 * linux/hppa/syscallent.h: Likewise. 30762 * linux/ia64/syscallent.h: Likewise. 30763 30764 Fix sgetmask and ssetmask syscall entries. 30765 * linux/hppa/syscallent.h: Fix sgetmask and ssetmask entries. 30766 * linux/powerpc/syscallent.h: Likewise. 30767 * linux/sparc/syscallent.h: Likewise. 30768 * linux/tile/syscallent.h: Likewise. 30769 30770 Rename siggetmask to sgetmask and sigsetmask to ssetmask. 30771 * linux/arm/syscallent.h: Rename siggetmask to sgetmask and 30772 sigsetmask to ssetmask. 30773 * linux/bfin/syscallent.h: Likewise. 30774 * linux/i386/syscallent.h: Likewise. 30775 * linux/m68k/syscallent.h: Likewise. 30776 * linux/microblaze/syscallent.h: Likewise. 30777 * linux/mips/syscallent.h: Likewise. 30778 * linux/sh/syscallent.h: Likewise. 30779 * linux/sh64/syscallent.h: Likewise. 30780 * linux/ia64/syscallent.h: Rename sys_sgetmask to sys_siggetmask, 30781 sys_ssetmask to sys_sigsetmask. 30782 30783 Add TRACE_IPC flag to sys_ipc syscall entries. 30784 * linux/arm/syscallent.h: Add TI flag to sys_ipc entry. 30785 * linux/avr32/syscallent.h: Likewise. 30786 * linux/bfin/syscallent.h: Likewise. 30787 * linux/i386/syscallent.h: Likewise. 30788 * linux/m68k/syscallent.h: Likewise. 30789 * linux/microblaze/syscallent.h: Likewise. 30790 * linux/mips/syscallent.h: Likewise. 30791 * linux/powerpc/syscallent.h: Likewise. 30792 * linux/s390/syscallent.h: Likewise. 30793 * linux/s390x/syscallent.h: Likewise. 30794 * linux/sh/syscallent.h: Likewise. 30795 * linux/sh64/syscallent.h: Likewise. 30796 * linux/sparc/syscallent.h: Likewise. 30797 30798 2011-11-05 Dmitry V. Levin <ldv (a] altlinux.org> 30799 30800 gitlog-to-changelog: update from gnulib. 30801 * gitlog-to-changelog: Update from gnulib. 30802 * Makefile.am: Add --append-dot to gitlog-to-changelog invocation. 30803 30804 2011-10-22 Denys Vlasenko <dvlasenk (a] redhat.com> 30805 30806 Decode TIOCSCTTY's third parameter. 30807 * term.c (term_ioctl): Decode TIOCSCTTY's third parameter. 30808 30809 2011-10-14 Dmitry V. Levin <ldv (a] altlinux.org> 30810 30811 Remove useless and obsolete "#if DONE" sections. No code changes. 30812 * linux/dummy.h: Remove "#if DONE" section. 30813 * linux/sparc/dummy2.h: Likewise. 30814 * linux/sparc64/dummy2.h: Likewise. 30815 * sunos4/dummy.h: Likewise. 30816 * svr4/dummy.h: Likewise. 30817 30818 Add names for dummy parsers. No code changes. 30819 * linux/dummy.h: Add aliases to printargs() for those of dummy parsers 30820 that had no own names before. 30821 * linux/*/syscallent.h: Use these new names instead of printargs. 30822 30823 Sort definitions of dummy parsers. No code changes. 30824 * linux/dummy.h: Sort definitions of parsers implemented as aliases 30825 to printargs(). 30826 30827 2011-10-14 Mike Frysinger <vapier (a] gentoo.org> 30828 30829 sys_epoll_create1: decode flag arguments correctly. 30830 * desc.c (epollflags): Define. 30831 (sys_epoll_create1): Use epollflags to printflags. Change "O" to "EPOLL". 30832 30833 Reported-by: <socketpair (a] gmail.com> 30834 30835 2011-10-11 Dmitry V. Levin <ldv (a] altlinux.org> 30836 30837 Implement decoding of splice, tee and vmsplice(2) syscalls. 30838 * io.c (print_loff_t): New function. 30839 (sys_sendfile64): Use it. 30840 (splice_flags): New xlat structure. 30841 (sys_tee, sys_splice, sys_vmsplice): New functions. 30842 * linux/syscall.h (sys_tee, sys_splice, sys_vmsplice): Declare them. 30843 * linux/*/syscallent.h: Use them. 30844 30845 2011-10-11 Dmitry V. Levin <ldv (a] altlinux.org> 30846 30847 Fix epoll_wait and epoll_pwait decoding. 30848 * desc.c (epoll_wait_common): Print "maxevents" and "timeout" arguments 30849 as integers. 30850 30851 Reported-by: <socketpair (a] gmail.com> 30852 30853 2011-10-11 Dmitry V. Levin <ldv (a] altlinux.org> 30854 30855 Decode EPOLLRDHUP. 30856 * desc.c (epollevents): Add EPOLLRDHUP. 30857 30858 Reported-by: <socketpair (a] gmail.com> 30859 30860 2011-10-11 Dmitry V. Levin <ldv (a] altlinux.org> 30861 30862 Remove unreachable code in umoven() and umovestr(). 30863 * util.c (umoven, umovestr): Remove unreachable code. 30864 30865 Reported-by: Weichuan Yan <wchyan (a] marvell.com> 30866 30867 2011-09-05 Denys Vlasenko <dvlasenk (a] redhat.com> 30868 30869 Do post-attach initialization earlier; fix "we ignore SIGSTOP on NOMMU" bug 30870 We set ptrace options when we see post-attach SIGSTOP. 30871 This is wrong: it's better to set them right away on the very first 30872 stop (whichever it will be). It also will make adding SEIZE support easier, 30873 since SEIZE has no post-attach SIGSTOP. 30874 30875 We do it by adding a new bit, TCB_IGNORE_ONE_SIGSTOP, and treating 30876 TCB_STARTUP and TCB_IGNORE_ONE_SIGSTOP as two slightly different things. 30877 30878 * defs.h: Add a new flag bit, TCB_IGNORE_ONE_SIGSTOP. 30879 * process.c (internal_fork): Set TCB_IGNORE_ONE_SIGSTOP on a newly added child. 30880 * strace.c (startup_attach): Set TCB_IGNORE_ONE_SIGSTOP after attach. 30881 Fix a case when "strace -p PID" found PID dead but sone other of its threads 30882 still alive. 30883 (startup_child): Set TCB_IGNORE_ONE_SIGSTOP after attach, _if needed_. 30884 This fixes a bogus case where we can ignore a _real_ SIGSTOP on NOMMU. 30885 (detach): Perform anti-SIGSTOP dance only if TCB_IGNORE_ONE_SIGSTOP is set, 30886 not if TCB_STARTUP is set. 30887 (trace): Set TCB_IGNORE_ONE_SIGSTOP after attach. 30888 Clear TCB_STARTUP and initialize tracee on the very first tracee stop. 30889 Clear TCB_IGNORE_ONE_SIGSTOP when SIGSTOP is seen. 30890 30891 2011-09-05 Denys Vlasenko <dvlasenk (a] redhat.com> 30892 30893 Get rid of TCB_ATTACH_DONE. 30894 * defs.h: Remove TCB_ATTACH_DONE constant. 30895 * strace.c (startup_attach): Use TCB_STARTUP instead of TCB_ATTACH_DONE 30896 to distinquish attached from not-yet-attached threads. 30897 30898 2011-09-05 Denys Vlasenko <dvlasenk (a] redhat.com> 30899 30900 Set TCB_STARTUP only _after_ we attached. 30901 This fixes logic in detach() which thinks that TCB_STARTUP 30902 means that we are already attached, but did not see SIGSTOP yet. 30903 This also allows to get rid of TCB_ATTACH_DONE flag. 30904 30905 * process.c (internal_fork): Set TCB_STARTUP after attach. 30906 * strace.c (startup_attach): Likewise. 30907 (startup_child): Likewise. 30908 (alloc_tcb): Do not set TCB_STARTUP on tcb allocation - we are 30909 not attached yet. 30910 (trace): Set TCB_STARTUP when we detech an auto-attached child. 30911 30912 2011-09-02 Denys Vlasenko <dvlasenk (a] redhat.com> 30913 30914 Simple optimizations in trace() 30915 * strace.c (trace): Calculate WSTOPSIG(status) once, 30916 unify code paths to ptrace(PTRACE_SYSCALL). 30917 30918 Trivial fixes on error paths. 30919 * strace.c (startup_attach): Emit message on fork() failure. 30920 (startup_child): Remove non-informative comment. 30921 * util.c (ptrace_restart): use perror_msg() on error instead of fprintf(). 30922 30923 2011-09-01 Denys Vlasenko <dvlasenk (a] redhat.com> 30924 30925 Fix compile failure introduced by last commit. 30926 * desc.c (decode_select): Fix double definition of nfds. 30927 30928 2011-09-01 Denys Vlasenko <dvlasenk (a] redhat.com> 30929 30930 Roll back "die on malloc failure" behaviour a bit. 30931 After recent change, select(2^31-1, NULL, NULL, NULL) 30932 would make strace exit. This change caps fdsize so that 30933 it is always in [0, 1025*1024], IOW: we will try to allocate at most 30934 1 megabyte, which in practice will almost always work, 30935 unlike malloc(2Gig). 30936 30937 * desc.c (decode_select): Cap fdsize to 1024*1024. 30938 * pathtrace.c (pathtrace_match): Cap fdsize to 1024*1024. 30939 * file.c (sys_getdents): Cap len to 1024*1024. 30940 (sys_getdents64): Cap len to 1024*1024. 30941 * util.c (dumpiov): Refuse to process iov with more than 1024*1024 30942 elements. Don't die on malloc failure. 30943 (dumpstr): Don't die on malloc failure. 30944 30945 2011-09-01 Denys Vlasenko <dvlasenk (a] redhat.com> 30946 30947 Add stpcpy to autoconf machinery. 30948 * configure.ac: Add stpcpy to AC_CHECK_FUNCS. 30949 * defs.h: Frame stpcpy with "if !defined HAVE_STPCPY". 30950 * util.c: Likewise. 30951 30952 Simplify sprinttv() 30953 * time.c (sprinttv): Trivial simplifications. 30954 30955 * desc.c (decode_select): Set tcp->auxstr as late as possible. 30956 30957 2011-09-01 Denys Vlasenko <dvlasenk (a] redhat.com> 30958 30959 Reformat setuid-ing code in startup_child() 30960 New code does the same as old one, but is more readable (I hope). 30961 30962 * strace.c (startup_child): Reformat setuid-ing code. 30963 30964 2011-09-01 Denys Vlasenko <dvlasenk (a] redhat.com> 30965 30966 Minor tweaks in startup_child(). Logic isn't changed (but code is) 30967 * strace.c (startup_attach): Tweak comment. 30968 (startup_child): Move common code out of ifdef. 30969 Indent nested ifdefs. Tweak comments. Remove two 30970 unnecessary calls to getpid(). 30971 30972 Use tprints with literal strings, it may be faster than tprintf. 30973 * bjm.c: Replace tprintf("str") with tprints("str"). 30974 * block.c: Likewise. 30975 * desc.c: Likewise. 30976 * file.c: Likewise. 30977 * io.c: Likewise. 30978 * ipc.c: Likewise. 30979 * mem.c: Likewise. 30980 * net.c: Likewise. 30981 * proc.c: Likewise. 30982 * process.c: Likewise. 30983 * quota.c: Likewise. 30984 * resource.c: Likewise. 30985 * scsi.c: Likewise. 30986 * signal.c: Likewise. 30987 * sock.c: Likewise. 30988 * strace.c: Likewise. 30989 * stream.c: Likewise. 30990 * syscall.c: Likewise. 30991 * system.c: Likewise. 30992 * term.c: Likewise. 30993 * time.c: Likewise. 30994 * util.c: Likewise. 30995 30996 Fix "format not a string literal" warning caused by tprintf(str) 30997 * defs.h: Declare tprints(). 30998 * strace.c: Define tprints(). 30999 (tabto): Use tprints(str), since tprintf(str) was throwing a warning. 31000 * desc.c: Use tprints(str) instead of tprintf("%s", str). 31001 * file.c: Likewise. 31002 * io.c: Likewise. 31003 * net.c: Likewise. 31004 * process.c: Likewise. 31005 * signal.c: Likewise. 31006 * syscall.c: Likewise. 31007 * util.c: Likewise. 31008 31009 2011-08-31 Denys Vlasenko <dvlasenk (a] redhat.com> 31010 31011 Add README-linux-ptrace file. 31012 I tried to push this doc to Michael Kerrisk <mtk.manpages (a] gmail.com>, 31013 but got no reply. To avoid losing the document, let it live 31014 in strace tree for now. 31015 31016 2011-08-31 Denys Vlasenko <dvlasenk (a] redhat.com> 31017 31018 Make out-of-memory handling more uniform. 31019 This fixes one real bug in dumpstr(). 31020 31021 * defs.h: Declare die_out_of_memory(). 31022 * strace.c (die_out_of_memory): New function. 31023 (strace_popen): If allocation fails, call die_out_of_memory(). 31024 (main): Likewise. 31025 (expand_tcbtab): Likewise. 31026 (rebuild_pollv): Likewise. 31027 * count.c (count_syscall): Likewise. 31028 (call_summary_pers): Likewise. 31029 * desc.c (decode_select): Likewise. 31030 * file.c (sys_getdents): Likewise. 31031 (sys_getdents64): Likewise. 31032 (sys_getdirentries): Likewise. 31033 * pathtrace.c (pathtrace_match): Likewise. 31034 * syscall.c (qualify): Likewise. 31035 * util.c (printstr): Likewise. 31036 (dumpiov): Likewise. 31037 (dumpstr): Likewise. 31038 (fixvfork): Likewise. 31039 * mem.c (sys_mincore): Don't check free() parameter for NULL. 31040 31041 2011-08-31 Denys Vlasenko <dvlasenk (a] redhat.com> 31042 31043 Optimization: eliminate all remaining usages of strcat() 31044 After this change, we don't use strcat() anywhere. 31045 31046 * defs.h: Change sprinttv() return type to char *. 31047 * time.c (sprinttv): Return pointer past last stored char. 31048 * desc.c (decode_select): Change printing logic in order to eliminate 31049 usage of strcat() - use stpcpy(), *outptr++ = ch, sprintf() instead. 31050 Also reduce usage of strlen(). 31051 * stream.c (decode_poll): Likewise. 31052 31053 2011-08-31 Denys Vlasenko <dvlasenk (a] redhat.com> 31054 31055 Optimize string_quote() for speed. 31056 * util.c (string_quote): Speed up check for terminating NUL. 31057 Replace strintf() with open-coded binary to hex/oct conversions - 31058 we potentially do them for every single byte, need to be fast. 31059 31060 Optimization: eliminate some usages of strcat() 31061 * defs.h: Declare stpcpy(). 31062 * util.c: Define stpcpy(). 31063 * file.c: Remove static str_append(). 31064 (sprint_open_modes): Use stpcpy() instead of str_append(). 31065 (sprintflags): Use stpcpy() instead of strcat(). 31066 (printpathn): Eliminate usage of strcat(). 31067 (printstr): Eliminate usage of strcat(). 31068 31069 2011-08-30 Denys Vlasenko <dvlasenk (a] redhat.com> 31070 31071 Small optimization on AVR32. 31072 * syscall.c (syscall_enter): Optimize tcp->u_arg[i] setting 31073 from regs.FOO for AVR32. 31074 31075 2011-08-30 Denys Vlasenko <dvlasenk (a] redhat.com> 31076 31077 On X86_64 and I386, use PTRACE_GETREGS to fetch all registers. 31078 Before this change, registers were read with PTRACE_PEEKUSER 31079 ptrace operation, one per register. This is slower than 31080 fetching them all in one ptrace operation. 31081 31082 * defs.h: include asm/ptrace.h on X86_64 and I386. 31083 * syscall.c: New static variables i386_regs and x86_64_regs. 31084 Remove static eax/rax variables. 31085 (get_scno): Fetch all registers with single PTRACE_GETREGS operation. 31086 (get_syscall_result): Likewise. 31087 (syscall_fixup_on_sysenter): Use PTRACE_GETREGS results in i386/x86_64_regs. 31088 (syscall_enter): Set tcp->u_arg[i] from PTRACE_GETREGS results. 31089 (get_error): Set tcp->u_rval, tcp->u_error from PTRACE_GETREGS results. 31090 31091 2011-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 31092 31093 Do not include <limits.h> 31094 * strace.c: Do not include <limits.h> explicitly, it is already included 31095 implicitly by <sys/param.h>. 31096 31097 2011-08-30 Dmitry V. Levin <ldv (a] altlinux.org> 31098 31099 Include <sys/param.h> to get PATH_MAX definition. 31100 * pathtrace.c: Include <sys/param.h> instead of <limits.h> to get 31101 PATH_MAX definition. 31102 31103 Reported-by: Steve Bennett <steveb (a] workware.net.au> 31104 31105 2011-08-26 Denys Vlasenko <dvlasenk (a] redhat.com> 31106 31107 Indent a large set of nested ifdefs/endifs. No code changes. 31108 * defs.h: Indent a large set of nested ifdefs/endifs 31109 31110 Rename syscall_fixup to syscall_fixup_on_sysenter. 31111 * defs.h: Tweak comment. 31112 * syscall.c: Rename syscall_fixup to syscall_fixup_on_sysenter. 31113 (trace_syscall_entering): Use new finction name. 31114 31115 Make syscall result reading more consistent among different arches. 31116 * syscall.c: Eliminate static flags variable for POWERPC. 31117 (syscall_fixup): Don't fetch syscall results. Affected arches: 31118 POWERPC, BFIN, HPPA. 31119 (syscall_fixup_on_sysexit): Move syscall results fetching code 31120 for this function to get_syscall_result. Affected arches: 31121 S390X, POWERPC, BFIN, M68K, HPPA, CRIS, MICROBLAZE. 31122 (get_syscall_result): Add syscall results fetching. 31123 31124 2011-08-25 Denys Vlasenko <dvlasenk (a] redhat.com> 31125 31126 Simplify syscall_fixup[_on_sysexit] 31127 * syscall.c (syscall_fixup): Remove checks for entering(tcp). 31128 Remove code which executes if exiting(tcp). 31129 (syscall_fixup_on_sysexit): Remove code which executes 31130 if entering(tcp). Remove checks for exiting(tcp). 31131 31132 Split syscall_fixup into enter/exit pair of functions. 31133 * syscall.c: Create syscall_fixup_on_sysexit() which is a copy of 31134 syscall_fixup(). 31135 (trace_syscall_exiting): Call syscall_fixup_on_sysexit() instead of 31136 syscall_fixup(). 31137 31138 Remove stray commas in struct initializers. No code changes. 31139 * process.c: Remove stray commas in struct initializers. 31140 31141 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31142 31143 Optimize tabto() 31144 tabto is used in many lines of strace output. 31145 On glibc, tprintf("%*s", col - curcol, "") is noticeably slow 31146 compared to tprintf(" "). Use the latter. 31147 Observed ~15% reduction of time spent in userspace. 31148 31149 * defs.h: Drop extern declaration of acolumn. Make tabto() 31150 take no parameters. 31151 * process.c (sys_exit): Call tabto() with no parameters. 31152 * syscall.c (trace_syscall_exiting): Call tabto() with no parameters. 31153 * strace.c: Make acolumn static, add static char *acolumn_spaces. 31154 (main): Allocate acolumn_spaces as a string of spaces. 31155 (printleader): Call tabto() with no parameters. 31156 (tabto): Use simpler method to print lots of spaces. 31157 31158 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31159 31160 * syscall.c (sys_indir): Use %ld for printing long, not %u. 31161 31162 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31163 31164 Opotimize "scno >= 0 && scno < nsyscalls" check. 31165 gcc can't figure out on its own that this check can be done with 31166 single compare, and does two compares. We can help it by casting 31167 scno to unsigned long: ((unsigned long)(scno) < nsyscalls) 31168 31169 * defs.h: New macro SCNO_IN_RANGE(long_var). 31170 * count.c (count_syscall): Use SCNO_IN_RANGE() instead of open-coded check. 31171 * syscall.c (getrval2): Use SCNO_IN_RANGE() instead of open-coded check. 31172 This fixes a bug: missing check for scno < 0 and scno > nsyscalls 31173 instead of scno >= nsyscalls. 31174 (get_scno): Use SCNO_IN_RANGE() instead of open-coded check. 31175 This fixes a bug: scno > nsyscalls instead of scno >= nsyscalls. 31176 (known_scno): Use SCNO_IN_RANGE() instead of open-coded check. 31177 (internal_syscall): Likewise. 31178 (syscall_enter): Likewise. 31179 (trace_syscall_entering): Likewise. 31180 (get_error): Likewise. 31181 (trace_syscall_exiting): Likewise. 31182 31183 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31184 31185 Remove scno_good logic in syscall exit. 31186 * syscall.c (trace_syscall_exiting): Remove scno_good logic, 31187 it can't trigger in syscall exit. 31188 31189 Remove redundant assignments. 31190 * syscall.c (get_error): Remove redundant "u_error = 0" and redundant 31191 and unclear comments. 31192 31193 Group int-sized fields together in struct tcb. 31194 * defs.h: Group int-sized fields together in struct tcb. 31195 31196 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31197 31198 Reorder functions in syscall.c. No code changes. 31199 Old order (basically "in no particular order"): 31200 dumpio 31201 decode_subcall 31202 internal_syscall 31203 get_scno 31204 get_syscall_result 31205 known_scno 31206 syscall_fixup 31207 is_negated_errno 31208 get_error 31209 syscall_enter 31210 trace_syscall_entering 31211 trace_syscall_exiting 31212 trace_syscall 31213 printargs 31214 getrval2 31215 sys_indir 31216 is_restart_error 31217 31218 New order: 31219 various utility functions: 31220 decode_subcall 31221 printargs 31222 getrval2 31223 sys_indir 31224 is_restart_error 31225 syscall enter handling functions: 31226 get_scno 31227 known_scno 31228 syscall_fixup (also used in syscall exit code) 31229 internal_syscall (also used in syscall exit code) 31230 syscall_enter 31231 trace_syscall_entering 31232 syscall exit handling functions: 31233 get_syscall_result 31234 is_negated_errno 31235 get_error 31236 dumpio 31237 trace_syscall_exiting 31238 main syscall enter/exit function: 31239 trace_syscall 31240 31241 * syscall.c: Reorder functions so that related ones are closer 31242 in the source. 31243 31244 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31245 31246 Rename some functions, delete unused one. No code changes. 31247 * defs.h: Rename get_scno_on_sysenter() to get_scno(); 31248 delete force_result() declaration. 31249 * strace.c (proc_open): Rename get_scno_on_sysenter() to get_scno(). 31250 * syscall.c: Rename get_scno_on_sysenter() to get_scno(). 31251 Rename get_scno_on_sysexit() to get_syscall_result(). 31252 Delete unused force_result(). 31253 31254 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31255 31256 Unify per-architecture post-execve SIGTRAP check. 31257 Move post-execve SIGTRAP check from get_scno_on_sysenter 31258 (multitude of places on many architectures) to a single location 31259 in trace_syscall_entering. This loosens the logic for some arches, 31260 since many of them had additional checks such as scno == 0. 31261 However, on non-ancient Linux kernels we should never have post-execve 31262 SIGTRAP in the first place, by virtue of using PTRACE_O_TRACEEXEC. 31263 31264 * syscall.c (get_scno_on_sysenter): Remove tcp->flags & TCB_WAITEXECVE checks. 31265 (trace_syscall_entering): Do tcp->flags & TCB_WAITEXECVE check here. 31266 (get_scno_on_sysexit): Tweak comment. 31267 (syscall_fixup): Likewise. 31268 (trace_syscall_exiting): Likewise. 31269 31270 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31271 31272 Speed up x86 by avoiding EAX read on syscall entry. 31273 on x86, EAX read on syscall entry is not necessary if we know 31274 that post-execve SIGTRAP is disabled by PTRACE_O_TRACEEXEC ptrace option. 31275 This patch (a) moves EAX retrieval from syscall_fixup 31276 to get_scno_on_sysexit, and (b) perform EAX retrieval in syscall_fixup 31277 only if we are in syscall entry and PTRACE_O_TRACEEXEC option is not on. 31278 31279 * syscall.c (get_scno_on_sysexit): On I386 and X86_64, read eax/rax 31280 which contain syscall return value. 31281 (syscall_fixup): On I386 and X86_64, read eax/rax only on syscall enter 31282 and only if PTRACE_O_TRACEEXEC is not in effect. 31283 31284 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31285 31286 Do not read syscall no in get_scno_on_sysexit. 31287 * syscall.c (get_scno_on_sysexit): Remove scno retrieval code, since 31288 we don't save it anyway. This is the first real logic change 31289 which should make strace faster: for example, on x64 ORIG_EAX 31290 is no longer read in each syscall exit. 31291 31292 Simplify get_scno_on_sysenter/sysexit. 31293 * syscall.c (get_scno_on_sysenter): Remove "if (exiting(tcp))" code, 31294 make "if (entering(tcp))" code unconditional. 31295 (get_scno_on_sysexit): Remove "if (entering(tcp))" code, 31296 make "if (exiting(tcp))" code unconditional. 31297 31298 2011-08-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31299 31300 get_scno is an unholy mess, make it less horrible. 31301 Currently, get_scno does *much* more than "get syscall no". 31302 It checks for post-execve SIGTRAP. It checks for changes 31303 in personality. It retrieves params on entry and registers on exit. 31304 Worse still, it is different in different architectures: for example, 31305 for AVR32 regs are fetched in get_scno(), while for e.g. I386 31306 it is done in syscall_enter(). 31307 31308 Another problem is that get_scno() is called on both syscall entry and 31309 syscall exit, which is stupid: we don't need to know scno on syscall 31310 exit, it is already known from last syscall entry and stored in 31311 tcp->scno! In essence, get_scno() does two completely different things 31312 on syscall entry and on exit, they are just mixed into one bottle, like 31313 shampoo and conditioner. 31314 31315 The following patches will try to improve this situation. 31316 31317 This change duplicates get_scno into identical get_scno_on_sysenter, 31318 get_scno_on_sysexit functions. Call them in syscall enter and syscall 31319 exit, correspondingly. 31320 31321 * defs.h: Rename get_scno to get_scno_on_sysenter; declare it only 31322 if USE_PROCFS. 31323 * strace.c (proc_open): Call get_scno_on_sysenter instead of get_scno. 31324 * syscall.c (get_scno): Split into two (so far identical) functions 31325 get_scno_on_sysenter and get_scno_on_sysexit. 31326 (trace_syscall_entering): Call get_scno_on_sysenter instead of get_scno. 31327 (trace_syscall_exiting): Call get_scno_on_sysexit instead of get_scno. 31328 31329 2011-08-23 Dmitry V. Levin <ldv (a] altlinux.org> 31330 31331 Reduce code redundancy in syscall_enter() 31332 * syscall.c [LINUX] (syscall_enter): Move tcp->u_nargs initialization 31333 from arch-specific ifdefs to common code. Always cache tcp->u_nargs in 31334 a local variable and use it in for() loops. 31335 [IA64, AVR32] Rewrite tcp->u_arg[] initialization using a loop. 31336 31337 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31338 31339 Define MAX_ARGS to 6 for all Linux arches. 31340 * defs.h: Define MAX_ARGS to 6 for all Linux arches. 31341 * linux/ia64/syscallent.h: Change all 8-argument printargs 31342 to MA (MAX_ARGS). 31343 linux/mips/syscallent.h: Change all two 7-argument printargs 31344 to MA (MAX_ARGS). 31345 31346 Fix argument printing in sys_mmap64. 31347 * mem.c (sys_mmap64): Fix a bug where we used tcp->u_args[i] 31348 instead of argument values copied from memory. 31349 31350 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31351 31352 Cache tcp->u_nargs in a local variable for for() loops. 31353 Loops of the form "for (i = 0; i < tcp->u_nargs; i++) ..." 31354 need to fetch tcp->u_nargs from memory on every iteration 31355 if "..." part has a function call (gcc doesn't know that 31356 tcp->u_nargs won't change). This can be sped up 31357 by putting tcp->u_nargs in a local variable, which might 31358 go into a CPU register. 31359 31360 * syscall.c (decode_subcall): Cache tcp->u_nargs in a local variable 31361 as for() loop limit value. 31362 (syscall_enter): Likewise. 31363 31364 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31365 31366 Drop checks for sysent[i].nargs == -1. 31367 * defs.h: Declare nsyscalls, nerrnos, nioctlents, nsignals as unsigned. 31368 * syscall.c: Define nsyscalls, nerrnos, nioctlents, nsignals as unsigned. 31369 (decode_subcall): Drop checks for sysent[i].nargs == -1. 31370 (syscall_enter): Likewise. 31371 31372 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31373 31374 Stop using nargs == -1 in syscallent tables. 31375 Usage -1 as argument count in syscallent tables 31376 necessitates the check for it, a-la: 31377 if (sysent[tcp->scno].nargs != -1) 31378 tcp->u_nargs = sysent[tcp->scno].nargs; 31379 else 31380 tcp->u_nargs = MAX_ARGS; 31381 which is stupid: we waste cycles checking something which 31382 is constant and known at compile time. 31383 31384 * defs.h: Make struct sysent::nargs unsigned. 31385 * freebsd/i386/syscallent.h: Replace nargs of -1 with MA. 31386 * linux/s390/syscallent.h: Likewise. 31387 * linux/s390x/syscallent.h: Likewise. 31388 * svr4/syscallent.h: Likewise. 31389 * freebsd/syscalls.pl: Likewise in generator script. 31390 * syscallent.sh: Likewise in generator script. 31391 * syscall.c: Add define MA MAX_ARGS / undef MA around includes 31392 of syscallent[N].h. 31393 31394 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31395 31396 Move trace_syscall_exiting below trace_syscall_entering. No code changes. 31397 Syscall enter happens before syscall exit. Having functions 31398 in opposite order in the source is confusing. 31399 31400 * syscall.c: Move trace_syscall_exiting below trace_syscall_entering. 31401 31402 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31403 31404 Fix -z display. 31405 Before this patch, the following: 31406 open("qwerty", O_RDONLY) = -1 ENOENT 31407 write(2, "wc: qwerty: No such file or dire"..., 38) = 38 31408 was shown totally wrongly with -z: 31409 open("qwerty", O_RDONLY) = 38 31410 (yes, that's right, write syscall is lost!) 31411 Now it is shown "less wrongly" as: 31412 open("qwerty", O_RDONLY <unfinished ...> 31413 write(2, "wc: qwerty: No such file or dire"..., 38) = 38 31414 31415 * syscall.c (trace_syscall_exiting): Use common TCB_INSYSCALL clearing 31416 via "goto ret". This fixes totally broken display of -z, but even now 31417 it is not working as intended. Add a comment about that. 31418 (trace_syscall_entering): Use common TCB_INSYSCALL setting 31419 via "goto ret". 31420 31421 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31422 31423 Straighten up confused comments/messages about post-execve SIGTRAP handling 31424 * defs.h: Explain TCB_INSYSCALL and TCB_WAITEXECVE bits in detail. 31425 * strace.c (choose_pfd): Use entering/exiting macros instead of direct check 31426 for TCB_INSYSCALL. 31427 * syscall.c (get_scno): Use entering/exiting macros instead of direct check 31428 for TCB_INSYSCALL. Fix comments about post-execve SIGTRAP. 31429 (syscall_fixup): Use entering/exiting instead of direct check 31430 for TCB_INSYSCALL. Add a comment what "not a syscall entry" message 31431 usually means. Change wrong "stray syscall exit" messages into 31432 "not a syscall entry" ones. 31433 31434 count_syscall() always returns 0, optimize it. 31435 * defs.h (count_syscall): Change return type from int to void. 31436 * count.c (count_syscall): Change return type from int to void. 31437 * syscall.c (trace_syscall_exiting): Change code around call 31438 to count_syscall accordingly. 31439 31440 Optimize out dummy PC printing on signal delivery. 31441 * strace.c (trace): Optimize out dummy PC printing on signal delivery. 31442 While at it, tweak comments. 31443 31444 Conditionally optimize out unused code. 31445 * syscall.c (internal_syscall): Call internal_exec only if 31446 SUNOS4 || (LINUX && TCB_WAITEXECVE). 31447 * process.c (internal_exec): Define this function only if 31448 SUNOS4 || (LINUX && TCB_WAITEXECVE). 31449 (printwaitn): Don't check wordsize if SUPPORTED_PERSONALITIES == 1. 31450 * signal.c (sys_kill): Likewise. 31451 * syscall.c (is_negated_errno): Likewise. 31452 (trace_syscall_exiting): Fold a tprintf into tprintfs which follow it. 31453 31454 Cosmetic improvement in ifdefs. No code changes. 31455 * strace.c (proc_open): Change ifdefs so that braces are properly paired. 31456 31457 Exclude tcp->pfd from non-procfs systems. 31458 * defs.h: Make struct tcb::pfd fields conditional on USE_PROCFS. 31459 * strace.c (alloc_tcb): Use tcp->pfd only if USE_PROCFS. 31460 (droptcb): Likewise. 31461 31462 Small optimizations related to memory allocation. 31463 * strace (expand_tcbtab): Shorten "out of memory" message. 31464 (rebuild_pollv): Remove unnecessary NULL check before free(). 31465 * util.c (dumpstr): Add a comment about likely bug. 31466 31467 Improve code readability by avoiding assignments inside if() 31468 * desc.c (decode_select): Move assignment out of if() condition. 31469 * file.c (sprinttime): Likewise. 31470 (sys_getdirentries): Likewise. 31471 * io.c (sys_ioctl): Likewise. 31472 * strace.c (test_ptrace_setoptions_followfork): Likewise. 31473 (main): Likewise. 31474 (proc_open): Likewise. 31475 (detach): Likewise. 31476 (proc_poll): Likewise. 31477 (trace): Likewise. 31478 * syscall.c (qualify): Likewise. 31479 (sys_indir): Likewise. 31480 * test/procpollable.c (main): Likewise. 31481 * test/sfd.c (main): Likewise. 31482 * time.c (printtv_bitness): Likewise. 31483 (sprinttv): Likewise. 31484 (print_timespec): Likewise. 31485 (void sprint_timespec): Likewise. 31486 (printitv_bitness): Likewise. 31487 * util.c (dumpstr): Likewise. 31488 (umovestr): Likewise. 31489 (fixvfork): Likewise. 31490 31491 Convert ioctl_next_match() to new-style C function definition. 31492 * ioctl.c (ioctl_next_match): Convert to new-style C function definition. 31493 31494 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31495 31496 Small optimization in signal and ioctl tables. 31497 Trivial shuffling of data tables puts them all in one file, 31498 allowing gcc to see their sizes and eliminate variables 31499 which store these sizes. 31500 31501 Surprisingly, in C mode gcc does not optimize out static const int 31502 variables. Help it by using enums instead. 31503 31504 * defs.h: Stop exporting ioctlent{0,1,2}, nioctlents{0,1,2}, 31505 signalent{0,1,2}, nsignals{0,1,2}. 31506 * ioctl.c: Remove definitions of ioctlent{,0,1,2} and nioctlents{,0,1,2}. 31507 * signal.c: Remove definitions of signalent{,0,1,2} and nsignals{,0,1,2}. 31508 * syscall.c: Move above definitions to this file. Make them static const 31509 or enums if suitable. 31510 31511 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31512 31513 Don't return int from set_personality(), no one checks it. 31514 * defs.h (set_personality): Change return type to void. 31515 * syscall.c (set_personality): Change return type to void. 31516 31517 Remove unused declaration. 31518 * defs.h: Remove unused declaration of handle_new_child(). 31519 31520 Use natural-sized integer field for tcb::flags. 31521 * defs: Change struct tcb::flags type from short to int. 31522 This results in smaller code at least on x86. 31523 31524 Make needlessly static data local. 31525 * syscall.c (get_scno): For POWERPC64 and X86-64, variable currpers 31526 is declared static. But its old data is never used. Convert it 31527 to ordinary local variable. 31528 31529 Optimize get_scno function. 31530 * syscall.c (get_scno): Make gpr_offset[] array static const. 31531 31532 Optimize iocb_cmd_lookup. 31533 * desc.c (iocb_cmd_lookup): Make command table constant. 31534 Reduce size of static char buffer. 31535 31536 Correct sys_sendfile[64] type and nargs. 31537 * freebsd/i386/syscallent.h: Correct sys_sendfile nargs 7->8 31538 * linux/mips/syscallent.h: Correct sys_sendfile64 nargs 5->4 31539 * linux/sh/syscallent.h: Correct sys_sendfile64 nargs 5->4 31540 * linux/sh64/syscallent.h: Correct sys_sendfile64 nargs 5->4 31541 * linux/m68k/syscallent.h: Correct sys_sendfile64 type TF->TD|TN 31542 * linux/microblaze/syscallent.h: Correct sys_sendfile64 type TF->TD|TN 31543 * linux/tile/syscallent.h: Correct sys_sendfile and sys_sendfile64 type TD->TD|TN 31544 31545 Make addflags return void. 31546 * defs.h (addflags): Change return type from int to void. 31547 * util.c (addflags): Change return type from int to void. 31548 31549 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31550 31551 Set saner MAX_ARGS (6 or 8) for X86_64 and I386. 31552 I noticed that tcp->u_args[MAX_ARGS] array is way larger than 31553 I'd expect: for all arches except HPPA it has 32 (!) elements. 31554 31555 I looked at the code and so far I spotted only one abuser of 31556 this fact: sys_sigreturn. On several arches, it saves sigset_t 31557 into tcp->u_args[1...N] on entry and prints it on exit, a-la 31558 31559 memcpy(&tcp->u_arg[1], &sc.oldmask[0], sizeof(sigset_t)) 31560 31561 The problem here is that in glibc sigset_t is insanely large: 31562 128 bytes, and using sizeof(sigset_t) in memcpy will overrun 31563 &tcp->u_args[1] even with MAX_ARGS == 32: 31564 On 32 bits, sizeof(tcp->u_args) == 32*4 == 128 bytes! 31565 We may already have a bug there! 31566 31567 This commit changes the code to save NSIG / 8 bytes only. 31568 NSIG can't ever be > 256, and in practice is <= 129, 31569 thus NSIG / 8 is <= 16 bytes == 4 32-bit words, 31570 and even MAX_ARGS == 5 should be enough for saving signal masks. 31571 31572 * defs.h: Reduce MAX_ARGS for X86_64 and I386 from 32 to 8 31573 for FreeBSD and to 6 for everyone else. Add comment about current 31574 state of needed MAX_ARGS. 31575 * signal.c: Add comment about size of sigset_t. 31576 (sprintsigmask): Reduce static string buffer from 8k to 2k. 31577 (sys_sigreturn): Fix sigset saving to save only NSIG / 8 bytes, 31578 not sizeof(sigset_t) bytes. 31579 * linux/mips/syscallent.h: Reduce nargs of printargs-type syscall to 7. 31580 * linux/arm/syscallent.h: Reduce nargs of printargs-type syscall to 6. 31581 * linux/i386/syscallent.h: Likewise. 31582 * linux/m68k/syscallent.h: Likewise. 31583 * linux/powerpc/syscallent.h: Likewise. 31584 * linux/s390/syscallent.h: Likewise. 31585 * linux/s390x/syscallent.h: Likewise. 31586 * linux/sh/syscallent.h: Likewise. 31587 * linux/sh64/syscallent.h: Likewise. 31588 * linux/sparc/syscallent.h: Likewise. 31589 31590 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31591 31592 Optimize sys_old_mmap. 31593 * mem.c (sys_old_mmap): For Ia64 and 32-bit personality of x86-64, 31594 copy narrow parameters from userspace by single umove, not by six 31595 separate ones; then assign them to long u_arg[i]. For SH[64], 31596 avoid copying of tcp->u_arg. 31597 (sys_mmap): Add FIXME comment - SH64 and i386 seem to be handled 31598 differently for no apparent reason. 31599 * test/mmap_offset_decode.c: New test program, illustrates FIXME. 31600 31601 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31602 31603 Untangle ifdef forest in sys_mmap64. No code changes. 31604 After careful analysis, it looks like !LINUX and ALPHA 31605 pass all seven parameters in registers; and in all other cases 31606 parameters are on stack (pointed to by tcp->u_arg[0]). 31607 In light of this, reorganize ifdefs, making them simpler, 31608 without changing any logic. 31609 After this, it's apparent we use tcp->u_arg[4,5,6] and possibly 31610 [7] without checking that it's valid to do so. 31611 So far, just add a comment about this. 31612 31613 * mem.c (sys_mmap64): Rewrite ifdefs in a much simpler way. 31614 Add comments about apparent bugs. 31615 31616 2011-08-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31617 31618 Style and comment fixes, no code changes. 31619 * mem.c: Indent includes to show nesting better. 31620 (addtileflags): Fix style of this function definition; 31621 correct wrong endif comment, add another endif comment. 31622 31623 Use simpler rounding up to next multiple of 2. 31624 * util.c (printllval): simpler rounding up to next multiple of 2. 31625 31626 Cosmetic fixes, no code changes. 31627 * defs.h: Add/reformat comments. 31628 * signal.c: Remove wrong comment. Add warning directive 31629 when we detect that NSIG is undefined. Add comment about 31630 NSIG on ARM. Fix typo in comment. 31631 (signame): Reformat code a bit without changes to logic. 31632 Shorten static buffer. 31633 (sys_rt_sigprocmask): Remove stray empty line. 31634 * syscall.c: Add warning directive when we detect that 31635 NSIG is undefined. Add comment about NSIG on ARM. 31636 31637 2011-08-23 Dmitry V. Levin <ldv (a] altlinux.org> 31638 31639 Fix PTRACE_SETOPTIONS tests. 31640 * strace.c [LINUX] (kill_save_errno): New function. 31641 (test_ptrace_setoptions_followfork): Change return type to void. 31642 Fix and harden error handling. Use kill_save_errno() to avoid errno 31643 clobbering. Treat EIO from ptrace() the same way as EINVAL. 31644 (test_ptrace_setoptions_for_all): Use kill_save_errno() to avoid errno 31645 clobbering. Treat EIO from ptrace() the same way as EINVAL. 31646 (main): Update use of test_ptrace_setoptions_followfork(). 31647 31648 Fix compilation on linux 2.4.x. 31649 * configure.ac: Check for BLKGETSIZE64. 31650 * block.c (block_ioctl): Check for HAVE_BLKGETSIZE64. 31651 31652 2011-08-17 Denys Vlasenko <dvlasenk (a] redhat.com> 31653 31654 Remove tcp->parent and TCB_CLONE_THREAD. 31655 tcp->parent is used for only two things: 31656 (1) to send signal on detach via tgkill (need to know tgid). 31657 Solution: use tkill, it needs only tid. 31658 (2) to optimize out ptrace options setting for new tracees. 31659 Not a big deal if we drop this optimization: "set options" op is fast, 31660 doing it just one extra time once per each tracee is hardly measurable. 31661 31662 TCB_CLONE_THREAD is a misnomer. It used only to flag sibling we attached to 31663 in startup_attach. This is used to prevent infinite recursive rescanning 31664 of /proc/PID/task. 31665 Despite the name, there is no guarantee it is set only on non-leader: 31666 if one would run "strace -f -p THREAD_ID" and THREAD_ID is *not* 31667 a thread leader, strace will happily attach to it and all siblings 31668 and will think that THREAD_ID is the leader! Which is a bug, but 31669 since we no longer detach when we think tracee is going to die, 31670 this bug no longer matters, because we do not use the knowledge 31671 about thread group leaders for anything. (We used it to delay 31672 leader's exit). 31673 31674 IOW: after this patch strace has no need to know about threads, parents 31675 and children, and so on. Therefore it does not track that information. 31676 It treats all tracees as independent entities. Overall, 31677 this simplifies code a lot. 31678 31679 * defs.h: Add TCB_ATTACH_DONE flag, remove TCB_CLONE_THREAD flag 31680 and struct tcb::parent field. 31681 * process.c (internal_fork): Don't set tcpchild->parent. 31682 * strace.c (startup_attach): Use TCB_ATTACH_DONE flag instead of 31683 TCB_CLONE_THREAD to avoid attach attempts on already-attached threads. 31684 Unlike TCB_CLONE_THREAD, TCB_ATTACH_DONE bit is used only temporarily, 31685 and only in this function. We clear it on every tcb before we return. 31686 (detach): Use tkill instead of tgkill. 31687 (trace): Set ptrace options on new tracees unconditionally, 31688 not only when tcp->parent == NULL. 31689 31690 2011-08-17 Denys Vlasenko <dvlasenk (a] redhat.com> 31691 31692 Remove TCB_SUSPENDED constant and related code. 31693 Since we no longer suspend waitpid'ing tracees, we have only one case when 31694 we suspend tracee: when we pick up a new tracee created by clone/fork/vfork. 31695 31696 Background: on some other OSes, attach to child is done this way: 31697 get fork's result (pid), loop ptrace(PTRACE_ATTACH) until you hook up 31698 new process/thread. This is ugly and not safe, but what matters for us 31699 is that it doesn't require suspending. Suspending is required 31700 on Linux only, because on Linux attach to child is done differently. 31701 31702 On Linux, we use two methods of catching new tracee: 31703 adding CLONE_THREAD bit to syscall (if needed, we change 31704 [v]fork into clone before that), or using ptrace options. 31705 In both cases, it may be so that new tracee appears before one which 31706 created it returns from syscall. In this case, current code 31707 suspends new tracee until its creator returns. Only then 31708 strace can determine who is its parent (it needs child's pid for this, 31709 which is visible in parent's [v]fork/clone result). 31710 This is inherently racy. For example, what if SIGKILL kills 31711 creator after it succeeded creating child, but before it returns? 31712 Looks like we will have child suspended forever. 31713 31714 But after previous commit, we DO NOT NEED parent<->child link for anything. 31715 Therefore we do not need suspending too. Bingo! 31716 31717 This patch removes suspending code. Now new tracees will be continued 31718 right away. Next patch will remove tcp->parent member. 31719 31720 * defs.h: Remove TCB_SUSPENDED constant 31721 * process.c (handle_new_child): Delete this function. 31722 (internal_fork): Do not call handle_new_child on syscall exit. 31723 * strace.c (handle_ptrace_event): Delete this function. 31724 (trace): Do not suspend new child; remove all handling 31725 of now impossible TCB_SUSPENDED condition. 31726 31727 2011-08-17 Denys Vlasenko <dvlasenk (a] redhat.com> 31728 31729 Do not detach when we think tracee is going to die. 31730 Current code plays some ungodly tricks, trying to not detach 31731 thread group leader until all threads exit. 31732 31733 Also, it detaches from a tracee when signal delivery is detected 31734 which will cause tracee to exit. 31735 This operation is racy (not to mention the determination 31736 whether signal is set to SIG_DFL is a horrible hack): 31737 after we determined that this signal is indeed fatal 31738 but before we detach and let process die, 31739 *other thread* may set a handler to this signal, and 31740 we will leak the process, falsely displaying it as killed! 31741 31742 I need to look in the past to figure out why we even do it. 31743 First guess is that it's a workaround for old kernel bugs: 31744 kernel used to deliver exit notifications to the tracer, 31745 not to real parent. These workarounds are ancient 31746 (internal_exit is from 1995). 31747 31748 The patch deletes the hacks. We no longer need tcp->nclone_threads, 31749 TCB_EXITING and TCB_GROUP_EXITING. We also lose a few rather 31750 ugly functions. 31751 31752 I also added a new message: "+++ exited with EXITCODE +++" 31753 which shows exact moment strace got exit notification. 31754 It is analogous to existing "+++ killed by SIG +++" message. 31755 31756 * defs.h: Delete struct tcb::nclone_threads field, 31757 TCB_EXITING and TCB_GROUP_EXITING constants, 31758 declarations of sigishandled() and internal_exit(). 31759 * process.c (internal_exit): Delete this function. 31760 (handle_new_child): Don't ++tcp->nclone_threads. 31761 * signal.c (parse_sigset_t): Delete this function. 31762 (sigishandled): Delete this function. 31763 * strace.c (startup_attach): Don't tcbtab[tcbi]->nclone_threads++. 31764 (droptcb): Don't delay dropping if tcp->nclone_threads > 0, 31765 don't drop parent if its nclone_threads reached 0: 31766 just drop (only) this tcb unconditionally. 31767 (detach): don't drop parent. 31768 (handle_group_exit): Delete this function. 31769 (handle_ptrace_event): Instead of handle_group_exit, just drop tcb; 31770 do not panic if we see WIFEXITED from an attached pid; 31771 print "+++ exited with EXITCODE +++" for every WIFEXITED pid. 31772 * syscall.c (internal_syscall): Do not treat sys_exit specially - 31773 don't call internal_exit on it. 31774 31775 2011-08-16 Sergei Trofimovich <slyfox (a] gentoo.org> 31776 31777 Declare printrusage32() on Alpha. 31778 * defs.h [ALPHA] (printrusage32): New declaration. 31779 31780 2011-08-15 Denys Vlasenko <dvlasenk (a] redhat.com> 31781 31782 Slight optimization and cleanup in trace() 31783 * strace.c (trace): Do not recalculate "cflag ? &ru : NULL" 31784 again and again. Do not clear errno unnecessarily. 31785 Consistently check wait errors as pid < 0, not pid == -1. 31786 Indent ifdefs for better readability. 31787 Remove comments after endif if ifdef/endif block is really tiny. 31788 31789 Fix compilation on 2.4.20 kernel based system. 31790 * block.c (block_ioctl): add ifdef/endif around BLKGETSIZE64 usage 31791 * strace.c (trace): add ifdef/endif around WIFCONTINUED usage 31792 31793 2011-07-19 Dmitry V. Levin <ldv (a] altlinux.org> 31794 31795 Check for additional PTRACE_* constants. 31796 * configure.ac (AC_CHECK_DECLS): Add PTRACE_O_TRACESYSGOOD, 31797 PTRACE_O_TRACEEXEC, PTRACE_O_TRACEEXIT, PTRACE_EVENT_EXEC, 31798 PTRACE_EVENT_VFORK_DONE and PTRACE_EVENT_EXIT. 31799 * defs.h [LINUX]: Define these PTRACE_* constants when they are not 31800 provided by <sys/ptrace.h>. 31801 31802 Reported-by: Douglas Mencken <dougmencken (a] gmail.com> 31803 Reported-by: Steve Bennett <steveb (a] workware.net.au> 31804 31805 2011-07-19 Denys Vlasenko <dvlasenk (a] redhat.com> 31806 31807 Remove superfluous backslash-continuation in configure.ac. 31808 * configure.ac: remove superfluous backslash continuation 31809 in AC_CHECK_DECLS 31810 31811 2011-06-24 Denys Vlasenko <dvlasenk (a] redhat.com> 31812 31813 Make IOCTL_WSTOP more readable. 31814 * defs.h: Make IOCTL_WSTOP more readable 31815 31816 Trivial cleanups. 31817 * strace.c (trace): Change ifdef LINUX to make a bit more sense, 31818 remove wrong comment at its endif. Slightly optimize 31819 "+++ killed by SIG +++" message for systems without WCOREDUMP macro. 31820 31821 Remove redundant include <stdarg.h> 31822 * strace.c: Remove redundant include <stdarg.h> 31823 31824 Clean up two old comments. 31825 * strace.c (startup_attach): Remove misplaced comment. 31826 (trace) Remove incomplete part of a comment. 31827 31828 Make a few variables static. 31829 * defs.h: Remove tcbtab declaration. 31830 * strace.c: Make run_uid, run_gid, outf, tcbtab, progname 31831 global variables static 31832 31833 Add debug output in initial attachment code. 31834 * strace.c (startup_attach): If -d, report pid and success/failure 31835 of every attach attempt. 31836 31837 Better debug logging of allocations and waitpit results. 31838 * strace.c (alloc_tcb): Print number of allocated tcb's if -d. 31839 (droptcb): Likewise. 31840 (handle_ptrace_event): Remove PTRACE_EVENT_EXEC debug message. 31841 (trace): Improve logging of waitpid: show WIFxxx, exitcode/signal, 31842 ptrace event name, WCOREDUMP - all on one line. 31843 31844 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31845 31846 Optimize arrays of register indexes in syscall_enter. 31847 * syscall.c (syscall_enter) [BFIN]: Make register no array "static const". 31848 [SH]: Make register no array "const", pre-multiply it by 4. 31849 [SH64]: Make register no array "const". 31850 [X86_64]: Make register no array "const", pre-multiply it by 8. 31851 31852 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31853 31854 Deindent syscall_enter by removing unnecessary braces. No code changes. 31855 syscall_enter has many long (>80 columns) lines. 31856 It is aggravated by the fact that it has a lot of {} blocks 31857 which are not necessary (the code is the same without them). 31858 This patch removes {}s and deindents affected lines. 31859 While at it, it indents ifdefs so that nesting is easier to track, 31860 and adds a few spaces in the expressions, such as 31861 "tcp->u_nargs*sizeof..." -> "tcp->u_nargs * sizeof...". 31862 There is no actual changes to the code here. 31863 31864 * syscall.c (syscall_enter): Remove unnecessary {} blocks. 31865 31866 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31867 31868 Remove dead "ifndef CLONE_PTRACE" branch. 31869 process.c defines CLONE_PTRACE for Linux, so it can't be undefined. 31870 Therefore ifndef CLONE_PTRACE code is dead (since at least 2004). 31871 This patch removes it. 31872 31873 * process.c (handle_new_child): Remove ifdef CLONE_PTRACE/endif (but not 31874 the code inside) and entire ifndef CLONE_PTRACE/endif block. 31875 31876 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31877 31878 Add a comment about setbpt. No code changes. 31879 * defs.h: Add a comment about setbpt(). 31880 31881 Untangle a particularly badly obfuscated bit of code. No logic changes. 31882 * util.c (setbpt): Calculate new arg0 in more readable way. 31883 31884 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31885 31886 Remove TCB_FOLLOWFORK. 31887 TCB_FOLLOWFORK flag seems to be unnecessary, because we either follow 31888 all [v]forks/clones or don't follow any, therefore global variable 31889 followfork is an already existing indicator of what we want to do. 31890 This patch drops all setting/clearing of TCB_FOLLOWFORK bit, 31891 and replaces checks for this bit by checks of followfork value. 31892 In internal_fork, check is moved to in front of if(), since 31893 the check is needed on both "entering" and "exiting" branch. 31894 31895 * defs.h: Remove TCB_FOLLOWFORK define. 31896 * process.c (internal_fork): Do not set/clear TCB_FOLLOWFORK, 31897 test followfork instead of tcp->flags & TCB_FOLLOWFORK. 31898 (handle_new_child): Likewise. 31899 * strace.c (startup_attach): Likewise. 31900 31901 2011-06-23 Dmitry V. Levin <ldv (a] altlinux.org> 31902 31903 * system.c (sys_capget, sys_capset): Fix pointer arithmetics. 31904 31905 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31906 31907 Make initial tcb allocation more readable. No logic changes. 31908 * strace.c (main): Make initial tcb allocation more readable. 31909 31910 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31911 31912 Do not allocate tiny cap_user_header/data structures, place them on stack. 31913 This allows us to avoid having code to malloc them, and code to check 31914 for malloc failure. Resulting code decrease: 31915 text data bss dec hex filename 31916 10175 0 16 10191 27cf system.o.old 31917 9797 0 0 9797 2645 system.o 31918 31919 * system.c (sys_capget): Put cap_user_header_t and cap_user_data_t 31920 on stack, rather than allocating them in heap. These structures 31921 are very small (a few integer fields), stack is a better place 31922 for them. 31923 (sys_capset): Likewise. 31924 31925 2011-06-23 Denys Vlasenko <dvlasenk (a] redhat.com> 31926 31927 Use [p]error_msg[_and_die] where appropriate. No logic changes. 31928 Resulting size changes: 31929 text data bss dec hex filename 31930 17445 16 8572 26033 65b1 strace.o.old 31931 16850 16 8572 25438 635e strace.o 31932 31933 * strace.c: Replace fprintf[+cleanup]+exit with [p]error_msg_and_die, 31934 fprintf("progname: ...") with [p]error_msg where appropriate. 31935 31936 2011-06-22 Denys Vlasenko <dvlasenk (a] redhat.com> 31937 31938 Whitespace cleanups. No code changes. 31939 * count.c: Place opening curly brace after if (), 31940 not on the next line. Almost all strace code alredy 31941 uses this style. 31942 * desc.c: Likewise. 31943 * file.c: Likewise. 31944 * net.c: Likewise. 31945 * pathtrace.c: Likewise. 31946 * process.c: Likewise. 31947 * quota.c: Likewise. 31948 * signal.c: Likewise. 31949 * strace.c: Likewise. 31950 * syscall.c: Likewise. 31951 * time.c: Likewise. 31952 31953 2011-06-22 Denys Vlasenko <dvlasenk (a] redhat.com> 31954 31955 Make strace_fopen abort on error. 31956 Error from strace_fopen in main results in call to exit(1). 31957 Error from strace_fopen in newoutf is propagated to newoutf 31958 callers: startup_attach (where it results in exit(1)) 31959 and alloc_tcb (where error is ignored). In second case, 31960 the behavior doesn't seem to be right: it means with -ff 31961 on open error for new LOGFILE.PID the output will continue 31962 to go into *the same file as the previous process* - which 31963 would be confusing. Moreover, on droptcb outf may be closed 31964 and the output of other, still running process outputting 31965 to the same outf will be lost. I don't think this is sane. 31966 IOW: in all cases, error in strace_fopen should be fatal. 31967 31968 * strace.c (strace_fopen): Abort on error instead of returning NULL. 31969 (newoutf): Change return type to void. 31970 (startup_attach): Remove error check on newoutf return value. 31971 (main): Remove error check on strace_fopen return value. 31972 31973 2011-06-22 Denys Vlasenko <dvlasenk (a] redhat.com> 31974 31975 Make set_cloexec_flag abort on error. 31976 set_cloexec_flag() may fail only if we pass it a bad fd, 31977 such as -1 or non-opened one. If we do, we have a bug 31978 in the caller. It makes no sense to try to continue 31979 running when we detect such a blatant bug in our own code. 31980 31981 * strace (set_cloexec_flag): Abort instead of returning error 31982 indicator. Change function to return void. 31983 (strace_fopen): Remove error check on set_cloexec_flag return value. 31984 (proc_open): Likewise. 31985 (proc_poll_open): Likewise. 31986 31987 2011-06-22 Denys Vlasenko <dvlasenk (a] redhat.com> 31988 31989 Make strace_popen abort on error. 31990 It makes no sense to postpone abort on strace_popen error 31991 unti it returns. Moreover, out-of-memory error was exiting 31992 without any message. 31993 While at it, use 0 as "none" for popen_pid, as optimization. 31994 31995 * strace: Initialize popen_pid to 0 - this puts it in bss. 31996 (trace): Reset popen_pid to 0 instead of -1. 31997 (strace_popen): Never return NULL as error indicator, 31998 abort with good error message instead. 31999 (main): Remove NULL check of strace_popen result. 32000 32001 2011-06-22 Denys Vlasenko <dvlasenk (a] redhat.com> 32002 32003 Delete fork_tcb() 32004 Get rid of fork_tcb() function. It used to do what the comment 32005 above it says, but now it doesn't do much: 32006 it only sets tcp->flags |= TCB_FOLLOWFORK and maybe calls 32007 expand_tcbtab(). The second operation is not necessary, since 32008 alloc_tcp() will do it itself when needed. 32009 This patch deletes fork_tcb(), open-coding tcp->flags |= TCB_FOLLOWFORK 32010 where it was formerly called. It also makes nprocs, tcbtabsize and 32011 expand_tcbtab() static. (While at it, I nuked redundant 32012 extern char **environ declaration: strace.c had *two* of them...) 32013 32014 * defs.h: Remove declarations of nprocs, tcbtabsize and 32015 expand_tcbtab. 32016 * process.c (fork_tcb): Remove this function. 32017 (internal_fork): Open-code fork_tcb. 32018 (handle_new_child): Likewise. 32019 * strace.c: Remove redundant "extern char **environ". Declare 32020 nprocs and tcbtabsize static. 32021 (expand_tcbtab): Make it static. 32022 32023 2011-06-22 Denys Vlasenko <dvlasenk (a] redhat.com> 32024 32025 Simplify expand_tcbtab and alloc_tcb. 32026 Get rid of a few intermediate variables, simplifies a few expressions, 32027 and uses error_msg_and_die instead of more verbose 32028 fprintf+cleanup+exit sequence. 32029 In alloc_tcp, I use memset to clear entire new tcp. 32030 This not only saves a few bytes of code, but lowers the chances 32031 of future bugs where some data "leaks out" into new tcb's 32032 from old ones because we forgot to re-initialize it. 32033 32034 * strace.c (expand_tcbtab): Simplify this function. No logic changes. 32035 (alloc_tcb): Likewise. 32036 32037 2011-06-21 Denys Vlasenko <dvlasenk (a] redhat.com> 32038 32039 Trivial fixes. 32040 * process.c (internal_fork): Remove conditionals which make no difference 32041 (we return 0 on both branches of these ifs). 32042 * util.c: Fix indentation of an ifdef. 32043 32044 2011-06-21 Dmitry V. Levin <ldv (a] altlinux.org> 32045 32046 Fix build when libaio-devel is not available. 32047 * desc.c: Do not compile code that uses struct iocb unless 32048 HAVE_LIBAIO_H is set. 32049 32050 Reported-by: Denys Vlasenko <dvlasenk (a] redhat.com> 32051 32052 2011-06-21 Dmitry V. Levin <ldv (a] altlinux.org> 32053 32054 tests: finish ptrace_setoptions_* merge. 32055 * tests/Makefile.am (TESTS): Merge ptrace_setoptions_*. 32056 * tests/ptrace_setoptions: Check for Linux kernel > 2.6. 32057 32058 2011-06-21 Denys Vlasenko <dvlasenk (a] redhat.com> 32059 32060 Remove write-only nchildren member from struct tcb. 32061 * defs.h: Remove nchildren member from struct tcb. 32062 * process.c (handle_new_child): Remove inc/decrements of tcp->nchildren. 32063 (internal_fork): Likewise. 32064 * strace.c (startup_attach): Likewise. 32065 (droptcb): Likewise. 32066 (alloc_tcb): Remove initialization of tcp->nchildren. 32067 32068 Fix tests/ptrace_setoptions_* to match last fix in ptrace options code. 32069 32070 Remove write-only nzombies member from struct tcb. 32071 * defs.h: Remove nzombies member from struct tcb. 32072 * strace.c (droptcb): Remove "tcp->parent->nzombies++". 32073 (alloc_tcb): Remove "tcp->nzombies = 0". 32074 32075 2011-06-21 Denys Vlasenko <dvlasenk (a] redhat.com> 32076 32077 Fix regression introduced by "Properly handle real SIGTRAPs" change. 32078 Commit 3454e4b463e6c22c7ea8c5461ef5a077f4650a54 32079 introduced a bug: sometimes, TRACECLONE/TRACE[V]FORK opts were not set. 32080 The check (tcp->parent == NULL) in old code was meant to check 32081 "if we are not a child created by auto-attach" - in this case, 32082 options need to be set on the child; otherwise they are inherited 32083 and do not need to be set. 32084 I misunderstood the check and if tcp->parent is not NULL, I was 32085 setting only ptrace_setoptions_for_all bits. 32086 This change fixes the problem. Since the fixed logic makes it 32087 unnecessary to keep two sets of options in separate variables, 32088 I merge them back into one variable, ptrace_setoptions. 32089 32090 * defs.h: Merge ptrace_setoptions_followfork and ptrace_setoptions_for_all 32091 into one variable, ptrace_setoptions. 32092 * strace.c: Likewise. 32093 (test_ptrace_setoptions_followfork): Use ptrace_setoptions variable. 32094 (test_ptrace_setoptions_for_all): Likewise. 32095 (main): Likewise. 32096 * process.c (internal_fork): Likewise. 32097 (internal_exec): Likewise. 32098 * strace.c (trace): Fix the bug where different options were set 32099 depending on "tcp->parent == NULL" condition. Add a comment 32100 which makes it more clear why this condition is checked. 32101 32102 2011-06-18 Denys Vlasenko <dvlasenk (a] redhat.com> 32103 32104 Do not suspend waitpid. 32105 strace used to suspend waitpid until there is a child 32106 for waitpid'ing process to collect status from. 32107 Apparently, it was done because in some very old kernels 32108 (circa 2002 or even earlier) there were ptrace bugs which 32109 were making waitpid in real parent to not see children. 32110 This kernel bug is fixed long ago. This change removes the workaround. 32111 test/wait_must_be_interruptible.c is a test program which 32112 illustrates why without this change strace changes 32113 programs's behavior. 32114 32115 * defs.h: Delete waitpid and nclone_waiting members from from struct tcb. 32116 Remove declaration of internal_wait(). 32117 * process.c (internal_wait): Remove this function. 32118 * strace.c (alloc_tcb): Do not set tcp->nclone_waiting. 32119 (resume): Remove this function. 32120 (resume_from_tcp): Remove this function. 32121 (detach): Do not call resume_from_tcp(). 32122 (handle_group_exit): Do not call resume_from_tcp(). 32123 * syscall.c (internal_syscall): Do not call internal_wait(). 32124 32125 2011-06-13 Andi Kleen <ak (a] linux.intel.com> 32126 32127 Enhance io_submit() decoding. 32128 strace didn't decode important fields in the iocb passed to io_submit. 32129 This patch changes the code to dump them all. Also it prefixes the fields 32130 with names to make it easier to read. 32131 32132 * desc.c (iocb_cmd_lookup, print_common_flags): New functions. 32133 (sys_io_submit): New iocb decoder. 32134 32135 2011-06-13 Dmitry V. Levin <ldv (a] altlinux.org> 32136 32137 Add argument to tprint_iov() specifying whether to decode each iovec. 32138 * defs.h (tprint_iov): Add decode_iov argument. 32139 * io.c (tprint_iov): Implement new decode_iov argument. 32140 (sys_readv, sys_writev, sys_sendfile, sys_preadv, sys_pwritev): Update 32141 tprint_iov calls. 32142 * net.c (do_msghdr): Likewise. 32143 32144 Introduce ARRAY_SIZE() macro. 32145 * defs.h (ARRAY_SIZE): New macro. 32146 * ioctl.c: Use it. 32147 * pathtrace.c (pathmatch, storepath): Likewise. 32148 * process.c (printpriv): Likewise. 32149 * signal.c: Likewise. 32150 * syscall.c: Likewise. 32151 32152 2011-06-13 Andi Kleen <ak (a] linux.intel.com> 32153 32154 Fix decoding of timer id returned by timer_create. 32155 * time.c (sys_timer_create): The kernel returns a integer, not a 32156 pointer for the timer id in the memory pointed to by timer_id. 32157 32158 2011-06-09 Dmitry V. Levin <ldv (a] altlinux.org> 32159 32160 Add test for PTRACE_O_TRACESYSGOOD. 32161 * tests/ptrace_setoptions_for_all: New file. 32162 * tests/Makefile.am (TESTS): Add ptrace_setoptions_for_all. 32163 32164 tests: update test for linux kernel version. 32165 * tests/ptrace_setoptions_followfork: Check for Linux kernel > 2.6. 32166 32167 2011-06-09 Dmitry V. Levin <ldv (a] altlinux.org> 32168 32169 Update ptrace_setoptions test. 32170 The test have to be adjusted after commit v4.6-5-g3454e4b. 32171 32172 * ptrace_setoptions: Update grep pattern, rename to 32173 ptrace_setoptions_followfork. 32174 * tests/Makefile.am (TESTS): Rename ptrace_setoptions to 32175 ptrace_setoptions_followfork. 32176 32177 2011-06-09 Dmitry V. Levin <ldv (a] altlinux.org> 32178 32179 * strace.c (verror_msg): Rewrite without use of heap memory allocation. 32180 32181 2011-06-09 Dmitry V. Levin <ldv (a] altlinux.org> 32182 32183 Fix MIPS syscall entries. 32184 * linux/mips/syscallent.h: Remove duplicate entries for 4336, 4337, 32185 and 4338 syscall numbers. 32186 32187 Reported-by: Denys Vlasenko <dvlasenk (a] redhat.com> 32188 32189 2011-06-08 Denys Vlasenko <dvlasenk (a] redhat.com> 32190 32191 Don't display bogus parameter for sigreturn syscall. 32192 * linux/*/syscallent.h: For those arches which use sys_sigreturn, 32193 not printargs, to show [rt_]sigreturn syscall, change number of arguments 32194 from 1 to 0: sys_sigreturn function doesn't use syscall parameters. 32195 (I guess kernel doesn't actually _have_ any parameters for this syscall, 32196 at least on these architectures). Do the same change for I386 and x86-64 32197 even though they use printargs: I looked at kernel code and syscall 32198 definitely doesn't have any parameters on these arches. 32199 (I hesitate to change 1 to 0 params for arches I don't know - 32200 it is remotely possible some of them do have a parameter for this syscall). 32201 32202 Optimize sigreturn handling. 32203 * signal.c (sys_sigreturn): move stack pointer variables, 32204 and for SPARC and MIPS, stack pointer and sigmask reading code 32205 into "if (entering) ..." block, because it is only needed 32206 in this branch; load tcp->u_arg[1] into sigmask for display 32207 _after_ we know for sure u_arg[1] does contain valid sigmask 32208 (IOW: perform operation only when we know we will need the result) 32209 32210 Do not call umoven to fetch parameters if we have zero params. 32211 * syscall.c [I386] (syscall_enter): Do not call umoven 32212 to fetch zero bytes. This is just an optimization. 32213 32214 "Modernize" four old-style function parameter declarations. 32215 * signal.c (signame, long_to_sigset, printsigmask, printsignal): 32216 Convert old-style C function definitions to a "modern" form. 32217 This does not change any actual code. 32218 32219 2011-06-08 Denys Vlasenko <dvlasenk (a] redhat.com> 32220 32221 Fix sigreturn decoding on MIPS. 32222 The "return 0" line was accidentally deleted circa 2007, 32223 which made sigreturn on MIPS always display "= 0" return 32224 instead of more informative " = ? (mask now [MASK])". 32225 32226 * strace.c (sys_sigreturn): Add wrongly deleted "return 0" line 32227 32228 2011-06-08 Denys Vlasenko <dvlasenk (a] redhat.com> 32229 32230 Print at least one space between SYSCALL(ARGS) and = RESULT if tracee is killed 32231 We already do it in the normal case, but in rare code path where 32232 tracee is gone (SIGKILLed?) sometimes we were printing this: 32233 "SYSCALL(ARGS <unavailable>)= ? <unavailable>" - note jammed together ")=". 32234 test/sigkill_rain.c can be used to verify the fix. 32235 32236 * strace.c (printleader): add a space after ")" in " <unavailable>)" 32237 32238 2011-06-08 Denys Vlasenko <dvlasenk (a] redhat.com> 32239 32240 Add fflush after printf in test/sigkill_rain.c. 32241 32242 Update test/* directory, it seem to be a bit bit-rotted. 32243 Added README; modified sigkill_rain.c to be more understandable, 32244 made clone.c compile; added wait_must_be_interruptible.c test; 32245 updated Makefile and .gitignore. 32246 32247 2011-06-07 Denys Vlasenko <dvlasenk (a] redhat.com> 32248 32249 Whitespace cleanups. no code changes. 32250 * bjm.c: Fix tabulation (such as extra spaces before tabs), 32251 convert punctuation where it deviates from prevalent form 32252 elsewhere in strace code, convert sizeof and offsetof where 32253 it deviates from from prevalent form, remove space between 32254 function/macro/array names and (parameters) or [index], 32255 add space between "if" and (condition), correct non-standard 32256 or wrong indentaion. 32257 * defs.h: Likewise 32258 * desc.c: Likewise 32259 * file.c: Likewise 32260 * ipc.c: Likewise 32261 * linux/arm/syscallent.h: Likewise 32262 * linux/avr32/syscallent.h: Likewise 32263 * linux/hppa/syscallent.h: Likewise 32264 * linux/i386/syscallent.h: Likewise 32265 * linux/ioctlsort.c: Likewise 32266 * linux/m68k/syscallent.h: Likewise 32267 * linux/microblaze/syscallent.h: Likewise 32268 * linux/powerpc/syscallent.h: Likewise 32269 * linux/s390/syscallent.h: Likewise 32270 * linux/s390x/syscallent.h: Likewise 32271 * linux/sh/syscallent.h: Likewise 32272 * linux/sh64/syscallent.h: Likewise 32273 * linux/tile/syscallent.h: Likewise 32274 * linux/x86_64/syscallent.h: Likewise 32275 * mem.c: Likewise 32276 * net.c: Likewise 32277 * pathtrace.c: Likewise 32278 * process.c: Likewise 32279 * signal.c: Likewise 32280 * sock.c: Likewise 32281 * strace.c: Likewise 32282 * stream.c: Likewise 32283 * sunos4/syscall.h: Likewise 32284 * sunos4/syscallent.h: Likewise 32285 * svr4/syscall.h: Likewise 32286 * svr4/syscallent.h: Likewise 32287 * syscall.c: Likewise 32288 * system.c: Likewise 32289 * test/childthread.c: Likewise 32290 * test/leaderkill.c: Likewise 32291 * test/skodic.c: Likewise 32292 * time.c: Likewise 32293 * util.c: Likewise 32294 32295 2011-05-30 Dmitry V. Levin <ldv (a] altlinux.org> 32296 32297 ARM EABI: fix 64-bit syscall's arguments decoding. 32298 ARM OABI and ARM EABI have different function parameters passing rules. 32299 With EABI, 64-bit function parameters passed in registers are aligned to 32300 an even-numbered register instead of using the next available pair, see 32301 http://lkml.org/lkml/2006/1/12/175 32302 This rule also applies to syscall's arguments. 32303 32304 * linux/arm/syscallent.h (pread, pwrite, truncate64, ftruncate64, 32305 readahead, preadv, pwritev): Fix number of arguments. 32306 * util.c (printllval): Align 64bit argument to 64bit boundary on 32307 __ARM_EABI__. 32308 32309 Reported-by: Damir Shayhutdinov <damir (a] altlinux.org> 32310 32311 2011-05-30 Damir Shayhutdinov <damir (a] altlinux.ru> 32312 32313 Linux: implement decoding of preadv and pwritev syscalls. 32314 * io.c [LINUX && HAVE_SYS_UIO_H] (sys_preadv, sys_pwritev): New functions. 32315 * linux/syscall.h (sys_preadv, sys_pwritev): Declare them. 32316 * linux/*/syscallent.h: Use them. 32317 32318 2011-05-30 Denys Vlasenko <dvlasenk (a] redhat.com> 32319 32320 "Modernize" all old-style function parameter declarations. 32321 * bjm.c: Convert all remaining old-style C function definitions 32322 to a "modern" form. This does not change any actual code. 32323 * io.c: Likewise 32324 * ioctl.c: Likewise 32325 * net.c: Likewise 32326 * proc.c: Likewise 32327 * process.c: Likewise 32328 * signal.c: Likewise 32329 * sock.c: Likewise 32330 * strace.c: Likewise 32331 * stream.c: Likewise 32332 * syscall.c: Likewise 32333 * system.c: Likewise 32334 * time.c: Likewise 32335 * util.c: Likewise 32336 32337 2011-05-27 Denys Vlasenko <dvlasenk (a] redhat.com> 32338 32339 Cleanups on top of "handle SIGTRAP properly" change, based on Dmitry's comments. 32340 * defs.h ([p]error_msg[_and_die]): Declare new functions. 32341 * strace.c (SYSCALLTRAP): Rename to syscall_trap_sig. 32342 ([p]error_msg[_and_die]): Define new functions. 32343 (strace_tracer_pid): New variable, it controls which pid will 32344 do cleanup on exit via [p]error_msg_and_die. 32345 (main): Set strace_tracer_pid to our initial pid. 32346 (startup_attach): Change strace_tracer_pid if we are in -D mode. 32347 (test_ptrace_setoptions_for_all): Minor changes to logic, 32348 such as better diagnostic messages. 32349 32350 2011-05-25 Denys Vlasenko <dvlasenk (a] redhat.com> 32351 32352 Identifier "errno" may be a macro, it's unsafe to use it. 32353 * strace.c (strerror): Rename parameter errno to err_no 32354 32355 2011-05-24 Denys Vlasenko <dvlasenk (a] redhat.com> 32356 32357 Don't perform TCB_WAITEXECVE wait if not needed. 32358 * defs.h (ptrace_setoptions_for_all): Expose this variable. 32359 * strace.c (ptrace_setoptions_for_all): Remove "static". 32360 * process.c (internal_exec): Don't set TCB_WAITEXECVE bit 32361 if we know that post-execve SIGTRAP is not going to happen. 32362 32363 2011-05-23 Denys Vlasenko <dvlasenk (a] redhat.com> 32364 32365 Properly handle real SIGTRAPs. 32366 * defs.h (ptrace_setoptions): Variable renamed to ptrace_setoptions_followfork. 32367 * process.c (internal_fork): Ditto. 32368 * strace.c (ptrace_setoptions_for_all): New variable. 32369 (SYSCALLTRAP): New variable. 32370 (error_msg_and_die): New function. 32371 (test_ptrace_setoptions_for_all): New function. 32372 (main): Call test_ptrace_setoptions_for_all() at init. 32373 (handle_ptrace_event): Handle PTRACE_EVENT_EXEC (by ignoring it). 32374 (trace): Check events and set ptrace options without -f too. 32375 Check WSTOPSIG(status) not for SIGTRAP, but for SYSCALLTRAP. 32376 32377 2011-04-24 Mike Frysinger <vapier (a] gentoo.org> 32378 32379 Blackfin: update syscall list. 32380 32381 * linux/bfin/syscallent.h: Add name_to_handle_at, open_by_handle_at, 32382 clock_adjtime, and syncfs syscalls. 32383 32384 2011-04-24 Mike Frysinger <vapier (a] gentoo.org> 32385 32386 linux: add new EHWPOISON errno. 32387 32388 * linux/errnoent.h: Change ERRNO_133 to EHWPOISON. 32389 32390 2011-04-08 Grant Edwards <grant.b.edwards (a] gmail.com> 32391 32392 Add ability to print file descriptor paths and filter by those paths. 32393 * pathtrace.c: New file, implements matching syscall arguments to 32394 user-specified file paths. 32395 * Makefile.am (strace_SOURCES): Add pathtrace.c. 32396 * defs.h (TCB_FILTERED, filtered): New defines. 32397 (getfdpath, pathtrace_select, pathtrace_match, show_fd_path, 32398 tracing_paths): New declarations. 32399 * strace.c (show_fd_path, tracing_paths): New global variables. 32400 (usage, main): Implement handling of -y and -P options. 32401 * strace.1: Add descriptions of -y and -P options. 32402 * syscall.c (trace_syscall_entering): Add path matching logic to the 32403 print/noprint decision and set the TCB_FILTERED bit appropriately. 32404 (trace_syscall_exiting): Use filtered() macro that checks the 32405 TCB_FILTERED bit to determine print/noprint status. 32406 * util.c (printfd): Use getfdpath(). 32407 32408 2011-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 32409 32410 Fix BLKTRACESTOP definition. 32411 * block.c: Fix typo in the check for BLKTRACESTOP. 32412 Reported by Gabor Z. Papp. 32413 32414 2011-03-15 Dmitry V. Levin <ldv (a] altlinux.org> 32415 32416 Ensure that PTRACE_GETSIGINFO et al are always defined on Linux. 32417 * configure.ac (AC_CHECK_DECLS): Add PTRACE_* constants. 32418 * defs.h [LINUX]: Define those PTRACE_* constants that are not provided 32419 by <sys/ptrace.h>. 32420 32421 * CREDITS.in: Fix typo. 32422 32423 2011-03-14 Dmitry V. Levin <ldv (a] altlinux.org> 32424 32425 Update PTRACE_* constants. 32426 * process.c (ptrace_cmds): Add PTRACE_GETREGSET and PTRACE_SETREGSET. 32427 32428 Prepare for 4.6 release. 32429 * NEWS: Update for 4.6 release. 32430 * configure.ac: Version 4.6. 32431 * debian/changelog: 4.6-1. 32432 * strace.spec: 4.6-1. 32433 32434 2011-03-14 Mike Frysinger <vapier (a] gentoo.org> 32435 32436 linux/ioctlent: unify them all. 32437 This unifies all the ioctlent.h's in the linux subdir while still 32438 allowing each arch to maintain its own minor list. 32439 32440 The basic method is: 32441 - each arch has linux/<arch>/ioctlent.h.in which defines only the 32442 arch-specific ioctls; 32443 - linux/ioctlent.h.in which defines only the common ioctls; 32444 - at build time, these two headers are combined and sorted to produce 32445 the linux/ioctlent.h file. 32446 32447 This also requires a little tweaking of the include files since the 32448 common ioctlent.h is a built file. 32449 32450 * linux/ioctlent.h: Split into linux/ioctlent.h.in and 32451 linux/i386/ioctlent.h.in, remove asm entries from the former, remove 32452 non-asm entries from the latter. 32453 * linux/alpha/ioctlent.h: Rename to linux/alpha/ioctlent.h.in, remove 32454 non-asm entries. 32455 * linux/bfin/ioctlent.h: Rename to linux/bfin/ioctlent.h.in, remove 32456 non-asm entries. 32457 * linux/hppa/ioctlent.h: Rename to linux/hppa/ioctlent.h.in, remove 32458 non-asm entries. 32459 * linux/ia64/ioctlent.h: Rename to linux/ia64/ioctlent.h.in, remove 32460 non-asm entries. 32461 * linux/mips/ioctlent.h: Rename to linux/mips/ioctlent.h.in, remove 32462 non-asm entries. 32463 * linux/powerpc/ioctlent.h: Rename to linux/powerpc/ioctlent.h.in, 32464 remove non-asm entries. 32465 * linux/s390/ioctlent.h: Rename to linux/s390/ioctlent.h.in, remove 32466 non-asm entries. 32467 * linux/sh/ioctlent.h: Rename to linux/sh/ioctlent.h.in, remove 32468 non-asm entries. 32469 * linux/sparc/ioctlent.h: Rename to linux/sparc/ioctlent.h.in, remove 32470 non-asm entries. 32471 * linux/arm/ioctlent.h.in: New file. 32472 * linux/avr32/ioctlent.h.in: Likewise. 32473 * linux/i386/ioctlent.h.in: Likewise. 32474 * linux/m68k/ioctlent.h.in: Likewise. 32475 * linux/microblaze/ioctlent.h.in: Likewise. 32476 * linux/tile/ioctlent.h.in: Likewise. 32477 * linux/x86_64/ioctlent.h.in: Likewise. 32478 * linux/s390x/ioctlent.h.in: Include ioctlent.h.in instead of 32479 ioctlent.h. 32480 * linux/sh64/ioctlent.h.in: Likewise. 32481 * linux/sparc64/ioctlent.h.in: Likewise. 32482 * linux/arm/ioctlent1.h: Update ioctlent.h include. 32483 * linux/powerpc/ioctlent1.h: Likewise. 32484 * linux/sparc/ioctlent1.h: Likewise. 32485 * linux/sparc64/ioctlent1.h: Likewise. 32486 * linux/x86_64/ioctlent1.h: Likewise. 32487 * Makefile.am (AM_CPPFLAGS): Add -I$(builddir)/$(OS). 32488 (EXTRA_DIST): Update. 32489 [MAINTAINER_MODE && LINUX]: Convert from ioctlent_h to ioctlent_h_in. 32490 [LINUX]: Add $(builddir)/$(OS)/ioctlent.h generation rules. 32491 * .gitignore: Add linux/ioctlent.h. 32492 32493 2011-03-10 Dmitry V. Levin <ldv (a] altlinux.org> 32494 32495 Show more details about signals received by traced processess. 32496 * strace.c [!USE_PROCFS] (trace): Differentiate output format depending 32497 on PTRACE_GETSIGINFO success or failure. In the former case, use 32498 printsiginfo() to show more details about received signal. 32499 32500 Get rid of PT_GETSIGINFO. 32501 * strace.c [!USE_PROCFS] (trace): Assume that PTRACE_GETSIGINFO is 32502 available. Replace PT_GETSIGINFO with PTRACE_GETSIGINFO. Use 32503 PTRACE_GETSIGINFO for all signals. 32504 32505 Enhance decoding of kernel-generated signals. 32506 * signal.c (printsiginfo) [LINUX]: Do not print uninteresting 32507 zero-initialized fields. 32508 32509 Fix decoding of user-generated signals. 32510 * signal.c [LINUX] (SI_FROMUSER): Define. 32511 [LINUX || SVR4] (printsiginfo) [SI_FROMUSER]: Enhance decoding. 32512 32513 Recognize SI_KERNEL and SI_ASYNCNL. 32514 * signal.c [LINUX] (SI_KERNEL, SI_ASYNCNL): Define. 32515 [LINUX || SVR4] (siginfo_codes): Add entries for SI_KERNEL and 32516 SI_ASYNCNL, reorder entries. 32517 32518 2011-03-05 Sebastian Pipping <sebastian (a] pipping.org> 32519 32520 Take all git branches into account for generation of CREDITS file. 32521 * Makefile.am: Make CREDITS target depend on all git branches. 32522 32523 2011-03-04 Dmitry V. Levin <ldv (a] altlinux.org> 32524 32525 Fix decoding of file descriptors. 32526 * defs.h (printfd): New function prototype. 32527 * util.c (printfd): New function. 32528 * file.c (print_dirfd): Update prototype to use printfd(). 32529 (sys_openat, sys_faccessat, sys_newfstatat, sys_mkdirat, sys_linkat, 32530 sys_unlinkat, sys_readlinkat, sys_renameat, sys_fchownat, sys_fchmodat, 32531 sys_futimesat, sys_utimensat, sys_mknodat): Update use of print_dirfd(). 32532 (sys_lseek, sys_llseek, sys_readahead, sys_ftruncate, sys_ftruncate64, 32533 sys_fstat, sys_fstat64, sys_oldfstat, sys_fstatfs, sys_fstatfs64, 32534 sys_fchdir, sys_fchroot, sys_linkat, sys_fchown, sys_fchmod, sys_fsync, 32535 sys_readdir, sys_getdents, sys_getdirentries, sys_fsetxattr, 32536 sys_fgetxattr, sys_flistxattr, sys_fremovexattr, sys_fadvise64, 32537 sys_fadvise64_64, sys_inotify_add_watch, sys_inotify_rm_watch, 32538 sys_fallocate): Use printfd() for decoding of file descriptors. 32539 * desc.c (sys_fcntl, sys_flock, sys_close, sys_dup, do_dup2, 32540 decode_select, sys_epoll_ctl, epoll_wait_common): Use printfd() for 32541 decoding of file descriptors. 32542 * io.c (sys_read, sys_write, sys_readv, sys_writev, sys_pread, 32543 sys_pwrite, sys_sendfile, sys_sendfile64, sys_pread64, sys_pwrite64, 32544 sys_ioctl): Likewise. 32545 * mem.c (print_mmap, sys_mmap64): Likewise. 32546 * signal.c (do_signalfd): Likewise. 32547 * stream.c (decode_poll): Likewise. 32548 * time.c (sys_timerfd_settime, sys_timerfd_gettime): Likewise. 32549 Based on patch from Grant Edwards <grant.b.edwards (a] gmail.com>. 32550 32551 2011-03-03 Sebastian Pipping <sebastian (a] pipping.org> 32552 32553 Print shutdown(2) modes as SHUT_* constants. 32554 * net.c (shutdown_modes): New xlat structure. 32555 (sys_shutdown): Use shutdown_modes to decode 2nd syscall argument. 32556 32557 Fix decoding of inotify_init1() flags. 32558 * file.c (inotify_init_flags): New xlat structure. 32559 (sys_inotify_init1): Use it instead of open_mode_flags. 32560 32561 2011-03-03 Dmitry V. Levin <ldv (a] altlinux.org> 32562 32563 Fix struct xlat initialization bugs. 32564 * file.c (inotify_modes): Terminate with NULL entry. 32565 * net.c (sock_type_flags): Make this array static. 32566 (socketlayers): Add a comment that this array should remain not 32567 NULL-terminated. 32568 32569 tests: avoid SIGPIPE. 32570 * tests/ptrace_setoptions: Replace "grep -q" with "grep > /dev/null". 32571 The former may result to strace being killed by SIGPIPE, which in 32572 certain configuratons may lead to generation of a core file. 32573 Suggested by Mike Frysinger. 32574 32575 2011-03-01 Mike Frysinger <vapier (a] gentoo.org> 32576 32577 tests: do not make missing /usr/bin/time a failure. 32578 * tests/init.sh (framework_skip_): New function. 32579 (check_prog): Use it instead of framework_failure_. 32580 32581 2011-02-27 Dmitry V. Levin <ldv (a] altlinux.org> 32582 32583 Generate an xz tar archive of the distribution. 32584 * configure.ac (AM_INIT_AUTOMAKE): Replace dist-bzip2 with dist-xz. 32585 * Makefile.am: Update srpm target. 32586 * make-dist: Update for dist-xz. 32587 * strace.spec: Update Source tag. 32588 * debian/watch: Update regexp. 32589 * .gitignore: Add strace-*.tar.xz. 32590 32591 Use "make check" in debian/rules and strace.spec. 32592 * debian/control: Update Build-Depends. 32593 * debian/rules: Run "make check". 32594 * strace.spec: Update BuildRequires. Run "make check" in %check section. 32595 32596 Implement two basic "strace -f" tests. 32597 * Makefile.am (SUBDIRS): Add tests. 32598 * configure.ac (AC_CONFIG_FILES): Add tests/Makefile. 32599 * tests/.gitignore: New file. 32600 * tests/Makefile.am: Likewise. 32601 * tests/init.sh: Likewise. 32602 * tests/ptrace_setoptions: Likewise. 32603 * tests/strace-f: Likewise. 32604 32605 2011-02-26 Dmitry V. Levin <ldv (a] altlinux.org> 32606 32607 ppc, s390, sparc: regenerate ioctlent.h files. 32608 * linux/powerpc/ioctlent.h: Regenerated using Fedora 15 kernel headers. 32609 * linux/s390/ioctlent.h: Likewise. 32610 * linux/sparc/ioctlent.h: Likewise. 32611 32612 Remove redundant ioctlent.h files. 32613 * linux/s390x/ioctlent.h: Replace old contents with include of 32614 s390/ioctlent.h file. 32615 * linux/sparc64/ioctlent.h: Replace old contents with include of 32616 sparc/ioctlent.h file. 32617 32618 2011-02-25 Dmitry V. Levin <ldv (a] altlinux.org> 32619 32620 ioctlsort: sync with ioctl_lookup() 32621 * linux/ioctlsort.c (main): Use NR and TYPE bits only, to sync with 32622 ioctl_lookup() which looks at these bits only. 32623 32624 Remove obsolete .cvsignore files. 32625 * test/.cvsignore: Rename to test/.gitignore. 32626 * */.cvsignore, */*/.cvsignore: Removed. 32627 32628 Ignore generated intermediate header files. 32629 * .gitignore: Add ioctls.h and ioctldefs.h. 32630 32631 2011-02-24 Dmitry V. Levin <ldv (a] altlinux.org> 32632 32633 Generate much of the CREDITS file from git log. 32634 * CREDITS.in: New file, derived from CREDITS, without names of 32635 those who are listed as git log 'Author:'s. 32636 * CREDITS: Remove file. 32637 * Makefile.am [MAINTAINER_MODE] (CREDITS): New rule. 32638 * .gitignore: Add CREDITS. 32639 * .mailmap: New file, required to map git author names and email 32640 addresses to canonical/preferred form. 32641 32642 2011-02-23 Dmitry V. Levin <ldv (a] altlinux.org> 32643 32644 sparc: fix compilation warning. 32645 * file.c [!HAVE_LONG_LONG_OFF_T] (realprintstat): Cast st_size 32646 to unsigned long. 32647 32648 Update the list of files that must be distributed. 32649 * Makefile.am (EXTRA_DIST): Add debian/source/format, debian/watch, 32650 linux/ia64/signalent.h, linux/powerpc/ioctlent1.h, 32651 linux/powerpc/syscallent1.h, linux/powerpc/errnoent1.h, 32652 linux/powerpc/signalent1.h. 32653 32654 Fix compilation warning reported by gcc -Wunused-but-set-variable. 32655 * process.c (printwaitn) [!SUNOS4]: Do not define "exited" variable. 32656 32657 2011-02-22 Mike Frysinger <vapier (a] gentoo.org> 32658 32659 ioctlsort: zero pad ioctl codes to 4 places. 32660 Zero padding the ioctl number will allow simple sorting via shell scripts. 32661 32662 * linux/ioctlsort.c (main): Output ioctl codes zero padded. 32663 * linux/ioctlent.h: Regenerated. 32664 32665 2011-02-22 Mike Frysinger <vapier (a] gentoo.org> 32666 32667 Update mount flags to latest linux. 32668 * system.c (MS_RELATIME, MS_KERNMOUNT, MS_I_VERSION, 32669 MS_STRICTATIME, MS_BORN): Define. 32670 (mount_flags): Add MS_RELATIME, MS_KERNMOUNT, MS_I_VERSION, 32671 MS_STRICTATIME, MS_BORN. 32672 32673 2011-02-22 Dmitry V. Levin <ldv (a] altlinux.org> 32674 32675 Sync debian/changelog and strace.spec with packages. 32676 * debian/changelog: Sync with 4.5.20-2. 32677 * strace.spec: Likewise. 32678 32679 2011-02-20 Dmitry V. Levin <ldv (a] altlinux.org> 32680 32681 Add TRACE_DESC|TRACE_FILE flags to fanotify_* sysentries. 32682 * linux/*/syscallent.h: Add TD flag to fanotify_init. Add TD|TF flags 32683 to fanotify_mark. 32684 32685 Fix flags of fallocate sysentries. 32686 * linux/*/syscallent.h: Fix sys_fallocate flags. 32687 32688 Add TRACE_DESC flag to epoll_create* sysentries. 32689 * linux/*/syscallent.h: Add TD flag to sys_epoll_create and 32690 sys_epoll_create1. 32691 32692 Add TRACE_DESC flag to fgetxattr, flistxattr, and fremovexattr sysentries 32693 * linux/*/syscallent.h: Add TD flag to sys_fgetxattr, sys_flistxattr, 32694 and fremovexattr. 32695 32696 Add TRACE_FILE flag to swapoff sysentries. 32697 * linux/*/syscallent.h: Add TF flag to sys_swapoff. 32698 32699 Add TRACE_DESC flag to fadvise64* sysentries. 32700 * linux/*/syscallent.h: Add TD flag to sys_fadvise64 and 32701 sys_fadvise64_64. 32702 32703 Add TRACE_DESC flag to mmap, mmap2, and old_mmap sysentries. 32704 * linux/*/syscallent.h: Add TD flag to sys_mmap and sys_old_mmap. 32705 32706 Do not initialize native_scno on platforms with only one personality. 32707 * linux/bfin/syscallent.h: Remove redundant native_scno initialization. 32708 * linux/m68k/syscallent.h: Likewise. 32709 * linux/microblaze/syscallent.h: Likewise. 32710 32711 Add LOOP_* ioctls defined in linux/loop.h. 32712 * linux/ioctlent.sh: Add LOOP_* ioctls (0x4C..) defined in linux/loop.h 32713 header file. 32714 * linux/ioctlent.h: Regenerated. 32715 Reported by Mike Frysinger. 32716 32717 2011-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 32718 32719 Fix PTRACE_GETEVENTMSG usage and enhance test_ptrace_setoptions() 32720 * strace.c (handle_ptrace_event): Fix PTRACE_GETEVENTMSG usage. 32721 (test_ptrace_setoptions): Test that PTRACE_GETEVENTMSG works properly. 32722 32723 2011-02-19 Mike Frysinger <vapier (a] gentoo.org> 32724 32725 linux/sparc: move to common syscall.h. 32726 Rather than constantly deal with the sparc/syscall.h going stale, merge 32727 the few sparc-specific pieces into the linux/syscall.h header. 32728 32729 * linux/syscall.h: Add sparc-specific pieces from sparc/syscall.h. 32730 * Makefile.am (EXTRA_DIST): Remove linux/sparc/syscall.h and 32731 linux/sparc64/syscall.h. 32732 * linux/sparc/syscall.h, linux/sparc64/syscall.h: Deleted. 32733 32734 2011-02-19 Mike Frysinger <vapier (a] gentoo.org> 32735 32736 sparc: add new funcs to syscall.h. 32737 Sync missing defs from the common syscall.h here. 32738 32739 * linux/sparc/syscall.h: Add sys_setfsuid, sys_pread64, and 32740 sys_pwrite64 prototypes. 32741 32742 2011-02-19 Mike Frysinger <vapier (a] gentoo.org> 32743 32744 sparc: punt unused syscall.h.2. 32745 I can't find any mention of this header actually being used. 32746 Seems to be a really old copy of the common syscall.h. 32747 32748 * Makefile.am (EXTRA_DIST): Remove linux/sparc/syscall.h.2. 32749 * linux/sparc/syscall.h.2: Deleted. 32750 32751 2011-02-19 Dmitry V. Levin <ldv (a] altlinux.org> 32752 32753 Fix raw exit_group(2) decoding. 32754 * syscall.c (trace_syscall_entering): Check for sys_exit instead of 32755 SYS_exit to handle exit_group(2) as well as _exit(2). 32756 32757 2011-02-18 Dmitry V. Levin <ldv (a] altlinux.org> 32758 32759 Optimize known_scno() 32760 * syscall.c (known_scno): Do not check for native_scno field on 32761 platforms that support only one personality. 32762 32763 * process.c (internal_exit) [IA64]: Remove redundant check. 32764 32765 2011-02-09 Dmitry V. Levin <ldv (a] altlinux.org> 32766 32767 Fix biarch support in IO dumping. 32768 * syscall.c (dumpio): Switch on tcp->sys_func instead of tcp->scno 32769 for more reliable results. 32770 32771 Simplify tprintf() declaration. 32772 * defs.h (tprintf): Simplify declaration. 32773 32774 2011-02-05 Dmitry V. Levin <ldv (a] altlinux.org> 32775 32776 * defs.h (SYSCALL_NEVER_FAILS): Fix typo. 32777 32778 2011-01-19 Dmitry V. Levin <ldv (a] altlinux.org> 32779 32780 Fix decoding of get[ug]id, gete[ug]id and setfs[ug]id return values. 32781 * defs.h (SYSCALL_NEVER_FAILS): New syscall flag. 32782 * linux/dummy.h: Change redirection for sys_get[ug]id, sys_gete[ug]id 32783 and setfs[ug]id. 32784 * linux/*/syscallent.h: Set SYSCALL_NEVER_FAILS flag for get[ug]id, 32785 gete[ug]id and setfs[ug]id syscalls. 32786 * process.c [LINUX] (sys_getuid, sys_setfsuid): New functions. 32787 * syscall.c (NF): New shorthand macro for use in syscallent.h files. 32788 (get_error): Check SYSCALL_NEVER_FAILS flag. 32789 Reported by <socketpair (a] gmail.com>. 32790 32791 * linux/*/syscallent.h: Fix typo in sys_newfstatat syscall flags. 32792 32793 2011-01-18 Mike Frysinger <vapier (a] gentoo.org> 32794 32795 Blackfin: update ioctl list. 32796 * linux/bfin/ioctlent.h: Sync with latest kernel sources. 32797 32798 2011-01-17 Dmitry V. Levin <ldv (a] altlinux.org> 32799 32800 Fix stat64 decoding on mips. 32801 * linux/mips/syscallent.h: Use sys_stat64() to decode stat64 syscall. 32802 This fixes Debian bug #599028. 32803 32804 Update linux/*/syscallent.h files to match Linux kernel v2.6.37. 32805 * linux/alpha/syscallent.h: Add hooks for fanotify_init, fanotify_mark, 32806 and prlimit64. 32807 * linux/i386/syscallent.h: Likewise. 32808 * linux/ia64/syscallent.h: Likewise. 32809 * linux/m68k/syscallent.h: Likewise. 32810 * linux/microblaze/syscallent.h: Likewise. 32811 * linux/mips/syscallent.h: Likewise. 32812 * linux/powerpc/syscallent.h: Likewise. 32813 * linux/s390/syscallent.h: Likewise. 32814 * linux/s390x/syscallent.h: Likewise. 32815 * linux/sh/syscallent.h: Likewise. 32816 * linux/sh64/syscallent.h: Likewise. 32817 * linux/sparc/syscallent.h: Likewise. 32818 * linux/x86_64/syscallent.h: Likewise. 32819 * linux/arm/syscallent.h: Add hooks for accept4, fanotify_init, 32820 fanotify_mark, and prlimit64. 32821 * linux/hppa/syscallent.h: Add hook for prlimit64. 32822 32823 2011-01-16 Dmitry V. Levin <ldv (a] altlinux.org> 32824 32825 block.c: cleanup. 32826 * block.c: Include <inttypes.h>. 32827 (print_blkpg_req): Always decode struct blkpg_ioctl_arg. 32828 Robustify decoding of strings. 32829 (block_ioctl): Do not decode return values passed by pointers on exit 32830 from failed syscalls. 32831 Use format macros from inttypes.h to print values of type uint64_t. 32832 32833 2011-01-15 Dmitry V. Levin <ldv (a] altlinux.org> 32834 32835 Add block ioctl support. 32836 * block.c: New file. 32837 * Makefile.am (strace_SOURCES): Add it. 32838 * defs.h [LINUX] (block_ioctl): New function. 32839 * ioctl.c (ioctl_decode) [LINUX]: Use it to decode HDIO_* and BLK* 32840 ioctls. 32841 Patch by Jeff Mahoney <jeffm (a] suse.com> 32842 32843 2011-01-14 Holger Hans Peter Freyther <zecke (a] selfish.org> 32844 32845 Parse SOL_SCTP socket options. 32846 * configure.ac (AC_CHECK_HEADERS): Add netinet/sctp.h. 32847 * net.c [HAVE_NETINET_SCTP_H]: Include <netinet/sctp.h>. 32848 [SOL_SCTP] (socksctpoptions): New xlat structure. 32849 (sys_getsockopt, printsockopt): Parse SOL_SCTP options. 32850 32851 * net.c (socketlayers): Add more SOL_* constants from linux/socket.h. 32852 32853 2011-01-14 Dmitry V. Levin <ldv (a] altlinux.org> 32854 32855 strace.1: fix misleading italics. 32856 * strace.1: Use bold instead of italics for "-e trace=" keywords. 32857 This fixes Debian bug #589323. 32858 32859 Update linux/ioctlent.h. 32860 * linux/ioctlent.h: Regenerate using linux v2.6.37 headers. 32861 32862 Add HDIO_* ioctls defined in linux/hdreg.h. 32863 * linux/ioctlent.sh: Add HDIO_* ioctls (0x03..) defined in 32864 linux/hdreg.h header file. 32865 This fixes Debian bug #450953. 32866 32867 2011-01-13 Dmitry V. Levin <ldv (a] altlinux.org> 32868 32869 Test PTRACE_O_TRACECLONE and PTRACE_O_TRACEVFORK along with PTRACE_O_TRACEFORK 32870 * strace.c (test_ptrace_setoptions): Add PTRACE_O_TRACECLONE and 32871 PTRACE_O_TRACEVFORK to PTRACE_SETOPTIONS call, to test exactly 32872 the same set of options that is going to be used later in trace(). 32873 32874 2011-01-10 Dmitry V. Levin <ldv (a] altlinux.org> 32875 32876 * net.c (protocols): Add more IPPROTO_* constants defined in netinet/in.h 32877 32878 2011-01-10 Holger Hans Peter Freyther <holger (a] freyther.de> 32879 32880 * net.c (protocols): Add IPPROTO_GRE, IPPROTO_SCTP and IPPROTO_UDPLITE. 32881 32882 2011-01-10 Carmelo AMOROSO <carmelo.amoroso (a] st.com> 32883 32884 sh: Add entry for not-multiplexed accept4. 32885 * linux/sh/syscallent.h: Add specific entry for not-multiplexed accept4 32886 available in kernel mainline since v2.6.37-rc6, see 32887 http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=21b6e4c7106b2d68a6710506d8706608272fd78b 32888 32889 2010-12-14 Carmelo AMOROSO <carmelo.amoroso (a] st.com> 32890 32891 sh: Add entries for not-multiplexed socket calls. 32892 * linux/sh/syscallent.h: Add specific entries for not-multiplexed 32893 socket calls (available in kernel mainline since v2.6.37-rc1) 32894 32895 sh: Fix compilation warning in do_pipe due to missing prototype. 32896 * defs.h [SH]: Make getrval2 prototype visible to do_pipe 32897 and fix the following compiler warning: 32898 .../net.c: In function 'do_pipe': 32899 .../net.c:1632: warning: implicit declaration of function 'getrval2' 32900 .../net.c:1632: warning: format '%lu' expects type 'long unsigned int', 32901 but argument 3 has type 'int' 32902 32903 2010-12-14 Dmitry V. Levin <ldv (a] altlinux.org> 32904 32905 Fix build on uClibc. 32906 * defs.h [LINUX]: Define PTRACE_GETEVENTMSG macro. 32907 Patch by Douglas Mencken <dougmencken (a] gmail.com>. 32908 32909 2010-12-07 Dmitry V. Levin <ldv (a] altlinux.org> 32910 32911 Fix strace -f -o '|command' hangup. 32912 * strace.c (main): Call test_ptrace_setoptions() before parsing 32913 -o option, otherwise a forked command will cause a hangup inside 32914 test_ptrace_setoptions(). 32915 32916 2010-12-03 Dmitry V. Levin <ldv (a] altlinux.org> 32917 32918 Output diagnostics to stderr. 32919 * syscall.c (get_scno): Output information about changes in 32920 personality mode to stderr. Reported by Pdraig Brady. 32921 32922 Recognize more clone flags. 32923 * process.c (CLONE_*): Define more flags from linux v2.6.25. 32924 (clone_flags): Add entries for them. 32925 Proposed by <zhangyanfei (a] cn.fujitsu.com>. 32926 32927 Decode struct ucred for getsockopt SO_PEERCRED. 32928 * net.c (sys_getsockopt): Decode SO_PEERCRED. 32929 Proposed by Arkadiusz Mikiewicz <arekm (a] maven.pl>. 32930 32931 2010-12-03 Carmelo AMOROSO <carmelo.amoroso (a] st.com> 32932 32933 sh: Add support for tracing sys_cacheflush system call. 32934 * linux/sh/syscallent.h: Update sys_cacheflush entry. 32935 * linux/syscall.h [SH] (sys_cacheflush): New function declaration. 32936 * system.c [SH] (cacheflush_flags): New xlat structure. 32937 [SH] (sys_cacheflush): New function. 32938 32939 Reviewed-by: Angelo Castello <angelo.castello (a] st.com> 32940 32941 2010-11-30 Dmitry V. Levin <ldv (a] altlinux.org> 32942 32943 Cleanup test_ptrace_setoptions() 32944 * strace.c (test_ptrace_setoptions): Cleanup. 32945 (main): Fix test_ptrace_setoptions() error diagnostics message. 32946 Print ptrace_setoptions value in debug mode. 32947 32948 2010-11-30 Wang Chao <wang.chao (a] cn.fujitsu.com> 32949 32950 Handle followfork using ptrace_setoptions if available. 32951 If PTRACE_O_TRACECLONE et al options are supported by kernel, 32952 use them to do followfork rather than the original setbpt 32953 method that changes registers ourselves. 32954 32955 * defs.h [LINUX] (handle_new_child): New function prototype. 32956 * process.c [LINUX] (handle_new_child): New function based on the 32957 code from internal_fork(), with a trivial change: do reparent only 32958 for sys_clone. 32959 [LINUX] (internal_fork): Use handle_new_child(). Do nothing if 32960 ptrace_setoptions is in effect. 32961 * strace.c [LINUX] (handle_ptrace_event): New function. 32962 [LINUX] (trace): If ptrace_setoptions is in effect, then 32963 call the new function to handle PTRACE_EVENT_* status, and 32964 set PTRACE_SETOPTIONS when we see the initial stop of tracee. 32965 32966 2010-11-30 Wang Chao <wang.chao (a] cn.fujitsu.com> 32967 32968 Test how PTRACE_SETOPTIONS support works. 32969 Currently test fork related options only. Fork a child that uses 32970 PTRACE_TRACEME at startup and then does a fork so strace can test 32971 how the PTRACE_SETOPTIONS support works before it handles any real 32972 tracee. Since PTRACE_O_TRACECLONE/*FORK were introduced to kernel 32973 at the same time, this test seems to be enough for these 3 options. 32974 32975 * defs.h [LINUX]: Define PTRACE_O_TRACECLONE et al macros here. 32976 (ptrace_setoptions): New variable declaration. 32977 * strace.c [LINUX] (test_ptrace_setoptions): New function, tests 32978 whether kernel supports PTRACE_O_CLONE/*FORK, the result is stored 32979 in the new variable ptrace_setoptions for later use. 32980 (main): Call test_ptrace_setoptions() if followfork option is set. 32981 32982 2010-09-17 Dmitry V. Levin <ldv (a] altlinux.org> 32983 32984 Enable support for less verbose build rules. 32985 * configure.ac (AM_INIT_AUTOMAKE): Add silent-rules. 32986 32987 2010-09-17 Wang Chao <wang.chao (a] cn.fujitsu.com> 32988 32989 Do not trace children cloned with CLONE_UNTRACED flag. 32990 If clone is called with flag CLONE_UNTRACED, to be consistent with 32991 option PTRACE_O_TRACECLONE, we should not set CLONE_PTRACE flag on 32992 its arguments. 32993 32994 * process.c [LINUX] (internal_fork): Check the syscall and arguments. 32995 32996 2010-09-17 Dmitry V. Levin <ldv (a] altlinux.org> 32997 32998 Update the list of CLOCK_* constants to match Linux kernel v2.6.32+ 32999 * time.c (struct xlat clocknames[]): Add more RT clock IDs. 33000 Reported by Tommi Rantala. 33001 33002 2010-09-16 Dmitry V. Levin <ldv (a] altlinux.org> 33003 33004 Update linux/hppa/syscallent.h to match Linux kernel v2.6.35. 33005 * linux/hppa/syscallent.h: Add hooks for recvmmsg and accept4. 33006 33007 2010-09-15 Dmitry V. Levin <ldv (a] altlinux.org> 33008 33009 Pass less information to qualify_one and qual_* 33010 * syscall.c (qualify_one, qual_syscall, qual_signal, qual_fault, 33011 qual_desc): Take just a bitflag argument instead of pointer to the whole 33012 qual_options structure. 33013 (struct qual_options): Update prototype of "qualify" field. 33014 (qualify): Update use of qualify_one and qual_options->qualify. 33015 33016 2010-09-15 Wang Chao <wang.chao (a] cn.fujitsu.com> 33017 33018 Fix -e option with only one value in qualifier statement. 33019 Fix regression introduced by commit v4.5.20-19-g30145dd: 33020 if -e option is used with only one value in qualifier statement, 33021 e.g. 'strace -e trace=open ls', syscall information would not be 33022 printed properly. 33023 33024 * syscall.c (qualify): Remove faulty optimization. 33025 33026 2010-09-15 Mike Frysinger <vapier (a] gentoo.org> 33027 33028 Fix off_t/rlim_t size checks when cross-compiling. 33029 The current off_t/rlim_t size checks (wrt size of long long) use AC_RUN 33030 which obviously doesn't work when cross-compiling. While we don't hit 33031 any configure errors, the fall back code is pretty dumb (which is to say 33032 there isn't any). Considering the code in question though, we can use 33033 some fun compiler tricks with sizeof and array lengths to turn it into 33034 a pure build test and avoid the RUN issue completely. 33035 33036 * m4/long_long.m4 (AC_OFF_T_IS_LONG_LONG, AC_RLIM_T_IS_LONG_LONG): 33037 Convert from AC_RUN_IFELSE to AC_COMPILE_IFELSE. 33038 33039 2010-09-15 Mike Frysinger <vapier (a] gentoo.org> 33040 33041 Fix long long little endian detection when cross-compiling. 33042 The long long endian detection code does an AC_TRY_RUN() and since that 33043 doesn't work when cross-compiling, it sets a fallback value. However, 33044 rather than do any sort of default endian detection, the code simply 33045 sets it to "no". This probably breaks most little endian systems out 33046 there when cross-compiling for them. It certainly breaks Blackfin 33047 systems. So use the common endian detection code provided by autoconf 33048 and key off of that when cross-compiling. 33049 33050 * configure.ac: Call AC_C_BIGENDIAN. 33051 * m4/long_long.m4 (AC_LITTLE_ENDIAN_LONG_LONG): Set cross-compiling 33052 logic based on ac_cv_c_bigendian. 33053 33054 2010-09-15 Mike Frysinger <vapier (a] gentoo.org> 33055 33056 Blackfin: decode new syscalls. 33057 * linux/bfin/syscallent.h: Add fanotify/prlimit/cacheflush syscalls. 33058 * linux/syscall.h: Add sys_cacheflush() decl. 33059 * system.c: Decode Blackfin's cacheflush syscall. 33060 33061 * linux/ioctlent.sh: Search a few non-exported paths. 33062 33063 2010-09-15 Roland McGrath <roland (a] redhat.com> 33064 33065 Clean up pid2tcb usage. 33066 * strace.c (pid2tcb): Always match pid. Fail for argument <= 0. 33067 [USE_PROCFS] (first_used_tcb): New function. 33068 [USE_PROCFS] (trace): Use that instead of pid2tcb(0). 33069 33070 2010-09-09 Dmitry V. Levin <ldv (a] altlinux.org> 33071 33072 Turn on more compiler warnings. 33073 * configure.ac: Enable gcc -Wwrite-strings. 33074 33075 Import warnings.m4 from gnulib. 33076 * m4/warnings.m4: Replace with warnings.m4 from gnulib. 33077 * configure.ac: Use gl_WARN_ADD from new warnings.m4. 33078 * Makefile.am (AM_CFLAGS): Update for new warnings.m4. 33079 33080 Split acinclude.m4. 33081 * Makefile.am (ACLOCAL_AMFLAGS): Add "-I m4". 33082 * acinclude.m4: Remove. 33083 * m4/includedir.m4: New file, with definition of AC_INCLUDEDIR from 33084 acinclude.m4. 33085 * m4/long_long.m4: New file, with definitions of AC_OFF_T_IS_LONG_LONG, 33086 AC_RLIM_T_IS_LONG_LONG and AC_LITTLE_ENDIAN_LONG_LONG from acinclude.m4. 33087 * m4/procfs.m4: New file, with definitions of AC_MP_PROCFS, 33088 AC_POLLABLE_PROCFS and AC_STRUCT_PR_SYSCALL from acinclude.m4. 33089 * m4/stat.m4: New file, with definition of AC_STAT64 from acinclude.m4. 33090 * m4/statfs.m4: New file, with definition of AC_STATFS64 from 33091 acinclude.m4. 33092 * m4/warnings.m4: New file, with definition of AC_WARNFLAGS from 33093 acinclude.m4. 33094 33095 * process.c (sys_waitid): Remove unused variable. 33096 33097 2010-09-07 Dmitry V. Levin <ldv (a] altlinux.org> 33098 33099 Fix const-correctness issues uncovered by gcc -Wwrite-strings. 33100 * defs.h (struct xlat): Add const qualifier to the field of 33101 type "char *". 33102 (set_sortby, qualify, printnum, printnum_int): Add const qualifier to 33103 arguments of type "char *". 33104 * count.c (set_sortby): Add const qualifier to the argument and 33105 automatic variable of type "char *". 33106 * desc.c (decode_select): Add const qualifier to automatic variables of 33107 type "char *". 33108 * ioctlsort.c (struct ioctlent): Add const qualifier to fields of 33109 type "char *". 33110 (main): Add const qualifier to argv. 33111 * process.c (printargv): Add const qualifier to the argument and 33112 automatic variable of type "char *". 33113 (printargc) Add const qualifier to argument of type "char *". 33114 * signal.c (sprintsigmask, parse_sigset_t): Add const qualifier to 33115 arguments of type "char *". 33116 * strace.c (progname): Add const qualifier. 33117 (detach): Add const qualifier to automatic variable of type "char *". 33118 * stream.c (struct strbuf): Add const qualifier to the field of 33119 type "char *". 33120 * syscall.c (struct qual_options): Add const qualifier to fields of 33121 type "char *". 33122 (qual_syscall, qual_fault, qual_desc, lookup_class): Add const qualifier 33123 to arguments of type "char *". 33124 (qual_signal): Add const qualifier to the argument of type "char *", 33125 avoid modification of constant argument. 33126 (qualify): Likewise. 33127 * util.c (printflags): Add const qualifier to automatic variable of 33128 type "char *". 33129 (printnum, printnum_int): Add const qualifier to arguments of 33130 type "char *". 33131 33132 2010-09-04 Wang Chao <wang.chao (a] cn.fujitsu.com> 33133 33134 Fix printing clone flags. 33135 When we trace clone() syscall with only exit signal as clone 33136 flags, strace would print an unnecessary OR operator. 33137 33138 * process.c (sys_clone): Fix this. 33139 33140 2010-08-28 Wang Chao <wang.chao (a] cn.fujitsu.com> 33141 33142 Drop nclone_detached and related flags. 33143 Remove nclone_detached since CLONE_DETACHED flag was no-op for a very 33144 long time in kernel. 33145 33146 * defs.h (struct tcb): Remove nclone_detached field. 33147 Remove TCB_CLONE_DETACHED flag. 33148 * process.c: Remove CLONE_DETACHED flag. 33149 (clone_flags): Remove CLONE_DETACHED entry. 33150 (internal_fork, internal_wait): Remove code dealing with CLONE_DETACHED 33151 flag and nclone_detached. 33152 * strace.c (startup_attach, alloc_tcb, droptcb, handle_group_exit): 33153 Likewise. 33154 33155 2010-08-09 Neil Campbell <lists (a] thebatcave.org.uk> 33156 33157 Correct get/set_robust_list syscall numbers for powerpc. 33158 * linux/powerpc/syscallent.h: Swap positions of get_ and set_robust_list. 33159 33160 2010-08-09 Wang Chao <wang.chao (a] cn.fujitsu.com> 33161 33162 Handle CLONE_PARENT flag. 33163 * process.c (internal_fork): The parent of new cloned process is the 33164 same of the calling process when CLONE_PARENT is set. 33165 33166 Fix error when judging if process has children. 33167 * process.c (internal_wait): Processes counted in tcp->nclone_threads 33168 are tcp's threads, rather than tcp's children. 33169 33170 2010-08-09 Wang Chao <wang.chao (a] cn.fujitsu.com> 33171 33172 Forbid using mutually exclusive options -D and -p together. 33173 If we use -D and -p option together to trace a multi-thread program, in 33174 addition to the main thread, other threads could not be traced even if we 33175 present -f option. Moreover, when executing 'strace -D -p <non-exist pid>', 33176 strace could not terminate normally. 33177 33178 * strace.c (main): Check it. 33179 33180 2010-08-05 David Daney <ddaney (a] caviumnetworks.com> 33181 33182 Update Linux MIPS syscalls to match 2.6.35-rc6+ 33183 * linux/mips/syscallent.h: Add and update 405 hooks. 33184 33185 2010-08-05 Edgar E. Iglesias <edgar.iglesias (a] gmail.com> 33186 33187 Add support for the MicroBlaze architecture. 33188 * configure.ac: Recognize MicroBlaze. 33189 * linux/microblaze/syscallent.h: New file. 33190 * Makefile.am (EXTRA_DIST): Add linux/microblaze/syscallent.h 33191 * process.c (change_syscall, struct_user_offsets): Add MicroBlaze 33192 support. 33193 * signal.c (sys_sigreturn): Likewise. 33194 * syscall.c (internal_syscall, get_scno, syscall_fixup, get_error, 33195 syscall_enter): Likewise. 33196 33197 2010-08-05 Frederik Schler <fs (a] debian.org> 33198 33199 linux/sparc: add missing syscall declarations. 33200 * linux/sparc/syscall.h: Sync with linux/syscall.h 33201 33202 2010-07-17 Andreas Schwab <schwab (a] linux-m68k.org> 33203 33204 Handle biarch get/setrlimit. 33205 * resource.c (print_rlimit32) [POWERPC64 || X86_64]: Define. 33206 (sys_getrlimit, sys_setrlimit) [POWERPC64 || X86_64]: Use it. 33207 33208 2010-07-13 Andreas Schwab <schwab (a] linux-m68k.org> 33209 33210 Add biarch support for powerpc64. 33211 * acinclude.m4 (AC_LITTLE_ENDIAN_LONG_LONG): Use int instead of 33212 long. 33213 * configure.ac [$host_cpu = powerpc*]: Also define POWERPC64 if 33214 $host_cpu = powerpc64. 33215 * defs.h (SUPPORTED_PERSONALITIES, PERSONALITY0_WORDSIZE) 33216 (PERSONALITY1_WORDSIZE) [POWERPC64]: Define. 33217 * file.c: (struct stat_powerpc32, printstat_powerpc32) [POWERPC64]: 33218 Define. 33219 (printstat) [LINUX && POWERPC64]: Use printstat_powerpc32 in 33220 32-bit personality. 33221 (sys_newfstatat) [POWERPC64]: Handle personalities. 33222 * signal.c (sys_sigreturn) [POWERPC64]: Likewise. 33223 * util.c (printllval) [POWERPC64]: Likewise. 33224 (printcall) [POWERPC64]: Use wider format for IP prefix. 33225 * syscall.c (get_scno) [POWERPC64]: Check for 64/32 bit mode. 33226 * linux/powerpc/errnoent1.h: New file. 33227 * linux/powerpc/ioctlent1.h: New file. 33228 * linux/powerpc/signalent1.h: New file. 33229 * linux/powerpc/syscallent1.h: New file. 33230 33231 2010-07-09 Andreas Schwab <schwab (a] redhat.com> 33232 33233 Balance braces. 33234 * strace.c (proc_open): Avoid unbalanced braces. 33235 (trace): Likewise. 33236 33237 2010-07-06 Andreas Schwab <schwab (a] linux-m68k.org> 33238 33239 Remove extern declaration at file scope. 33240 * defs.h (force_result): Declare. 33241 * process.c (internal_wait): Don't declare force_result. 33242 33243 2010-06-24 Andreas Schwab <schwab (a] redhat.com> 33244 33245 Document -C/-D. 33246 * strace.c (usage): Document -C. 33247 * strace.1: Document -D. 33248 33249 2010-06-13 Roland McGrath <roland (a] redhat.com> 33250 33251 Fix sourceforge download URL. 33252 33253 2010-06-05 Andreas Schwab <schwab (a] linux-m68k.org> 33254 33255 M68K: Fix fetching syscall arguments. 33256 * syscall.c (syscall_enter) [M68K]: Properly handle more than five 33257 syscall arguments. 33258 33259 2010-05-28 Andreas Schwab <schwab (a] linux-m68k.org> 33260 33261 Decode TLS syscalls on m68k. 33262 * linux/m68k/syscallent.h: Add entries for get_thread_area, 33263 set_thread_area, atomic_comxchg_32, atomic_barrier. 33264 * linux/dummy.h (sys_get_thread_area, sys_set_thread_area) [M68K]: 33265 Don't redefine. 33266 * mem.c (sys_get_thread_area, sys_set_thread_area) [LINUX && M68K]: New. 33267 33268 Fix warning when compiling for m68k. 33269 * syscall.c (d0): Define as long. 33270 33271 2010-04-13 Dmitry V. Levin <ldv (a] altlinux.org> 33272 33273 Prepare for 4.5.20 release. 33274 * NEWS: Update for 4.5.20 release. 33275 * configure.ac: Version 4.5.20. 33276 * debian/changelog: 4.5.20-1. 33277 * strace.spec: 4.5.20-1. 33278 33279 2010-04-13 Frederik Schler <fs (a] debian.org> 33280 33281 Update debian/* files for the upcoming release. 33282 * debian/control: update standards-version to 3.8.4. 33283 * debian/rules: allow parallel building. 33284 * debian/rules: comment out verbose build, only needed for debugging. 33285 * debian/rules: clean up clean: target, dh_clean does most of the work 33286 already. 33287 * debian/rules: use *-stamp instead of stamp-*, so dh_clean can tidy 33288 up for us. 33289 33290 2010-04-13 Heiko Carstens <heiko.carstens (a] de.ibm.com> 33291 33292 Fix s390 system call table list. 33293 * linux/s390/syscallent.h: Add the missing entries for preadv and 33294 pwritev to the system call table list. 33295 * linux/s390x/syscallent.h: Likewise. 33296 33297 2010-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 33298 33299 Update linux/ioctlent.h. 33300 * linux/ioctlent.sh: Search in asm-generic directory as well. 33301 * linux/ioctlent.h: Regenerated. 33302 33303 Update linux/*/syscallent.h files to match Linux kernel v2.6.33. 33304 * linux/alpha/syscallent.h: Add 47 hooks. 33305 * linux/arm/syscallent.h: Update hooks for pselect6, ppoll, 33306 epoll_pwait. Add 11 hooks. 33307 * linux/bfin/syscallent.h: Update hooks for prctl, fallocate, 33308 signalfd4, eventfd2, epoll_create1, dup3, pipe2, perf_event_open. 33309 Hook up recvmmsg. 33310 * linux/hppa/syscallent.h: Update hooks for signalfd4, eventfd2, 33311 epoll_create1, dup3, pipe2, perf_event_open. 33312 * linux/i386/syscallent.h: Fix syscall name for the kexec_load hook. 33313 Add 5 hooks. 33314 * linux/ia64/syscallent.h: Fix syscall name for the kexec_load hook. 33315 Add 4 hooks. 33316 * linux/m68k/syscallent.h: Add 50 hooks. 33317 * linux/powerpc/syscallent.h: Fix hook for timerfd_create. Fix 33318 6 syscall names to match the kernel. Use sys_semop to parse semop. 33319 Add 14 hooks. 33320 * linux/s390/syscallent.h: Fix syscall name for the kexec_load hook. 33321 Add 14 hooks. 33322 * linux/s390x/syscallent.h: Likewise. 33323 * linux/sh/syscallent.h: Add 13 hooks. 33324 * linux/sh64/syscallent.h: Add 15 hooks. 33325 * linux/sparc/syscallent.h: Add 22 hooks. 33326 * linux/x86_64/syscallent.h: Add 5 hooks. 33327 33328 Enhance recvmmsg parser. 33329 * net.c (sys_recvmmsg): Decode mmsghdr structure on exit from the 33330 syscall. Decode timespec structure both on entrance and on exit. 33331 33332 2010-04-07 Andreas Schwab <schwab (a] linux-m68k.org> 33333 33334 Decode recvmmsg syscall. 33335 * net.c (do_msghr): New function to print struct msghdr. 33336 (printmsghdr): Use it. 33337 (printmmsghdr, sys_recvmmsg): New. 33338 * linux/syscall.h: Declare sys_recvmmsg. 33339 (SYS_sub_recvmmsg): Define. 33340 (SYS_socket_nsubcalls): Bump. 33341 * linux/sparc/syscall.h: Likewise. 33342 * linux/arm/syscallent.h: Add sys_recvmmsg. 33343 * linux/bfin/syscallent.h: Likewise. 33344 * linux/i386/syscallent.h: Likewise. 33345 * linux/m68k/syscallent.h: Likewise. 33346 * linux/powerpc/syscallent.h: Likewise. 33347 * linux/s390/syscallent.h: Likewise. 33348 * linux/s390x/syscallent.h: Likewise. 33349 * linux/sh/syscallent.h: Likewise. 33350 * linux/sh64/syscallent.h: Likewise. 33351 * linux/sparc/syscallent.h: Likewise. 33352 * linux/ia64/syscallent.h: Adjust. 33353 33354 2010-04-07 Dmitry V. Levin <ldv (a] altlinux.org> 33355 33356 * strace.1: Fix quoting of hyphens and formatting of strace options. 33357 33358 Split trace_syscall() for better readability. 33359 * syscall.c (trace_syscall): Split into trace_syscall_exiting() and 33360 trace_syscall_entering(). 33361 33362 Implement -C option to combine regular and -c output. 33363 * defs.h (cflag_t): New enum. 33364 * strace.1: Document -C option. 33365 * strace.c (cflag): Update type. 33366 (main): Handle -C option. 33367 (trace): Update use of cflag. 33368 * count.c (count_syscall): Move clearing of TCB_INSYSCALL to ... 33369 * syscall.c (trace_syscall): ... here. Update use of cflag. 33370 Based on patch by Adrien Kunysz. 33371 33372 Fix "make dist" regression introduced by commit v4.5.19-12-g5078770. 33373 * Makefile.am (EXTRA_DIST): Rename linux/syscallent.h to linux/i386/syscallent.h 33374 33375 * desc.c (sys_epoll_pwait): Fix output formatting bug. 33376 33377 * desc.c (decode_select): Fix potential stack buffer overflow. 33378 33379 2010-03-31 Dmitry V. Levin <ldv (a] altlinux.org> 33380 33381 Fix msgsnd indirect ipccall decoding. 33382 This regression was introduced by commit v4.5.18-136-g783f5bc. 33383 * ipc.c (tprint_msgsnd): Add and use "flags" argument. 33384 (sys_msgsnd): Pass "flags" argument to tprint_msgsnd(). 33385 Patch by Anton Blanchard. 33386 33387 2010-03-23 Mark Wielaard <mjw (a] redhat.com> 33388 33389 Hook up inotify_init1 open mode flags printer. 33390 * file.c [LINUX] (sys_inotify_init1): New function. 33391 * linux/syscall.h: Declare new sys_inotify_init1 handler. 33392 * linux/bfin/syscallent.h: Hook up new handler. 33393 * linux/hppa/syscallent.h: Likewise. 33394 * linux/i386/syscallent.h: Likewise. 33395 * linux/x86_64/syscallent.h: Likewise. 33396 33397 2010-03-09 Andreas Schwab <schwab (a] redhat.com> 33398 33399 Avoid spurious error when checking for linux/netlink.h. 33400 * configure.ac: Include <asm/types.h> when checking for 33401 linux/netlink.h. 33402 33403 2010-02-23 Andreas Schwab <schwab (a] linux-m68k.org> 33404 33405 Fix reporting signal mask by sigreturn on powerpc. 33406 * signal.c (sys_sigreturn) [POWERPC]: Skip dummy stack frame when 33407 locating signal context. 33408 33409 2010-02-09 David Daney <ddaney (a] caviumnetworks.com> 33410 33411 Fix MIPS N32/N64 compile error. 33412 * syscall.c [LINUX_MIPSN32 || LINUX_MIPSN64] (syscall_enter): Pass 33413 tcp->pid to ptrace(). 33414 33415 2010-02-05 Chris Metcalf <cmetcalf (a] tilera.com> 33416 33417 Add support for the TILE architecture. 33418 * configure.ac: Add TILE to the list of supported architectures. 33419 * defs.h: Define TCB_WAITEXECVE for TILE. 33420 * linux/tile/syscallent.h: New file. 33421 * Makefile.am (EXTRA_DIST): Add linux/tile/syscallent.h 33422 * process.c (change_syscall, struct_user_offsets): Add TILE support. 33423 * syscall.c (get_scno, get_error, syscall_enter): Likewise. 33424 * mem.c (mmap_flags, print_mmap): Add MAP_CACHE_xxx TILE extensions 33425 support. 33426 * signal.c (sigact_flags): Add SA_NOPTRACE. 33427 (sys_sigreturn): Add TILE support. 33428 33429 2010-02-04 Dmitry V. Levin <ldv (a] altlinux.org> 33430 33431 Remove dead code. 33432 * defs.h (tv_tv): Remove. 33433 * net.c (sys_xsetsockaddr): Remove commented out dead code. 33434 * process.c (setarg, sys_execv, sys_execve, struct_user_offsets): 33435 Likewise. 33436 * signal.c (sys_sigsuspend): Likewise. 33437 * strace.c (reaper, trace): Likewise. 33438 * stream.c (internal_stream_ioctl): Likewise. 33439 * syscall.c (trace_syscall): Likewise. 33440 * term.c (term_ioctl): Likewise. 33441 * util.c (tv_tv, umoven, uload, getpc, fixvfork, setbpt, clearbpt): 33442 Likewise. 33443 33444 Merge Linux internal_clone() into internal_fork() 33445 * defs.h (internal_clone): Remove. 33446 * process.c (internal_clone): Merge into internal_fork(). 33447 (internal_fork) [!LINUX]: Remove dead code. 33448 * syscall.c (internal_syscall): Replace internal_clone() with 33449 internal_fork(). 33450 33451 * Makefile.am (INCLUDES): Remove redundant search directories. 33452 33453 2010-02-04 Frederik Schler <fs (a] debian.org> 33454 33455 Update debian/* files. 33456 * debian/control: add sparc64 to the architectures list. 33457 This closes Debian bug #560062 33458 * Backport commit f0df31e71a58c6e79ba77c1a9d84b2f38d44bec7 to fix FTBFS. 33459 This closes Debian bug #560516 33460 * debian/control: Update standards-version to 3.8.3. 33461 * debian/control: Lower package priority to optional, matching 33462 the archive override. 33463 * debian/control: add ${misc:Depends} to Depends: lines where 33464 appropriate. 33465 * debian/watch: new file, allows automatic tracking of new 33466 upstream versions. 33467 * debian/source/format: new file, adapt to debian source format "quilt" 33468 * debian/rules: indentation cleanups; use dh_testroot and dh_prep 33469 in clean target. 33470 33471 2010-01-25 Andreas Schwab <schwab (a] redhat.com> 33472 33473 Fix spurious failure of AC_STAT64 test. 33474 * acinclude.m4 (AC_STAT64): Include <sys/types.h> first. 33475 33476 2010-01-12 Andreas Schwab <schwab (a] redhat.com> 33477 33478 Don't kill the process when detaching. 33479 * strace.c (detach): Call clearbpt when TCB_BPTSET is set. 33480 33481 2009-12-25 Dmitry V. Levin <ldv (a] altlinux.org> 33482 33483 Decode fifth argument of mremap syscall. 33484 * mem.c (sys_mremap): Decode fifth argument. 33485 * linux/*/syscallent.h: Update the number of mremap syscall arguments. 33486 33487 2009-12-24 Chris Metcalf <cmetcalf (a] tilera.com> 33488 33489 * mem.c (sys_mbind): Display first argument in hex. 33490 33491 * mem.c (mremap_flags): Add MREMAP_FIXED. 33492 33493 2009-11-16 Mike Frysinger <vapier (a] gentoo.org> 33494 33495 Move i386-specific files out of common linux dir. 33496 * linux/syscallent.h: Moved to ... 33497 * linux/i386/syscallent.h: ... here. 33498 * linux/ia64/syscallent.h: Update i386 syscallent.h include. 33499 * linux/sparc/gen.pl: Likewise. 33500 * linux/x86_64/syscallent1.h: Likewise. 33501 33502 2009-11-16 Andreas Schwab <schwab (a] redhat.com> 33503 33504 Remove support for pre-C89. 33505 * defs.h: Remove references to __STDC__ and P macros. 33506 * strace.c: Likewise. 33507 33508 2009-11-13 Dmitry V. Levin <ldv (a] altlinux.org> 33509 33510 Decode more SOL_PACKET socket options. 33511 * net.c (sockpacketoptions): Add more PACKET_* entries. 33512 (sys_getsockopt): Decode PACKET_STATISTICS. 33513 (printsockopt): Decode PACKET_RX_RING and PACKET_TX_RING. 33514 Patch by Gabor Gombas. 33515 33516 2009-11-11 Andreas Schwab <schwab (a] redhat.com> 33517 33518 Ignore errors if a thread is killed. 33519 * util.c (clearbpt): Ignore ESRCH error. 33520 33521 2009-11-06 Bernhard Reutner-Fischer <rep.dot.nop (a] gmail.com> 33522 33523 Fix handling of Linux systems without struct statfs64. 33524 * acinclude.m4 (AC_STATFS64): New macro to check for struct statfs64. 33525 * configure.ac: Call AC_STATFS64. 33526 * file.c (printstatfs64, sys_statfs64, sys_fstatfs64): Compile only 33527 if struct statfs64 is available. 33528 33529 2009-11-06 Dmitry V. Levin <ldv (a] altlinux.org> 33530 33531 Fix getsockopt decoding on architectures where sizeof(long) > sizeof(int) 33532 * net.c (sys_getsockopt): Optimize output a bit. 33533 Decode integer argument using printnum_int(), patch by Gabor Gombas. 33534 33535 Check umove() return code. 33536 * bjm.c (sys_query_module): Print input parameters when entering 33537 syscall. Fix handling of syscall error. Handle unlikely umove() 33538 failures. 33539 * ipc.c (tprint_msgrcv): New function. Move part of msgrcv parser code 33540 here, add check umove() return code. 33541 (sys_msgsnd): Print msqid parameter as int instead of long. 33542 (sys_msgrcv): Likewise. Use tprint_msgrcv(). 33543 * process.c (print_affinitylist): Check umove() return code. 33544 * sock.c (sock_ioctl): Handle unlikely umove() failure in the 33545 SIOCGIFCONF parser. 33546 33547 Fix check for linux/netlink.h on Linux 2.6.32-rc5+ 33548 * configure.ac (AC_CHECK_HEADERS): In check for linux/netlink.h, include 33549 sys/socket.h instead of linux/socket.h beforehand. 33550 33551 2009-11-04 Andreas Schwab <schwab (a] redhat.com> 33552 33553 Decode fallocate on PowerPC. 33554 * linux/powerpc/syscallent.h: Decode fallocate. 33555 33556 Factor out printing of 64bit syscall argument. 33557 * defs.h (ALIGN64): Remove. 33558 (printllval): Declare. 33559 * util.c (printllval): Define. 33560 * file.c (sys_readahead): Use printllval. 33561 (sys_lseek64): Likewise. 33562 (sys_truncate64): Likewise. 33563 (sys_ftruncate64): Likewise. 33564 (sys_fadvise64): Likewise. 33565 (sys_fadvise64_64): Likewise. 33566 (sys_fallocate): Likewise. 33567 * io.c (sys_pread): Likewise. 33568 (sys_pwrite): Likewise. 33569 (sys_pread64): Likewise. 33570 (sys_pwrite64): Likewise. 33571 * mem.c (sys_mmap64): Likewise. 33572 33573 2009-11-03 Andreas Schwab <schwab (a] redhat.com> 33574 33575 Correct decoding of readahead and fadvice64(_64) on PowerPC. 33576 * file.c (sys_readahead): Align 64bit argument. Handle PowerPC64 33577 like other 64bit architectures. 33578 (sys_fadvise64): Likewise. 33579 (sys_fadvise64_64): Handle PowerPC like ARM. 33580 * linux/powerpc/syscallent.h (sys_readahead): Account for 64bit 33581 argument alignment on PowerPC32. 33582 33583 2009-10-27 Andreas Schwab <schwab (a] redhat.com> 33584 33585 Maintain separate print column for each process. 33586 * defs.h (struct tcp): Add curcol. 33587 * strace.c: (alloc_tcb): Initialize it. 33588 (trace): Use curcol from current process and save it before 33589 continuing. 33590 (tprintf): Don't modify curcol on output error. 33591 33592 2009-10-21 Roland McGrath <roland (a] redhat.com> 33593 33594 * strace.spec: 4.5.19-1 release. 33595 33596 2009-10-21 Dmitry V. Levin <ldv (a] altlinux.org> 33597 33598 * file.c (printstat64): Cleanup trailing whitespace. 33599 33600 2009-10-16 Andreas Schwab <schwab (a] redhat.com> 33601 33602 Fix decoding of newfstatat syscall on x86-64. 33603 * file.c (printstat64) [LINUX && X68_64]: If tracing a 64-bit 33604 process redirect to printstat. 33605 Fixes RH#529316 "Field values shown for "newfstatat" system 33606 call are incorrect" 33607 33608 2009-10-12 Dmitry V. Levin <ldv (a] altlinux.org> 33609 33610 * configure.ac (AC_CHECK_HEADERS): Remove asm/reg.h. 33611 33612 2009-10-12 Mike Frysinger <vapier (a] gentoo.org> 33613 33614 sparc/linux: Rewrite to use asm/ptrace.h. 33615 The current sparc/linux code uses asm/reg.h, but recent Linux kernels 33616 dropped that header completely. So switch over to the ptrace headers 33617 as those should stick around indefinitely as part of the ABI. 33618 33619 * defs.h [LINUXSPARC] (U_REG_G1, U_REG_O0, U_REG_O1): Define. 33620 * process.c: Drop asm/regs.h include. 33621 [SPARC || SPARC64] (change_syscall): Change struct regs to struct pt_regs. 33622 * signal.c: Drop asm/regs.h include. 33623 (m_siginfo_t): Unify [SPARC || SPARC64] and [MIPS]. 33624 [SPARC || SPARC64] (sys_sigreturn): Change struct regs to struct pt_regs. 33625 * syscall.c: Drop asm/regs.h include. 33626 [SPARC || SPARC64] (internal_syscall, get_scno, get_error, force_result, 33627 syscall_enter): Change struct regs to struct pt_regs. 33628 * util.c: Drop asm/regs.h include. 33629 (_hack_syscall5, _ptrace): Delete. 33630 [SPARC || SPARC64] (getpc, printcall, arg_setup_state): Change 33631 struct regs to struct pt_regs. 33632 33633 2009-10-11 Roland McGrath <roland (a] redhat.com> 33634 33635 * make-dist: Clean up. 33636 33637 * configure.ac: Use AC_CONFIG_AUX_DIR([.]). 33638 33639 2009-10-09 Dmitry V. Levin <ldv (a] altlinux.org> 33640 33641 * make-dist: New script for preparing release tarballs. 33642 33643 * git-set-file-times: Import from rsync. 33644 33645 * Makefile.am [MAINTAINER_MODE]: Define and export TAR_OPTIONS. 33646 33647 2009-10-08 Dmitry V. Levin <ldv (a] altlinux.org> 33648 33649 Enhance msgsnd() parser. 33650 * ipc.c (tprint_msgsnd): New function. Move msgsnd parser code here, 33651 add check for umove() return code. 33652 (sys_msgsnd): Use tprint_msgsnd(). 33653 33654 * NEWS: Update for 4.5.19 release. 33655 33656 Enhance semop()/semtimedop() sembuf parser. 33657 * ipc.c (tprint_sembuf): New function. Move sembuf parser code here, 33658 add abbrev() support. 33659 (sys_semop, sys_semtimedop): Use tprint_sembuf(). 33660 33661 2009-10-08 Jakub Bogusz <qboosh (a] pld-linux.org> 33662 33663 Add pretty printing of sembuf argument to semop() and semtimedop() 33664 * ipc.c (semop_flags): New xlat structure. 33665 (sys_semop, sys_semtimedop): Add pretty printing of sembuf argument. 33666 33667 2009-10-08 Mike Frysinger <vapier (a] gentoo.org> 33668 33669 Add support for Linux/no-mmu with vfork. 33670 * configure.ac (AC_CHECK_FUNCS): Add fork. 33671 * strace.c (strace_vforked): Define. 33672 (startup_child): Do not raise SIGSTOP if vforked. 33673 (trace): Skip first exec when starting up after vforked. 33674 * syscall.c [BFIN] (get_scno): Drop waitexec checks. 33675 33676 Avoid malloc(0) in getdents parsers. 33677 On end of directory, getdents returns 0. This return value is used to 33678 then try and do malloc(0), but on some systems this will always return 33679 NULL. Since the code won't read the pointer in question if len is 0, 33680 then don't bother calling malloc(0) and set the pointer to NULL ourself. 33681 * file.c (sys_getdents, sys_getdents64): Avoid malloc(0) call. 33682 33683 2009-10-07 Mike Frysinger <vapier (a] gentoo.org> 33684 33685 Add sys_nanosleep() prototype for sparc. 33686 * linux/sparc/syscall.h (sys_nanosleep): New prototype. 33687 Reported by Frederik Schler. 33688 33689 Silence compiler warnings about implicit cast from pointer to integer. 33690 * util.c (do_ptrace): Cast ptrace() 4th arg to long. 33691 (ptrace_restart): Drop void* cast on ptrace() 4th arg. 33692 33693 Ignore .gdb files from FLAT toolchains. 33694 * .gitignore: Add /*.gdb. 33695 33696 * configure.ac (AC_CHECK_FUNCS): Sort and expand. 33697 33698 Blackfin: Update ioctl/syscall lists. 33699 * linux/bfin/ioctlent.h: Sync list with latest kernel sources. 33700 * linux/bfin/syscallent.h: Likewise. 33701 33702 ioctlsort: Check ppc hosts too. 33703 * linux/ioctlsort.c: Check for __powerpc__. 33704 33705 2009-10-07 Andreas Schwab <schwab (a] redhat.com> 33706 33707 Fix build on ia64. 33708 * linux/ia64/syscallent.h: Update for addition of accept4 syscall 33709 in ../syscallent.h. 33710 33711 2009-10-07 Roland McGrath <roland (a] redhat.com> 33712 33713 * strace.spec (%doc): Add ChangeLog-CVS. 33714 33715 * Makefile.am (srpm): New phony target. 33716 33717 * Makefile.am (EXTRA_DIST): Add ChangeLog. 33718 ($(srcdir)/ChangeLog): New target, replaces gen-changelog phony target. 33719 Put it inside [MAINTAINER_MODE]. 33720 33721 2009-10-06 Dmitry V. Levin <ldv (a] altlinux.org> 33722 33723 * NEWS: Update for 4.5.19 release. 33724 33725 2009-10-05 Frederik Schler <fs (a] debian.org> 33726 33727 Prepare debian/* files for release. 33728 * debian/rules: Do not ship ChangeLog anymore. 33729 * debian/control: Update to Debian standards version 3.8.1, and remove 33730 Roland from the Maintainers list. This closes Debian bug #521458. 33731 * debian/changelog: Document changes and prepare for release. 33732 33733 2009-10-05 Dmitry V. Levin <ldv (a] altlinux.org> 33734 33735 * defs.h [HPPA]: Lower MAX_ARGS from 32 to 6. 33736 33737 * ipc.c [LINUX] (sys_shmat): HPPA does not use an IPC multiplexer. 33738 Based on patch from Carlos O'Donell. 33739 33740 2009-10-05 Carlos O'Donell <carlos (a] systemhalted.org> 33741 33742 * linux/hppa/syscallent.h: Update syscalls. 33743 Based on work by Kyle McMartin and Helge Deller. 33744 33745 Fix SA_HANDLER function pointer comparisons for hppa. 33746 * signal.c (sys_sigaction): Cast SA_HANDLER function pointers to long. 33747 (sys_rt_sigaction): Likewise. 33748 33749 2009-10-05 Edgar E. Iglesias <edgar.iglesias (a] gmail.com> 33750 33751 CRIS: Correct first argument to upeek() 33752 This complements commit ea0e6e80260d2b1b7ad40282012b0e47869bcddf. 33753 * syscall.c [CRISV10 || CRISV32] (syscall_fixup, syscall_enter): Pass 33754 tcp pointer instead of pid to upeek(). 33755 * util.c [CRISV10 || CRISV32] (printcall): Likewise. 33756 33757 2009-10-05 Dmitry V. Levin <ldv (a] altlinux.org> 33758 33759 * signal.c (do_signalfd): Fix typo in output format. 33760 33761 2009-09-21 Dmitry V. Levin <ldv (a] altlinux.org> 33762 33763 * Makefile.am (gen_changelog_start_date): Fix date. 33764 33765 2009-09-19 Dmitry V. Levin <ldv (a] altlinux.org> 33766 33767 Prepare for 4.5.19 release. 33768 * NEWS: Update for 4.5.19 release. 33769 * configure.ac: Version 4.5.19. 33770 * debian/changelog: 4.5.19-1. 33771 * strace.spec: 4.5.19-1. 33772 33773 Update debian/* to 4.5.18-1. 33774 * debian/changelog: Update to 4.5.18-1. 33775 * debian/compat: Set compatibility level to 7. 33776 * debian/control (Build-Depends): Update debhelper requirement. 33777 (strace, strace64): Add Section and Priority tags. 33778 33779 2009-09-19 Kirill A. Shutemov <kirill (a] shutemov.name> 33780 33781 Fix fadvise64 decoding on ARM. 33782 * file.c (sys_fadvise64_64) [ARM]: Fix argument ordering. 33783 33784 2009-09-18 Dmitry V. Levin <ldv (a] altlinux.org> 33785 33786 Fix follow fork/vfork on Linux ARM OABI. 33787 __NR_SYSCALL_BASE eis 0 for EABI and is 0x900000 for OABI. 33788 * process (change_syscall) [LINUX && ARM]: Mask off the high order bits 33789 when changing syscall. 33790 33791 Reviewed-by: Kirill A. Shutemov <kirill (a] shutemov.name> 33792 33793 2009-09-18 Mike Frysinger <vapier (a] gentoo.org> 33794 33795 Mark shell scripts as executable. 33796 33797 Ignore ioctlsort helper program. 33798 * .gitignore: Add ioctlsort. 33799 33800 linux/errno: Add ERFKILL. 33801 * linux/errnoent.h: Change ERRNO_132 to ERFKILL according to errno 132 33802 definition introduced in Linux 2.6.31. 33803 33804 2009-09-01 Paolo Bonzini <pbonzini (a] redhat.com> 33805 33806 Add accept4 socketcall. 33807 This second patch in the series adds support for accept4 as a socketcall 33808 sub-call. Besides the need to renumber all system calls, this poses 33809 no problem. 33810 Tested on i686. 33811 33812 * linux/arm/syscallent.h: Add accept4 socketcall. 33813 * linux/m68k/syscallent.h: Likewise. 33814 * linux/powerpc/syscallent.h: Likewise. 33815 * linux/s390/syscallent.h: Likewise. 33816 * linux/s390x/syscallent.h: Likewise. 33817 * linux/sh/syscallent.h: Likewise. 33818 * linux/sh64/syscallent.h: Likewise. 33819 * linux/sparc/syscallent.h: Likewise. 33820 * linux/syscallent.h: Likewise. 33821 33822 * linux/sparc/syscall.h (SYS_sub_accept4): Declare. 33823 (SYS_socket_nsubcalls): Update. 33824 * linux/syscall.h: Likewise. 33825 33826 2009-09-01 Paolo Bonzini <pbonzini (a] redhat.com> 33827 33828 Replace x86-64 paccept with accept4. 33829 This patch changes the paccept syscall to accept4 for x86-64, since 33830 the former was dropped in Linux kernel commit v2.6.27-rc7-14-g2d4c826. 33831 At the same time, it adds support for pretty printing its arguments. 33832 33833 * linux/x86_64/syscallent.h: Replace paccept with accept4, 33834 hook in sys_accept4. 33835 * net.c (sys_accept): Leave a small stub calling the new... 33836 (do_accept): ... function, which also adds a flags_arg argument. 33837 (sys_accept4): New. 33838 33839 2009-08-28 Andreas Schwab <schwab (a] redhat.com> 33840 33841 Zero-extend 32-bit addresses when printing argv array. 33842 (printargv): Zero-extend 32-bit addresses. 33843 Fixes RH#519480 "64-bit strace is lazy on execve of 32-bit 33844 process". 33845 33846 2009-08-12 Andreas Schwab <schwab (a] redhat.com> 33847 33848 Add more futex decoding. 33849 * process.c (FUTEX_WAIT_REQUEUE_PI, FUTEX_CMP_REQUEUE_PI) 33850 (FUTEX_PRIVATE_FLAG, FUTEX_CLOCK_REALTIME): Define. 33851 (futexops): Add entries for them. 33852 (sys_futex): Decode FUTEX_CMP_REQUEUE_PI and 33853 FUTEX_WAIT_REQUEUE_PI. 33854 33855 2009-07-08 Dmitry V. Levin <ldv (a] altlinux.org> 33856 33857 Generate ChangeLog from git log. 33858 * .gitignore: Add ChangeLog 33859 * ChangeLog: Rename to ChangeLog-CVS. 33860 * Makefile.am (gen-changelog): New rule. 33861 (dist-hook): Depend on it. 33862 (EXTRA_DIST): Add ChangeLog-CVS. 33863 * README-hacking: Describe changes. 33864 * gitlog-to-changelog: Import from gnulib. 33865 33866 33867 See ChangeLog-CVS for older changes. 33868