diff options
author | Geoffrey Noer <noer@cygnus> | 1996-07-18 08:29:09 +0000 |
---|---|---|
committer | Geoffrey Noer <noer@cygnus> | 1996-07-18 08:29:09 +0000 |
commit | 3f17fed8f1e79ab7559f0cbb1450c0a910dd07e6 (patch) | |
tree | bdcec051a4386d0c59041ddfcc17ba5e11d36f96 | |
parent | 4fa14cf71c086365452d4bcde51b5c5ecb64aaf2 (diff) | |
download | gdb-3f17fed8f1e79ab7559f0cbb1450c0a910dd07e6.zip gdb-3f17fed8f1e79ab7559f0cbb1450c0a910dd07e6.tar.gz gdb-3f17fed8f1e79ab7559f0cbb1450c0a910dd07e6.tar.bz2 |
Thu Jul 18 01:22:01 1996 Geoffrey Noer <noer@cygnus.com>
* symfile.c (symfile_bfd_open):
* exec.c (exec_file_command): for __GO32__ and __WIN32__ systems,
free the user from having to type the .exe extension.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/exec.c | 21 | ||||
-rw-r--r-- | gdb/symfile.c | 9 |
3 files changed, 34 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 85c8aaa..22ce466 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +Thu Jul 18 01:22:01 1996 Geoffrey Noer <noer@cygnus.com> + + * symfile.c (symfile_bfd_open): + * exec.c (exec_file_command): for __GO32__ and __WIN32__ systems, + free the user from having to type the .exe extension. + Wed Jul 17 06:54:50 1996 Mark Alexander <marka@cygnus.com> * mon960-rom.c: Shorten the mon960_inits string to a single @@ -15,7 +15,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "defs.h" #include "frame.h" @@ -183,13 +183,30 @@ exec_file_command (args, from_tty) scratch_chan = openp (getenv ("PATH"), 1, filename, write_files? O_RDWR|O_BINARY: O_RDONLY|O_BINARY, 0, &scratch_pathname); +#if defined(__GO32__) || defined(__WIN32__) + if (scratch_chan < 0) + { + char *exename = alloca (strlen (filename) + 5); + strcat (strcpy (exename, filename), ".exe"); + scratch_chan = openp (getenv ("PATH"), 1, exename, write_files ? + O_RDWR|O_BINARY : O_RDONLY|O_BINARY, 0, &scratch_pathname); + } +#endif if (scratch_chan < 0) perror_with_name (filename); - exec_bfd = bfd_fdopenr (scratch_pathname, gnutarget, scratch_chan); + if (!exec_bfd) error ("\"%s\": could not open as an executable file: %s", scratch_pathname, bfd_errmsg (bfd_get_error ())); + + /* At this point, scratch_pathname and exec_bfd->name both point to the + same malloc'd string. However exec_close() will attempt to free it + via the exec_bfd->name pointer, so we need to make another copy and + leave exec_bfd as the new owner of the original copy. */ + scratch_pathname = strdup (scratch_pathname); + make_cleanup (free, scratch_pathname); + if (!bfd_check_format (exec_bfd, bfd_object)) { /* Make sure to close exec_bfd, or else "run" might try to use diff --git a/gdb/symfile.c b/gdb/symfile.c index cdf12a6..1d91e7f 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -838,6 +838,15 @@ symfile_bfd_open (name) /* Look down path for it, allocate 2nd new malloc'd copy. */ desc = openp (getenv ("PATH"), 1, name, O_RDONLY | O_BINARY, 0, &absolute_name); +#if defined(__GO32__) || defined(__WIN32__) + if (desc < 0) + { + char *exename = alloca (strlen (name) + 5); + strcat (strcpy (exename, name), ".exe"); + desc = openp (getenv ("PATH"), 1, exename, O_RDONLY | O_BINARY, + 0, &absolute_name); + } +#endif if (desc < 0) { make_cleanup (free, name); |