gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / binutils / strings.c
CommitLineData
252b5132 1/* strings -- print the strings of printable characters in files
b3adc24a 2 Copyright (C) 1993-2020 Free Software Foundation, Inc.
252b5132
RH
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
32866df7 6 the Free Software Foundation; either version 3, or (at your option)
252b5132
RH
7 any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
b43b5d5f
NC
16 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
17 02110-1301, USA. */
252b5132
RH
18\f
19/* Usage: strings [options] file...
20
21 Options:
22 --all
23 -a
7fac9594
NC
24 - Scan each file in its entirety.
25
26 --data
27 -d Scan only the initialized data section(s) of object files.
252b5132
RH
28
29 --print-file-name
30 -f Print the name of the file before each string.
31
32 --bytes=min-len
33 -n min-len
34 -min-len Print graphic char sequences, MIN-LEN or more bytes long,
35 that are followed by a NUL or a newline. Default is 4.
36
37 --radix={o,x,d}
38 -t {o,x,d} Print the offset within the file before each string,
39 in octal/hex/decimal.
40
334ac421
EA
41 --include-all-whitespace
42 -w By default tab and space are the only whitepace included in graphic
43 char sequences. This option considers all of isspace() valid.
44
252b5132
RH
45 -o Like -to. (Some other implementations have -o like -to,
46 others like -td. We chose one arbitrarily.)
47
8745eafa
NC
48 --encoding={s,S,b,l,B,L}
49 -e {s,S,b,l,B,L}
50 Select character encoding: 7-bit-character, 8-bit-character,
51 bigendian 16-bit, littleendian 16-bit, bigendian 32-bit,
52 littleendian 32-bit.
d132876a 53
252b5132 54 --target=BFDNAME
3bf31ec9 55 -T {bfdname}
252b5132
RH
56 Specify a non-default object file format.
57
55edd97b
EA
58 --output-separator=sep_string
59 -s sep_string String used to separate parsed strings in output.
60 Default is newline.
61
252b5132
RH
62 --help
63 -h Print the usage message on the standard output.
64
65 --version
ffbe5983 66 -V
252b5132
RH
67 -v Print the program version number.
68
69 Written by Richard Stallman <rms@gnu.ai.mit.edu>
70 and David MacKenzie <djm@gnu.ai.mit.edu>. */
71
3db64b00 72#include "sysdep.h"
252b5132 73#include "bfd.h"
e9792343 74#include "getopt.h"
252b5132 75#include "libiberty.h"
3882b010 76#include "safe-ctype.h"
3db64b00 77#include "bucomm.h"
252b5132 78
8745eafa
NC
79#define STRING_ISGRAPHIC(c) \
80 ( (c) >= 0 \
81 && (c) <= 255 \
334ac421 82 && ((c) == '\t' || ISPRINT (c) || (encoding == 'S' && (c) > 127) \
535b785f 83 || (include_all_whitespace && ISSPACE (c))) \
334ac421 84 )
252b5132
RH
85
86#ifndef errno
87extern int errno;
88#endif
89
90/* The BFD section flags that identify an initialized data section. */
91#define DATA_FLAGS (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS)
92
93/* Radix for printing addresses (must be 8, 10 or 16). */
94static int address_radix;
95
96/* Minimum length of sequence of graphic chars to trigger output. */
97static int string_min;
98
334ac421
EA
99/* Whether or not we include all whitespace as a graphic char. */
100static bfd_boolean include_all_whitespace;
101
b34976b6
AM
102/* TRUE means print address within file for each string. */
103static bfd_boolean print_addresses;
252b5132 104
b34976b6
AM
105/* TRUE means print filename for each string. */
106static bfd_boolean print_filenames;
252b5132 107
b34976b6
AM
108/* TRUE means for object files scan only the data section. */
109static bfd_boolean datasection_only;
252b5132 110
252b5132
RH
111/* The BFD object file format. */
112static char *target;
113
d132876a
NC
114/* The character encoding format. */
115static char encoding;
116static int encoding_bytes;
117
55edd97b
EA
118/* Output string used to separate parsed strings */
119static char *output_separator;
120
252b5132
RH
121static struct option long_options[] =
122{
123 {"all", no_argument, NULL, 'a'},
7fac9594 124 {"data", no_argument, NULL, 'd'},
252b5132
RH
125 {"print-file-name", no_argument, NULL, 'f'},
126 {"bytes", required_argument, NULL, 'n'},
127 {"radix", required_argument, NULL, 't'},
e535d0dd 128 {"include-all-whitespace", no_argument, NULL, 'w'},
d132876a 129 {"encoding", required_argument, NULL, 'e'},
252b5132 130 {"target", required_argument, NULL, 'T'},
55edd97b 131 {"output-separator", required_argument, NULL, 's'},
252b5132
RH
132 {"help", no_argument, NULL, 'h'},
133 {"version", no_argument, NULL, 'v'},
134 {NULL, 0, NULL, 0}
135};
136
7fac9594 137static bfd_boolean strings_file (char *);
ee2fb9eb 138static void print_strings (const char *, FILE *, file_ptr, int, int, char *);
1e0f0b4d 139static void usage (FILE *, int) ATTRIBUTE_NORETURN;
252b5132 140\f
2da42df6 141int main (int, char **);
65de42c0 142
252b5132 143int
2da42df6 144main (int argc, char **argv)
252b5132
RH
145{
146 int optc;
147 int exit_status = 0;
b34976b6 148 bfd_boolean files_given = FALSE;
508e676d 149 char *s;
e36aef42 150 int numeric_opt = 0;
252b5132 151
3882b010 152#if defined (HAVE_SETLOCALE)
1c529ca6 153 setlocale (LC_ALL, "");
252b5132
RH
154#endif
155 bindtextdomain (PACKAGE, LOCALEDIR);
156 textdomain (PACKAGE);
157
158 program_name = argv[0];
159 xmalloc_set_program_name (program_name);
86eafac0 160 bfd_set_error_program_name (program_name);
869b9d07
MM
161
162 expandargv (&argc, &argv);
163
c904a764 164 string_min = 4;
334ac421 165 include_all_whitespace = FALSE;
b34976b6
AM
166 print_addresses = FALSE;
167 print_filenames = FALSE;
7fac9594
NC
168 if (DEFAULT_STRINGS_ALL)
169 datasection_only = FALSE;
170 else
171 datasection_only = TRUE;
252b5132 172 target = NULL;
d132876a 173 encoding = 's';
55edd97b 174 output_separator = NULL;
252b5132 175
55edd97b 176 while ((optc = getopt_long (argc, argv, "adfhHn:wot:e:T:s:Vv0123456789",
252b5132
RH
177 long_options, (int *) 0)) != EOF)
178 {
179 switch (optc)
180 {
181 case 'a':
b34976b6 182 datasection_only = FALSE;
252b5132
RH
183 break;
184
7fac9594
NC
185 case 'd':
186 datasection_only = TRUE;
187 break;
188
252b5132 189 case 'f':
b34976b6 190 print_filenames = TRUE;
252b5132
RH
191 break;
192
8b53311e 193 case 'H':
252b5132
RH
194 case 'h':
195 usage (stdout, 0);
196
197 case 'n':
508e676d
JK
198 string_min = (int) strtoul (optarg, &s, 0);
199 if (s != NULL && *s != 0)
200 fatal (_("invalid integer argument %s"), optarg);
252b5132
RH
201 break;
202
334ac421
EA
203 case 'w':
204 include_all_whitespace = TRUE;
205 break;
206
252b5132 207 case 'o':
b34976b6 208 print_addresses = TRUE;
252b5132
RH
209 address_radix = 8;
210 break;
211
212 case 't':
b34976b6 213 print_addresses = TRUE;
252b5132
RH
214 if (optarg[1] != '\0')
215 usage (stderr, 1);
216 switch (optarg[0])
217 {
218 case 'o':
219 address_radix = 8;
220 break;
221
222 case 'd':
223 address_radix = 10;
224 break;
225
226 case 'x':
227 address_radix = 16;
228 break;
229
230 default:
231 usage (stderr, 1);
232 }
233 break;
234
235 case 'T':
236 target = optarg;
237 break;
238
d132876a
NC
239 case 'e':
240 if (optarg[1] != '\0')
241 usage (stderr, 1);
242 encoding = optarg[0];
243 break;
244
55edd97b
EA
245 case 's':
246 output_separator = optarg;
247 break;
248
8b53311e 249 case 'V':
252b5132
RH
250 case 'v':
251 print_version ("strings");
252 break;
253
254 case '?':
255 usage (stderr, 1);
256
257 default:
e36aef42 258 numeric_opt = optind;
252b5132
RH
259 break;
260 }
261 }
262
e36aef42
AM
263 if (numeric_opt != 0)
264 {
265 string_min = (int) strtoul (argv[numeric_opt - 1] + 1, &s, 0);
266 if (s != NULL && *s != 0)
267 fatal (_("invalid integer argument %s"), argv[numeric_opt - 1] + 1);
268 }
c904a764
NC
269 if (string_min < 1)
270 fatal (_("invalid minimum string length %d"), string_min);
252b5132 271
d132876a
NC
272 switch (encoding)
273 {
8745eafa 274 case 'S':
d132876a
NC
275 case 's':
276 encoding_bytes = 1;
277 break;
278 case 'b':
279 case 'l':
280 encoding_bytes = 2;
281 break;
282 case 'B':
283 case 'L':
284 encoding_bytes = 4;
285 break;
286 default:
287 usage (stderr, 1);
288 }
289
bf2dd8d7
AM
290 if (bfd_init () != BFD_INIT_MAGIC)
291 fatal (_("fatal error: libbfd ABI mismatch"));
252b5132
RH
292 set_default_bfd_target ();
293
294 if (optind >= argc)
295 {
b34976b6 296 datasection_only = FALSE;
5af11cab 297 SET_BINARY (fileno (stdin));
252b5132 298 print_strings ("{standard input}", stdin, 0, 0, 0, (char *) NULL);
b34976b6 299 files_given = TRUE;
252b5132
RH
300 }
301 else
302 {
303 for (; optind < argc; ++optind)
304 {
305 if (strcmp (argv[optind], "-") == 0)
b34976b6 306 datasection_only = FALSE;
252b5132
RH
307 else
308 {
b34976b6 309 files_given = TRUE;
535b785f 310 exit_status |= !strings_file (argv[optind]);
252b5132
RH
311 }
312 }
313 }
314
b34976b6 315 if (!files_given)
252b5132
RH
316 usage (stderr, 1);
317
318 return (exit_status);
319}
320\f
19871f45
AM
321/* Scan section SECT of the file ABFD, whose printable name is
322 FILENAME. If it contains initialized data set GOT_A_SECTION and
323 print the strings in it. */
252b5132
RH
324
325static void
19871f45
AM
326strings_a_section (bfd *abfd, asection *sect, const char *filename,
327 bfd_boolean *got_a_section)
252b5132 328{
06803313 329 bfd_size_type sectsize;
19871f45 330 bfd_byte *mem;
3aade688 331
06803313
NC
332 if ((sect->flags & DATA_FLAGS) != DATA_FLAGS)
333 return;
334
fd361982 335 sectsize = bfd_section_size (sect);
19871f45 336 if (sectsize == 0)
06803313
NC
337 return;
338
19871f45 339 if (!bfd_malloc_and_get_section (abfd, sect, &mem))
252b5132 340 {
19871f45
AM
341 non_fatal (_("%s: Reading section %s failed: %s"),
342 filename, sect->name, bfd_errmsg (bfd_get_error ()));
343 return;
252b5132 344 }
06803313 345
19871f45
AM
346 *got_a_section = TRUE;
347 print_strings (filename, NULL, sect->filepos, 0, sectsize, (char *) mem);
06803313 348 free (mem);
252b5132
RH
349}
350
351/* Scan all of the sections in FILE, and print the strings
352 in the initialized data section(s).
353
b34976b6
AM
354 Return TRUE if successful,
355 FALSE if not (such as if FILE is not an object file). */
252b5132 356
b34976b6 357static bfd_boolean
2da42df6 358strings_object_file (const char *file)
252b5132 359{
06803313 360 bfd *abfd;
19871f45
AM
361 asection *s;
362 bfd_boolean got_a_section;
06803313
NC
363
364 abfd = bfd_openr (file, target);
252b5132
RH
365
366 if (abfd == NULL)
8745eafa
NC
367 /* Treat the file as a non-object file. */
368 return FALSE;
252b5132
RH
369
370 /* This call is mainly for its side effect of reading in the sections.
371 We follow the traditional behavior of `strings' in that we don't
372 complain if we don't recognize a file to be an object file. */
b34976b6 373 if (!bfd_check_format (abfd, bfd_object))
252b5132
RH
374 {
375 bfd_close (abfd);
b34976b6 376 return FALSE;
252b5132
RH
377 }
378
b34976b6 379 got_a_section = FALSE;
19871f45
AM
380 for (s = abfd->sections; s != NULL; s = s->next)
381 strings_a_section (abfd, s, file, &got_a_section);
252b5132
RH
382
383 if (!bfd_close (abfd))
384 {
385 bfd_nonfatal (file);
b34976b6 386 return FALSE;
252b5132
RH
387 }
388
389 return got_a_section;
390}
391
b34976b6 392/* Print the strings in FILE. Return TRUE if ok, FALSE if an error occurs. */
252b5132 393
b34976b6 394static bfd_boolean
2da42df6 395strings_file (char *file)
252b5132 396{
ee2fb9eb
JK
397 struct stat st;
398
399 /* get_file_size does not support non-S_ISREG files. */
fb5b5478 400
ee2fb9eb 401 if (stat (file, &st) < 0)
fb5b5478
JJ
402 {
403 if (errno == ENOENT)
404 non_fatal (_("'%s': No such file"), file);
405 else
406 non_fatal (_("Warning: could not locate '%s'. reason: %s"),
407 file, strerror (errno));
408 return FALSE;
409 }
0e158763
NC
410 else if (S_ISDIR (st.st_mode))
411 {
412 non_fatal (_("Warning: '%s' is a directory"), file);
413 return FALSE;
414 }
f24ddbdd 415
252b5132
RH
416 /* If we weren't told to scan the whole file,
417 try to open it as an object file and only look at
418 initialized data sections. If that fails, fall back to the
419 whole file. */
420 if (!datasection_only || !strings_object_file (file))
421 {
422 FILE *stream;
423
ee2fb9eb 424 stream = fopen (file, FOPEN_RB);
252b5132
RH
425 if (stream == NULL)
426 {
427 fprintf (stderr, "%s: ", program_name);
428 perror (file);
b34976b6 429 return FALSE;
252b5132
RH
430 }
431
ee2fb9eb 432 print_strings (file, stream, (file_ptr) 0, 0, 0, (char *) 0);
252b5132
RH
433
434 if (fclose (stream) == EOF)
435 {
436 fprintf (stderr, "%s: ", program_name);
437 perror (file);
b34976b6 438 return FALSE;
252b5132
RH
439 }
440 }
441
b34976b6 442 return TRUE;
252b5132
RH
443}
444\f
d132876a
NC
445/* Read the next character, return EOF if none available.
446 Assume that STREAM is positioned so that the next byte read
447 is at address ADDRESS in the file.
448
449 If STREAM is NULL, do not read from it.
450 The caller can supply a buffer of characters
451 to be processed before the data in STREAM.
452 MAGIC is the address of the buffer and
453 MAGICCOUNT is how many characters are in it. */
454
455static long
ee2fb9eb 456get_char (FILE *stream, file_ptr *address, int *magiccount, char **magic)
d132876a
NC
457{
458 int c, i;
c54e2ec1 459 long r = 0;
d132876a
NC
460
461 for (i = 0; i < encoding_bytes; i++)
462 {
463 if (*magiccount)
464 {
465 (*magiccount)--;
466 c = *(*magic)++;
467 }
468 else
469 {
470 if (stream == NULL)
471 return EOF;
b7d4af3a
JW
472
473 /* Only use getc_unlocked if we found a declaration for it.
474 Otherwise, libc is not thread safe by default, and we
475 should not use it. */
476
477#if defined(HAVE_GETC_UNLOCKED) && HAVE_DECL_GETC_UNLOCKED
cedd9a58
JJ
478 c = getc_unlocked (stream);
479#else
d132876a 480 c = getc (stream);
cedd9a58 481#endif
d132876a
NC
482 if (c == EOF)
483 return EOF;
484 }
485
486 (*address)++;
c54e2ec1 487 r = (r << 8) | (c & 0xff);
d132876a
NC
488 }
489
490 switch (encoding)
491 {
c54e2ec1 492 default:
d132876a
NC
493 break;
494 case 'l':
c54e2ec1 495 r = ((r & 0xff) << 8) | ((r & 0xff00) >> 8);
d132876a
NC
496 break;
497 case 'L':
c54e2ec1
AM
498 r = (((r & 0xff) << 24) | ((r & 0xff00) << 8)
499 | ((r & 0xff0000) >> 8) | ((r & 0xff000000) >> 24));
d132876a
NC
500 break;
501 }
502
d132876a
NC
503 return r;
504}
7ca166c9
AM
505
506/* Throw away one byte of a (possibly) multi-byte char C, updating
507 address and buffer to suit. */
508
509static void
510unget_part_char (long c, file_ptr *address, int *magiccount, char **magic)
511{
512 static char tmp[4];
513
514 if (encoding_bytes > 1)
515 {
516 *address -= encoding_bytes - 1;
517
518 if (*magiccount == 0)
519 {
520 /* If no magic buffer exists, use temp buffer. */
521 switch (encoding)
522 {
523 default:
524 break;
525 case 'b':
526 tmp[0] = c & 0xff;
527 *magiccount = 1;
528 break;
529 case 'l':
530 tmp[0] = (c >> 8) & 0xff;
531 *magiccount = 1;
532 break;
533 case 'B':
534 tmp[0] = (c >> 16) & 0xff;
535 tmp[1] = (c >> 8) & 0xff;
536 tmp[2] = c & 0xff;
537 *magiccount = 3;
538 break;
539 case 'L':
540 tmp[0] = (c >> 8) & 0xff;
541 tmp[1] = (c >> 16) & 0xff;
542 tmp[2] = (c >> 24) & 0xff;
543 *magiccount = 3;
544 break;
545 }
546 *magic = tmp;
547 }
548 else
549 {
550 /* If magic buffer exists, rewind. */
551 *magic -= encoding_bytes - 1;
552 *magiccount += encoding_bytes - 1;
553 }
554 }
555}
d132876a 556\f
252b5132
RH
557/* Find the strings in file FILENAME, read from STREAM.
558 Assume that STREAM is positioned so that the next byte read
559 is at address ADDRESS in the file.
560 Stop reading at address STOP_POINT in the file, if nonzero.
561
562 If STREAM is NULL, do not read from it.
563 The caller can supply a buffer of characters
564 to be processed before the data in STREAM.
565 MAGIC is the address of the buffer and
566 MAGICCOUNT is how many characters are in it.
567 Those characters come at address ADDRESS and the data in STREAM follow. */
568
569static void
ee2fb9eb 570print_strings (const char *filename, FILE *stream, file_ptr address,
2da42df6 571 int stop_point, int magiccount, char *magic)
252b5132 572{
d132876a 573 char *buf = (char *) xmalloc (sizeof (char) * (string_min + 1));
252b5132
RH
574
575 while (1)
576 {
ee2fb9eb 577 file_ptr start;
252b5132 578 int i;
d132876a 579 long c;
252b5132
RH
580
581 /* See if the next `string_min' chars are all graphic chars. */
582 tryline:
583 if (stop_point && address >= stop_point)
584 break;
585 start = address;
586 for (i = 0; i < string_min; i++)
587 {
d132876a
NC
588 c = get_char (stream, &address, &magiccount, &magic);
589 if (c == EOF)
68187828
NC
590 {
591 free (buf);
592 return;
593 }
71f5e3f7 594
8745eafa 595 if (! STRING_ISGRAPHIC (c))
71f5e3f7 596 {
7ca166c9
AM
597 /* Found a non-graphic. Try again starting with next byte. */
598 unget_part_char (c, &address, &magiccount, &magic);
71f5e3f7
NC
599 goto tryline;
600 }
252b5132
RH
601 buf[i] = c;
602 }
603
604 /* We found a run of `string_min' graphic characters. Print up
e9f87780 605 to the next non-graphic character. */
252b5132
RH
606
607 if (print_filenames)
608 printf ("%s: ", filename);
609 if (print_addresses)
610 switch (address_radix)
611 {
612 case 8:
4c219c2e 613#ifdef HAVE_LONG_LONG
cedd9a58 614 if (sizeof (start) > sizeof (long))
6e3d6dc1 615 {
4c219c2e 616# ifndef __MSVCRT__
7ca166c9 617 printf ("%7llo ", (unsigned long long) start);
4c219c2e 618# else
7ca166c9 619 printf ("%7I64o ", (unsigned long long) start);
4c219c2e 620# endif
6e3d6dc1 621 }
cedd9a58 622 else
50e3244d 623#elif !BFD_HOST_64BIT_LONG
7ca166c9
AM
624 if (start != (unsigned long) start)
625 printf ("++%7lo ", (unsigned long) start);
626 else
cedd9a58 627#endif
7ca166c9 628 printf ("%7lo ", (unsigned long) start);
252b5132
RH
629 break;
630
631 case 10:
4c219c2e 632#ifdef HAVE_LONG_LONG
cedd9a58 633 if (sizeof (start) > sizeof (long))
6e3d6dc1 634 {
4c219c2e 635# ifndef __MSVCRT__
c6a636ce 636 printf ("%7llu ", (unsigned long long) start);
4c219c2e 637# else
7ca166c9 638 printf ("%7I64d ", (unsigned long long) start);
4c219c2e 639# endif
6e3d6dc1 640 }
cedd9a58 641 else
50e3244d 642#elif !BFD_HOST_64BIT_LONG
7ca166c9 643 if (start != (unsigned long) start)
c6a636ce 644 printf ("++%7lu ", (unsigned long) start);
7ca166c9 645 else
cedd9a58 646#endif
7ca166c9 647 printf ("%7ld ", (long) start);
252b5132
RH
648 break;
649
650 case 16:
4c219c2e 651#ifdef HAVE_LONG_LONG
cedd9a58 652 if (sizeof (start) > sizeof (long))
6e3d6dc1 653 {
4c219c2e 654# ifndef __MSVCRT__
7ca166c9 655 printf ("%7llx ", (unsigned long long) start);
4c219c2e 656# else
7ca166c9 657 printf ("%7I64x ", (unsigned long long) start);
4c219c2e 658# endif
6e3d6dc1 659 }
cedd9a58 660 else
50e3244d 661#elif !BFD_HOST_64BIT_LONG
7ca166c9
AM
662 if (start != (unsigned long) start)
663 printf ("%lx%8.8lx ", (unsigned long) (start >> 32),
664 (unsigned long) (start & 0xffffffff));
665 else
cedd9a58 666#endif
7ca166c9 667 printf ("%7lx ", (unsigned long) start);
252b5132
RH
668 break;
669 }
670
671 buf[i] = '\0';
672 fputs (buf, stdout);
673
674 while (1)
675 {
d132876a
NC
676 c = get_char (stream, &address, &magiccount, &magic);
677 if (c == EOF)
678 break;
8745eafa 679 if (! STRING_ISGRAPHIC (c))
dcd9adc5 680 {
7ca166c9 681 unget_part_char (c, &address, &magiccount, &magic);
dcd9adc5
NC
682 break;
683 }
252b5132
RH
684 putchar (c);
685 }
686
55edd97b 687 if (output_separator)
7ca166c9 688 fputs (output_separator, stdout);
55edd97b 689 else
7ca166c9 690 putchar ('\n');
252b5132 691 }
68187828 692 free (buf);
252b5132
RH
693}
694\f
252b5132 695static void
2da42df6 696usage (FILE *stream, int status)
252b5132 697{
8b53311e
NC
698 fprintf (stream, _("Usage: %s [option(s)] [file(s)]\n"), program_name);
699 fprintf (stream, _(" Display printable strings in [file(s)] (stdin by default)\n"));
7fac9594
NC
700 fprintf (stream, _(" The options are:\n"));
701
702 if (DEFAULT_STRINGS_ALL)
703 fprintf (stream, _("\
704 -a - --all Scan the entire file, not just the data section [default]\n\
705 -d --data Only scan the data sections in the file\n"));
706 else
707 fprintf (stream, _("\
8b53311e 708 -a - --all Scan the entire file, not just the data section\n\
7fac9594
NC
709 -d --data Only scan the data sections in the file [default]\n"));
710
711 fprintf (stream, _("\
8b53311e
NC
712 -f --print-file-name Print the name of the file before each string\n\
713 -n --bytes=[number] Locate & print any NUL-terminated sequence of at\n\
c904a764 714 -<number> least [number] characters (default 4).\n\
d412a550 715 -t --radix={o,d,x} Print the location of the string in base 8, 10 or 16\n\
334ac421 716 -w --include-all-whitespace Include all whitespace as valid string characters\n\
8b53311e
NC
717 -o An alias for --radix=o\n\
718 -T --target=<BFDNAME> Specify the binary file format\n\
8745eafa
NC
719 -e --encoding={s,S,b,l,B,L} Select character size and endianness:\n\
720 s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit\n\
55edd97b 721 -s --output-separator=<string> String used to separate strings in output.\n\
07012eee 722 @<file> Read options from <file>\n\
8b53311e 723 -h --help Display this information\n\
ffbe5983 724 -v -V --version Print the program's version number\n"));
252b5132 725 list_supported_targets (program_name, stream);
92f01d61 726 if (REPORT_BUGS_TO[0] && status == 0)
8ad3436c 727 fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
252b5132
RH
728 exit (status);
729}
This page took 0.842081 seconds and 4 git commands to generate.