[binutils-gdb] oops - add missing piece of previous delta

Nick Clifton nickc@sourceware.org
Fri Nov 9 12:52:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=dcd9adc5cbac756507eb5da65a4f9cf3edb8fc93

commit dcd9adc5cbac756507eb5da65a4f9cf3edb8fc93
Author: Nick Clifton <nickc@redhat.com>
Date:   Fri Nov 9 12:51:46 2018 +0000

    oops - add missing piece of previous delta

Diff:
---
 binutils/strings.c | 38 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)

diff --git a/binutils/strings.c b/binutils/strings.c
index eac7292..e1fecc0 100644
--- a/binutils/strings.c
+++ b/binutils/strings.c
@@ -661,7 +661,43 @@ print_strings (const char *filename, FILE *stream, file_ptr address,
 	  if (c == EOF)
 	    break;
 	  if (! STRING_ISGRAPHIC (c))
-	    break;
+	    {
+	      if (encoding_bytes > 1)
+		{
+		  /* In case of multibyte encodings rewind using magic buffer.  */
+		  if (magiccount == 0)
+		    {
+		      /* If no magic buffer exists: use memory of c.  */
+		      switch (encoding)
+			{
+			default:
+			  break;
+			case 'b':
+			  c = c & 0xff;
+			  magiccount += 1;
+			  break;
+			case 'l':
+			case 'L':
+			  c = c >> 8;
+			  magiccount += (encoding_bytes -1);
+			  break;
+			case 'B':
+			  c = (( c & 0xff0000) >> 16) | ( c & 0xff00)
+			    | (( c & 0xff) << 16);
+			  magiccount += 3;
+			  break;
+			}
+		      magic = (char *) &c;
+		    }
+		  else
+		    {
+		      /* If magic buffer exists: rewind.  */
+		      magic = magic - (encoding_bytes -1);
+		    }
+		  address = address - (encoding_bytes -1);
+		}
+	      break;
+	    }
 	  putchar (c);
 	}



More information about the Binutils-cvs mailing list