]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
binutils/
authorTristan Gingold <gingold@adacore.com>
Mon, 19 Aug 2013 15:08:52 +0000 (15:08 +0000)
committerTristan Gingold <gingold@adacore.com>
Mon, 19 Aug 2013 15:08:52 +0000 (15:08 +0000)
2013-08-19  Tristan Gingold  <gingold@adacore.com>

* nm.c (print_size_symbols): Directly get symbol size.

binutils/testsuite/
2013-08-19  Tristan Gingold  <gingold@adacore.com>

* binutils-all/nm.exp: Add a test for nm --size-sort
* binutils-all/nm-elf-1.s: New file.
* binutils-all/nm-1.s: New file.

binutils/ChangeLog
binutils/nm.c
binutils/testsuite/ChangeLog
binutils/testsuite/binutils-all/nm-1.s [new file with mode: 0644]
binutils/testsuite/binutils-all/nm-elf-1.s [new file with mode: 0644]
binutils/testsuite/binutils-all/nm.exp

index ffb0300b8b85a010f18193903a8cdc20cae36a95..f3bda63dd353b3f634ceb506d66f8aa722e271e3 100644 (file)
@@ -1,3 +1,7 @@
+2013-08-19  Tristan Gingold  <gingold@adacore.com>
+
+       * nm.c (print_size_symbols): Directly get symbol size.
+
 2013-08-12  Andreas Schwab  <schwab@suse.de>
 
        PR binutils/15818
index ad38e27c8a834d5ee06e8c0024af959726e9cbdb..5c325201f294313f4ebf8108c9e5bdc287cd5b42 100644 (file)
@@ -951,19 +951,12 @@ print_size_symbols (bfd *abfd, bfd_boolean is_dynamic,
   for (; from < fromend; from++)
     {
       asymbol *sym;
-      bfd_vma ssize;
 
       sym = bfd_minisymbol_to_symbol (abfd, is_dynamic, from->minisym, store);
       if (sym == NULL)
        bfd_fatal (bfd_get_filename (abfd));
 
-      /* For elf we have already computed the correct symbol size.  */
-      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-       ssize = from->size;
-      else
-       ssize = from->size - bfd_section_vma (abfd, bfd_get_section (sym));
-
-      print_symbol (abfd, sym, ssize, archive_bfd);
+      print_symbol (abfd, sym, from->size, archive_bfd);
     }
 }
 
index ac10932fe22043f6c0cc3391f35e315126e0a438..d2d2f7da54cdc67a61dde226ecff4c0bb3623cc4 100644 (file)
@@ -1,3 +1,9 @@
+2013-08-19  Tristan Gingold  <gingold@adacore.com>
+
+       * binutils-all/nm.exp: Add a test for nm --size-sort
+       * binutils-all/nm-elf-1.s: New file.
+       * binutils-all/nm-1.s: New file.
+
 2013-05-31  H.J. Lu  <hongjiu.lu@intel.com>
 
        * binutils-all/i386/compressed-1b.d: Updated for text/data/bss
diff --git a/binutils/testsuite/binutils-all/nm-1.s b/binutils/testsuite/binutils-all/nm-1.s
new file mode 100644 (file)
index 0000000..5fe4cd7
--- /dev/null
@@ -0,0 +1,13 @@
+       .globl text_symbol1
+       .globl text_symbol2
+       .globl text_symbol3
+       .text
+text_symbol1:
+       .long 0
+       .long 0
+       .long 0
+text_symbol2:
+       .long 0
+       .long 0
+text_symbol3:
+       .long 0
diff --git a/binutils/testsuite/binutils-all/nm-elf-1.s b/binutils/testsuite/binutils-all/nm-elf-1.s
new file mode 100644 (file)
index 0000000..8e2f1f4
--- /dev/null
@@ -0,0 +1,16 @@
+       .globl text_symbol1
+       .globl text_symbol2
+       .globl text_symbol3
+       .text
+text_symbol1:
+       .long 0
+       .long 0
+       .long 0
+       .size text_symbol1, . - text_symbol1
+text_symbol2:
+       .long 0
+       .long 0
+       .size text_symbol2, . - text_symbol2
+text_symbol3:
+       .long 0
+       .size text_symbol3, . - text_symbol3
index 685794d323568479fcc867b34bd197a509e62ed4..226704b7790c56b079d5d6f65235939371e785b2 100644 (file)
@@ -155,4 +155,38 @@ if [regexp $want $got] then {
     fail "nm -P"
 }
 
+# Test nm --size-sort
+
+if [is_elf_format] {
+    set nm_1_src "nm-elf-1.s"
+} else {
+    set nm_1_src "nm-1.s"
+}
+
+if {![binutils_assemble $srcdir/$subdir/$nm_1_src tmpdir/nm-1.o]} then {
+    return
+}
+
+if [is_remote host] {
+    set tempfile [remote_download host tmpdir/nm-1.o]
+} else {
+    set tempfile tmpdir/nm-1.o
+}
+
+# This test does not work correctly on ECOFF targets, because ECOFF
+# stores most symbols twice, which messes up the nm output.
+setup_xfail "alpha*-*-osf*" "alpha*-*-netware*"
+setup_xfail "mips*-*-ultrix*" "mips*-*-ecoff*" "mips*-*-irix4*"
+setup_xfail "mips*-*-riscos*" "mips*-*-sysv3*" "mips*-sony-bsd*"
+
+set got [binutils_run $NM "$NMFLAGS --size-sort $tempfile"]
+
+set want "0*4 T text_symbol3.*0*8 T text_symbol2.*0*c T text_symbol1"
+
+if [regexp $want $got] then {
+    pass "nm --size-sort"
+} else {
+    fail "nm --size-sort"
+}
+
 # There are certainly other tests that could be run.