Files
mercury/scripts/prepare_tmp_dir_grade_part
Zoltan Somogyi 9ec86d6a6d The objective of this diff is to switch from a table of solver events built
Estimated hours taken: 32
Branches: main

The objective of this diff is to switch from a table of solver events built
into the compiler (and eventually the debugger) into a table of events
defined by a file provided by the user to the compiler, which the compiler
then records in the executable for use by the debugger.

The current design, for speed of implementation, uses temporary files parsed
by a bison-generated parser. Since the compiler needs to be able to invoke
the parser even if it is compiled in a non-debug grade, the parser is in
a new library, the eventspec library, that is always linked into the Mercury
compiler and is always linked into any Mercury program with debugging enabled
(but is of course linked only once into a Mercury compiler which has debugging
enabled).

Modify the debugger to give it the ability to print the attributes of
user-defined events (for now, only the non-synthesized attributes).
Implement a new debugger command, "user", which goes to the next user-defined
event.

configure.in:
	Require flex and and bison to be available.

doc/user_guide.texi:
	Document user defined events and the new debugger capabilities.

doc/mdb_categories:
	Include "user" in the list of forward movement commands.

	Fix some earlier omissions in that list.

runtime/mercury_stack_layout.h:
	Include an event number in the user-defined event structure.

	Include a string representing an event set specification in module
	layout structures.

runtime/mercury_stack_layout.h:
runtime/mercury_trace_base.[ch]:
runtime/mercury_types.h
	Switch from solver events to user events in names.

runtime/mercury_trace_term.[ch]:
	Provide a representation of flat terms, for use in representing
	the calls that generate synthesized attributes.

	Ensure that exported field names have an MR_ prefix.

browser/cterm.m:
	Conform to the change to runtime/mercury_trace_term.h.

scripts/c2init.in:
scripts/ml.in:
	Include the eventspec library in programs compiled with debugging
	enabled.

compiler/Mmakefile:
	Include the eventspec library in the compiler.

compiler/options.m:
	Add a new option, --event-spec-file-name, that allows the user to
	specify the set of user-defined events the program may use.

compiler/handle_options.m:
	Set this optimization from an environment variable (which may be
	set by the mmc script) if the new option is not explicitly given.

compiler/prog_data.m:
	Define the data structures for the compiler's representation of the
	event set specification.

	Move some definitions around to group them more logically.

compiler/hlds_module.m:
	Include the event set specification as a new field in the module_info.

compiler/prog_event.m:
	Add the code for invoking the parser in the eventspec library,
	and for converting the simple term output by the parser to the
	compiler own representation, which contains more information
	(to wit, the types of the function attributes) and which has had
	a whole bunch of semantic checks done on it (e.g. whether synthesized
	attributes depend on themselves or on nonexistent attributes).

	Provide a function to generate a canonicalized version of the event
	specification file.

compiler/module_qual.m:
compiler/equiv_type.m:
	Process event spec specifications as well as items, to module qualify
	the names of the types of event arguments, and expanding out
	equivalence types.

	In equiv_type.m, rename some variables to make clear what kind of info
	they represent.

compiler/mercury_compile.m:
	Process the event set specification file if one has been selected:
	read it in, module qualify it, expand its equivalence types, and add
	to the module_info.

compiler/compile_target_code.m:
	Include the event_spec library when linking debuggable executables.

compiler/call_gen.m:
compiler/continuation_info.m:
compiler/trace_gen.m:
compiler/trace_params.m:
mdbcomp/prim_data.m:
mdbcomp/trace_counts.m:
runtime/mercury_goto.h:
	Generate user-defined events instead of solver events.

compiler/layout.m:
compiler/layout_out.m:
compiler/stack_layout.m:
	Include a canonicalized version of the event specification file
	in the module layout if the module has any user-defined events.

compiler/code_info.m:
compiler/llds_out.m:
compiler/modes.m:
compiler/modules.m:
compiler/opt_debug.m:
compiler/typecheck.m:
	Conform to the changes above.

compiler/passes_aux.m:
	Rename a predicate to avoid an ambiguity.

trace/Mmakefile:
	Add the definition and rules required to build the eventspec library.

trace/mercury_event_scanner.l:
trace/mercury_event_parser.y:
	A scanner and a parser for reading in event spec specifications.

trace/mercury_event_spec_missing.h:
	Provide the declarations that should be (but aren't) provided by
	flex and bison.

trace/mercury_event_spec.[ch]:
	The main module of the eventspec library. Provides functions to read
	in event set specifications from a file, and to write them out as a
	Mercury term in the form needed by the compiler.

trace/mercury_trace_tables.c:
	If the module layouts being registered include event set
	specifications, then check their consistency. Make the specification
	and the consistency indication available to other modules.

trace/mercury_trace_internal.c:
	During initialization, if the modules contain a consistent set of event
	set specifications, then read that specification into the debugger.
	(We don't yet make use of this information.)

	Add an extra mdb command, "user", which goes forward to the next
	user-defined event.

trace/mercury_trace.[ch]:
trace/mercury_trace_cmd_forward.[ch]:
	Implement the new mdb command.

trace/mercury_trace_vars.[ch]:
	For user-defined events, include the attributes' values among the
	values that can be printed or browsed.

trace/mercury_trace_cmd_browsing.c:
trace/mercury_trace_declarative.c:
	Minor changes.

scripts/scripts/prepare_tmp_dir_grade_part:
	Copy the .y and .l files to the tmp dir we use for installs.

tools/bootcheck:
	Copy the .y and .l files of the trace directory to stage 2.

tools/lmc.in:
	Include the eventspec library when linking debuggable executables.

tests/debugger/user_event.{m,inp,exp}:
tests/debugger/user_event_spec:
	New test case to test the new functionality.

tests/debugger/Mercury.options:
tests/debugger/Mmakefile:
	Enable the new test case.

tests/debugger/completion.exp:
	Expect the new "user" mdb command in the completion output.
2006-11-24 03:48:30 +00:00

64 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
#---------------------------------------------------------------------------#
# Copyright (C) 2005-2006 The University of Melbourne.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#---------------------------------------------------------------------------#
rm -fr tmp_dir/boehm_gc
rm -fr tmp_dir/runtime
rm -fr tmp_dir/trace
rm -fr tmp_dir/library
rm -fr tmp_dir/mdbcomp
rm -fr tmp_dir/browser
mkdir tmp_dir/boehm_gc
mkdir tmp_dir/boehm_gc/Mac_files
mkdir tmp_dir/boehm_gc/cord
mkdir tmp_dir/boehm_gc/include
mkdir tmp_dir/boehm_gc/include/private
cp boehm_gc/Makefile* tmp_dir/boehm_gc
cp boehm_gc/Mmake* tmp_dir/boehm_gc
cp boehm_gc/ac* tmp_dir/boehm_gc
cp boehm_gc/*.[chsS] tmp_dir/boehm_gc
cp boehm_gc/Mac_files/*.[ch] tmp_dir/boehm_gc/Mac_files
cp boehm_gc/cord/*.[ch] tmp_dir/boehm_gc/cord
cp boehm_gc/include/*.[ch] tmp_dir/boehm_gc/include
cp boehm_gc/include/private/*.[ch] tmp_dir/boehm_gc/include/private
cp boehm_gc/configure_atomic_ops.sh tmp_dir/boehm_gc
cp -r boehm_gc/libatomic_ops-*[0-9] tmp_dir/boehm_gc
rm -fr tmp_dir/boehm_gc/libatomic_ops-*[0-9]/src/*.o
rm -fr tmp_dir/boehm_gc/libatomic_ops-*[0-9]/src/*.a
mkdir tmp_dir/runtime
mkdir tmp_dir/runtime/machdeps
cp runtime/Mmake* tmp_dir/runtime
cp runtime/.mgnuc* tmp_dir/runtime
cp runtime/*.in tmp_dir/runtime
cp runtime/*.[ch] tmp_dir/runtime
cp runtime/*.il tmp_dir/runtime
cp runtime/machdeps/*.h tmp_dir/runtime/machdeps
mkdir tmp_dir/trace
cp trace/Mmake* tmp_dir/trace
cp trace/.mgnuc* tmp_dir/trace
cp trace/*.[chyl] tmp_dir/trace
mkdir tmp_dir/library
cp library/Mmake* tmp_dir/library
cp library/Mercury.* tmp_dir/library
cp library/.mgnuc* tmp_dir/library
cp library/*FLAGS* tmp_dir/library
cp library/print_extra_inits tmp_dir/library
cp library/library_strong_name.sn tmp_dir/library
cp library/*.m tmp_dir/library
mkdir tmp_dir/mdbcomp
cp mdbcomp/Mmake* tmp_dir/mdbcomp
cp mdbcomp/Mercury.* tmp_dir/mdbcomp
cp mdbcomp/.mgnuc* tmp_dir/mdbcomp
cp mdbcomp/*FLAGS* tmp_dir/mdbcomp
cp mdbcomp/*.m tmp_dir/mdbcomp
mkdir tmp_dir/browser
cp browser/Mmake* tmp_dir/browser
cp browser/Mercury.* tmp_dir/browser
cp browser/.mgnuc* tmp_dir/browser
cp browser/*FLAGS* tmp_dir/browser
cp browser/*.m tmp_dir/browser
exit 0