5625 Commits

Author SHA1 Message Date
c3d63a580f Intorduce PRINT_FIELD_NET_PORT
* print_fields.h (PRINT_FIELD_NET_PORT): New macro.
* netlink_sock_diag.c (print_inet_diag_sockid): Use it
instead of a manual tprintf statement.
* sockaddr.c (print_sockaddr_data_in, print_sockaddr_data_in6,
print_sockaddr_data_ipx): Likewise.
2017-07-09 18:43:34 +00:00
4652a842a9 Intorduce PRINT_FIELD_IFINDEX
* print_fields.h (PRINT_FIELD_IFINDEX): New macro.
* msghdr.c (print_cmsg_ip_pktinfo): Use it instead of print_ifindex.
* net.c (print_mreq6): Likewise.
* netlink_sock_diag.c (print_packet_diag_mclist,
print_inet_diag_sockid): Likewise.
* sockaddr.c (print_sockaddr_data_in6, print_sockaddr_data_ll):
Likewise.
2017-07-09 18:43:34 +00:00
b63dc54a1d Intorduce PRINT_FIELD_INET_ADDR
* print_fields.h (PRINT_FIELD_INET_ADDR): New macro.
* net.c (print_mreq6): Use it instead of print_inet_addr.
* netlink_sock_diag.c (print_inet_diag_sockid): Likewise.
* sockaddr.c (print_sockaddr_data_in6): Likewise.
2017-07-09 18:43:34 +00:00
70d8b32108 net: move print_ifindex to a separate file
* print_ifindex.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* net.c (print_ifindex): Move to print_ifindex.c.
2017-07-09 18:43:34 +00:00
fdb4415f06 net: move parsers of bind, listen, and shutdown to separate files
* bind.c: New file.
* listen.c: Likewise.
* shutdown.c: Likewise.
* Makefile.am (strace_SOURCES): Add them.
* net.c (SYS_FUNC(bind)): Move to bind.c.
(SYS_FUNC(listen)): Move to listen.c.
(SYS_FUNC(shutdown)): Move to shutdown.c.
2017-07-09 13:54:01 +00:00
JingPiao Chen
a0470d7848 tests: check decoding of packet_diag_msg attributes
* tests/netlink_sock_diag-v.sh: New file.
* tests/Makefile.am (EXTRA_DIST): Add it.
* tests/nlattr_packet_diag_msg.c: New file.
* tests/gen_tests.in (nlattr_packet_diag_msg): New entry.
* tests/pure_executables.list: Add nlattr_packet_diag_msg.
* tests/.gitignore: Likewise.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
2017-07-09 00:21:02 +00:00
JingPiao Chen
f8ce9d580c netlink: decode AF_PACKET packet_diag_msg attributes
* linux/packet_diag.h (packet_diag_info, packet_diag_mclist,
packet_diag_ring): New structures.
(PDI_*): New macros.
* netlink_sock_diag.c: Include <linux/filter.h>
and "xlat/packet_diag_info_flags.h".
(decode_packet_diag_info, decode_packet_diag_mclist,
decode_packet_diag_ring, decode_packet_diag_filter): New functions.
(packet_diag_msg_nla_decoders): New array.
(decode_packet_diag_msg): Use it.
* print_fields.h (PRINT_FIELD_QUOTED_STRING): New macro.
* xlat/packet_diag_info_flags.in: New file.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
2017-07-09 00:21:02 +00:00
JingPiao Chen
fd817962f9 tests: fix TEST_NLATTR_OBJECT and TEST_NLATTR_ARRAY for large objects
commit v4.17-161-gdbd0605 that adjusted TEST_NLATTR_OBJECT and
TEST_NLATTR_ARRAY for large objects, only changed the pattern
print length, large length still can be specified as nla_data_len,
resulting to output mismatch.

* tests/test_nlattr.h (TEST_NLATTR_OBJECT): Pass "plen"
both as nla_data_len and slen arguments of TEST_NLATTR_
in len < sizeof(object) case.
(TEST_NLATTR_ARRAY): Likewise, Pass "plen" both as nla_data_len
and slen arguments of TEST_NLATTR_ in len < sizeof(object[0]) case.
2017-07-09 00:14:20 +00:00
JingPiao Chen
3d30063836 tests: introduce TEST_NLATTR_nla macro in test_nlattr.h
Explicitly make struct nlattr * pointer which is internal
to TEST_NLATTR_ macro available to its varadic arguments.

* tests/test_nlattr.h (TEST_NLATTR_): Rename nla to TEST_NLATTR_nla.
2017-07-09 00:06:29 +00:00
dd95f5ae69 tests: check decoding of SO_PEERCRED socket option
* tests/so_peercred.c: New file.
* tests/gen_tests.in (so_peercred): New entry.
* tests/pure_executables.list: Add so_peercred.
* tests/.gitignore: Likewise.
2017-07-08 19:27:26 +00:00
0c4052b9ca net: accept arbitrary option length for getsockopt's SO_PEERCRED
* print_fields.h (PRINT_FIELD_UID): New macro.
* net.c (print_ucred): Rewrite to match the kernel behaviour.
* NEWS: Mention this.
2017-07-08 19:27:26 +00:00
004a776777 tests: check decoding of socket filters
* tests/sock_filter-v.c: New file.
* tests/gen_tests.in (sock_filter-v): New entry.
* tests/pure_executables.list: Add sock_filter-v.
* tests/.gitignore: Likewise.
2017-07-08 14:57:44 +00:00
bc515c7f54 Implement decoding of linux socket filter programs
* bpf_sock_filter.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* xlat/skf_ad.in: New file.
* defs.h (decode_sock_fprog, print_sock_fprog): New prototypes.
* fetch_bpf_fprog.c (get_bpf_fprog_size): New mpers printer.
* net.c (print_getsockopt): Use decode_sock_fprog to print
socket filter programs for SO_GET_FILTER socket option.
(print_setsockopt): Use decode_sock_fprog and get_bpf_fprog_size
to print socket filter programs for SO_ATTACH_FILTER
and SO_ATTACH_REUSEPORT_CBPF socket options.
* NEWS: Mention this.
2017-07-08 14:57:44 +00:00
e19354d350 tests: check decoding of SO_LINGER socket option
* tests/so_linger.c: New file.
* tests/gen_tests.in (so_linger): New entry.
* tests/pure_executables.list: Add so_linger.
* tests/.gitignore: Likewise.
2017-07-08 14:57:44 +00:00
17d002a252 tests: fix print_quoted_hex output of bytes with high bit set
* tests/tests.h (print_quoted_memory, print_quoted_hex): Change the type
of first argument from "const char *" to "const void *".
* tests/print_quoted_string.c: Likewise.
(print_quoted_hex): Print bytes as unsigned char objects to avoid
unwanted sign extension.
* tests/netlink_protocol.c (send_query): Remove the cast of print_quoted_hex
first argument which is now redundant.
2017-07-08 14:57:44 +00:00
4c14d39332 net: accept arbitrary option length for getsockopt's SO_LINGER
* net.c (print_linger): Rename to print_set_linger.
(print_setsockopt): Replace print_linger with print_set_linger.
(print_get_linger): New function that accepts arbitrary option length
to match the kernel behaviour.
(print_getsockopt): Replace print_linger with print_get_linger.
* NEWS: Mention this.
2017-07-08 14:57:44 +00:00
2ccd886706 net: accept large option length for SO_LINGER
* net.c (print_linger): Allow len > sizeof(struct linger) to match
the kernel behaviour.
2017-07-08 14:57:44 +00:00
6314e1d0f1 net: fix printing of struct linger's field names
* net.c: Include "print_fields.h".
(print_linger): Print fields of struct linger using PRINT_FIELD_D.
2017-07-08 14:57:44 +00:00
657b04b83b net: enhance decoding of getsockopt's optlen argument
As the last argument of getsockopt syscall has read-write semantics,
print both user and kernel values when they differ.

* net.c (SYS_FUNC(getsockopt)): On entering syscall, fetch and save
the length specified to the kernel.  On error, print the length saved
on entering.  When the saved length and the length returned by the
kernel differ, print both values.
* NEWS: Mention this.
* tests/net-icmp_filter.c (main): Update expected output.
2017-07-08 14:57:44 +00:00
bec9f165be net: move printing of [gs]etsockopt's socklen argument to toplevel parsers
* net.c (print_getsockopt, print_setsockopt): Remove "done" label,
replace "goto done" statement with "return".
Move printing of "len" argument ...
(SYS_FUNC(getsockopt), SYS_FUNC(setsockopt)): ... here.
2017-07-08 14:57:44 +00:00
899220d28d Generalize seccomp filter parser
Linux socket filter uses almost the same classic BPF as seccomp filter,
The only difference noticeable from strace PoV is the meaning of generic
multiuse field.

Transform the parser of seccomp filters to a more generic parser
of classic BPF, parametrized with a method of parsing the generic
multiuse field in BPF_STMT.

* bpf_filter.c: New file.
* bpf_filter.h: Likewise.
* bpf_fprog.h: Likewise.
* bpf_seccomp_filter.c: Likewise.
* fetch_bpf_fprog.c: Likewise.
* fetch_seccomp_fprog.c: Remove.
* seccomp_fprog.h: Likewise.
* Makefile.am (strace_SOURCES): Add bpf_filter.c, bpf_filter.h,
bpf_fprog.h, bpf_seccomp_filter.c, and fetch_bpf_fprog.c.
Remove fetch_seccomp_fprog.c and seccomp_fprog.h.
* seccomp.c: Do not include linux/filter.h and xlat header files.
Do not define SECCOMP_RET_ACTION.
(bpf_filter, decode_bpf_code, decode_bpf_stmt, decode_bpf_jump,
print_bpf_filter, print_seccomp_fprog, print_seccomp_filter): Remove.
* defs.h (print_seccomp_filter): Rename to decode_seccomp_fprog.
(SYS_FUNC(seccomp)): Replace print_seccomp_filter
with decode_seccomp_fprog.
* prctl.c (SYS_FUNC(prctl)): Likewise.
2017-07-08 01:49:00 +00:00
cc5db1c893 Assume that <linux/filter.h> is always available
<linux/filter.h> was introduced in linux 2.1.75, way before
the minimal kernel version supported by strace.

* configure.ac (AC_CHECK_HEADERS): Remove linux/filter.h.
* seccomp.c: Assume HAVE_LINUX_FILTER_H.
* tests/prctl-seccomp-filter-v.c: Likewise.
* tests/seccomp-filter-v.c: Likewise.
* tests/seccomp-filter.c: Likewise.
2017-07-08 01:49:00 +00:00
e8eaee3563 xlat: add BPF_END to BPF_ALU opcode list
BPF_END is one of three eBPF-only opcodes for BPF_ALU class.
Other two (BPF_MOV and BPF_ARSH) has been added earlier.

* xlat/bpf_op_alu.in: Add BPF_END.
2017-07-07 16:43:41 +00:00
JingPiao Chen
bf319c4f51 netlink_sock_diag: print unrecognized data in hex
* netlink_sock_diag.c (decode_family): Replace printstrn with
printstr_ex and set QUOTE_FORCE_HEX flag.
* tests/netlink_sock_diag.c (test_odd_family_req,
test_odd_family_msg): Update expected output.
2017-07-07 16:43:41 +00:00
JingPiao Chen
d331383d7d netlink: print unrecognized nlattr in hex
* nlattr.c (fetch_nlattr): Replace printstrn
with printstr_ex and set QUOTE_FORCE_HEX flag.
* tests/nlattr.c (test_nlattr): Update expected output.
2017-07-07 16:43:41 +00:00
JingPiao Chen
5626a08061 netlink: print unrecognized netlink messages in hex
* netlink.c (fetch_nlmsghdr): Replace printstrn
with printstr_ex and set QUOTE_FORCE_HEX flag.
* tests/netlink_protocol.c (send_query): Update expected output.
2017-07-07 16:43:41 +00:00
JingPiao Chen
b61dfe9a37 netlink: print unrecognized netlink payload in hex
* netlink.c (decode_payload): Replace printstrn
with printstr_ex and set QUOTE_FORCE_HEX flag.
* tests/netlink_protocol.c (send_query, test_nlmsgerr,
test_nlmsg_done): Update expected output.
* tests/netlink_generic.c (test_nlmsg_type): Likewise.
2017-07-07 16:43:41 +00:00
JingPiao Chen
dbb622c061 netlink: print unrecognized nlmsgerr in hex
* netlink.c (decode_nlmsgerr): Replace printstrn
with printstr_ex and set QUOTE_FORCE_HEX flag.
* tests/netlink_protocol.c (test_nlmsgerr): Update expected output.
2017-07-07 16:43:41 +00:00
JingPiao Chen
73698eb8f1 netlink: print unrecognized attribute data in hex
* nlattr.c (decode_nlattr_with_data): Replace printstrn
with printstr_ex and set QUOTE_FORCE_HEX flag.
* tests/tests.h (print_quoted_hex): New prototype.
* tests/print_quoted_string.c (print_quoted_hex): New function.
* tests/test_nlattr.h (TEST_NLATTR_OBJECT, TEST_NLATTR_ARRAY): Use it
for updated expected output.  Change the type of "plen" variable
to unsigned int.
* tests/nlattr.c (test_nlattr): Update expected output.
2017-07-07 16:43:41 +00:00
JingPiao Chen
8d71474ea1 tests: print quotation marks in print_quoted_memory
* tests/print_quoted_string.c (print_quoted_memory): Print opening
and closing quotation marks.
* tests/getcwd.c (main): Do not print quotation marks around
print_quoted_string.
* tests/uname.c (main): Likewise.
* tests/keyctl.c (print_quoted_string_limit): Do not print quotation
marks around print_quoted_memory.
* tests/netlink_protocol.c (send_query): Likewise.
* tests/xattr.c (main): Likewise.
2017-07-07 16:43:41 +00:00
735c2ad872 strace.1: remove misleading remark that -i option is weakly supported
Given that -i functionality is covered by pc.test, the remark that
it is weakly supported is wrong.

* strace.1 (BUGS): Remove the remark about weakly supported -i option.
2017-07-06 12:52:54 +00:00
1e4f54cd28 Post-release administrivia
* NEWS: Add a header line for the next release.
* debian/changelog.in: Add a changelog entry for 4.18-1.
* strace.spec.in: Likewise.
2017-07-06 12:50:55 +00:00
c136e9e449 Prepare for 4.18 release
* NEWS: Update for 4.18 release.
v4.18
2017-07-05 07:08:09 +00:00
bcc7daac6c tests: robustify create_nl_socket based tests against the race condition
There is a race condition between the moment a netlink socket is created
and the moment it is reported via SOCK_DIAG_BY_FAMILY interface.
Add one more operation on the socket created by create_nl_socket
to increase chances of winning the race.

* tests/create_nl_socket.c (create_nl_socket_ext): Add a getsockopt call
with the created socket.
2017-07-04 22:31:08 +00:00
e70dae5954 Update NEWS 2017-07-04 17:52:54 +00:00
Romain Naour
f2a8b242be nios2: fix wrong access to "SP" register in user_pt_regs
Starting with linux commit v4.0-rc4~21^2, "SP" register
is available via regs[PTR_SP] member of struct user_pt_regs.

* linux/nios2/arch_regs.h (nios2_sp_ptr): Change type
to "unsigned int *".
* linux/nios2/arch_regs.c (nios2_sp_ptr): Likewise.
Replace .sp with .regs[PTR_SP].

Fixes: http://autobuild.buildroot.net/results/b9f/b9fc25b82f3280872fe1593ac252a8529ba83576
Fixes: v4.16-34-g6117728a ("nios2: export nios2_sp_ptr")
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
2017-07-04 17:29:18 +00:00
Eugene Syromyatnikov
da160ae8ed tests: add multi-process check to qual_fault.test
Check that syscall counters used for tampering are per-tcb.

* tests/qual_fault.c: Include <fcntl.h> for open(),
<sys/param.h> for PATH_MAX, and <sys/wait.h> for wait().
(expfd): Rename to exp_fd, remove const qualifier and initialization.
(gotfd): Rename to got_fd, remove const qualifier and initialization.
(out_fd): New variable, for the expected strace output.
(open_file): New helper function.
(main): Remove st, add num_procs, proc, exp_prefix, got_prefix,
out_prefix, pid_prefix.  Remove stat asserts, update argc assert.
Add num_procs, exp_prefix, got_prefix, out_prefix, pid_prefix
initialization.  Add per-process loop, open expfd, gotfd, out_fd, pidfd
in each one, print process's pid to pidfd, print exit message to out_fd.
Add wait() call for each forked process.
* tests/qual_fault.test (N): increase to 100 in order to check
concurrent process execution.
(check_fault_injection): Take additional argument for the process
count, pass it to qual_fault, add filename variables for expected strace
output and pid file, pass them to qual_fault.
Specify -ff parameter to strace invocation.
Compare write and strace output for the each process.
Update all check_fault_injection invocation with process count argument,
add an invocation with 4 concurrent processes.
* tests/init.sh (TIMEOUT_DURATION): Raise from 120 to 300.

Co-authored-by: Dmitry V. Levin <ldv@altlinux.org>
2017-07-03 19:31:04 +00:00
dbd060526c tests: adjust TEST_NLATTR_OBJECT and TEST_NLATTR_ARRAY for large objects
* tests/test_nlattr.h (TEST_NLATTR_OBJECT, TEST_NLATTR_ARRAY): Add
support for objects larger than DEFAULT_STRLEN.
* tests/nlattr_inet_diag_msg.c (main): Change pattern size
from DEFAULT_STRLEN to 4096.
* tests/nlattr_netlink_diag_msg.c: Likewise.
* tests/nlattr_unix_diag_msg.c: Likewise.

Reported-by: JingPiao Chen <chenjingpiao@gmail.com>
2017-07-03 15:14:54 +00:00
005c67a900 tests: move DEFAULT_STRLEN macro to tests.h
* tests/tests.h [!DEFAULT_STRLEN] (DEFAULT_STRLEN): New macro.
* tests/mincore.c (DEFAULT_STRLEN): Remove.
* tests/mmsg_name.c: Likewise.
* tests/msg_control.c: Likewise.
* tests/netlink_protocol.c: Likewise.
* tests/nlattr.c: Likewise.
* tests/nlattr_inet_diag_msg.c: Likewise.
* tests/nlattr_netlink_diag_msg.c: Likewise.
* tests/nlattr_unix_diag_msg.c: Likewise.
* tests/printstr.c: Likewise.
* tests/xattr.c: Likewise.
* tests/execve.c: Likewise.
(main): Initialize str_a and str_b arrays at run time.
* tests/execveat.c: Likewise.

Suggested-by: JingPiao Chen <chenjingpiao@gmail.com>
2017-07-03 15:14:54 +00:00
Eugene Syromyatnikov
7d465949e4 tests: use unified diff in order to improve test log readability
* tests/init.sh (match_diff): Add -u option to the diff invocation.
2017-07-03 15:14:54 +00:00
373265e699 Fix error diagnostics in case of zero argc
* strace.c (init): Adjust argc along with argv,
check that adjusted argc is sane.
* tests/zeroargc.c: New file.
* tests/.gitignore: Add zeroargc.
* tests/Makefile.am (check_PROGRAMS): Likewise.
* tests/options-syntax.test: Check strace error diagnostics
in case of zero argc.
2017-07-02 10:01:22 +00:00
340b00aaa7 Use program_invocation_name instead of a local progname variable
Emulate program_invocation_name only if it is not provided by libc.

* configure.ac: Check for program_invocation_name variable.
* strace.c (progname): Remove.
[!HAVE_PROGRAM_INVOCATION_NAME] (program_invocation_name): New variable.
(verror_msg, error_msg_and_help): Use it instead of progname.
(init): Initialize program_invocation_name instead of progname.
2017-07-02 00:31:50 +00:00
eaa2f6e06d Introduce generic STRINGIFY and STRINGIFY_VAL macros
* macros.h (STRINGIFY, STRINGIFY_VAL): New macros.
* mpers_type.h: Include "macros.h".
[IN_MPERS] (STRINGIFY): Remove.
* tests/sockname.c (TEST_SYSCALL_STR__, TEST_SYSCALL_STR_): Remove.
(TEST_SYSCALL_STR): Use STRINGIFY_VAL.

Co-authored-by: Victor Krapivensky <krapivenskiy.va@phystech.edu>
2017-07-02 00:11:31 +00:00
38198609df Introduce macros.h
Introduce a separate header file for generic macros shared between
strace and its tests.  Start this unification with ARRAY_SIZE macro.

* defs.h: Include "macros.h".
(ARRAY_SIZE): Move ...
* macros.h: ... to new file.
* Makefile.am (strace_SOURCES): Add it.
* tests/tests.h: Include "macros.h".
(ARRAY_SIZE): Remove.  All callers updated.
2017-07-02 00:11:31 +00:00
5f4842dee1 quota: use PRINT_FIELD_FLAGS
* quota.c (struct xfs_dqblk): Change d_flags field's type from int8_t
to uint8_t.
(decode_cmd_data): Use PRINT_FIELD_FLAGS.
2017-07-01 20:08:39 +00:00
26954f7753 Unify different generic PRINT_FIELD_* implementations
Create a new header print_fields.h and move generic PRINT_FIELD_*
macros there.

* print_fields.h: New file.
* Makefile.am (strace_SOURCES): Add it.
* netlink_sock_diag.c: Include "print_fields.h".
(PRINT_FIELD_U, PRINT_FIELD_X, PRINT_FIELD_COOKIE, PRINT_FIELD_FLAGS,
PRINT_FIELD_XVAL): Move to print_fields.h file.
* quota.c: Include "print_fields.h".
(PRINT_FIELD_D): Move to print_fields.h file.
(PRINT_FIELD_U, PRINT_FIELD_X): Remove.
* statx.c: Include "print_fields.h".
(PRINT_FIELD_U): Remove.
(SYS_FUNC(statx)): Update PRINT_FIELD_U callers.
* tests/quotactl.h: Include "print_fields.h".
* tests/quotactl-xfs.c: Update callers of PRINT_FIELD_* macros.
* tests/quotactl.c: Likewise.
(PRINT_FIELD_D, PRINT_FIELD_U, PRINT_FIELD_X): Remove.
* tests/test_nlattr.h: Include "print_fields.h".
(PRINT_FIELD_U, PRINT_FIELD_X): Remove.
* tests/xstatx.c: Include "print_fields.h".
(PRINT_FIELD_U): Remove.
(print_stat): Update PRINT_FIELD_U callers.
* tests/tests.h [!STRACE_PRINTF] (STRACE_PRINTF): Define to printf.
2017-07-01 13:14:49 +00:00
Eugeniy Paltsev
373ff8cc4f arc: fix wrong access to "sp" member in user_regs_struct
"sp" register is a member of "scratch" structure (which is nested
in user_regs_struct)

* linux/arc/arch_regs.c: Replace .sp with .scratch.sp .

Fixes: v4.16-31-g134042a5 ("arc: export arc_sp_ptr")
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
2017-07-01 09:51:24 +00:00
Khem Raj
293e98256a aarch64, tile: replace struct ucontext with ucontext_t
glibc >= 2.26 has dropped the tag struct ucontext from ucontext_t type.

* linux/arm/arch_sigreturn.c (arch_sigreturn) [AARCH64]: Replace
struct ucontext with ucontext_t.
* linux/tile/arch_sigreturn.c (arch_sigreturn): Likewise.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
2017-07-01 09:47:02 +00:00
1b7a74f3e0 tests: enhance nlattr_unix_diag_msg test
* tests/nlattr_unix_diag_msg.c: Include "test_nlattr.h".
(test_unix_diag_vfs, test_unix_diag_icons, test_unix_diag_rqlen):
Remove.
(init_unix_diag_msg): Add const qualifier to arguments and variables.
(print_unix_diag_msg, print_uint): New functions.
(main): Use them and macros from test_nlattr.h file.
2017-07-01 00:05:39 +00:00
JingPiao Chen
d4b9472d5f tests: check decoding of netlink unix_diag_msg attributes
* tests/nlattr_unix_diag_msg.c: New file.
* tests/gen_tests.in (nlattr_unix_diag_msg): New entry.
* tests/pure_executables.list: Add nlattr_unix_diag_msg.
* tests/.gitignore: Likewise.
2017-07-01 00:05:39 +00:00