亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? remote.c

?? ARM的bootloader代碼.rar
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
			    "binary downloading NOT suppported by target\n");    }}/* Write memory data directly to the remote machine.   This does not inform the data cache; the data cache uses this.   MEMADDR is the address in the remote memory space.   MYADDR is the address of the buffer in our space.   LEN is the number of bytes.   Returns number of bytes transferred, or 0 for error.  */intremote_write_bytes (memaddr, myaddr, len)     CORE_ADDR memaddr;     char *myaddr;     int len;{  unsigned char *buf = alloca (PBUFSIZ);  int max_buf_size;		/* Max size of packet output buffer */  int origlen;  extern int verbose;  /* Verify that the target can support a binary download */  check_binary_download (memaddr);  /* Chop the transfer down if necessary */  max_buf_size = min (remote_write_size, PBUFSIZ);  if (remote_register_buf_size != 0)    max_buf_size = min (max_buf_size, remote_register_buf_size);  /* Subtract header overhead from max payload size -  $M<memaddr>,<len>:#nn */  max_buf_size -= 2 + hexnumlen (memaddr + len - 1) + 1 + hexnumlen (len) + 4;  origlen = len;  while (len > 0)    {      unsigned char *p, *plen;      int todo;      int i;      /* construct "M"<memaddr>","<len>":" */      /* sprintf (buf, "M%lx,%x:", (unsigned long) memaddr, todo); */      memaddr = remote_address_masked (memaddr);      p = buf;      if (remote_binary_download)	{	  *p++ = 'X';	  todo = min (len, max_buf_size);	}      else	{	  *p++ = 'M';	  todo = min (len, max_buf_size / 2);	/* num bytes that will fit */	}      p += hexnumstr ((char *)p, (ULONGEST) memaddr);      *p++ = ',';      plen = p;			/* remember where len field goes */      p += hexnumstr ((char *)p, (ULONGEST) todo);      *p++ = ':';      *p = '\0';      /* We send target system values byte by byte, in increasing byte         addresses, each byte encoded as two hex characters (or one         binary character).  */      if (remote_binary_download)	{	  int escaped = 0;	  for (i = 0;	       (i < todo) && (i + escaped) < (max_buf_size - 2);	       i++)	    {	      switch (myaddr[i] & 0xff)		{		case '$':		case '#':		case 0x7d:		  /* These must be escaped */		  escaped++;		  *p++ = 0x7d;		  *p++ = (myaddr[i] & 0xff) ^ 0x20;		  break;		default:		  *p++ = myaddr[i] & 0xff;		  break;		}	    }	  if (i < todo)	    {	      /* Escape chars have filled up the buffer prematurely,	         and we have actually sent fewer bytes than planned.	         Fix-up the length field of the packet.  */	      /* FIXME: will fail if new len is a shorter string than	         old len.  */	      plen += hexnumstr ((char *)plen, (ULONGEST) i);	      *plen++ = ':';	    }	}      else	{	  for (i = 0; i < todo; i++)	    {	      *p++ = tohex ((myaddr[i] >> 4) & 0xf);	      *p++ = tohex (myaddr[i] & 0xf);	    }	  *p = '\0';	}      putpkt_binary ((char *)buf, (int) (p - buf));      getpkt ((char *)buf, 0);      if (buf[0] == 'E')	{	  /* There is no correspondance between what the remote protocol uses	     for errors and errno codes.  We would like a cleaner way of	     representing errors (big enough to include errno codes, bfd_error	     codes, and others).  But for now just return EIO.  */	  errno = EIO;	  return 0;	}      /* Increment by i, not by todo, in case escape chars         caused us to send fewer bytes than we'd planned.  */      myaddr += i;      memaddr += i;      len -= i;      if (verbose)	putc('.', stderr);    }  return origlen;}/* Stuff for dealing with the packets which are part of this protocol.   See comment at top of file for details.  *//* Read a single character from the remote end, masking it down to 7 bits. */static intreadchar (int timeout){  int ch;  ch = SERIAL_READCHAR (remote_desc, timeout);  switch (ch)    {    case SERIAL_EOF:      error ("Remote connection closed");    case SERIAL_ERROR:      perror_with_name ("Remote communication error");    case SERIAL_TIMEOUT:      return ch;    default:      return ch & 0x7f;    }}static intputpkt (buf)     char *buf;{  return putpkt_binary (buf, strlen (buf));}/* Send a packet to the remote machine, with error checking.  The data   of the packet is in BUF.  The string in BUF can be at most  PBUFSIZ - 5   to account for the $, # and checksum, and for a possible /0 if we are   debugging (remote_debug) and want to print the sent packet as a string */static intputpkt_binary (buf, cnt)     char *buf;     int cnt;{  int i;  unsigned char csum = 0;  char *buf2 = alloca (PBUFSIZ);  char *junkbuf = alloca (PBUFSIZ);  int ch;  int tcount = 0;  char *p;  /* Copy the packet into buffer BUF2, encapsulating it     and giving it a checksum.  */  if (cnt > BUFSIZ - 5)		/* Prosanity check */    abort ();  p = buf2;  *p++ = '$';  for (i = 0; i < cnt; i++)    {      csum += buf[i];      *p++ = buf[i];    }  *p++ = '#';  *p++ = tohex ((csum >> 4) & 0xf);  *p++ = tohex (csum & 0xf);  /* Send it over and over until we get a positive ack.  */  while (1)    {      int started_error_output = 0;      if (remote_debug)	{	  *p = '\0';	  fprintf_unfiltered (gdb_stdlog, "Sending packet: ");	  fputstrn_unfiltered (buf2, p - buf2, 0, gdb_stdlog);	  fprintf_unfiltered (gdb_stdlog, "...");	  gdb_flush (gdb_stdlog);	}      if (SERIAL_WRITE (remote_desc, buf2, p - buf2))	perror_with_name ("putpkt: write failed");      /* read until either a timeout occurs (-2) or '+' is read */      while (1)	{	  ch = readchar (remote_timeout);	  if (remote_debug)	    {	      switch (ch)		{		case '+':		case SERIAL_TIMEOUT:		case '$':		  if (started_error_output)		    {		      putchar_unfiltered ('\n');		      started_error_output = 0;		    }		}	    }	  switch (ch)	    {	    case '+':	      if (remote_debug)		fprintf_unfiltered (gdb_stdlog, "Ack\n");	      return 1;	    case SERIAL_TIMEOUT:	      tcount++;	      if (tcount > 3)		return 0;	      break;		/* Retransmit buffer */	    case '$':	      {		/* It's probably an old response, and we're out of sync.		   Just gobble up the packet and ignore it.  */		getpkt (junkbuf, 0);		continue;	/* Now, go look for + */	      }	    default:	      if (remote_debug)		{		  if (!started_error_output)		    {		      started_error_output = 1;		      fprintf_unfiltered (gdb_stdlog, "putpkt: Junk: ");		    }		  fputc_unfiltered (ch & 0177, gdb_stdlog);		}	      continue;	    }	  break;		/* Here to retransmit */	}#if 0      /* This is wrong.  If doing a long backtrace, the user should be         able to get out next time we call QUIT, without anything as         violent as interrupt_query.  If we want to provide a way out of         here without getting to the next QUIT, it should be based on         hitting ^C twice as in remote_wait.  */      if (quit_flag)	{	  quit_flag = 0;	  interrupt_query ();	}#endif    }}/* Come here after finding the start of the frame.  Collect the rest   into BUF, verifying the checksum, length, and handling run-length   compression.  Returns 0 on any error, 1 on success.  */static intread_frame (char *buf){  unsigned char csum;  char *bp;  int c;  csum = 0;  bp = buf;  while (1)    {      c = readchar (remote_timeout);      switch (c)	{	case SERIAL_TIMEOUT:	  if (remote_debug)	    fputs_filtered ("Timeout in mid-packet, retrying\n", gdb_stdlog);	  return 0;	case '$':	  if (remote_debug)	    fputs_filtered ("Saw new packet start in middle of old one\n",			    gdb_stdlog);	  return 0;		/* Start a new packet, count retries */	case '#':	  {	    unsigned char pktcsum;	    *bp = '\000';	    pktcsum = fromhex (readchar (remote_timeout)) << 4;	    pktcsum |= fromhex (readchar (remote_timeout));	    if (csum == pktcsum)	      {		return 1;	      }	    if (remote_debug)	      {		fprintf_filtered (gdb_stdlog,			      "Bad checksum, sentsum=0x%x, csum=0x%x, buf=",				  pktcsum, csum);		fputs_filtered (buf, gdb_stdlog);		fputs_filtered ("\n", gdb_stdlog);	      }	    return 0;	  }	case '*':		/* Run length encoding */	  csum += c;	  c = readchar (remote_timeout);	  csum += c;	  c = c - ' ' + 3;	/* Compute repeat count */	  if (c > 0 && c < 255 && bp + c - 1 < buf + PBUFSIZ - 1)	    {	      memset (bp, *(bp - 1), c);	      bp += c;	      continue;	    }	  *bp = '\0';	  printf_filtered ("Repeat count %d too large for buffer: ", c);	  puts_filtered (buf);	  puts_filtered ("\n");	  return 0;	default:	  if (bp < buf + PBUFSIZ - 1)	    {	      *bp++ = c;	      csum += c;	      continue;	    }	  *bp = '\0';	  puts_filtered ("Remote packet too long: ");	  puts_filtered (buf);	  puts_filtered ("\n");	  return 0;	}    }}/* Read a packet from the remote machine, with error checking, and   store it in BUF.  BUF is expected to be of size PBUFSIZ.  If   FOREVER, wait forever rather than timing out; this is used while   the target is executing user code.  */static voidgetpkt (buf, forever)     char *buf;     int forever;{  int c;  int tries;  int timeout;  int val;  strcpy (buf, "timeout");  if (forever)    {      timeout = watchdog > 0 ? watchdog : -1;    }  else    timeout = remote_timeout;#define MAX_TRIES 3  for (tries = 1; tries <= MAX_TRIES; tries++)    {      /* This can loop forever if the remote side sends us characters         continuously, but if it pauses, we'll get a zero from readchar         because of timeout.  Then we'll count that as a retry.  */      /* Note that we will only wait forever prior to the start of a packet.         After that, we expect characters to arrive at a brisk pace.  They         should show up within remote_timeout intervals.  */      do	{	  c = readchar (timeout);	  if (c == SERIAL_TIMEOUT)	    {	      if (forever)	/* Watchdog went off.  Kill the target. */		{		  target_mourn_inferior ();		  error ("Watchdog has expired.  Target detached.\n");		}	      if (remote_debug)		fputs_filtered ("Timed out.\n", gdb_stdlog);	      goto retry;	    }	}      while (c != '$');      /* We've found the start of a packet, now collect the data.  */      val = read_frame (buf);      if (val == 1)	{	  if (remote_debug)	    {	      fprintf_unfiltered (gdb_stdlog, "Packet received: ");	      fputstr_unfiltered (buf, 0, gdb_stdlog);	      fprintf_unfiltered (gdb_stdlog, "\n");	    }	  SERIAL_WRITE (remote_desc, "+", 1);	  return;	}      /* Try the whole thing again.  */    retry:      SERIAL_WRITE (remote_desc, "-", 1);    }  /* We have tried hard enough, and just can't receive the packet.  Give up. */  printf_unfiltered ("Ignoring packet error, continuing...\n");  SERIAL_WRITE (remote_desc, "+", 1);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91影视在线播放| 亚洲美女在线国产| 国产精品对白交换视频 | 成人av网站大全| 欧美丰满一区二区免费视频| 国产夜色精品一区二区av| 偷拍一区二区三区| 91麻豆福利精品推荐| 久久久久久久久久久久电影| 天天射综合影视| 日本道精品一区二区三区 | 亚洲欧美色一区| 国产一区二区三区在线观看免费| 国产麻豆精品视频| 欧美色图第一页| 欧美日韩亚洲丝袜制服| 久久91精品国产91久久小草| 丁香另类激情小说| 久久一留热品黄| 五月天视频一区| 色狠狠一区二区| 色噜噜狠狠一区二区三区果冻| 日本一区二区三区免费乱视频| 视频一区二区不卡| 欧美日韩一区二区三区免费看| 国产精品你懂的在线欣赏| 国产精品亚洲第一| 一区二区在线观看视频在线观看| 成人不卡免费av| 国产精品午夜久久| 成人午夜av影视| 国产偷国产偷精品高清尤物| 韩国av一区二区三区四区| 粉嫩一区二区三区性色av| 色综合网色综合| 国产精品三级视频| 成人高清免费观看| 国产日产欧美一区二区视频| 国产成人在线视频播放| 国产精品理论片| 一本色道亚洲精品aⅴ| 亚洲女同一区二区| 在线观看不卡一区| 亚洲成av人片在www色猫咪| 欧美剧情电影在线观看完整版免费励志电影 | 欧美三级中文字| 亚洲v中文字幕| 欧美午夜一区二区三区免费大片| 亚洲电影在线免费观看| 依依成人综合视频| 天天色图综合网| 欧美一区二区久久久| 日韩高清电影一区| 久久久综合激的五月天| 成人毛片视频在线观看| 亚洲午夜久久久久久久久电影网| 欧美日韩亚洲丝袜制服| 久久精品国产99国产精品| 国产网红主播福利一区二区| av一区二区三区黑人| 亚洲成年人影院| 久久久www成人免费毛片麻豆| 99精品视频在线免费观看| 亚洲一区二区三区四区在线| 日韩精品一区二区三区视频在线观看| 狠狠色丁香婷婷综合久久片| 亚洲欧洲精品成人久久奇米网| 色8久久人人97超碰香蕉987| 蜜桃视频免费观看一区| 中文字幕在线观看一区| 欧美精品在欧美一区二区少妇| 国产精品综合视频| 亚洲午夜精品在线| 亚洲国产裸拍裸体视频在线观看乱了| 精品久久人人做人人爽| 欧美日韩综合一区| 欧美精品久久天天躁| 蜜桃精品视频在线| 最新久久zyz资源站| 日韩午夜激情电影| 色综合天天综合在线视频| 青椒成人免费视频| 亚洲三级在线看| 精品久久久久久久一区二区蜜臀| 95精品视频在线| 激情深爱一区二区| 亚洲一区二区综合| 亚洲国产高清不卡| 欧美成人性福生活免费看| 色婷婷av一区二区三区gif| 国产自产v一区二区三区c| 亚洲成人免费观看| 亚洲三级在线播放| 国产三级一区二区三区| 在线播放视频一区| 在线观看视频一区| 91猫先生在线| 成人免费观看男女羞羞视频| 亚洲电影在线免费观看| av激情综合网| 狠狠色伊人亚洲综合成人| 日韩经典中文字幕一区| 亚洲精品中文在线| 亚洲视频免费看| 国产精品久久久久久亚洲毛片| 久久综合色鬼综合色| 日韩精品一区二区三区视频播放 | 日本视频免费一区| 亚洲一级二级在线| 亚洲影视在线播放| 亚洲午夜久久久| 国产日韩欧美精品电影三级在线| 欧美色偷偷大香| 欧美主播一区二区三区| av在线一区二区| 欧美日韩一区国产| 91久久线看在观草草青青| 一本大道av伊人久久综合| 99re这里只有精品首页| 91亚洲精品一区二区乱码| 91丨九色丨国产丨porny| 色综合色狠狠综合色| 91福利社在线观看| 欧美色图免费看| 日韩精品最新网址| 久久久国产午夜精品 | 国产suv精品一区二区883| 国产综合久久久久久鬼色| 国产高清不卡二三区| 成人av网在线| 欧美人伦禁忌dvd放荡欲情| 欧美人妖巨大在线| 久久综合久久久久88| 国产精品久99| 亚洲一卡二卡三卡四卡| 激情偷乱视频一区二区三区| 成人av在线播放网址| 欧美视频一区二区三区| 欧美xxxxx牲另类人与| 国产精品无遮挡| 一区二区三区精品视频| 免费的国产精品| 成人免费观看视频| 欧美日韩aaaaa| 日韩精品一区二区在线| ...中文天堂在线一区| 9久草视频在线视频精品| 国产91精品在线观看| 91豆麻精品91久久久久久| 欧美一卡2卡三卡4卡5免费| 欧美激情一区不卡| 亚洲国产精品欧美一二99| 成人午夜激情在线| 在线欧美一区二区| 久久久.com| 日韩中文字幕区一区有砖一区| 国产一区二区精品久久91| 91精品办公室少妇高潮对白| 日韩精品一区二区三区视频播放| 亚洲欧美aⅴ...| 日韩精品乱码av一区二区| 成人影视亚洲图片在线| 欧美性做爰猛烈叫床潮| 国产亚洲精品久| 蜜臂av日日欢夜夜爽一区| 色综合色综合色综合| 国产亚洲美州欧州综合国| 视频精品一区二区| 色呦呦一区二区三区| 国产亚洲va综合人人澡精品| 婷婷成人综合网| 91视频xxxx| 国产欧美一区二区精品秋霞影院| 丝袜国产日韩另类美女| 色播五月激情综合网| 7777精品伊人久久久大香线蕉最新版| 国产精品久久久久久久久快鸭| 久久99国产精品免费| 欧美日韩一区小说| 亚洲一区二区三区中文字幕| 成人看片黄a免费看在线| 2021国产精品久久精品| 日韩av中文字幕一区二区三区 | 制服丝袜激情欧洲亚洲| 亚洲伦理在线精品| 99精品久久只有精品| 国产亚洲综合av| 国产乱人伦偷精品视频免下载| 91精品国产高清一区二区三区蜜臀| 有码一区二区三区| 99久久精品国产网站| 国产精品美女久久久久久久网站| 国产一区二区精品久久| 欧美sm极限捆绑bd| 久久精品国产99国产| 日韩欧美国产综合一区| 麻豆精品视频在线观看视频| 3d成人动漫网站| 日本成人超碰在线观看| 日韩一区二区三区免费观看|