Add support for LWP-based threads on FreeBSD.
[deliverable/binutils-gdb.git] / gdb / ChangeLog
1 2016-01-19 John Baldwin <jhb@FreeBSD.org>
2
3 * configure.ac: Check for support for LWP names on FreeBSD.
4 * fbsd-nat.c [PT_LWPINFO] New variable debug_fbsd_lwp.
5 [TDP_RFPPWAIT || HAVE_STRUCT_PTRACE_LWPINFO_PL_TDNAME]
6 (fbsd_fetch_kinfo_proc): Move function earlier.
7 [PT_LWPINFO] (fbsd_thread_alive): New function.
8 [PT_LWPINFO] (fbsd_pid_to_str): New function.
9 [HAVE_STRUCT_PTRACE_LWPINFO_PL_TDNAME] (fbsd_thread_name): New function.
10 [PT_LWP_EVENTS] (fbsd_enable_lwp_events): New function.
11 [PT_LWPINFO] (fbsd_add_threads): New function.
12 [PT_LWPINFO] (fbsd_update_thread_list): New function.
13 [PT_LWPINFO] New variable super_resume.
14 [PT_LWPINFO] (resume_one_thread_cb): New function.
15 [PT_LWPINFO] (resume_all_threads_cb): New function.
16 [PT_LWPINFO] (fbsd_resume): New function.
17 (fbsd_remember_child): Save full ptid instead of plain pid.
18 (fbsd_is_child_pending): Return ptid of saved child process.
19 (fbsd_wait): Include lwp in returned ptid and switch to LWP ptid on
20 first stop.
21 [PT_LWP_EVENTS] Handle LWP events.
22 [TDP_RFPPWAIT] Include LWP in child ptid.
23 (fbsd_post_startup_inferior) [PT_LWP_EVENTS]: Enable LWP events.
24 (fbsd_post_attach) [PT_LWP_EVENTS]: Enable LWP events.
25 Add threads for existing processes.
26 (fbsd_nat_add_target) [PT_LWPINFO]: Set "to_thread_alive" to
27 "fbsd_thread_alive".
28 Set "to_pid_to_str" to "fbsd_pid_to_str".
29 [HAVE_STRUCT_PTRACE_LWPINFO_PL_TDNAME]: Set "to_thread_name" to
30 "fbsd_thread_name".
31 [PT_LWPINFO]: Set "to_update_thread_list" to "fbsd_update_thread_list".
32 Set "to_has_thread_control" to "tc_schedlock".
33 Set "to_resume" to "fbsd_resume".
34 (_initialize_fbsd_nat): New function.
35 * configure: Regenerate.
36 * config.in: Regenerate.
37
38 2016-01-19 John Baldwin <jhb@FreeBSD.org>
39
40 * amd64bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
41 get_ptrace_pid.
42 (amd64bsd_store_inferior_registers): Use get_ptrace_pid.
43 (amd64bsd_dr_get): Use get_ptrace_pid.
44 (amd64bsd_dr_set): Use get_ptrace_pid.
45 * i386bsd-nat.c (i386bsd_fetch_inferior_registers): Use get_ptrace_pid.
46 (i386bsd_store_inferior_registers): Use get_ptrace_pid.
47 (i386bsd_dr_get): Use get_ptrace_pid.
48 (i386bsd_dr_set): Use get_ptrace_pid.
49 * inf-ptrace.c (get_ptrace_pid): Export.
50 * inf-ptrace.h (get_ptrace_pid): Declare.
51 * ppcfbsd-nat.c (ppcfbsd_fetch_inferior_registers): Use lwp id.
52 (ppcfbsd_store_inferior_registers): Use lwp id.
53
54 2016-01-19 John Baldwin <jhb@FreeBSD.org>
55
56 * fbsd_tdep.c (fbsd_core_pid_to_str): New function.
57 (fbsd_core_thread_name): New function.
58 (fbsd_init_abi): Add "core_pid_to_str" gdbarch method.
59 Add "core_thread_name" gdbarch method.
60
61 2016-01-19 John Baldwin <jhb@FreeBSD.org>
62
63 * corelow.c (core_thread_name): New function.
64 (init_core_ops): Use "core_thread_name" for the "to_thread_name"
65 target op.
66 * gdbarch.sh (core_thread_name): New gdbarch callback.
67 * gdbarch.h: Re-generate.
68 * gdbarch.c: Re-generate.
69
70 2016-01-19 Simon Marchi <simon.marchi@polymtl.ca>
71
72 * python/lib/gdb/printing.py (_EnumInstance.to_string): Explicitly
73 convert gdb.Value to integer type using int().
74
75 2016-01-19 John Baldwin <jhb@FreeBSD.org>
76
77 * configure.ac: Include <sys/types.h when checking for "r_fs" in
78 "struct reg".
79 * configure: Regenerate.
80
81 2016-01-18 Maciej W. Rozycki <macro@imgtec.com>
82
83 * mips-tdep.c (mips_insn_size): Remove 48-bit microMIPS
84 instruction support.
85 (micromips_next_pc): Likewise.
86 (micromips_scan_prologue): Likewise.
87 (micromips_deal_with_atomic_sequence): Likewise.
88 (micromips_stack_frame_destroyed_p): Likewise.
89 (mips_breakpoint_from_pc): Likewise.
90
91 2016-01-18 Maciej W. Rozycki <macro@imgtec.com>
92
93 * mips-tdep.c (micromips_insn_at_pc_has_delay_slot): Pass
94 unshifted 16-bit microMIPS instruction word to `mips_insn_size'.
95
96 2016-01-18 Pedro Alves <palves@redhat.com>
97
98 * NEWS: Mention that GDB now displays the ID and name of the
99 thread that hit a breakpoint or received a signal.
100 * break-catch-sig.c (signal_catchpoint_print_it): Use
101 maybe_print_thread_hit_breakpoint.
102 * break-catch-syscall.c (print_it_catch_syscall): Likewise.
103 * break-catch-throw.c (print_it_exception_catchpoint): Likewise.
104 * breakpoint.c (maybe_print_thread_hit_breakpoint): New function.
105 (print_it_catch_fork, print_it_catch_vfork, print_it_catch_solib)
106 (print_it_catch_exec, print_it_ranged_breakpoint)
107 (print_it_watchpoint, print_it_masked_watchpoint, bkpt_print_it):
108 Use maybe_print_thread_hit_breakpoint.
109 * breakpoint.h (maybe_print_thread_hit_breakpoint): Declare.
110 * gdbthread.h (show_thread_that_caused_stop): Declare.
111 * infrun.c (print_signal_received_reason): Print which thread
112 received signal.
113 * thread.c (show_thread_that_caused_stop): New function.
114
115 2016-01-18 Gary Benson <gbenson@redhat.com>
116
117 * nat/linux-namespaces.c (do_fork): New function.
118 (linux_mntns_get_helper): Use the above.
119
120 2016-01-17 Jonas Hahnfeld <Hahnfeld@itc.rwth-aachen.de> (tiny change)
121
122 Pushed by Joel Brobecker <brobecker@adacore.com>.
123 PR gdb/19208
124 * dwarf2read.c (read_partial_die): Do not call set_objfile_main_name
125 if the function has no name.
126
127 2016-01-15 Sandra Loosemore <sandra@codesourcery.com>
128
129 * charset.c [PHONY_ICONV] (GDB_DEFAULT_HOST_CHARSET):
130 Conditionalize for Windows host.
131 (GDB_DEFAULT_TARGET_CHARSET): Match GDB_DEFAULT_HOST_CHARSET.
132 (GDB_DEFAULT_TARGET_WIDE_CHARSET): Use UTF-32.
133 (phony_iconv_open): Handle both UTF-32 endiannesses.
134 (phony_iconv): Likewise. Check for output overflow and clean up
135 out-of-input cases. Correct adjustment to input buffer pointer.
136 (set_be_le_names) [PHONY_ICONV]: Use hard-wired names to match
137 phony_iconv_open.
138
139 2016-01-15 Pedro Alves <palves@redhat.com>
140
141 * NEWS: Mention star wildcard ranges.
142 * cli/cli-utils.c (get_number_or_range): Check state->in_range first.
143 (number_range_setup_range): New function.
144 * cli/cli-utils.h (number_range_setup_range): New declaration.
145 * thread.c (thread_apply_command): Support star TID ranges.
146 * tid-parse.c (tid_range_parser_finished)
147 (tid_range_parser_string, tid_range_parser_skip)
148 (get_tid_or_range, get_tid_or_range): Handle
149 TID_RANGE_STATE_STAR_RANGE.
150 (tid_range_parser_star_range): New function.
151 * tid-parse.h (enum tid_range_state) <TID_RANGE_STATE_STAR_RANGE>:
152 New value.
153 (tid_range_parser_star_range): New declaration.
154
155 2016-01-15 Pedro Alves <palves@redhat.com>
156
157 * thread.c (thread_apply_command): Use the tid range parser to
158 advance past the thread ID list.
159 * tid-parse.c (get_positive_number_trailer): New function.
160 (parse_thread_id): Use it.
161 (get_tid_or_range): Use it. Return 0 instead of throwing invalid
162 thread ID error.
163 (get_tid_or_range): Detect negative values. Return 0 instead of
164 throwing invalid thread ID error.
165
166 2016-01-14 Yao Qi <yao.qi@linaro.org>
167
168 * arm-linux-tdep.c (arm_linux_get_next_pcs_syscall_next_pc):
169 Declare.
170 (arm_linux_get_next_pcs_ops): Install
171 arm_linux_get_next_pcs_syscall_next_pc.
172 (arm_linux_syscall_next_pc): Change to ...
173 (arm_linux_get_next_pcs_syscall_next_pc): ... it.
174 (arm_linux_init_abi): Don't set tdep->syscall_next_pc.
175 * arm-tdep.c (arm_get_next_pcs_syscall_next_pc): Declare.
176 (arm_get_next_pcs_syscall_next_pc): Make it static. Don't
177 call tdep->syscall_next_pc.
178 * arm-tdep.h (struct gdbarch_tdep) <syscall_next_pc>: Remove.
179 (arm_get_next_pcs_syscall_next_pc): Remove.
180
181 2016-01-14 Yao Qi <yao.qi@linaro.org>
182
183 * remote.c (remote_set_syscall_catchpoint): Cast to char *.
184 * thread.c (do_captured_thread_select): Cast to const char *.
185
186 2016-01-14 Yao Qi <yao.qi@linaro.org>
187
188 * arch/arm-get-next-pcs.c (arm_get_next_pcs_ctor): Change
189 argument arm_thumb2_breakpoint to has_thumb2_breakpoint.
190 (thumb_get_next_pcs_raw): Check has_thumb2_breakpoint
191 instead.
192 * arch/arm-get-next-pcs.h (struct arm_get_next_pcs)
193 <arm_thumb2_breakpoint>: Remove.
194 <has_thumb2_breakpoint>: New field.
195 (arm_get_next_pcs_ctor): Update declaration.
196 * arm-linux-tdep.c (arm_linux_software_single_step): Pass
197 1 to arm_get_next_pcs_ctor.
198 * arm-tdep.c (arm_software_single_step): Pass 0 to
199 arm_get_next_pcs_ctor.
200
201 2016-01-13 Ulrich Weigand <uweigand@de.ibm.com>
202
203 * MAINTAINERS: Add Andreas Arnez as s390 target maintainer.
204
205 2016-01-13 Yao Qi <yao.qi@linaro.org>
206
207 * arch/arm-get-next-pcs.c (arm_get_next_pcs_raw): Use
208 byte_order_for_code to read instruction.
209
210 2016-01-13 Pedro Alves <palves@redhat.com>
211
212 * NEWS: Mention $_gthread.
213 * gdbthread.h (struct thread_info) <global_num>: Mention
214 $_gthread.
215 * thread.c (thread_num_make_value_helper): New function.
216 (thread_id_make_value): Delete.
217 (thread_id_per_inf_num_make_value, global_thread_id_make_value):
218 New.
219 (thread_funcs): Adjust.
220 (gthread_funcs): New.
221 (_initialize_thread): Register $_gthread variable.
222
223 2016-01-13 Pedro Alves <palves@redhat.com>
224
225 * NEWS: Mention "info threads -gid".
226 * gdbthread.h (struct thread_info) <global_num>: Mention "info
227 threads -gid".
228 * thread.c (info_threads_command): Handle "-gid".
229 (_initialize_thread): Adjust "info threads" help string to mention
230 -gid.
231
232 2016-01-13 Pedro Alves <palves@redhat.com>
233
234 * NEWS: Mention InferiorThread.global_num.
235 * python/py-infthread.c (thpy_get_global_num): New function.
236 (thread_object_getset): Register "global_num".
237
238 2016-01-13 Pedro Alves <palves@redhat.com>
239
240 * NEWS: Mention that thread IDs are now per inferior and global
241 thread IDs.
242 * Makefile.in (SFILES): Add tid-parse.c.
243 (COMMON_OBS): Add tid-parse.o.
244 (HFILES_NO_SRCDIR): Add tid-parse.h.
245 * ada-tasks.c: Adjust to use ptid_to_global_thread_id.
246 * breakpoint.c (insert_breakpoint_locations)
247 (remove_threaded_breakpoints, bpstat_check_breakpoint_conditions)
248 (print_one_breakpoint_location, set_longjmp_breakpoint)
249 (check_longjmp_breakpoint_for_call_dummy)
250 (set_momentary_breakpoint): Adjust to use global IDs.
251 (find_condition_and_thread, watch_command_1): Use parse_thread_id.
252 (until_break_command, longjmp_bkpt_dtor)
253 (breakpoint_re_set_thread, insert_single_step_breakpoint): Adjust
254 to use global IDs.
255 * dummy-frame.c (pop_dummy_frame_bpt): Adjust to use
256 ptid_to_global_thread_id.
257 * elfread.c (elf_gnu_ifunc_resolver_stop): Likewise.
258 * gdbthread.h (struct thread_info): Rename field 'num' to
259 'global_num. Add new fields 'per_inf_num' and 'inf'.
260 (thread_id_to_pid): Rename thread_id_to_pid to
261 global_thread_id_to_ptid.
262 (pid_to_thread_id): Rename to ...
263 (ptid_to_global_thread_id): ... this.
264 (valid_thread_id): Rename to ...
265 (valid_global_thread_id): ... this.
266 (find_thread_id): Rename to ...
267 (find_thread_global_id): ... this.
268 (ALL_THREADS, ALL_THREADS_BY_INFERIOR): Declare.
269 (print_thread_info): Add comment.
270 * tid-parse.h: New file.
271 * tid-parse.c: New file.
272 * infcmd.c (step_command_fsm_prepare)
273 (step_command_fsm_should_stop): Adjust to use the global thread
274 ID.
275 (until_next_command, until_next_command)
276 (finish_command_fsm_should_stop): Adjust to use the global thread
277 ID.
278 (attach_post_wait): Adjust to check the inferior number too.
279 * inferior.h (struct inferior) <highest_thread_num>: New field.
280 * infrun.c (handle_signal_stop)
281 (insert_exception_resume_breakpoint)
282 (insert_exception_resume_from_probe): Adjust to use the global
283 thread ID.
284 * record-btrace.c (record_btrace_open): Use global thread IDs.
285 * remote.c (process_initial_stop_replies): Also consider the
286 inferior number.
287 * target.c (target_pre_inferior): Clear the inferior's highest
288 thread num.
289 * thread.c (clear_thread_inferior_resources): Adjust to use the
290 global thread ID.
291 (new_thread): New inferior parameter. Adjust to use it. Set both
292 the thread's global ID and the thread's per-inferior ID.
293 (add_thread_silent): Adjust.
294 (find_thread_global_id): New.
295 (find_thread_id): Make static. Adjust to rename.
296 (valid_thread_id): Rename to ...
297 (valid_global_thread_id): ... this.
298 (pid_to_thread_id): Rename to ...
299 (ptid_to_global_thread_id): ... this.
300 (thread_id_to_pid): Rename to ...
301 (global_thread_id_to_ptid): ... this. Adjust.
302 (first_thread_of_process): Adjust.
303 (do_captured_list_thread_ids): Adjust to use global thread IDs.
304 (should_print_thread): New function.
305 (print_thread_info): Rename to ...
306 (print_thread_info_1): ... this, and add new show_global_ids
307 parameter. Handle it. Iterate over inferiors.
308 (print_thread_info): Reimplement as wrapper around
309 print_thread_info_1.
310 (show_inferior_qualified_tids): New function.
311 (print_thread_id): Use it.
312 (tp_array_compar): Compare inferior numbers too.
313 (thread_apply_command): Use tid_range_parser.
314 (do_captured_thread_select): Use parse_thread_id.
315 (thread_id_make_value): Adjust.
316 (_initialize_thread): Adjust "info threads" help string.
317 * varobj.c (struct varobj_root): Update comment.
318 (varobj_create): Adjust to use global thread IDs.
319 (value_of_root_1): Adjust to use global_thread_id_to_ptid.
320 * windows-tdep.c (display_tib): No longer accept an argument.
321 * cli/cli-utils.c (get_number_trailer): Make extern.
322 * cli/cli-utils.h (get_number_trailer): Declare.
323 (get_number_const): Adjust documentation.
324 * mi/mi-cmd-var.c (mi_cmd_var_update_iter): Adjust to use global
325 thread IDs.
326 * mi/mi-interp.c (mi_new_thread, mi_thread_exit)
327 (mi_on_normal_stop, mi_output_running_pid, mi_on_resume):
328 * mi/mi-main.c (mi_execute_command, mi_cmd_execute): Likewise.
329 * guile/scm-breakpoint.c (gdbscm_set_breakpoint_thread_x):
330 Likewise.
331 * python/py-breakpoint.c (bppy_set_thread): Likewise.
332 * python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
333 * python/py-infthread.c (thpy_get_num): Add comment and return the
334 per-inferior thread ID.
335 (thread_object_getset): Update comment of "num".
336
337 2016-01-13 Pedro Alves <palves@redhat.com>
338
339 * breakpoint.c (remove_threaded_breakpoints)
340 (print_one_breakpoint_location): Use print_thread_id.
341 * btrace.c (btrace_enable, btrace_disable, btrace_teardown)
342 (btrace_fetch, btrace_clear): Use print_thread_id.
343 * common/print-utils.c (CELLSIZE): Delete.
344 (get_cell): Rename to ...
345 (get_print_cell): ... this and made extern. Adjust call callers.
346 Adjust to use PRINT_CELL_SIZE.
347 * common/print-utils.h (get_print_cell): Declare.
348 (PRINT_CELL_SIZE): New.
349 * gdbthread.h (print_thread_id): Declare.
350 * infcmd.c (signal_command): Use print_thread_id.
351 * inferior.c (print_inferior): Use print_thread_id.
352 * infrun.c (handle_signal_stop)
353 (insert_exception_resume_breakpoint)
354 (insert_exception_resume_from_probe)
355 (print_signal_received_reason): Use print_thread_id.
356 * record-btrace.c (record_btrace_info)
357 (record_btrace_resume_thread, record_btrace_cancel_resume)
358 (record_btrace_step_thread, record_btrace_wait): Use
359 print_thread_id.
360 * thread.c (thread_apply_all_command): Use print_thread_id.
361 (print_thread_id): New function.
362 (thread_apply_command): Use print_thread_id.
363 (thread_command, thread_find_command, do_captured_thread_select):
364 Use print_thread_id.
365
366 2016-01-13 Pedro Alves <palves@redhat.com>
367
368 * NEWS: Mention InferiorThread.inferior.
369 * python/py-infthread.c (thpy_get_inferior): New.
370 (thread_object_getset): Register "inferior".
371
372 2016-01-13 Pedro Alves <palves@redhat.com>
373
374 * NEWS: Mention $_inferior.
375 * inferior.c (inferior_id_make_value): New.
376 (inferior_funcs): New.
377 (_initialize_inferior): Create $_inferior variable.
378
379 2016-01-13 Pedro Alves <palves@redhat.com>
380
381 PR breakpoints/19388
382 * frame.c (get_current_frame): Use validate_registers_access.
383 * gdbthread.h (validate_registers_access): Declare.
384 * infrun.c (validate_siginfo_access): Delete.
385 (siginfo_value_read, siginfo_value_write): Use
386 validate_registers_access.
387 * thread.c (validate_registers_access): New function.
388
389 2016-01-12 Josh Stone <jistone@redhat.com>
390 Philippe Waroquiers <philippe.waroquiers@skynet.be>
391
392 * NEWS (Changes since GDB 7.10): Mention QCatchSyscalls and the
393 syscall_entry and syscall_return stop reasons. Mention GDB
394 support for remote catch syscall.
395 * remote.c (PACKET_QCatchSyscalls): New enum.
396 (remote_set_syscall_catchpoint): New function.
397 (remote_protocol_features): New element for QCatchSyscalls.
398 (remote_parse_stop_reply): Parse syscall_entry/return stops.
399 (init_remote_ops): Install remote_set_syscall_catchpoint.
400 (_initialize_remote): Config QCatchSyscalls.
401 * linux-nat.h (struct lwp_info) <syscall_state>: Comment typo.
402
403 2016-01-12 Yao Qi <yao.qi@linaro.org>
404
405 * nat/linux-ptrace.c (linux_child_function): Cast child_stack
406 to gdb_byte * and pass to linux_fork_to_function.
407
408 2016-01-12 Yao Qi <yao.qi@linaro.org>
409
410 * nat/linux-ptrace.c (linux_fork_to_function): Change type
411 of argument 'function'.
412 (linux_grandchild_function): Change return type to 'int'.
413 Change child_stack's type to 'void *'.
414 (linux_child_function): Likewise.
415
416 2016-01-12 Pedro Alves <palves@redhat.com>
417
418 Remove use of the registered trademark symbol throughout.
419
420 2016-01-12 Thomas Schwinge <thomas@codesourcery.com>
421
422 * reply_mig_hack.awk: Rewrite one regular expression.
423
424 2016-01-11 Mike Frysinger <vapier@gentoo.org>
425
426 * acinclude.m4: Include new warning.m4 file.
427 * configure: Regenerated.
428 * configure.ac: Move all warning logic ...
429 * warning.m4: ... here.
430
431 2016-01-08 Yao Qi <yao.qi@linaro.org>
432
433 * extension.c: Include target.h.
434 (set_active_ext_lang): Only call install_gdb_sigint_handler,
435 check_quit_flag, and set_quit_flag if target_terminal_is_ours
436 returns false.
437 (restore_active_ext_lang): Likewise.
438 * target.c (target_terminal_is_ours): New function.
439 * target.h (target_terminal_is_ours): Declare.
440
441 2016-01-07 Maciej W. Rozycki <macro@imgtec.com>
442
443 * mips-tdep.c (mips_breakpoint_from_pc): Rename local `status'
444 to `err' in the little-endian leg.
445
446 2016-01-06 Yao Qi <yao.qi@linaro.org>
447
448 * arch/arm-get-next-pcs.c (arm_get_next_pcs): Move it to some
449 lines below.
450 (thumb_get_next_pcs_raw): Make it static.
451 (arm_get_next_pcs_raw): Likewise.
452 * arch/arm-get-next-pcs.h (thumb_get_next_pcs_raw): Remove the
453 declaration.
454 (arm_get_next_pcs_raw): Likewise.
455
456 2016-01-05 Mike Frysinger <vapier@gentoo.org>
457
458 * version.in: Change cvs to git.
459
460 2016-01-05 Mike Frysinger <vapier@gentoo.org>
461
462 * configure.tgt (score-*-*): Delete gdb_sim assignment.
463
464 2016-01-05 Pedro Alves <palves@redhat.com>
465
466 PR sim/13418
467 * configure.ac: Define WITH_PPC_SIM when linking in the sim and
468 the target is powerpc*.
469 * rs6000-tdep.c (init_sim_regno_table): Check WITH_PPC_SIM instead
470 of WITH_SIM.
471 * configure: Regenerate.
472 * config.in: Regenerate.
473
474 2016-01-04 Markus Metzger <markus.t.metzger@intel.com>
475
476 * btrace.c (btrace_pt_readmem_callback): Do not return in TRY/CATCH.
477
478 2016-01-02 Mike Frysinger <vapier@gentoo.org>
479
480 * configure.tgt (powerpc*-*-*): Delete test call and
481 always assign gdb_sim.
482
483 2016-01-01 Joel Brobecker <brobecker@adacore.com>
484
485 Update year range in copyright notice of all files.
486
487 2016-01-01 Joel Brobecker <brobecker@adacore.com>
488
489 * top.c (print_gdb_version): Change copyright year in version
490 message.
491
492 2016-01-01 Joel Brobecker <brobecker@adacore.com>
493
494 * config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2015.
495
496 For older changes see ChangeLog-2015.
497 \f
498 Local Variables:
499 mode: change-log
500 left-margin: 8
501 fill-column: 74
502 version-control: never
503 coding: utf-8
504 End:
This page took 0.039915 seconds and 5 git commands to generate.