aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/nm.c20
2 files changed, 23 insertions, 5 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 16c8316..55b18d5 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,11 @@
+2012-01-16 Alan Modra <amodra@gmail.com>
+
+ PR binutils/13593
+ * nm.c (OPTION_SIZE_SORT): Define.
+ (long_options): Don't set no_sort, sort_numerically or
+ sort_by_size directly.
+ (main): Instead set the flags here, making them mutually exclusive.
+
2012-01-10 Tristan Gingold <gingold@adacore.com>
* objdump.c (display_object_bfd): Renamed from ...
diff --git a/binutils/nm.c b/binutils/nm.c
index 04067b1..27019e19 100644
--- a/binutils/nm.c
+++ b/binutils/nm.c
@@ -1,6 +1,6 @@
/* nm.c -- Describe symbol table of a rel file.
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GNU Binutils.
@@ -184,7 +184,8 @@ static bfd *lineno_cache_bfd;
static bfd *lineno_cache_rel_bfd;
#define OPTION_TARGET 200
-#define OPTION_PLUGIN 201
+#define OPTION_PLUGIN (OPTION_TARGET + 1)
+#define OPTION_SIZE_SORT (OPTION_PLUGIN + 1)
static struct option long_options[] =
{
@@ -197,8 +198,8 @@ static struct option long_options[] =
{"line-numbers", no_argument, 0, 'l'},
{"no-cplus", no_argument, &do_demangle, 0}, /* Linux compatibility. */
{"no-demangle", no_argument, &do_demangle, 0},
- {"no-sort", no_argument, &no_sort, 1},
- {"numeric-sort", no_argument, &sort_numerically, 1},
+ {"no-sort", no_argument, 0, 'p'},
+ {"numeric-sort", no_argument, 0, 'n'},
{"plugin", required_argument, 0, OPTION_PLUGIN},
{"portability", no_argument, 0, 'P'},
{"print-armap", no_argument, &print_armap, 1},
@@ -206,7 +207,7 @@ static struct option long_options[] =
{"print-size", no_argument, 0, 'S'},
{"radix", required_argument, 0, 't'},
{"reverse-sort", no_argument, &reverse_sort, 1},
- {"size-sort", no_argument, &sort_by_size, 1},
+ {"size-sort", no_argument, 0, OPTION_SIZE_SORT},
{"special-syms", no_argument, &allow_special_symbols, 1},
{"stats", no_argument, &show_stats, 1},
{"synthetic", no_argument, &show_synthetic, 1},
@@ -1593,10 +1594,19 @@ main (int argc, char **argv)
break;
case 'n':
case 'v':
+ no_sort = 0;
sort_numerically = 1;
+ sort_by_size = 0;
break;
case 'p':
no_sort = 1;
+ sort_numerically = 0;
+ sort_by_size = 0;
+ break;
+ case OPTION_SIZE_SORT:
+ no_sort = 0;
+ sort_numerically = 0;
+ sort_by_size = 1;
break;
case 'P':
set_output_format ("posix");