1
1

Getting closer to a full Total View support.

This commit was SVN r11974.
Этот коммит содержится в:
George Bosilca 2006-10-04 20:01:33 +00:00
родитель e9572c7aee
Коммит 4d18d208d4
4 изменённых файлов: 87 добавлений и 0 удалений

Просмотреть файл

@ -19,6 +19,7 @@
include $(top_srcdir)/config/Makefile.options
noinst_LTLIBRARIES = libdebuggers.la
inst_LTLIBRARIES = libompitv.la
# This is not quite in the Automake spirit, but we have to do it.
# Since the totalview portion of the library must be built with -g, we
@ -34,9 +35,16 @@ CFLAGS = $(CFLAGS_WITHOUT_OPTFLAGS) $(TOTALVIEW_DEBUG_FLAGS)
headers = \
debuggers.h
instdir = $(libdir)/openmpi
libdebuggers_la_SOURCES = \
$(headers) \
ompi_totalview.c
libdebuggers_la_CFLAGS = -DOMPI_TV_DLL=\"$(instdir)/libompitv.so\"
libompitv_la_SOURCES = ompi_dll.c
libompitv_la_CFLAGS = -g
libompitv_la_LDFLAGS = -module -avoid-version
# Conditionally install the header files

Просмотреть файл

@ -519,6 +519,43 @@ int mqs_image_has_queues (mqs_image *image, char **message)
i_info->mca_pml_base_recv_request_t.size = mqs_sizeof(qh_type);
i_info->mca_pml_base_recv_request_t.offset.req_bytes_packed = mqs_field_offset(qh_type, "req_bytes_packed");
}
/**
* Gather information about the receive fragments and theirs headers.
*/
{
mqs_type* qh_type = mqs_find_type( image, "mca_pml_ob1_common_hdr_t", mqs_lang_c );
if( !qh_type ) {
missing_in_action = "mca_pml_ob1_common_hdr_t";
goto type_missing;
}
i_info->mca_pml_ob1_common_hdr_t.size = mqs_sizeof(qh_type);
i_info->mca_pml_ob1_common_hdr_t.offset.hdr_type = mqs_field_offset(qh_type, "hdr_type");
i_info->mca_pml_ob1_common_hdr_t.offset.hdr_flags = mqs_field_offset(qh_type, "hdr_flags");
}
{
mqs_type* qh_type = mqs_find_type( image, "mca_pml_ob1_match_hdr_t", mqs_lang_c );
if( !qh_type ) {
missing_in_action = "mca_pml_ob1_match_hdr_t";
goto type_missing;
}
i_info->mca_pml_ob1_match_hdr_t.size = mqs_sizeof(qh_type);
i_info->mca_pml_ob1_match_hdr_t.offset.hdr_common = mqs_field_offset(qh_type, "hdr_common");
i_info->mca_pml_ob1_match_hdr_t.offset.hdr_ctx = mqs_field_offset(qh_type, "hdr_ctx");
i_info->mca_pml_ob1_match_hdr_t.offset.hdr_src = mqs_field_offset(qh_type, "hdr_src");
i_info->mca_pml_ob1_match_hdr_t.offset.hdr_tag = mqs_field_offset(qh_type, "hdr_tag");
i_info->mca_pml_ob1_match_hdr_t.offset.hdr_seq = mqs_field_offset(qh_type, "hdr_seq");
}
{
mqs_type* qh_type = mqs_find_type( image, "mca_pml_ob1_recv_frag_t", mqs_lang_c );
if( !qh_type ) {
missing_in_action = "mca_pml_ob1_recv_frag_t";
goto type_missing;
}
i_info->mca_pml_ob1_recv_frag_t.size = mqs_sizeof(qh_type);
i_info->mca_pml_ob1_recv_frag_t.offset.hdr = mqs_field_offset(qh_type, "hdr");
i_info->mca_pml_ob1_recv_frag_t.offset.request = mqs_field_offset(qh_type, "request");
}
/**
* And now let's look at the communicator and group structures.
*/

Просмотреть файл

@ -103,6 +103,31 @@ typedef struct
int req_bytes_packed;
} offset;
} mca_pml_base_recv_request_t;
/* fragments for unexpected messages (as well as theirs headers) */
struct {
int size;
struct {
int hdr;
int request;
} offset;
} mca_pml_ob1_recv_frag_t;
struct {
int size;
struct {
int hdr_type;
int hdr_flags;
} offset;
} mca_pml_ob1_common_hdr_t;
struct {
int size;
struct {
int hdr_common;
int hdr_ctx;
int hdr_src;
int hdr_tag;
int hdr_seq;
} offset;
} mca_pml_ob1_match_hdr_t;
/* communicator structures */
struct {
int size;

Просмотреть файл

@ -36,6 +36,23 @@ OMPI_DECLSPEC volatile int MPIR_debug_state = 0;
OMPI_DECLSPEC char MPIR_dll_name[] = OMPI_TV_DLL;
#endif /* defined(OMPI_TV_DLL) */
/**
* There is an issue with the debugger running on different architectures
* compared with the debugged program. We need to know the sizes of the types
* on the debugged program. The problem is that the size depend on the
* compilation options (32 or 64 bits) and on the compiler. Therefore,
* the simplest and more accurate way is to export these sizes directly from
* the debugged program.
*/
OMPI_DECLSPEC int MPIR_debug_typedefs_sizeof[] = {
sizeof(bool),
sizeof(short),
sizeof(int),
sizeof(long),
sizeof(long long),
sizeof(size_t)
};
struct MPIR_PROCDESC {
char *host_name; /* something that can be passed to inet_addr */
char *executable_name; /* name of binary */