X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fgo32-nat.c;h=454834ee718214bdd0c8dd7caab70d1b5150262c;hb=216d22bc1ddda52fc28a8d5598179094de04bf3e;hp=307956bd6a057377fef700cd41c2ffb4bc8e8faa;hpb=63c73a17b2d39084dd1866993d1d9f39401ce66a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c index 307956bd6a..454834ee71 100644 --- a/gdb/go32-nat.c +++ b/gdb/go32-nat.c @@ -1,5 +1,6 @@ /* Native debugging support for Intel x86 running DJGPP. - Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2000, 2001, 2005, 2006 + Free Software Foundation, Inc. Written by Robert Hoehne. This file is part of GDB. @@ -16,8 +17,8 @@ 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., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ #include @@ -29,10 +30,12 @@ #include "gdbcmd.h" #include "floatformat.h" #include "buildsym.h" -#include "i387-nat.h" +#include "i387-tdep.h" +#include "i386-tdep.h" #include "value.h" #include "regcache.h" #include "gdb_string.h" +#include "top.h" #include /* might be required for __DJGPP_MINOR__ */ #include @@ -182,7 +185,7 @@ static int go32_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, static void go32_files_info (struct target_ops *target); static void go32_stop (void); static void go32_kill_inferior (void); -static void go32_create_inferior (char *exec_file, char *args, char **env); +static void go32_create_inferior (char *exec_file, char *args, char **env, int from_tty); static void go32_mourn_inferior (void); static int go32_can_run (void); @@ -306,9 +309,9 @@ go32_close (int quitting) static void go32_attach (char *args, int from_tty) { - error ("\ + error (_("\ You cannot attach to a running program on this platform.\n\ -Use the `run' command to run DJGPP programs."); +Use the `run' command to run DJGPP programs.")); } static void @@ -465,12 +468,13 @@ static void fetch_register (int regno) { if (regno < FP0_REGNUM) - supply_register (regno, (char *) &a_tss + regno_mapping[regno].tss_ofs); - else if (FP_REGNUM_P (regno) || FPC_REGNUM_P (regno)) - i387_supply_register (regno, (char *) &npx); + regcache_raw_supply (current_regcache, regno, + (char *) &a_tss + regno_mapping[regno].tss_ofs); + else if (i386_fp_regnum_p (regno) || i386_fpc_regnum_p (regno)) + i387_supply_fsave (current_regcache, regno, &npx); else internal_error (__FILE__, __LINE__, - "Invalid register no. %d in fetch_register.", regno); + _("Invalid register no. %d in fetch_register."), regno); } static void @@ -482,7 +486,7 @@ go32_fetch_registers (int regno) { for (regno = 0; regno < FP0_REGNUM; regno++) fetch_register (regno); - i387_supply_fsave ((char *) &npx); + i387_supply_fsave (current_regcache, -1, &npx); } } @@ -490,12 +494,13 @@ static void store_register (int regno) { if (regno < FP0_REGNUM) - regcache_collect (regno, (void *) &a_tss + regno_mapping[regno].tss_ofs); - else if (FP_REGNUM_P (regno) || FPC_REGNUM_P (regno)) + regcache_raw_collect (current_regcache, regno, + (char *) &a_tss + regno_mapping[regno].tss_ofs); + else if (i386_fp_regnum_p (regno) || i386_fpc_regnum_p (regno)) i387_fill_fsave ((char *) &npx, regno); else internal_error (__FILE__, __LINE__, - "Invalid register no. %d in store_register.", regno); + _("Invalid register no. %d in store_register."), regno); } static void @@ -573,7 +578,7 @@ go32_kill_inferior (void) } static void -go32_create_inferior (char *exec_file, char *args, char **env) +go32_create_inferior (char *exec_file, char *args, char **env, int from_tty) { extern char **environ; jmp_buf start_state; @@ -601,7 +606,7 @@ go32_create_inferior (char *exec_file, char *args, char **env) /* Init command line storage. */ if (redir_debug_init (&child_cmd) == -1) internal_error (__FILE__, __LINE__, - "Cannot allocate redirection storage: not enough memory.\n"); + _("Cannot allocate redirection storage: not enough memory.\n")); /* Parse the command line and create redirections. */ if (strpbrk (args, "<>")) @@ -609,7 +614,7 @@ go32_create_inferior (char *exec_file, char *args, char **env) if (redir_cmdline_parse (args, &child_cmd) == 0) args = child_cmd.command; else - error ("Syntax error in command line."); + error (_("Syntax error in command line.")); } else child_cmd.command = xstrdup (args); @@ -618,7 +623,7 @@ go32_create_inferior (char *exec_file, char *args, char **env) /* v2loadimage passes command lines via DOS memory, so it cannot possibly handle commands longer than 1MB. */ if (cmdlen > 1024*1024) - error ("Command line too long."); + error (_("Command line too long.")); cmdline = xmalloc (cmdlen + 4); strcpy (cmdline + 1, args); @@ -653,7 +658,6 @@ go32_create_inferior (char *exec_file, char *args, char **env) push_target (&go32_ops); clear_proceed_status (); insert_breakpoints (); - proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0); prog_has_started = 1; } @@ -692,7 +696,7 @@ go32_set_dr (int i, CORE_ADDR addr) { if (i < 0 || i > 3) internal_error (__FILE__, __LINE__, - "Invalid register %d in go32_set_dr.\n", i); + _("Invalid register %d in go32_set_dr.\n"), i); D_REGS[i] = addr; } @@ -802,8 +806,8 @@ go32_terminal_inferior (void) if (redir_to_child (&child_cmd) == -1) { redir_to_debugger (&child_cmd); - error ("Cannot redirect standard handles for program: %s.", - strerror (errno)); + error (_("Cannot redirect standard handles for program: %s."), + safe_strerror (errno)); } /* set the console device of the inferior to whatever mode (raw or cooked) we found it last time */ @@ -836,8 +840,8 @@ go32_terminal_ours (void) if (redir_to_debugger (&child_cmd) == -1) { redir_to_child (&child_cmd); - error ("Cannot redirect standard handles for debugger: %s.", - strerror (errno)); + error (_("Cannot redirect standard handles for debugger: %s."), + safe_strerror (errno)); } } } @@ -858,7 +862,7 @@ init_go32_ops (void) go32_ops.to_fetch_registers = go32_fetch_registers; go32_ops.to_store_registers = go32_store_registers; go32_ops.to_prepare_to_store = go32_prepare_to_store; - go32_ops.to_xfer_memory = go32_xfer_memory; + go32_ops.deprecated_xfer_memory = go32_xfer_memory; go32_ops.to_files_info = go32_files_info; go32_ops.to_insert_breakpoint = memory_insert_breakpoint; go32_ops.to_remove_breakpoint = memory_remove_breakpoint; @@ -887,10 +891,13 @@ init_go32_ops (void) /* Initialize child's command line storage. */ if (redir_debug_init (&child_cmd) == -1) internal_error (__FILE__, __LINE__, - "Cannot allocate redirection storage: not enough memory.\n"); + _("Cannot allocate redirection storage: not enough memory.\n")); /* We are always processing GCC-compiled programs. */ processing_gcc_compilation = 2; + + /* Override the default name of the GDB init file. */ + strcpy (gdbinit, "gdb.ini"); } unsigned short windows_major, windows_minor; @@ -1514,7 +1521,7 @@ go32_sldt (char *arg, int from_tty) if (ldt_entry < 0 || (ldt_entry & 4) == 0 || (ldt_entry & 3) != (cpl & 3)) - error ("Invalid LDT entry 0x%03x.", ldt_entry); + error (_("Invalid LDT entry 0x%03lx."), (unsigned long)ldt_entry); } } @@ -1552,8 +1559,8 @@ go32_sldt (char *arg, int from_tty) if (ldt_entry >= 0) { if (ldt_entry > limit) - error ("Invalid LDT entry %#x: outside valid limits [0..%#x]", - ldt_entry, limit); + error (_("Invalid LDT entry %#lx: outside valid limits [0..%#x]"), + (unsigned long)ldt_entry, limit); display_descriptor (ldt_descr.stype, base, ldt_entry / 8, 1); } @@ -1583,8 +1590,8 @@ go32_sgdt (char *arg, int from_tty) { gdt_entry = parse_and_eval_long (arg); if (gdt_entry < 0 || (gdt_entry & 7) != 0) - error ("Invalid GDT entry 0x%03x: not an integral multiple of 8.", - gdt_entry); + error (_("Invalid GDT entry 0x%03lx: not an integral multiple of 8."), + (unsigned long)gdt_entry); } } @@ -1594,8 +1601,8 @@ go32_sgdt (char *arg, int from_tty) if (gdt_entry >= 0) { if (gdt_entry > gdtr.limit) - error ("Invalid GDT entry %#x: outside valid limits [0..%#x]", - gdt_entry, gdtr.limit); + error (_("Invalid GDT entry %#lx: outside valid limits [0..%#x]"), + (unsigned long)gdt_entry, gdtr.limit); display_descriptor (0, gdtr.base, gdt_entry / 8, 1); } @@ -1624,7 +1631,7 @@ go32_sidt (char *arg, int from_tty) { idt_entry = parse_and_eval_long (arg); if (idt_entry < 0) - error ("Invalid (negative) IDT entry %d.", idt_entry); + error (_("Invalid (negative) IDT entry %ld."), idt_entry); } } @@ -1636,8 +1643,8 @@ go32_sidt (char *arg, int from_tty) if (idt_entry >= 0) { if (idt_entry > idtr.limit) - error ("Invalid IDT entry %#x: outside valid limits [0..%#x]", - idt_entry, idtr.limit); + error (_("Invalid IDT entry %#lx: outside valid limits [0..%#x]"), + (unsigned long)idt_entry, idtr.limit); display_descriptor (1, idtr.base, idt_entry, 1); } @@ -1795,7 +1802,7 @@ go32_pde (char *arg, int from_tty) { pde_idx = parse_and_eval_long (arg); if (pde_idx < 0 || pde_idx >= 1024) - error ("Entry %ld is outside valid limits [0..1023].", pde_idx); + error (_("Entry %ld is outside valid limits [0..1023]."), pde_idx); } } @@ -1833,7 +1840,7 @@ display_page_table (long n, int force) static void go32_pte (char *arg, int from_tty) { - long pde_idx = -1, i; + long pde_idx = -1L, i; if (arg && *arg) { @@ -1844,7 +1851,7 @@ go32_pte (char *arg, int from_tty) { pde_idx = parse_and_eval_long (arg); if (pde_idx < 0 || pde_idx >= 1024) - error ("Entry %d is outside valid limits [0..1023].", pde_idx); + error (_("Entry %ld is outside valid limits [0..1023]."), pde_idx); } } @@ -1872,7 +1879,7 @@ go32_pte_for_address (char *arg, int from_tty) addr = parse_and_eval_address (arg); } if (!addr) - error_no_arg ("linear address"); + error_no_arg (_("linear address")); pdbr = get_cr3 (); if (!pdbr) @@ -1903,43 +1910,43 @@ _initialize_go32_nat (void) init_go32_ops (); add_target (&go32_ops); - add_prefix_cmd ("dos", class_info, go32_info_dos_command, - "Print information specific to DJGPP (a.k.a. MS-DOS) debugging.", + add_prefix_cmd ("dos", class_info, go32_info_dos_command, _("\ +Print information specific to DJGPP (aka MS-DOS) debugging."), &info_dos_cmdlist, "info dos ", 0, &infolist); - add_cmd ("sysinfo", class_info, go32_sysinfo, - "Display information about the target system, including CPU, OS, DPMI, etc.", + add_cmd ("sysinfo", class_info, go32_sysinfo, _("\ +Display information about the target system, including CPU, OS, DPMI, etc."), &info_dos_cmdlist); - add_cmd ("ldt", class_info, go32_sldt, - "Display entries in the LDT (Local Descriptor Table).\n" - "Entry number (an expression) as an argument means display only that entry.", + add_cmd ("ldt", class_info, go32_sldt, _("\ +Display entries in the LDT (Local Descriptor Table).\n\ +Entry number (an expression) as an argument means display only that entry."), &info_dos_cmdlist); - add_cmd ("gdt", class_info, go32_sgdt, - "Display entries in the GDT (Global Descriptor Table).\n" - "Entry number (an expression) as an argument means display only that entry.", + add_cmd ("gdt", class_info, go32_sgdt, _("\ +Display entries in the GDT (Global Descriptor Table).\n\ +Entry number (an expression) as an argument means display only that entry."), &info_dos_cmdlist); - add_cmd ("idt", class_info, go32_sidt, - "Display entries in the IDT (Interrupt Descriptor Table).\n" - "Entry number (an expression) as an argument means display only that entry.", + add_cmd ("idt", class_info, go32_sidt, _("\ +Display entries in the IDT (Interrupt Descriptor Table).\n\ +Entry number (an expression) as an argument means display only that entry."), &info_dos_cmdlist); - add_cmd ("pde", class_info, go32_pde, - "Display entries in the Page Directory.\n" - "Entry number (an expression) as an argument means display only that entry.", + add_cmd ("pde", class_info, go32_pde, _("\ +Display entries in the Page Directory.\n\ +Entry number (an expression) as an argument means display only that entry."), &info_dos_cmdlist); - add_cmd ("pte", class_info, go32_pte, - "Display entries in Page Tables.\n" - "Entry number (an expression) as an argument means display only entries\n" - "from the Page Table pointed to by the specified Page Directory entry.", + add_cmd ("pte", class_info, go32_pte, _("\ +Display entries in Page Tables.\n\ +Entry number (an expression) as an argument means display only entries\n\ +from the Page Table pointed to by the specified Page Directory entry."), &info_dos_cmdlist); - add_cmd ("address-pte", class_info, go32_pte_for_address, - "Display a Page Table entry for a linear address.\n" - "The address argument must be a linear address, after adding to\n" - "it the base address of the appropriate segment.\n" - "The base address of variables and functions in the debuggee's data\n" - "or code segment is stored in the variable __djgpp_base_address,\n" - "so use `__djgpp_base_address + (char *)&var' as the argument.\n" - "For other segments, look up their base address in the output of\n" - "the `info dos ldt' command.", + add_cmd ("address-pte", class_info, go32_pte_for_address, _("\ +Display a Page Table entry for a linear address.\n\ +The address argument must be a linear address, after adding to\n\ +it the base address of the appropriate segment.\n\ +The base address of variables and functions in the debuggee's data\n\ +or code segment is stored in the variable __djgpp_base_address,\n\ +so use `__djgpp_base_address + (char *)&var' as the argument.\n\ +For other segments, look up their base address in the output of\n\ +the `info dos ldt' command."), &info_dos_cmdlist); }