forked from OSchip/llvm-project
				
			Handle 's' packets correctly when disassembling GDB packet output.
llvm-svn: 148911
This commit is contained in:
		
							parent
							
								
									ff50962534
								
							
						
					
					
						commit
						9431f01f65
					
				| 
						 | 
					@ -506,7 +506,9 @@ our %cmd_callbacks =
 | 
				
			||||||
	'k' => \&dump_kill_cmd,
 | 
						'k' => \&dump_kill_cmd,
 | 
				
			||||||
	'A' => \&dump_A_command,
 | 
						'A' => \&dump_A_command,
 | 
				
			||||||
	'c' => \&dump_continue_cmd,
 | 
						'c' => \&dump_continue_cmd,
 | 
				
			||||||
 | 
						's' => \&dump_continue_cmd,
 | 
				
			||||||
	'C' => \&dump_continue_with_signal_cmd,
 | 
						'C' => \&dump_continue_with_signal_cmd,
 | 
				
			||||||
 | 
						'S' => \&dump_continue_with_signal_cmd,
 | 
				
			||||||
	'_M' => \&dump_allocate_memory_cmd,
 | 
						'_M' => \&dump_allocate_memory_cmd,
 | 
				
			||||||
	'_m' => \&dump_deallocate_memory_cmd,
 | 
						'_m' => \&dump_deallocate_memory_cmd,
 | 
				
			||||||
	# extended commands
 | 
						# extended commands
 | 
				
			||||||
| 
						 | 
					@ -521,6 +523,7 @@ our %cmd_callbacks =
 | 
				
			||||||
our %rsp_callbacks = 
 | 
					our %rsp_callbacks = 
 | 
				
			||||||
(
 | 
					(
 | 
				
			||||||
	'c' => \&dump_stop_reply_packet,
 | 
						'c' => \&dump_stop_reply_packet,
 | 
				
			||||||
 | 
						's' => \&dump_stop_reply_packet,
 | 
				
			||||||
	'C' => \&dump_stop_reply_packet,
 | 
						'C' => \&dump_stop_reply_packet,
 | 
				
			||||||
	'?' => \&dump_stop_reply_packet,
 | 
						'?' => \&dump_stop_reply_packet,
 | 
				
			||||||
	'T' => \&dump_thread_is_alive_rsp,
 | 
						'T' => \&dump_thread_is_alive_rsp,
 | 
				
			||||||
| 
						 | 
					@ -1060,30 +1063,37 @@ sub dump_read_mem_rsp
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#----------------------------------------------------------------------
 | 
					#----------------------------------------------------------------------
 | 
				
			||||||
# 'c' command
 | 
					# 'c' or 's' command
 | 
				
			||||||
#----------------------------------------------------------------------
 | 
					#----------------------------------------------------------------------
 | 
				
			||||||
sub dump_continue_cmd
 | 
					sub dump_continue_cmd
 | 
				
			||||||
{	
 | 
					{	
 | 
				
			||||||
	my $cmd = shift;
 | 
						my $cmd = shift;
 | 
				
			||||||
 | 
						my $cmd_str;
 | 
				
			||||||
 | 
						$cmd eq 'c' and $cmd_str = 'continue';
 | 
				
			||||||
 | 
						$cmd eq 's' and $cmd_str = 'step';
 | 
				
			||||||
	my $address = -1;
 | 
						my $address = -1;
 | 
				
			||||||
	if (@_)
 | 
						if (@_)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		my $address = get_addr(\@_);
 | 
							my $address = get_addr(\@_);
 | 
				
			||||||
		printf("continue ($addr_format)\n", $address);
 | 
							printf("%s ($addr_format)\n", $cmd_str, $address);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		printf("continue ()\n");
 | 
							printf("%s ()\n", $cmd_str);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#----------------------------------------------------------------------
 | 
					#----------------------------------------------------------------------
 | 
				
			||||||
# 'Css' continue (C) with signal (ss where 'ss' is two hex digits)
 | 
					# 'Css' continue (C) with signal (ss where 'ss' is two hex digits)
 | 
				
			||||||
 | 
					# 'Sss' step (S) with signal (ss where 'ss' is two hex digits)
 | 
				
			||||||
#----------------------------------------------------------------------
 | 
					#----------------------------------------------------------------------
 | 
				
			||||||
sub dump_continue_with_signal_cmd
 | 
					sub dump_continue_with_signal_cmd
 | 
				
			||||||
{	
 | 
					{	
 | 
				
			||||||
	my $cmd = shift;
 | 
						my $cmd = shift;
 | 
				
			||||||
	my $address = -1;
 | 
						my $address = -1;
 | 
				
			||||||
 | 
						my $cmd_str;
 | 
				
			||||||
 | 
						$cmd eq 'c' and $cmd_str = 'continue';
 | 
				
			||||||
 | 
						$cmd eq 's' and $cmd_str = 'step';
 | 
				
			||||||
	my $signal = get_hex(\@_);
 | 
						my $signal = get_hex(\@_);
 | 
				
			||||||
	if (@_)
 | 
						if (@_)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
| 
						 | 
					@ -1097,11 +1107,11 @@ sub dump_continue_with_signal_cmd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if ($address != -1)
 | 
						if ($address != -1)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		printf("continue_with_signal (signal = 0x%2.2x, address = $addr_format)\n", $signal, $address);
 | 
							printf("%s_with_signal (signal = 0x%2.2x, address = $addr_format)\n", $cmd_str, $signal, $address);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		printf("continue_with_signal (signal = 0x%2.2x)\n", $signal);
 | 
							printf("%s_with_signal (signal = 0x%2.2x)\n", $cmd_str, $signal);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue