From 94d4b713731d53fac28864a85e1974aa34fe7c39 Mon Sep 17 00:00:00 2001 From: Jim Kingdon Date: Sat, 19 Mar 1994 18:49:50 +0000 Subject: [PATCH] * Makefile.in (TAGS): Use variables directly, rather than using find, to locate TM_FILE, XM_FILE, and NAT_FILE. This is faster and means that these filenames no longer need be unique across all the config/* directories. * configure.in: Put the config/*/ into TM_FILE, etc. * m68k-stub.c (computeSignal): Return SIGFPE, not SIGURG, for chk and trapv exceptions. * target.h (struct section_table), objfiles.h (struct obj_section): Change name of field sec_ptr to the_bfd_section. More mnemonic and avoids the (sort of, for the ptx compiler) name clash with the name of the typedef. * exec.c, xcoffexec.c, sparc-tdep.c, rs6000-nat.c, osfsolib.c, solib.c, irix5-nat.c, objfiles.c, remote.c: Change users. * utils.c: Include readline.h. * Makefile.in (utils.o): Add dependency. * remote.c (getpkt): Add support for run-length encoding. --- gdb/ChangeLog | 23 ++++++ gdb/Makefile.in | 13 ++-- gdb/configure.in | 5 ++ gdb/irix5-nat.c | 2 +- gdb/objfiles.c | 2 +- gdb/objfiles.h | 11 +-- gdb/osfsolib.c | 2 +- gdb/remote.c | 184 ++++++++++++++++++++++++++++++++++++++++------- gdb/rs6000-nat.c | 22 +++--- gdb/sparc-tdep.c | 18 +++-- gdb/xcoffexec.c | 14 ++-- 11 files changed, 231 insertions(+), 65 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 54d26a09feb..8f2135ce93f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,26 @@ +Sat Mar 19 08:51:12 1994 Jim Kingdon (kingdon@lioth.cygnus.com) + + * Makefile.in (TAGS): Use variables directly, rather than using + find, to locate TM_FILE, XM_FILE, and NAT_FILE. This is faster + and means that these filenames no longer need be unique across all + the config/* directories. + * configure.in: Put the config/*/ into TM_FILE, etc. + + * m68k-stub.c (computeSignal): Return SIGFPE, not SIGURG, for chk + and trapv exceptions. + + * target.h (struct section_table), objfiles.h (struct obj_section): + Change name of field sec_ptr to the_bfd_section. More mnemonic + and avoids the (sort of, for the ptx compiler) name clash with + the name of the typedef. + * exec.c, xcoffexec.c, sparc-tdep.c, rs6000-nat.c, osfsolib.c, + solib.c, irix5-nat.c, objfiles.c, remote.c: Change users. + + * utils.c: Include readline.h. + * Makefile.in (utils.o): Add dependency. + + * remote.c (getpkt): Add support for run-length encoding. + Fri Mar 18 19:11:15 1994 Steve Chamberlain (sac@jonny.cygnus.com) * utils.c (prompt_for_continue): Call readline, not gdb_readline. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index b5effb9996a..535b9843602 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -495,7 +495,8 @@ gdb.z:gdb.1 # install-only is intended to address that need. install: all install-only install-only: - transformed_name=`echo gdb | sed '$(program_transform_name)'` ; \ + transformed_name=`t='$(program_transform_name)'; \ + echo gdb | sed -e "s/brokensed/brokensed/" $$t` ; \ if test "x$$transformed_name" = x; then \ transformed_name=gdb ; \ else \ @@ -629,9 +630,9 @@ kdb: $(NTSSTART) $(OBS) $(NTSOBS) $(ADD_DEPS) $(CDEPS) TAGS: $(TAGFILES_NO_SRCDIR) $(TAGFILES_WITH_SRCDIR) @echo Making TAGS - @etags `find $(srcdir)/config \( -name $(TM_FILE) \ - -o -name $(XM_FILE) \ - -o -name $(NAT_FILE) \) -print` \ + @etags $(srcdir)/$(TM_FILE) \ + $(srcdir)/$(XM_FILE) \ + $(srcdir)/$(NAT_FILE) \ `(for i in $(DEPFILES) $(TAGFILES_NO_SRCDIR); do \ echo $(srcdir)/$$i ; \ done ; for i in $(TAGFILES_WITH_SRCDIR); do \ @@ -1392,7 +1393,7 @@ remote-z8k.o: remote-z8k.c $(wait_h) $(srcdir)/../sim/z8k/sim.h \ $(defs_h) $(gdbcore_h) $(inferior_h) target.h terminal.h remote-utils.o: remote-utils.c $(defs_h) $(gdbcmd_h) $(gdbcore_h) \ - $(inferior_h) $(remote_utils_h) + $(inferior_h) $(remote_utils_h) remote.o: remote.c $(bfd_h) $(wait_h) $(defs_h) $(gdbcmd_h) \ $(inferior_h) $(remote_utils_h) symfile.h terminal.h @@ -1467,7 +1468,7 @@ ultra3-xdep.o: ultra3-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h) umax-xdep.o: umax-xdep.c $(defs_h) $(gdbcore_h) $(inferior_h) utils.o: utils.c $(bfd_h) $(defs_h) $(expression_h) $(gdbcmd_h) \ - language.h signals.h target.h terminal.h + language.h signals.h target.h terminal.h $(readline_headers) valarith.o: valarith.c $(bfd_h) $(defs_h) $(expression_h) \ $(gdbtypes_h) language.h $(symtab_h) target.h $(value_h) diff --git a/gdb/configure.in b/gdb/configure.in index 5f787481709..b281b983707 100644 --- a/gdb/configure.in +++ b/gdb/configure.in @@ -400,3 +400,8 @@ if [ "${nativefile}" = "" ] ; then < Makefile > Makefile.tem mv -f Makefile.tem Makefile fi + +sed -e '/^TM_FILE[ ]*=/s,^TM_FILE[ ]*=[ ]*,&config/'"${gdb_target_cpu}"'/, +/^XM_FILE[ ]*=/s,^XM_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/, +/^NAT_FILE[ ]*=/s,^NAT_FILE[ ]*=[ ]*,&config/'"${gdb_host_cpu}"'/,' Makefile.tmp +mv -f Makefile.tmp Makefile diff --git a/gdb/irix5-nat.c b/gdb/irix5-nat.c index 55d6d3e3618..ad0321dddaf 100644 --- a/gdb/irix5-nat.c +++ b/gdb/irix5-nat.c @@ -350,7 +350,7 @@ solib_map_sections (so) p -> addr += (CORE_ADDR) LM_ADDR (so); p -> endaddr += (CORE_ADDR) LM_ADDR (so); so -> lmend = (CORE_ADDR) max (p -> endaddr, so -> lmend); - if (STREQ (p -> sec_ptr -> name, ".text")) + if (STREQ (p -> the_bfd_section -> name, ".text")) { so -> textsection = p; } diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 381a095b15b..6c6dfc20724 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -83,7 +83,7 @@ add_to_objfile_sections (abfd, asect, objfile_p_char) return; section.offset = 0; section.objfile = objfile; - section.sec_ptr = asect; + section.the_bfd_section = asect; section.addr = bfd_section_vma (abfd, asect); section.endaddr = section.addr + bfd_section_size (abfd, asect); obstack_grow (&objfile->psymbol_obstack, §ion, sizeof(section)); diff --git a/gdb/objfiles.h b/gdb/objfiles.h index ac34668ac5f..252a75d1e46 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -140,14 +140,9 @@ struct obj_section { addresses. */ CORE_ADDR offset; - /* For the ptx compiler, we can't use the sec_ptr typedef when the field's - name is sec_ptr. We really should rename the field (or better yet, - the typedef should be bfd_sec_ptr). */ - struct sec *sec_ptr; /* BFD section pointer */ - - /* Objfile this section is part of. Not currently used, but I'm sure - that someone will want the bfd that the sec_ptr goes with or something - like that before long. */ + sec_ptr the_bfd_section; /* BFD section pointer */ + + /* Objfile this section is part of. */ struct objfile *objfile; }; diff --git a/gdb/osfsolib.c b/gdb/osfsolib.c index 7f0d1a5ecee..843448a681b 100644 --- a/gdb/osfsolib.c +++ b/gdb/osfsolib.c @@ -214,7 +214,7 @@ solib_map_sections (so) p -> addr += (CORE_ADDR) LM_ADDR (so); p -> endaddr += (CORE_ADDR) LM_ADDR (so); so -> lmend = (CORE_ADDR) max (p -> endaddr, so -> lmend); - if (STREQ (p -> sec_ptr -> name, ".text")) + if (STREQ (p -> the_bfd_section -> name, ".text")) { so -> textsection = p; } diff --git a/gdb/remote.c b/gdb/remote.c index 87437a17798..7240f0b5277 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1,5 +1,5 @@ /* Remote target communications for serial-line targets in custom GDB protocol - Copyright 1988, 1991, 1992, 1993 Free Software Foundation, Inc. + Copyright 1988, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. This file is part of GDB. @@ -116,7 +116,16 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ we can extend the protocol and GDB can tell whether the stub it is talking to uses the old or the new. -*/ + search tAA:PP,MM Search backward starting at address + AA for a match with pattern PP and + mask MM. PP and MM are 4 bytes. + Not supported by all stubs. + + Responses can be run-length encoded to save space. A '*' means that + the next two characters are hex digits giving a repeat count which + stands for that many repititions of the character preceding the '*'. + Note that this means that responses cannot contain '*'. Example: + "0*03" means the same as "0000". */ #include "defs.h" #include @@ -164,7 +173,7 @@ static void remote_fetch_registers PARAMS ((int regno)); static void -remote_resume PARAMS ((int pid, int step, int siggnal)); +remote_resume PARAMS ((int pid, int step, enum target_signal siggnal)); static int remote_start_remote PARAMS ((char *dummy)); @@ -190,8 +199,7 @@ remote_send PARAMS ((char *buf)); static int readchar PARAMS ((void)); -static int -remote_wait PARAMS ((int pid, WAITTYPE *status)); +static int remote_wait PARAMS ((int pid, struct target_waitstatus *status)); static int tohex PARAMS ((int nib)); @@ -301,10 +309,13 @@ device is attached to the remote system (e.g. /dev/ttya)."); if (!remote_desc) perror_with_name (name); - if (SERIAL_SETBAUDRATE (remote_desc, baud_rate)) + if (baud_rate != -1) { - SERIAL_CLOSE (remote_desc); - perror_with_name (name); + if (SERIAL_SETBAUDRATE (remote_desc, baud_rate)) + { + SERIAL_CLOSE (remote_desc); + perror_with_name (name); + } } SERIAL_RAW (remote_desc); @@ -381,7 +392,8 @@ tohex (nib) static void remote_resume (pid, step, siggnal) - int pid, step, siggnal; + int pid, step; + enum target_signal siggnal; { char buf[PBUFSIZ]; @@ -389,13 +401,9 @@ remote_resume (pid, step, siggnal) { char *name; target_terminal_ours_for_output (); - printf_filtered ("Can't send signals to a remote system. "); - name = strsigno (siggnal); - if (name) - printf_filtered (name); - else - printf_filtered ("Signal %d", siggnal); - printf_filtered (" not sent.\n"); + printf_filtered + ("Can't send signals to a remote system. %s not sent.\n", + target_signal_to_name (siggnal)); target_terminal_inferior (); } @@ -461,11 +469,12 @@ Give up (and stop debugging it)? ")) static int remote_wait (pid, status) int pid; - WAITTYPE *status; + struct target_waitstatus *status; { unsigned char buf[PBUFSIZ]; - WSETEXIT ((*status), 0); + status->kind = TARGET_WAITKIND_EXITED; + status->value.integer = 0; while (1) { @@ -589,7 +598,7 @@ remote_wait (pid, status) { flagword flags; - flags = bfd_get_section_flags (abfd, s->sec_ptr); + flags = bfd_get_section_flags (abfd, s->the_bfd_section); if (flags & SEC_CODE) { @@ -614,7 +623,8 @@ remote_wait (pid, status) else if (buf[0] == 'W') { /* The remote process exited. */ - WSETEXIT (*status, (fromhex (buf[1]) << 4) + fromhex (buf[2])); + status->kind = TARGET_WAITKIND_EXITED; + status->value.integer = (fromhex (buf[1]) << 4) + fromhex (buf[2]); return 0; } else if (buf[0] == 'S') @@ -623,7 +633,9 @@ remote_wait (pid, status) warning ("Invalid remote reply: %s", buf); } - WSETSTOP ((*status), (((fromhex (buf[1])) << 4) + (fromhex (buf[2])))); + status->kind = TARGET_WAITKIND_STOPPED; + status->value.sig = (enum target_signal) + (((fromhex (buf[1])) << 4) + (fromhex (buf[2]))); return 0; } @@ -901,9 +913,11 @@ remote_xfer_memory(memaddr, myaddr, len, should_write, target) xfersize = len; if (should_write) - bytes_xferred = remote_write_bytes (memaddr, myaddr, xfersize); + bytes_xferred = remote_write_bytes (memaddr, + (unsigned char *)myaddr, xfersize); else - bytes_xferred = remote_read_bytes (memaddr, myaddr, xfersize); + bytes_xferred = remote_read_bytes (memaddr, + (unsigned char *)myaddr, xfersize); /* If we get an error, we are done xferring. */ if (bytes_xferred == 0) @@ -917,6 +931,80 @@ remote_xfer_memory(memaddr, myaddr, len, should_write, target) return total_xferred; } +#if 0 +/* Enable after 4.12. */ + +void +remote_search (len, data, mask, startaddr, increment, lorange, hirange + addr_found, data_found) + int len; + char *data; + char *mask; + CORE_ADDR startaddr; + int increment; + CORE_ADDR lorange; + CORE_ADDR hirange; + CORE_ADDR *addr_found; + char *data_found; +{ + if (increment == -4 && len == 4) + { + long mask_long, data_long; + long data_found_long; + CORE_ADDR addr_we_found; + char buf[PBUFSIZ]; + long returned_long[2]; + char *p; + + mask_long = extract_unsigned_integer (mask, len); + data_long = extract_unsigned_integer (data, len); + sprintf (buf, "t%x:%x,%x", startaddr, data_long, mask_long); + putpkt (buf); + getpkt (buf, 0); + if (buf[0] == '\0') + { + /* The stub doesn't support the 't' request. We might want to + remember this fact, but on the other hand the stub could be + switched on us. Maybe we should remember it only until + the next "target remote". */ + generic_search (len, data, mask, startaddr, increment, lorange, + hirange, addr_found, data_found); + return; + } + + if (buf[0] == 'E') + /* There is no correspondance between what the remote protocol uses + for errors and errno codes. We would like a cleaner way of + representing errors (big enough to include errno codes, bfd_error + codes, and others). But for now just use EIO. */ + memory_error (EIO, startaddr); + p = buf; + addr_we_found = 0; + while (*p != '\0' && *p != ',') + addr_we_found = (addr_we_found << 4) + fromhex (*p++); + if (*p == '\0') + error ("Protocol error: short return for search"); + + data_found_long = 0; + while (*p != '\0' && *p != ',') + data_found_long = (data_found_long << 4) + fromhex (*p++); + /* Ignore anything after this comma, for future extensions. */ + + if (addr_we_found < lorange || addr_we_found >= hirange) + { + *addr_found = 0; + return; + } + + *addr_found = addr_we_found; + *data_found = store_unsigned_integer (data_we_found, len); + return; + } + generic_search (len, data, mask, startaddr, increment, lorange, + hirange, addr_found, data_found); +} +#endif /* 0 */ + static void remote_files_info (ignore) struct target_ops *ignore; @@ -1027,11 +1115,18 @@ putpkt (buf) break; /* Here to retransmit */ } +#if 0 + /* This is wrong. If doing a long backtrace, the user should be + able to get out next time we call QUIT, without anything as violent + as interrupt_query. If we want to provide a way out of here + without getting to the next QUIT, it should be based on hitting + ^C twice as in remote_wait. */ if (quit_flag) { quit_flag = 0; interrupt_query (); } +#endif } } @@ -1041,8 +1136,8 @@ putpkt (buf) while the target is executing user code. */ static void -getpkt (buf, forever) - char *buf; +getpkt (retbuf, forever) + char *retbuf; int forever; { char *bp; @@ -1050,15 +1145,24 @@ getpkt (buf, forever) int c = 0; unsigned char c1, c2; int retries = 0; + char buf[PBUFSIZ]; + #define MAX_RETRIES 10 while (1) { +#if 0 + /* This is wrong. If doing a long backtrace, the user should be + able to get out time next we call QUIT, without anything as violent + as interrupt_query. If we want to provide a way out of here + without getting to the next QUIT, it should be based on hitting + ^C twice as in remote_wait. */ if (quit_flag) { quit_flag = 0; interrupt_query (); } +#endif /* This can loop forever if the remote side sends us characters continuously, but if it pauses, we'll get a zero from readchar @@ -1138,8 +1242,36 @@ whole: } } -out: + /* Deal with run-length encoding. */ + { + char *src = buf; + char *dest = retbuf; + int i; + int repeat; + do { + if (*src == '*') + { + if (src[1] == '\0' || src[2] == '\0') + { + if (remote_debug) + puts_filtered ("Packet too short, retrying\n"); + goto whole; + } + repeat = (fromhex (src[1]) << 4) + fromhex (src[2]); + for (i = 0; i < repeat; ++i) + { + *dest++ = src[-1]; + } + src += 2; + } + else + { + *dest++ = *src; + } + } while (*src++ != '\0'); + } +out: SERIAL_WRITE (remote_desc, "+", 1); if (remote_debug) diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c index 1d8b5ec3d3a..3da0c016505 100644 --- a/gdb/rs6000-nat.c +++ b/gdb/rs6000-nat.c @@ -315,17 +315,17 @@ vmap_symtab (vp) struct obj_section *s; for (s = objfile->sections; s < objfile->sections_end; ++s) { - if (s->sec_ptr->target_index == textsec->target_index) + if (s->the_bfd_section->target_index == textsec->target_index) { s->addr += text_delta; s->endaddr += text_delta; } - else if (s->sec_ptr->target_index == datasec->target_index) + else if (s->the_bfd_section->target_index == datasec->target_index) { s->addr += data_delta; s->endaddr += data_delta; } - else if (s->sec_ptr->target_index == bsssec->target_index) + else if (s->the_bfd_section->target_index == bsssec->target_index) { s->addr += bss_delta; s->endaddr += bss_delta; @@ -555,12 +555,12 @@ vmap_exec () for (i=0; &exec_ops.to_sections[i] < exec_ops.to_sections_end; i++) { - if (STREQ(".text", exec_ops.to_sections[i].sec_ptr->name)) + if (STREQ(".text", exec_ops.to_sections[i].the_bfd_section->name)) { exec_ops.to_sections[i].addr += vmap->tstart; exec_ops.to_sections[i].endaddr += vmap->tstart; } - else if (STREQ(".data", exec_ops.to_sections[i].sec_ptr->name)) + else if (STREQ(".data", exec_ops.to_sections[i].the_bfd_section->name)) { exec_ops.to_sections[i].addr += vmap->dstart; exec_ops.to_sections[i].endaddr += vmap->dstart; @@ -727,15 +727,15 @@ bfd_err: and if vp->tstart is 0xd0002000, then the first byte of the text section on disk corresponds to address 0xd0002200. */ stp->bfd = vp->bfd; - stp->sec_ptr = bfd_get_section_by_name (stp->bfd, ".text"); - stp->addr = bfd_section_vma (stp->bfd, stp->sec_ptr) + vp->tstart; - stp->endaddr = bfd_section_vma (stp->bfd, stp->sec_ptr) + vp->tend; + stp->the_bfd_section = bfd_get_section_by_name (stp->bfd, ".text"); + stp->addr = bfd_section_vma (stp->bfd, stp->the_bfd_section) + vp->tstart; + stp->endaddr = bfd_section_vma (stp->bfd, stp->the_bfd_section) + vp->tend; stp++; stp->bfd = vp->bfd; - stp->sec_ptr = bfd_get_section_by_name (stp->bfd, ".data"); - stp->addr = bfd_section_vma (stp->bfd, stp->sec_ptr) + vp->dstart; - stp->endaddr = bfd_section_vma (stp->bfd, stp->sec_ptr) + vp->dend; + stp->the_bfd_section = bfd_get_section_by_name (stp->bfd, ".data"); + stp->addr = bfd_section_vma (stp->bfd, stp->the_bfd_section) + vp->dstart; + stp->endaddr = bfd_section_vma (stp->bfd, stp->the_bfd_section) + vp->dend; } vmap_symtab (vp); diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c index 7deca286020..060d29a4989 100644 --- a/gdb/sparc-tdep.c +++ b/gdb/sparc-tdep.c @@ -1,5 +1,6 @@ /* Target-dependent code for the SPARC for GDB, the GNU debugger. - Copyright 1986, 1987, 1989, 1991, 1992, 1993 Free Software Foundation, Inc. + Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994 + Free Software Foundation, Inc. This file is part of GDB. @@ -175,6 +176,15 @@ sparc_frame_saved_pc (frame) CORE_ADDR sigcontext_addr; char scbuf[TARGET_PTR_BIT / HOST_CHAR_BIT]; + int saved_pc_offset = SIGCONTEXT_PC_OFFSET; + char *name = NULL; + + /* Solaris2 ucbsigvechandler passes a pointer to a sigcontext + as the third parameter. The offset to the saved pc is 12. */ + find_pc_partial_function (frame->pc, &name, + (CORE_ADDR *)NULL,(CORE_ADDR *)NULL); + if (name && STREQ (name, "ucbsigvechandler")) + saved_pc_offset = 12; /* The sigcontext address is contained in register O2. */ get_saved_register (buf, (int *)NULL, (CORE_ADDR *)NULL, @@ -183,7 +193,7 @@ sparc_frame_saved_pc (frame) /* Don't cause a memory_error when accessing sigcontext in case the stack layout has changed or the stack is corrupt. */ - target_read_memory (sigcontext_addr + SIGCONTEXT_PC_OFFSET, + target_read_memory (sigcontext_addr + saved_pc_offset, scbuf, sizeof (scbuf)); return extract_address (scbuf, sizeof (scbuf)); } @@ -788,8 +798,8 @@ in_solib_trampoline(pc, name) s = find_pc_section(pc); retval = (s != NULL - && s->sec_ptr->name != NULL - && STREQ (s->sec_ptr->name, ".plt")); + && s->the_bfd_section->name != NULL + && STREQ (s->the_bfd_section->name, ".plt")); return(retval); } diff --git a/gdb/xcoffexec.c b/gdb/xcoffexec.c index 95a713a054b..892e2d81e72 100644 --- a/gdb/xcoffexec.c +++ b/gdb/xcoffexec.c @@ -219,7 +219,7 @@ add_to_section_table (abfd, asect, table_pp_char) if (0 == bfd_section_size (abfd, asect)) return; (*table_pp)->bfd = abfd; - (*table_pp)->sec_ptr = asect; + (*table_pp)->the_bfd_section = asect; (*table_pp)->addr = bfd_section_vma (abfd, asect); (*table_pp)->endaddr = (*table_pp)->addr + bfd_section_size (abfd, asect); (*table_pp)++; @@ -357,7 +357,7 @@ xfer_memory (memaddr, myaddr, len, write, target) if (p->endaddr >= memend) { /* Entire transfer is within this section. */ - res = xfer_fn (p->bfd, p->sec_ptr, myaddr, memaddr - p->addr, len); + res = xfer_fn (p->bfd, p->the_bfd_section, myaddr, memaddr - p->addr, len); return (res != false)? len: 0; } else if (p->endaddr <= memaddr) @@ -369,7 +369,7 @@ xfer_memory (memaddr, myaddr, len, write, target) { /* This section overlaps the transfer. Just do half. */ len = p->endaddr - memaddr; - res = xfer_fn (p->bfd, p->sec_ptr, myaddr, memaddr - p->addr, len); + res = xfer_fn (p->bfd, p->the_bfd_section, myaddr, memaddr - p->addr, len); return (res != false)? len: 0; } else if (p->addr < nextsectaddr) @@ -401,8 +401,8 @@ print_section_info (t, abfd) local_hex_string_custom ((unsigned long) p->endaddr, "08l")); if (info_verbose) printf_filtered (" @ %s", - local_hex_string_custom ((unsigned long) p->sec_ptr->filepos, "08l")); - printf_filtered (" is %s", bfd_section_name (p->bfd, p->sec_ptr)); + local_hex_string_custom ((unsigned long) p->the_bfd_section->filepos, "08l")); + printf_filtered (" is %s", bfd_section_name (p->bfd, p->the_bfd_section)); if (p->bfd != abfd) { printf_filtered (" in %s", bfd_get_filename (p->bfd)); } @@ -511,8 +511,8 @@ set_section_command (args, from_tty) secaddr = parse_and_eval_address (args); for (p = exec_ops.to_sections; p < exec_ops.to_sections_end; p++) { - if (!strncmp (secname, bfd_section_name (exec_bfd, p->sec_ptr), seclen) - && bfd_section_name (exec_bfd, p->sec_ptr)[seclen] == '\0') { + if (!strncmp (secname, bfd_section_name (exec_bfd, p->the_bfd_section), seclen) + && bfd_section_name (exec_bfd, p->the_bfd_section)[seclen] == '\0') { offset = secaddr - p->addr; p->addr += offset; p->endaddr += offset; -- 2.30.2