mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 05:54:26 +08:00
* win32-nat.c (cygwin_pid): Removed as unused.
(child_attach): Try fall back to Cygwin pid.
This commit is contained in:
parent
8371a4d396
commit
baa93fa6f9
@ -1,3 +1,8 @@
|
||||
2003-01-29 Brian Ford <ford@vss.fsi.com>
|
||||
|
||||
* win32-nat.c (cygwin_pid): Removed as unused.
|
||||
(child_attach): Try fall back to Cygwin pid.
|
||||
|
||||
2003-01-29 Jim Blandy <jimb@redhat.com>
|
||||
|
||||
* objfiles.h (struct objfile): Doc fix.
|
||||
@ -331,6 +336,7 @@
|
||||
(_initialize_infcmd): Update help string for 'until' command.
|
||||
Add new 'advance' command.
|
||||
|
||||
>>>>>>> 1.3752
|
||||
2003-01-14 David Carlton <carlton@math.stanford.edu>
|
||||
|
||||
* linespec.c (decode_line_1): Normalize comments.
|
||||
|
@ -124,7 +124,6 @@ static DEBUG_EVENT current_event; /* The current debug event from
|
||||
static HANDLE current_process_handle; /* Currently executing process */
|
||||
static thread_info *current_thread; /* Info on currently selected thread */
|
||||
static DWORD main_thread_id; /* Thread ID of the main thread */
|
||||
static pid_t cygwin_pid; /* pid of cygwin process */
|
||||
|
||||
/* Counts of things. */
|
||||
static int exception_count = 0;
|
||||
@ -383,7 +382,7 @@ static void
|
||||
do_child_store_inferior_registers (int r)
|
||||
{
|
||||
if (r >= 0)
|
||||
deprecated_read_register_gen (r, ((char *) ¤t_thread->context) + mappings[r]);
|
||||
regcache_collect (r, ((char *) ¤t_thread->context) + mappings[r]);
|
||||
else
|
||||
{
|
||||
for (r = 0; r < NUM_REGS; r++)
|
||||
@ -850,10 +849,10 @@ display_selector (HANDLE thread, DWORD sel)
|
||||
int base, limit;
|
||||
printf_filtered ("0x%03lx: ", sel);
|
||||
if (!info.HighWord.Bits.Pres)
|
||||
{
|
||||
puts_filtered ("Segment not present\n");
|
||||
return 0;
|
||||
}
|
||||
{
|
||||
puts_filtered ("Segment not present\n");
|
||||
return 0;
|
||||
}
|
||||
base = (info.HighWord.Bits.BaseHi << 24) +
|
||||
(info.HighWord.Bits.BaseMid << 16)
|
||||
+ info.BaseLow;
|
||||
@ -862,46 +861,46 @@ display_selector (HANDLE thread, DWORD sel)
|
||||
limit = (limit << 12) | 0xfff;
|
||||
printf_filtered ("base=0x%08x limit=0x%08x", base, limit);
|
||||
if (info.HighWord.Bits.Default_Big)
|
||||
puts_filtered(" 32-bit ");
|
||||
puts_filtered(" 32-bit ");
|
||||
else
|
||||
puts_filtered(" 16-bit ");
|
||||
puts_filtered(" 16-bit ");
|
||||
switch ((info.HighWord.Bits.Type & 0xf) >> 1)
|
||||
{
|
||||
case 0:
|
||||
puts_filtered ("Data (Read-Only, Exp-up");
|
||||
break;
|
||||
puts_filtered ("Data (Read-Only, Exp-up");
|
||||
break;
|
||||
case 1:
|
||||
puts_filtered ("Data (Read/Write, Exp-up");
|
||||
break;
|
||||
puts_filtered ("Data (Read/Write, Exp-up");
|
||||
break;
|
||||
case 2:
|
||||
puts_filtered ("Unused segment (");
|
||||
break;
|
||||
puts_filtered ("Unused segment (");
|
||||
break;
|
||||
case 3:
|
||||
puts_filtered ("Data (Read/Write, Exp-down");
|
||||
break;
|
||||
puts_filtered ("Data (Read/Write, Exp-down");
|
||||
break;
|
||||
case 4:
|
||||
puts_filtered ("Code (Exec-Only, N.Conf");
|
||||
break;
|
||||
puts_filtered ("Code (Exec-Only, N.Conf");
|
||||
break;
|
||||
case 5:
|
||||
puts_filtered ("Code (Exec/Read, N.Conf");
|
||||
puts_filtered ("Code (Exec/Read, N.Conf");
|
||||
break;
|
||||
case 6:
|
||||
puts_filtered ("Code (Exec-Only, Conf");
|
||||
puts_filtered ("Code (Exec-Only, Conf");
|
||||
break;
|
||||
case 7:
|
||||
puts_filtered ("Code (Exec/Read, Conf");
|
||||
puts_filtered ("Code (Exec/Read, Conf");
|
||||
break;
|
||||
default:
|
||||
printf_filtered ("Unknown type 0x%x",info.HighWord.Bits.Type);
|
||||
}
|
||||
if ((info.HighWord.Bits.Type & 0x1) == 0)
|
||||
puts_filtered(", N.Acc");
|
||||
puts_filtered(", N.Acc");
|
||||
puts_filtered (")\n");
|
||||
if ((info.HighWord.Bits.Type & 0x10) == 0)
|
||||
puts_filtered("System selector ");
|
||||
printf_filtered ("Priviledge level = %d. ", info.HighWord.Bits.Dpl);
|
||||
if (info.HighWord.Bits.Granularity)
|
||||
puts_filtered ("Page granular.\n");
|
||||
puts_filtered ("Page granular.\n");
|
||||
else
|
||||
puts_filtered ("Byte granular.\n");
|
||||
return 1;
|
||||
@ -926,22 +925,22 @@ display_selectors (char * args, int from_tty)
|
||||
|
||||
puts_filtered ("Selector $cs\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegCs);
|
||||
current_thread->context.SegCs);
|
||||
puts_filtered ("Selector $ds\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegDs);
|
||||
current_thread->context.SegDs);
|
||||
puts_filtered ("Selector $es\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegEs);
|
||||
current_thread->context.SegEs);
|
||||
puts_filtered ("Selector $ss\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegSs);
|
||||
current_thread->context.SegSs);
|
||||
puts_filtered ("Selector $fs\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegFs);
|
||||
puts_filtered ("Selector $gs\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegGs);
|
||||
current_thread->context.SegGs);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1467,12 +1466,22 @@ child_attach (char *args, int from_tty)
|
||||
printf_unfiltered ("This can cause attach to fail on Windows NT/2K/XP\n");
|
||||
}
|
||||
|
||||
pid = strtoul (args, 0, 0);
|
||||
pid = strtoul (args, 0, 0); /* Windows pid */
|
||||
|
||||
ok = DebugActiveProcess (pid);
|
||||
saw_create = 0;
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
/* Try fall back to Cygwin pid */
|
||||
pid = cygwin_internal (CW_CYGWIN_PID_TO_WINPID, pid);
|
||||
|
||||
if (pid > 0)
|
||||
ok = DebugActiveProcess (pid);
|
||||
|
||||
if (!ok)
|
||||
error ("Can't attach to process.");
|
||||
}
|
||||
|
||||
if (has_detach_ability ())
|
||||
{
|
||||
@ -2006,11 +2015,11 @@ _initialize_win32_nat (void)
|
||||
add_info_alias ("sharedlibrary", "dll", 1);
|
||||
|
||||
add_prefix_cmd ("w32", class_info, info_w32_command,
|
||||
"Print information specific to Win32 debugging.",
|
||||
&info_w32_cmdlist, "info w32 ", 0, &infolist);
|
||||
"Print information specific to Win32 debugging.",
|
||||
&info_w32_cmdlist, "info w32 ", 0, &infolist);
|
||||
|
||||
add_cmd ("selector", class_info, display_selectors,
|
||||
"Display selectors infos.",
|
||||
"Display selectors infos.",
|
||||
&info_w32_cmdlist);
|
||||
|
||||
add_target (&child_ops);
|
||||
|
@ -124,7 +124,6 @@ static DEBUG_EVENT current_event; /* The current debug event from
|
||||
static HANDLE current_process_handle; /* Currently executing process */
|
||||
static thread_info *current_thread; /* Info on currently selected thread */
|
||||
static DWORD main_thread_id; /* Thread ID of the main thread */
|
||||
static pid_t cygwin_pid; /* pid of cygwin process */
|
||||
|
||||
/* Counts of things. */
|
||||
static int exception_count = 0;
|
||||
@ -383,7 +382,7 @@ static void
|
||||
do_child_store_inferior_registers (int r)
|
||||
{
|
||||
if (r >= 0)
|
||||
deprecated_read_register_gen (r, ((char *) ¤t_thread->context) + mappings[r]);
|
||||
regcache_collect (r, ((char *) ¤t_thread->context) + mappings[r]);
|
||||
else
|
||||
{
|
||||
for (r = 0; r < NUM_REGS; r++)
|
||||
@ -850,10 +849,10 @@ display_selector (HANDLE thread, DWORD sel)
|
||||
int base, limit;
|
||||
printf_filtered ("0x%03lx: ", sel);
|
||||
if (!info.HighWord.Bits.Pres)
|
||||
{
|
||||
puts_filtered ("Segment not present\n");
|
||||
return 0;
|
||||
}
|
||||
{
|
||||
puts_filtered ("Segment not present\n");
|
||||
return 0;
|
||||
}
|
||||
base = (info.HighWord.Bits.BaseHi << 24) +
|
||||
(info.HighWord.Bits.BaseMid << 16)
|
||||
+ info.BaseLow;
|
||||
@ -862,46 +861,46 @@ display_selector (HANDLE thread, DWORD sel)
|
||||
limit = (limit << 12) | 0xfff;
|
||||
printf_filtered ("base=0x%08x limit=0x%08x", base, limit);
|
||||
if (info.HighWord.Bits.Default_Big)
|
||||
puts_filtered(" 32-bit ");
|
||||
puts_filtered(" 32-bit ");
|
||||
else
|
||||
puts_filtered(" 16-bit ");
|
||||
puts_filtered(" 16-bit ");
|
||||
switch ((info.HighWord.Bits.Type & 0xf) >> 1)
|
||||
{
|
||||
case 0:
|
||||
puts_filtered ("Data (Read-Only, Exp-up");
|
||||
break;
|
||||
puts_filtered ("Data (Read-Only, Exp-up");
|
||||
break;
|
||||
case 1:
|
||||
puts_filtered ("Data (Read/Write, Exp-up");
|
||||
break;
|
||||
puts_filtered ("Data (Read/Write, Exp-up");
|
||||
break;
|
||||
case 2:
|
||||
puts_filtered ("Unused segment (");
|
||||
break;
|
||||
puts_filtered ("Unused segment (");
|
||||
break;
|
||||
case 3:
|
||||
puts_filtered ("Data (Read/Write, Exp-down");
|
||||
break;
|
||||
puts_filtered ("Data (Read/Write, Exp-down");
|
||||
break;
|
||||
case 4:
|
||||
puts_filtered ("Code (Exec-Only, N.Conf");
|
||||
break;
|
||||
puts_filtered ("Code (Exec-Only, N.Conf");
|
||||
break;
|
||||
case 5:
|
||||
puts_filtered ("Code (Exec/Read, N.Conf");
|
||||
puts_filtered ("Code (Exec/Read, N.Conf");
|
||||
break;
|
||||
case 6:
|
||||
puts_filtered ("Code (Exec-Only, Conf");
|
||||
puts_filtered ("Code (Exec-Only, Conf");
|
||||
break;
|
||||
case 7:
|
||||
puts_filtered ("Code (Exec/Read, Conf");
|
||||
puts_filtered ("Code (Exec/Read, Conf");
|
||||
break;
|
||||
default:
|
||||
printf_filtered ("Unknown type 0x%x",info.HighWord.Bits.Type);
|
||||
}
|
||||
if ((info.HighWord.Bits.Type & 0x1) == 0)
|
||||
puts_filtered(", N.Acc");
|
||||
puts_filtered(", N.Acc");
|
||||
puts_filtered (")\n");
|
||||
if ((info.HighWord.Bits.Type & 0x10) == 0)
|
||||
puts_filtered("System selector ");
|
||||
printf_filtered ("Priviledge level = %d. ", info.HighWord.Bits.Dpl);
|
||||
if (info.HighWord.Bits.Granularity)
|
||||
puts_filtered ("Page granular.\n");
|
||||
puts_filtered ("Page granular.\n");
|
||||
else
|
||||
puts_filtered ("Byte granular.\n");
|
||||
return 1;
|
||||
@ -926,22 +925,22 @@ display_selectors (char * args, int from_tty)
|
||||
|
||||
puts_filtered ("Selector $cs\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegCs);
|
||||
current_thread->context.SegCs);
|
||||
puts_filtered ("Selector $ds\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegDs);
|
||||
current_thread->context.SegDs);
|
||||
puts_filtered ("Selector $es\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegEs);
|
||||
current_thread->context.SegEs);
|
||||
puts_filtered ("Selector $ss\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegSs);
|
||||
current_thread->context.SegSs);
|
||||
puts_filtered ("Selector $fs\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegFs);
|
||||
puts_filtered ("Selector $gs\n");
|
||||
display_selector (current_thread->h,
|
||||
current_thread->context.SegGs);
|
||||
current_thread->context.SegGs);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1467,12 +1466,22 @@ child_attach (char *args, int from_tty)
|
||||
printf_unfiltered ("This can cause attach to fail on Windows NT/2K/XP\n");
|
||||
}
|
||||
|
||||
pid = strtoul (args, 0, 0);
|
||||
pid = strtoul (args, 0, 0); /* Windows pid */
|
||||
|
||||
ok = DebugActiveProcess (pid);
|
||||
saw_create = 0;
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
/* Try fall back to Cygwin pid */
|
||||
pid = cygwin_internal (CW_CYGWIN_PID_TO_WINPID, pid);
|
||||
|
||||
if (pid > 0)
|
||||
ok = DebugActiveProcess (pid);
|
||||
|
||||
if (!ok)
|
||||
error ("Can't attach to process.");
|
||||
}
|
||||
|
||||
if (has_detach_ability ())
|
||||
{
|
||||
@ -2006,11 +2015,11 @@ _initialize_win32_nat (void)
|
||||
add_info_alias ("sharedlibrary", "dll", 1);
|
||||
|
||||
add_prefix_cmd ("w32", class_info, info_w32_command,
|
||||
"Print information specific to Win32 debugging.",
|
||||
&info_w32_cmdlist, "info w32 ", 0, &infolist);
|
||||
"Print information specific to Win32 debugging.",
|
||||
&info_w32_cmdlist, "info w32 ", 0, &infolist);
|
||||
|
||||
add_cmd ("selector", class_info, display_selectors,
|
||||
"Display selectors infos.",
|
||||
"Display selectors infos.",
|
||||
&info_w32_cmdlist);
|
||||
|
||||
add_target (&child_ops);
|
||||
|
Loading…
Reference in New Issue
Block a user