nm: Remove --with-symbol-versions
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 10 Aug 2020 12:17:28 +0000 (05:17 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 10 Aug 2020 12:17:41 +0000 (05:17 -0700)
Since

commit 7e6e972f74aeac0ebdbd95a7f905d871cd2581de
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Tue Mar 24 04:23:11 2020 -0700

    bfd: Display symbol version for nm -D

always displays symbol version for nm, remove --with-symbol-versions and
silently accept it for backward compatibility.

binutils/

PR binutils/26302
* nm.c (with_symbol_versions): Removed.
(long_option_values): Add OPTION_WITH_SYMBOL_VERSIONS.
(long_options): Update --with-symbol-versions entry.
(print_symbol): Remove the with_symbol_versions check.
(main): Add OPTION_WITH_SYMBOL_VERSIONS for backward
compatibility.
* doc/binutils.texi: Remove --with-symbol-versions.

ld/

PR binutils/26302
* testsuite/ld-elf/pr26302.nd: New file.
* testsuite/ld-elf/pr26302.ver: Likewise.
* testsuite/ld-elf/pr26302a.c: Likewise.
* testsuite/ld-elf/pr26302b.c: Likewise.
* testsuite/ld-elf/shared.exp: Run binutils/26302 tests.

binutils/ChangeLog
binutils/doc/binutils.texi
binutils/nm.c
ld/ChangeLog
ld/testsuite/ld-elf/pr26302.nd [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302.ver [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302a.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr26302b.c [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp

index 0aab6a276e44871787be951589162d90219c487c..a536d325e5db97423ad966ccf32ef0e0ecaa5169 100644 (file)
@@ -1,3 +1,14 @@
+2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/26302
+       * nm.c (with_symbol_versions): Removed.
+       (long_option_values): Add OPTION_WITH_SYMBOL_VERSIONS.
+       (long_options): Update --with-symbol-versions entry.
+       (print_symbol): Remove the with_symbol_versions check.
+       (main): Add OPTION_WITH_SYMBOL_VERSIONS for backward
+       compatibility.
+       * doc/binutils.texi: Remove --with-symbol-versions.
+
 2020-08-05  Alan Modra  <amodra@gmail.com>
 
        PR 26337
index 4a11bf1f1a65dac8b11dbf06fdb0f333c4a86777..0822b5c8b39966b9fdb68ad50f2ee4b9eaef27d0 100644 (file)
@@ -796,7 +796,7 @@ nm [@option{-A}|@option{-o}|@option{--print-file-name}] [@option{-a}|@option{--d
    [@option{--plugin} @var{name}]
    [@option{--no-recurse-limit}|@option{--recurse-limit}]]
    [@option{--size-sort}] [@option{--special-syms}]
-   [@option{--synthetic}] [@option{--with-symbol-versions}] [@option{--target=}@var{bfdname}]
+   [@option{--synthetic}] [@option{--target=}@var{bfdname}]
    [@var{objfile}@dots{}]
 @c man end
 @end smallexample
@@ -1130,14 +1130,6 @@ Include synthetic symbols in the output.  These are special symbols
 created by the linker for various purposes.  They are not shown by
 default since they are not part of the binary's original source code.
 
-@item --with-symbol-versions
-Enables the display of symbol version information if any exists.  The
-version string is displayed as a suffix to the symbol name, preceded by
-an @@ character.  For example @samp{foo@@VER_1}.  If the version is
-the default version to be used when resolving unversioned references
-to the symbol then it is displayed as a suffix preceded by two @@
-characters.  For example @samp{foo@@@@VER_2}.
-
 @item --target=@var{bfdname}
 @cindex object code format
 Specify an object code format other than your system's default format.
index 1b5122d56ab5c00fc710a775053eb2ee300b0665..69e697ae9252816fb1958eaebe3ccb8cc3a76cad 100644 (file)
@@ -161,7 +161,6 @@ static int show_version = 0;        /* Show the version number.  */
 static int show_synthetic = 0; /* Display synthesized symbols too.  */
 static int line_numbers = 0;   /* Print line numbers for symbols.  */
 static int allow_special_symbols = 0;  /* Allow special symbols.  */
-static int with_symbol_versions = 0; /* Include symbol version information in the output.  */
 
 static int demangle_flags = DMGL_ANSI | DMGL_PARAMS;
 
@@ -192,7 +191,8 @@ enum long_option_values
   OPTION_PLUGIN,
   OPTION_SIZE_SORT,
   OPTION_RECURSE_LIMIT,
-  OPTION_NO_RECURSE_LIMIT
+  OPTION_NO_RECURSE_LIMIT,
+  OPTION_WITH_SYMBOL_VERSIONS
 };
 
 static struct option long_options[] =
@@ -226,7 +226,8 @@ static struct option long_options[] =
   {"defined-only", no_argument, &defined_only, 1},
   {"undefined-only", no_argument, &undefined_only, 1},
   {"version", no_argument, &show_version, 1},
-  {"with-symbol-versions", no_argument, &with_symbol_versions, 1},
+  {"with-symbol-versions", no_argument, NULL,
+   OPTION_WITH_SYMBOL_VERSIONS},
   {0, no_argument, 0, 0}
 };
 \f
@@ -901,22 +902,6 @@ print_symbol (bfd *        abfd,
 
   format->print_symbol_info (&info, abfd);
 
-  if (with_symbol_versions)
-    {
-      const char *  version_string = NULL;
-      bfd_boolean   hidden = FALSE;
-
-      if ((sym->flags & (BSF_SECTION_SYM | BSF_SYNTHETIC)) == 0)
-       version_string = bfd_get_symbol_version_string (abfd, sym,
-                                                       TRUE, &hidden);
-
-      if (bfd_is_und_section (bfd_asymbol_section (sym)))
-       hidden = TRUE;
-
-      if (version_string && *version_string != '\0')
-       printf (hidden ? "@%s" : "@@%s", version_string);
-    }
-
   if (line_numbers)
     {
       static asymbol **syms;
@@ -1761,6 +1746,9 @@ main (int argc, char **argv)
        case OPTION_NO_RECURSE_LIMIT:
          demangle_flags |= DMGL_NO_RECURSE_LIMIT;
          break;
+       case OPTION_WITH_SYMBOL_VERSIONS:
+         /* Ignored for backward compatibility.  */
+         break;
        case 'D':
          dynamic = 1;
          break;
index db019e26a3a3542433e4b8dc82b7505c002987a3..2539fad36b41a2ca9129bf9d4045fc55d0a467f2 100644 (file)
@@ -1,3 +1,12 @@
+2020-08-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR binutils/26302
+       * testsuite/ld-elf/pr26302.nd: New file.
+       * testsuite/ld-elf/pr26302.ver: Likewise.
+       * testsuite/ld-elf/pr26302a.c: Likewise.
+       * testsuite/ld-elf/pr26302b.c: Likewise.
+       * testsuite/ld-elf/shared.exp: Run binutils/26302 tests.
+
 2020-08-07  David Faust  <david.faust@oracle.com>
 
        * testsuite/ld-bpf/call-3.s: New file.
diff --git a/ld/testsuite/ld-elf/pr26302.nd b/ld/testsuite/ld-elf/pr26302.nd
new file mode 100644 (file)
index 0000000..1f2fbdf
--- /dev/null
@@ -0,0 +1,3 @@
+#...
+ +U foo@@FOO
+#pass
diff --git a/ld/testsuite/ld-elf/pr26302.ver b/ld/testsuite/ld-elf/pr26302.ver
new file mode 100644 (file)
index 0000000..f2c03ac
--- /dev/null
@@ -0,0 +1,5 @@
+FOO
+{
+global:
+  foo;
+};
diff --git a/ld/testsuite/ld-elf/pr26302a.c b/ld/testsuite/ld-elf/pr26302a.c
new file mode 100644 (file)
index 0000000..cd0130c
--- /dev/null
@@ -0,0 +1,4 @@
+void
+foo (void)
+{
+}
diff --git a/ld/testsuite/ld-elf/pr26302b.c b/ld/testsuite/ld-elf/pr26302b.c
new file mode 100644 (file)
index 0000000..eae278d
--- /dev/null
@@ -0,0 +1,7 @@
+extern void foo (void);
+
+void
+bar (void)
+{
+  foo ();
+}
index e9e9012058645e8ed0f7f120a02ef2eac1a89a32..014937175fc9985574016ff6cdeec8ce08ed9bb5 100644 (file)
@@ -843,6 +843,24 @@ run_cc_link_tests [list \
        {{readelf {--dyn-syms --wide} pr26094-1b.rd}} \
        "pr26094-1" \
     ] \
+    [list \
+       "Build pr26302a.so" \
+       "-shared -Wl,--version-script=pr26302.ver" \
+       "-fPIC" \
+       {pr26302a.c} \
+       {} \
+       "pr26302a.so"
+    ] \
+    [list \
+       "Build pr26302b.so" \
+       "-shared -Wl,--no-as-needed tmpdir/pr26302a.so" \
+       "-fPIC" \
+       {pr26302b.c} \
+       {{nm {-u} pr26302.nd} \
+        {nm {-u -D} pr26302.nd} \
+        {nm {-u -D --with-symbol-versions} pr26302.nd}} \
+       "pr26302b.so" \
+    ] \
 ]
 
 run_ld_link_tests [list \