home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: gnu.gdb.bug
- Path: sparky!uunet!cis.ohio-state.edu!andrew.cmu.edu!rr2b+
- From: rr2b+@andrew.cmu.edu (Robert Andrew Ryan)
- Subject: rs6000 dynamic loading patch
- Message-ID: <MfBEuxi00WoiFOW1AI@andrew.cmu.edu>
- Sender: gnulists@ai.mit.edu
- Organization: GNUs Not Usenet
- Distribution: gnu
- Date: Sun, 20 Dec 1992 14:24:29 GMT
- Approved: bug-gdb@prep.ai.mit.edu
- Lines: 124
-
- The changes below let the user load symbols for objects load(2)ed after
- startup. (The current gdb-4.7 only allows symbols to be loaded for
- shared libraries present when the exec finished.) For this to be useful
- you should apply the patch I posted previously for xcoffexec.c. (It's a
- small patch I can send on request if necessary.)
-
- -Rob Ryan
-
- Sun Dec 20 16:01:59 EST 1992 Rob Ryan (robr@cmu.edu)
-
- * inftarg.c: Added CHILD_TO_LOAD macro, indicating a
- function to call to dynamically load a file into the child.
- * rs6000-tdep.c: Bumped MAX_LOAD_SEGS to 256 from 64.
- Added rs6000_child_to_load, a partial implementation for
- use with the CHILD_TO_LOAD macro referenced in inftarg.c.
- * tm-rs6000.h: Added extern decl for rs6000_child_to_load.
- Added #define of CHILD_TO_LOAD.
-
-
- diff -c ./inftarg.c ../changed/inftarg.c
- *** ./inftarg.c Sun Dec 20 16:37:08 1992
- --- ../changed/inftarg.c Sun Dec 20 16:38:27 1992
- ***************
- *** 247,252 ****
- --- 247,255 ----
- return(1);
- }
-
- + #ifndef CHILD_TO_LOAD
- + #define CHILD_TO_LOAD 0
- + #endif
- struct target_ops child_ops = {
- "child", /* to_shortname */
- "Unix child process", /* to_longname */
- ***************
- *** 270,276 ****
- terminal_ours, /* to_terminal_ours */
- child_terminal_info, /* to_terminal_info */
- kill_inferior, /* to_kill */
- ! 0, /* to_load */
- 0, /* to_lookup_symbol */
- child_create_inferior, /* to_create_inferior */
- child_mourn_inferior, /* to_mourn_inferior */
- --- 273,279 ----
- terminal_ours, /* to_terminal_ours */
- child_terminal_info, /* to_terminal_info */
- kill_inferior, /* to_kill */
- ! CHILD_TO_LOAD, /* to_load */
- 0, /* to_lookup_symbol */
- child_create_inferior, /* to_create_inferior */
- child_mourn_inferior, /* to_mourn_inferior */
- diff -c ./rs6000-tdep.c ../changed/rs6000-tdep.c
- *** ./rs6000-tdep.c Sun Dec 20 16:37:09 1992
- --- ../changed/rs6000-tdep.c Sun Dec 20 16:38:27 1992
- ***************
- *** 1052,1058 ****
- xcoff_relocate_symtab (pid)
- unsigned int pid;
- {
- ! #define MAX_LOAD_SEGS 64 /* maximum number of load segments */
-
- struct ld_info *ldi;
- int temp;
- --- 1052,1058 ----
- xcoff_relocate_symtab (pid)
- unsigned int pid;
- {
- ! #define MAX_LOAD_SEGS 256 /* maximum number of load segments, bumped
- from 64 to 256 Rob Ryan Dec 7, 1992 */
-
- struct ld_info *ldi;
- int temp;
- ***************
- *** 1164,1170 ****
- ++loadinfotextindex;
- }
-
- !
- /* FIXME: This assumes that the "textorg" and "dataorg" elements
- of a member of this array are correlated with the "toc_offset"
- element of the same member. But they are sequentially assigned in wildly
- --- 1164,1187 ----
- ++loadinfotextindex;
- }
-
- ! /* FIXME: this enables loading of symbols
- ! for objects which have already been read
- ! in, but does not actually dynamically load
- ! FILE into the running child as the
- ! docs say. -Rob Ryan Dec 7,1992*/
- ! void
- ! rs6000_child_to_load (arg, from_tty)
- ! char *arg;
- ! int from_tty;
- ! {
- ! if(inferior_pid > 0) {
- ! xcoff_relocate_symtab (inferior_pid);
- ! }
- ! else {
- ! error ("Must have an inferior process to use the load command.");
- ! }
- ! solib_add (arg, from_tty, (struct target_ops *)0);
- ! }
- /* FIXME: This assumes that the "textorg" and "dataorg" elements
- of a member of this array are correlated with the "toc_offset"
- element of the same member. But they are sequentially assigned in wildly
- diff -c ./tm-rs6000.h ../changed/tm-rs6000.h
- *** ./tm-rs6000.h Sun Dec 20 16:37:10 1992
- --- ../changed/tm-rs6000.h Sun Dec 20 16:38:28 1992
- ***************
- *** 613,618 ****
- --- 613,623 ----
- } \
- }
-
- + extern void rs6000_child_to_load PARAMS((char *arg, int from_tty));
- + /* CHILD_TO_LOAD should be defined to the name
- + of a function to be called for the child target
- + to dynamically load a file into the inferior process */
- + #define CHILD_TO_LOAD rs6000_child_to_load
-
- /* Flag for machine-specific stuff in shared files. FIXME */
- #define IBM6000_TARGET
-
-