From 74d6ac44dec6ac521772bc13c5c789c3d97ec19f Mon Sep 17 00:00:00 2001 From: Jason Molenda Date: Thu, 23 Apr 1998 19:31:51 +0000 Subject: [PATCH] Thu Apr 23 12:27:43 1998 Philippe De Muyter * symfile.c (simple_overlay_update_1): Do not prefix array address by `&'. * bcache.h (BCACHE_DATA_ALIGNMENT): Ditto. * tracepoint.c (encode_actions): Ditto. * language.c, complaints.c, utils.c (varargs.h): Do not include that file here, it is already included indirectly by defs.h. * dbxread.c (dbx_symfile_init, process_one_symbol): Cast xmalloc return value to the appropriate pointer type. * utils.c (floatformat_from_doublest): Ditto. * tracepoint.c (read_actions, _initialize_tracepoint): Ditto. (add_memrange): Likewise with xrealloc return value. * stabsread.c (ref_add): Ditto. * coffread.c (coff_symfile_init): Likewise for xmmalloc return value. * elfread.c (elf_symfile_read): Ditto. * os9kread.c (os9k_symfile_init): Ditto. --- gdb/ChangeLog | 18 +++++++++ gdb/bcache.h | 2 +- gdb/complaints.c | 5 --- gdb/elfread.c | 2 +- gdb/language.c | 5 --- gdb/os9kread.c | 2 +- gdb/stabsread.c | 3 +- gdb/symfile.c | 97 ++++++++++++++++++++++++++++++++---------------- gdb/tracepoint.c | 12 +++--- 9 files changed, 94 insertions(+), 52 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 257464f622..6bc63d49a5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,21 @@ +Thu Apr 23 12:27:43 1998 Philippe De Muyter + + * symfile.c (simple_overlay_update_1): Do not prefix array address + by `&'. + * bcache.h (BCACHE_DATA_ALIGNMENT): Ditto. + * tracepoint.c (encode_actions): Ditto. + * language.c, complaints.c, utils.c (varargs.h): Do not include that + file here, it is already included indirectly by defs.h. + * dbxread.c (dbx_symfile_init, process_one_symbol): Cast xmalloc return + value to the appropriate pointer type. + * utils.c (floatformat_from_doublest): Ditto. + * tracepoint.c (read_actions, _initialize_tracepoint): Ditto. + (add_memrange): Likewise with xrealloc return value. + * stabsread.c (ref_add): Ditto. + * coffread.c (coff_symfile_init): Likewise for xmmalloc return value. + * elfread.c (elf_symfile_read): Ditto. + * os9kread.c (os9k_symfile_init): Ditto. + Thu Apr 23 00:32:08 1998 Tom Tromey * config.in: Rebuilt. diff --git a/gdb/bcache.h b/gdb/bcache.h index 48b71e28cf..cf0c62eeda 100644 --- a/gdb/bcache.h +++ b/gdb/bcache.h @@ -47,7 +47,7 @@ struct hashlink { a hashlink struct to hold the next pointer and the data. */ #define BCACHE_DATA_ALIGNMENT \ - (((char *) &BCACHE_DATA((struct hashlink*) 0) - (char *) 0)) + (((char *) BCACHE_DATA((struct hashlink*) 0) - (char *) 0)) struct bcache { struct obstack cache; diff --git a/gdb/complaints.c b/gdb/complaints.c index 9db8b4a20b..e38038d26f 100644 --- a/gdb/complaints.c +++ b/gdb/complaints.c @@ -20,11 +20,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "defs.h" #include "complaints.h" #include "gdbcmd.h" -#ifdef ANSI_PROTOTYPES -#include -#else -#include -#endif /* Structure to manage complaints about symbol file contents. */ diff --git a/gdb/elfread.c b/gdb/elfread.c index d5f810eb9a..95e905fd05 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -596,7 +596,7 @@ elf_symfile_read (objfile, section_offsets, mainline) memset ((char *) &ei, 0, sizeof (ei)); /* Allocate struct to keep track of the symfile */ - objfile->sym_stab_info = (PTR) + objfile->sym_stab_info = (struct dbx_symfile_info *) xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info)); memset ((char *) objfile->sym_stab_info, 0, sizeof (struct dbx_symfile_info)); make_cleanup (free_elfinfo, (PTR) objfile); diff --git a/gdb/language.c b/gdb/language.c index 17ab815fae..2a4a1b3ee9 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -30,11 +30,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "defs.h" #include #include "gdb_string.h" -#ifdef ANSI_PROTOTYPES -#include -#else -#include -#endif #include "symtab.h" #include "gdbtypes.h" diff --git a/gdb/os9kread.c b/gdb/os9kread.c index e143090e13..17eaf0b97f 100644 --- a/gdb/os9kread.c +++ b/gdb/os9kread.c @@ -400,7 +400,7 @@ os9k_symfile_init (objfile) objfile->auxf1 = minfile; /* Allocate struct to keep track of the symfile */ - objfile->sym_stab_info = (PTR) + objfile->sym_stab_info = (struct dbx_symfile_info *) xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info)); DBX_SYMFILE_INFO (objfile)->stab_section_info = NULL; diff --git a/gdb/stabsread.c b/gdb/stabsread.c index bfbcc016c3..ba1f6f4806 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -1194,7 +1194,8 @@ ref_add (refnum, sym, stabs, value) { int new_slots = ref_count - ref_chunk * MAX_CHUNK_REFS; int new_chunks = new_slots / MAX_CHUNK_REFS + 1; - ref_map = xrealloc (ref_map, REF_MAP_SIZE(ref_chunk + new_chunks)); + ref_map = (struct ref_map_s *) + xrealloc (ref_map, REF_MAP_SIZE(ref_chunk + new_chunks)); if (!ref_map) error ("no more free slots in chain\n"); memset (ref_map + REF_MAP_SIZE(ref_chunk), 0, new_chunks * REF_CHUNK_SIZE); diff --git a/gdb/symfile.c b/gdb/symfile.c index 936ffc9dd5..6f3d307744 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -53,6 +53,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #endif int (*ui_load_progress_hook) PARAMS ((char *, unsigned long)); +void (*pre_add_symbol_hook) PARAMS ((char *)); +void (*post_add_symbol_hook) PARAMS ((void)); /* Global variables owned by this file */ int readnow_symbol_files; /* Read full symbols immediately */ @@ -656,9 +658,14 @@ symbol_file_add (name, from_tty, addr, mainline, mapped, readnow) performed, or need to read an unmapped symbol table. */ if (from_tty || info_verbose) { - printf_filtered ("Reading symbols from %s...", name); - wrap_here (""); - gdb_flush (gdb_stdout); + if (pre_add_symbol_hook) + pre_add_symbol_hook (name); + else + { + printf_filtered ("Reading symbols from %s...", name); + wrap_here (""); + gdb_flush (gdb_stdout); + } } syms_from_objfile (objfile, addr, mainline, from_tty); } @@ -687,8 +694,13 @@ symbol_file_add (name, from_tty, addr, mainline, mapped, readnow) if (from_tty || info_verbose) { - printf_filtered ("done.\n"); - gdb_flush (gdb_stdout); + if (post_add_symbol_hook) + post_add_symbol_hook (); + else + { + printf_filtered ("done.\n"); + gdb_flush (gdb_stdout); + } } new_symfile_objfile (objfile, mainline, from_tty); @@ -957,6 +969,8 @@ load_command (arg, from_tty) to worry about finding it, and (b) On VMS, fork() is very slow and so we don't want to run a subprocess. On the other hand, I'm not sure how performance compares. */ +#define GENERIC_LOAD_CHUNK 256 +#define VALIDATE_DOWNLOAD 0 void generic_load (filename, from_tty) char *filename; @@ -969,7 +983,10 @@ generic_load (filename, from_tty) unsigned long data_count = 0; /* Number of bytes transferred to memory */ int n; unsigned long load_offset = 0; /* offset to add to vma for each section */ - char buf[128]; + char buf[GENERIC_LOAD_CHUNK+8]; +#if VALIDATE_DOWNLOAD + char verify_buffer[GENERIC_LOAD_CHUNK+8] ; +#endif /* enable user to specify address for downloading as 2nd arg to load */ n = sscanf(filename, "%s 0x%lx", buf, &load_offset); @@ -1009,14 +1026,13 @@ generic_load (filename, from_tty) char *buffer; struct cleanup *old_chain; bfd_vma lma; - unsigned long l = size / 100; + unsigned long l = size ; int err; char *sect; unsigned long sent; unsigned long len; - l = l > 100 ? l : 100; - data_count += size; + l = l > GENERIC_LOAD_CHUNK ? GENERIC_LOAD_CHUNK : l ; buffer = xmalloc (size); old_chain = make_cleanup (free, buffer); @@ -1034,8 +1050,8 @@ generic_load (filename, from_tty) bfd_get_section_contents (loadfile_bfd, s, buffer, 0, size); - sect = bfd_get_section_name (loadfile_bfd, s); - sent = 0; + sect = (char *) bfd_get_section_name (loadfile_bfd, s); + sent = 0; do { len = (size - sent) < l ? (size - sent) : l; @@ -1044,9 +1060,24 @@ generic_load (filename, from_tty) if (ui_load_progress_hook) if (ui_load_progress_hook (sect, sent)) error ("Canceled the download"); +#if VALIDATE_DOWNLOAD + /* Broken memories and broken monitors manifest themselves + here when bring new computers to life. + This doubles already slow downloads. + */ + if (err) break ; + { + target_read_memory(lma,verify_buffer,len) ; + if (0 != bcmp(buffer,verify_buffer,len)) + error("Download verify failed at %08x", + (unsigned long)lma) ; + } + +#endif + data_count += len ; lma += len; buffer += len; - } + } /* od */ while (err == 0 && sent < size); if (err != 0) @@ -1059,12 +1090,14 @@ generic_load (filename, from_tty) } end_time = time (NULL); - - printf_filtered ("Start address 0x%lx\n", loadfile_bfd->start_address); - - /* We were doing this in remote-mips.c, I suspect it is right - for other targets too. */ - write_pc (loadfile_bfd->start_address); + { + unsigned long entry ; + entry = bfd_get_start_address(loadfile_bfd) ; + printf_filtered ("Start address 0x%lx , load size %d\n", entry,data_count); + /* We were doing this in remote-mips.c, I suspect it is right + for other targets too. */ + write_pc (entry); + } /* FIXME: are we supposed to call symbol_file_add or not? According to a comment from remote-mips.c (where a call to symbol_file_add was @@ -2401,7 +2434,7 @@ static CORE_ADDR cache_ovly_table_base = 0; static CORE_ADDR cache_ovly_region_table_base = 0; #endif enum ovly_index { VMA, SIZE, LMA, MAPPED}; -#define TARGET_INT_BYTES (TARGET_INT_BIT / TARGET_CHAR_BIT) +#define TARGET_LONG_BYTES (TARGET_LONG_BIT / TARGET_CHAR_BIT) /* Throw away the cached copy of _ovly_table */ static void @@ -2430,18 +2463,18 @@ simple_free_overlay_region_table () /* Read an array of ints from the target into a local buffer. Convert to host order. int LEN is number of ints */ static void -read_target_int_array (memaddr, myaddr, len) +read_target_long_array (memaddr, myaddr, len) CORE_ADDR memaddr; unsigned int *myaddr; int len; { - char *buf = alloca (len * TARGET_INT_BYTES); + char *buf = alloca (len * TARGET_LONG_BYTES); int i; - read_memory (memaddr, buf, len * TARGET_INT_BYTES); + read_memory (memaddr, buf, len * TARGET_LONG_BYTES); for (i = 0; i < len; i++) - myaddr[i] = extract_unsigned_integer (TARGET_INT_BYTES * i + buf, - TARGET_INT_BYTES); + myaddr[i] = extract_unsigned_integer (TARGET_LONG_BYTES * i + buf, + TARGET_LONG_BYTES); } /* Find and grab a copy of the target _ovly_table @@ -2464,9 +2497,9 @@ simple_read_overlay_table () if (msym != NULL) { cache_ovly_table_base = SYMBOL_VALUE_ADDRESS (msym); - read_target_int_array (cache_ovly_table_base, - (int *) cache_ovly_table, - cache_novlys * 4); + read_target_long_array (cache_ovly_table_base, + (int *) cache_ovly_table, + cache_novlys * 4); } else return 0; /* failure */ @@ -2497,9 +2530,9 @@ simple_read_overlay_region_table () if (msym != NULL) { cache_ovly_region_table_base = SYMBOL_VALUE_ADDRESS (msym); - read_target_int_array (cache_ovly_region_table_base, - (int *) cache_ovly_region_table, - cache_novly_regions * 3); + read_target_long_array (cache_ovly_region_table_base, + (int *) cache_ovly_region_table, + cache_novly_regions * 3); } else return 0; /* failure */ @@ -2530,8 +2563,8 @@ simple_overlay_update_1 (osect) cache_ovly_table[i][LMA] == osect->the_bfd_section->lma /* && cache_ovly_table[i][SIZE] == size */) { - read_target_int_array (cache_ovly_table_base + i * TARGET_INT_BYTES, - (int *) &cache_ovly_table[i], 4); + read_target_long_array (cache_ovly_table_base + i * TARGET_LONG_BYTES, + (int *) cache_ovly_table[i], 4); if (cache_ovly_table[i][VMA] == osect->the_bfd_section->vma && cache_ovly_table[i][LMA] == osect->the_bfd_section->lma /* && cache_ovly_table[i][SIZE] == size */) diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index e6bf60f825..468324d5e5 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -842,7 +842,7 @@ read_actions (t) if (linetype == BADLINE) continue; /* already warned -- collect another line */ - temp = xmalloc (sizeof (struct action_line)); + temp = (struct action_line *) xmalloc (sizeof (struct action_line)); temp->next = NULL; temp->action = line; @@ -1169,7 +1169,7 @@ add_memrange (memranges, type, base, len) if (memranges->next_memrange >= memranges->listsize) { memranges->listsize *= 2; - memranges->list = xrealloc (memranges->list, + memranges->list = (struct memrange *) xrealloc (memranges->list, memranges->listsize); } @@ -1502,8 +1502,8 @@ encode_actions (t, tdp_actions, step_count, stepping_actions) memrange_sortmerge (&tracepoint_list); memrange_sortmerge (&stepping_list); - *tdp_actions = stringify_collection_list (&tracepoint_list, &tdp_buff); - *stepping_actions = stringify_collection_list (&stepping_list, &step_buff); + *tdp_actions = stringify_collection_list (&tracepoint_list, tdp_buff); + *stepping_actions = stringify_collection_list (&stepping_list, step_buff); } static char target_buf[2048]; @@ -2435,13 +2435,13 @@ _initialize_tracepoint () if (tracepoint_list.list == NULL) { tracepoint_list.listsize = 128; - tracepoint_list.list = xmalloc + tracepoint_list.list = (struct memrange *) xmalloc (tracepoint_list.listsize * sizeof (struct memrange)); } if (stepping_list.list == NULL) { stepping_list.listsize = 128; - stepping_list.list = xmalloc + stepping_list.list = (struct memrange *) xmalloc (stepping_list.listsize * sizeof (struct memrange)); } -- 2.34.1