aboutsummaryrefslogtreecommitdiff
path: root/gdb/os9kread.c
diff options
context:
space:
mode:
authorKung Hsu <kung@cygnus>1994-03-30 00:18:29 +0000
committerKung Hsu <kung@cygnus>1994-03-30 00:18:29 +0000
commitd80ff70c100a550acafe3b666e7e30028e4a15f6 (patch)
treea93b9b5c5ddd7fd44be1e110ab39cf6b5b7bd326 /gdb/os9kread.c
parent8f197c94e3dd3969bf50577fc303a44c6f1fbdab (diff)
downloadgdb-d80ff70c100a550acafe3b666e7e30028e4a15f6.zip
gdb-d80ff70c100a550acafe3b666e7e30028e4a15f6.tar.gz
gdb-d80ff70c100a550acafe3b666e7e30028e4a15f6.tar.bz2
Modified Files:
ChangeLog os9kread.c remote-os9k.c * os9kread.c (record_minmal_symbol): add section_offset to relocate minimal symbol table. * os9kread.c (read_minimal_symbols): ditto. * os9kread.c (os9k_symfile_init): increase size of dbg and stb file names. * os9kread.c (read_os9k_psymtab): if there's no dbg file, just return. Also if file addr is 0 leave it 0, not to relocate. * remote-os9k.c (_initialize_remote_os9k): add 'set remotexon', 'set remotexoff' and 'set remotelog' commands.
Diffstat (limited to 'gdb/os9kread.c')
-rw-r--r--gdb/os9kread.c49
1 files changed, 34 insertions, 15 deletions
diff --git a/gdb/os9kread.c b/gdb/os9kread.c
index 6577b65..4a1f365 100644
--- a/gdb/os9kread.c
+++ b/gdb/os9kread.c
@@ -181,7 +181,8 @@ os9k_end_psymtab PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
struct partial_symtab **, int));
static void
-record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *));
+record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *,
+ struct section_offsets *));
#define HANDLE_RBRAC(val) \
if ((val) > pst->texthigh) pst->texthigh = (val);
@@ -207,23 +208,38 @@ record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *));
#define N_ABS 6
static void
-record_minimal_symbol (name, address, type, objfile)
+record_minimal_symbol (name, address, type, objfile, section_offsets)
char *name;
CORE_ADDR address;
int type;
struct objfile *objfile;
+ struct section_offsets *section_offsets;
{
enum minimal_symbol_type ms_type;
switch (type)
{
- case N_TEXT: ms_type = mst_text; break;
- case N_DATA: ms_type = mst_data; break;
- case N_BSS: ms_type = mst_bss; break;
- case N_RDATA: ms_type = mst_bss; break;
- case N_IDATA: ms_type = mst_data; break;
- case N_ABS: ms_type = mst_abs; break;
- default: ms_type = mst_unknown; break;
+ case N_TEXT:
+ ms_type = mst_text;
+ address += ANOFFSET(section_offsets, SECT_OFF_TEXT);
+ break;
+ case N_DATA:
+ ms_type = mst_data;
+ break;
+ case N_BSS:
+ ms_type = mst_bss;
+ break;
+ case N_RDATA:
+ ms_type = mst_bss;
+ break;
+ case N_IDATA:
+ ms_type = mst_data;
+ break;
+ case N_ABS:
+ ms_type = mst_abs;
+ break;
+ default:
+ ms_type = mst_unknown; break;
}
prim_record_minimal_symbol
@@ -250,8 +266,9 @@ struct stbsymbol {
#define STBSYMSIZE 10
static int
-read_minimal_symbols(objfile)
+read_minimal_symbols(objfile, section_offsets)
struct objfile *objfile;
+ struct section_offsets *section_offsets;
{
FILE *fp;
bfd *abfd;
@@ -299,7 +316,7 @@ char buf[64], buf1[128];
if (ch == 0) break;
ch = getc(fp);
};
- record_minimal_symbol(buf1, sym.value, sym.type&7, objfile);
+ record_minimal_symbol(buf1, sym.value, sym.type&7, objfile, section_offsets);
off += STBSYMSIZE;
};
install_minimal_symbols (objfile);
@@ -337,7 +354,7 @@ os9k_symfile_read (objfile, section_offsets, mainline)
back_to = make_cleanup (really_free_pendings, 0);
make_cleanup (discard_minimal_symbols, 0);
- read_minimal_symbols (objfile);
+ read_minimal_symbols (objfile, section_offsets);
/* Now that the symbol table data of the executable file are all in core,
process them and define symbols accordingly. */
@@ -387,7 +404,7 @@ os9k_symfile_init (objfile)
int val;
bfd *sym_bfd = objfile->obfd;
char *name = bfd_get_filename (sym_bfd);
- char dbgname[64], stbname[64];
+ char dbgname[512], stbname[512];
FILE *symfile = 0;
FILE *minfile = 0;
@@ -633,6 +650,7 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
abfd = objfile->obfd;
fp = objfile->auxf2;
+ if (!fp) return;
fread(&dbghdr.sync, sizeof(dbghdr.sync), 1, fp);
fread(&dbghdr.rev, sizeof(dbghdr.rev), 1, fp);
@@ -702,8 +720,9 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
unsigned long valu;
enum language tmp_language;
- valu = CUR_SYMBOL_VALUE +
- ANOFFSET (section_offsets, SECT_OFF_TEXT);
+ valu = CUR_SYMBOL_VALUE;
+ if (valu)
+ valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
past_first_source_file = 1;
if (psymfile_depth == 0) {