]> oss.titaniummirror.com Git - msp430-binutils.git/blobdiff - debian/patches/203-hjl-binutils-indirect.dpatch
Update patches, as releveant for 2.20
[msp430-binutils.git] / debian / patches / 203-hjl-binutils-indirect.dpatch
diff --git a/debian/patches/203-hjl-binutils-indirect.dpatch b/debian/patches/203-hjl-binutils-indirect.dpatch
deleted file mode 100755 (executable)
index 3d37bf7..0000000
+++ /dev/null
@@ -1,573 +0,0 @@
-#!/bin/sh -e
-## 203-hjl-binutils-indirect.dpatch
-##
-## DP: Description: PR ld/3351; avoid linker crash on ia64
-## DP: Author: H.J. Lu  <hongjiu.lu@intel.com>
-## DP: Upstream status: hjl 2.17.50.0.18
-## DP: Original patch: binutils-indirect-1.patch
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-bfd/
-
-2006-10-17  H.J. Lu  <hongjiu.lu@intel.com>
-
-       PR ld/3351
-       * elflink.c (_bfd_elf_update_dynamic_flags): New.
-       (_bfd_elf_merge_symbol): Update both real and indirect symbol
-       dynamic flags.
-       (_bfd_elf_add_default_symbol): Make the real symbol dynamic if
-       the indirect symbol is defined in a shared library.
-       (elf_link_add_object_symbols): Likewise.  If the indirect
-       symbol has been forced local, don't make the real symbol
-       dynamic.
-       (elf_link_check_versioned_symbol): Check indirect symbol.
-       (elf_link_output_extsym): Use real symbol definition when
-       reporting indirect symbol error.  Check version info for
-       dynamic versioned symbol.
-
-ld/testsuite/
-
-2006-10-17  H.J. Lu  <hongjiu.lu@intel.com>
-
-       PR ld/3351
-       * ld-elf/indirect.exp: New file.
-       * ld-elf/indirect1a.c: Likewise.
-       * ld-elf/indirect1b.c: Likewise.
-       * ld-elf/indirect1c.c: Likewise.
-       * ld-elf/indirect2.c: Likewise.
-       * ld-elf/indirect3.out: Likewise.
-       * ld-elf/indirect3a.c: Likewise.
-       * ld-elf/indirect3b.c: Likewise.
-       * ld-elf/indirect3c.c: Likewise.
-       * ld-elf/indirect4.out: Likewise.
-       * ld-elf/indirect4a.c: Likewise.
-       * ld-elf/indirect4b.c: Likewise.
-       * ld-elf/indirect4c.c: Likewise.
-
-@DPATCH@
-diff -urNad binutils-2.18~cvs20070812~/bfd/elflink.c binutils-2.18~cvs20070812/bfd/elflink.c
---- binutils-2.18~cvs20070812~/bfd/elflink.c   2007-07-27 03:04:29.000000000 +0200
-+++ binutils-2.18~cvs20070812/bfd/elflink.c    2007-08-12 13:27:51.000000000 +0200
-@@ -823,6 +823,33 @@
-   return dynsymcount;
- }
-+/* Mark if a symbol has a definition in a dynamic object or is
-+   weak in all dynamic objects.  */
-+
-+static void
-+_bfd_elf_mark_dynamic_def_weak (struct elf_link_hash_entry *h,
-+                              asection *sec, int bind)
-+{
-+  if (!h->dynamic_def)
-+    {
-+      if (!bfd_is_und_section (sec))
-+      h->dynamic_def = 1;
-+      else
-+      {
-+        /* Check if this symbol is weak in all dynamic objects. If it
-+           is the first time we see it in a dynamic object, we mark
-+           if it is weak. Otherwise, we clear it.  */
-+        if (!h->ref_dynamic)
-+          {
-+            if (bind == STB_WEAK)
-+              h->dynamic_weak = 1;
-+          }
-+        else if (bind != STB_WEAK)
-+          h->dynamic_weak = 0;
-+      }
-+    }
-+}
-+
- /* This function is called when we want to define a new symbol.  It
-    handles the various cases which arise when we find a definition in
-    a dynamic object, or when there is already a definition in a
-@@ -851,6 +878,7 @@
- {
-   asection *sec, *oldsec;
-   struct elf_link_hash_entry *h;
-+  struct elf_link_hash_entry *hi;
-   struct elf_link_hash_entry *flip;
-   int bind;
-   bfd *oldbfd;
-@@ -887,8 +915,9 @@
-   if (info->hash->creator != abfd->xvec)
-     return TRUE;
--  /* For merging, we only care about real symbols.  */
--
-+  /* For merging, we only care about real symbols.  But we need to make
-+     sure that indirect symbol dynamic flags are updated.  */
-+  hi = h;
-   while (h->root.type == bfd_link_hash_indirect
-        || h->root.type == bfd_link_hash_warning)
-     h = (struct elf_link_hash_entry *) h->root.u.i.link;
-@@ -1047,23 +1076,11 @@
-   /* We need to remember if a symbol has a definition in a dynamic
-      object or is weak in all dynamic objects. Internal and hidden
-      visibility will make it unavailable to dynamic objects.  */
--  if (newdyn && !h->dynamic_def)
-+  if (newdyn)
-     {
--      if (!bfd_is_und_section (sec))
--      h->dynamic_def = 1;
--      else
--      {
--        /* Check if this symbol is weak in all dynamic objects. If it
--           is the first time we see it in a dynamic object, we mark
--           if it is weak. Otherwise, we clear it.  */
--        if (!h->ref_dynamic)
--          {
--            if (bind == STB_WEAK)
--              h->dynamic_weak = 1;
--          }
--        else if (bind != STB_WEAK)
--          h->dynamic_weak = 0;
--      }
-+      _bfd_elf_mark_dynamic_def_weak (h, sec, bind);
-+      if (h != hi)
-+      _bfd_elf_mark_dynamic_def_weak (hi, sec, bind);
-     }
-   /* If the old symbol has non-default visibility, we ignore the new
-@@ -1075,6 +1092,7 @@
-       *skip = TRUE;
-       /* Make sure this symbol is dynamic.  */
-       h->ref_dynamic = 1;
-+      hi->ref_dynamic = 1;
-       /* A protected symbol has external availability. Make sure it is
-        recorded as dynamic.
-@@ -1609,6 +1627,7 @@
-         if (! dynamic)
-           {
-             if (info->shared
-+                || hi->def_dynamic
-                 || hi->ref_dynamic)
-               *dynsym = TRUE;
-           }
-@@ -3737,6 +3756,7 @@
-       flagword flags;
-       const char *name;
-       struct elf_link_hash_entry *h;
-+      struct elf_link_hash_entry *hi;
-       bfd_boolean definition;
-       bfd_boolean size_change_ok;
-       bfd_boolean type_change_ok;
-@@ -4026,6 +4046,9 @@
-       goto error_free_vers;
-       h = *sym_hash;
-+      /* We need to make sure that indirect symbol dynamic flags are
-+       updated.  */
-+      hi = h;
-       while (h->root.type == bfd_link_hash_indirect
-            || h->root.type == bfd_link_hash_warning)
-       h = (struct elf_link_hash_entry *) h->root.u.i.link;
-@@ -4232,22 +4255,36 @@
-               }
-             else
-               h->def_regular = 1;
--            if (! info->executable
--                || h->def_dynamic
--                || h->ref_dynamic)
-+
-+            /* If the indirect symbol has been forced local, don't
-+               make the real symbol dynamic.  */
-+            if ((h == hi || !hi->forced_local)
-+                && (! info->executable
-+                    || h->def_dynamic
-+                    || h->ref_dynamic))
-               dynsym = TRUE;
-           }
-         else
-           {
-             if (! definition)
--              h->ref_dynamic = 1;
-+              {
-+                h->ref_dynamic = 1;
-+                hi->ref_dynamic = 1;
-+              }
-             else
--              h->def_dynamic = 1;
--            if (h->def_regular
--                || h->ref_regular
--                || (h->u.weakdef != NULL
--                    && ! new_weakdef
--                    && h->u.weakdef->dynindx != -1))
-+              {
-+                h->def_dynamic = 1;
-+                hi->def_dynamic = 1;
-+              }
-+
-+            /* If the indirect symbol has been forced local, don't
-+               make the real symbol dynamic.  */
-+            if ((h == hi || !hi->forced_local)
-+                && (h->def_regular
-+                    || h->ref_regular
-+                    || (h->u.weakdef != NULL
-+                        && ! new_weakdef
-+                        && h->u.weakdef->dynindx != -1)))
-               dynsym = TRUE;
-           }
-@@ -8396,6 +8433,10 @@
-   if (!is_elf_hash_table (info->hash))
-     return FALSE;
-+  /* Check indirect symbol.  */
-+  while (h->root.type == bfd_link_hash_indirect)
-+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+
-   switch (h->root.type)
-     {
-     default:
-@@ -8604,11 +8645,17 @@
-       && !h->dynamic_weak
-       && ! elf_link_check_versioned_symbol (finfo->info, bed, h))
-     {
-+      struct elf_link_hash_entry *hi = h;
-+
-+      /* Check indirect symbol.  */
-+      while (hi->root.type == bfd_link_hash_indirect)
-+      hi = (struct elf_link_hash_entry *) hi->root.u.i.link;
-+
-       (*_bfd_error_handler)
-       (_("%B: %s symbol `%s' in %B is referenced by DSO"),
-        finfo->output_bfd,
--       h->root.u.def.section == bfd_abs_section_ptr
--       ? finfo->output_bfd : h->root.u.def.section->owner,
-+       hi->root.u.def.section == bfd_abs_section_ptr
-+       ? finfo->output_bfd : hi->root.u.def.section->owner,
-        ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
-        ? "internal"
-        : ELF_ST_VISIBILITY (h->other) == STV_HIDDEN
-@@ -8804,6 +8851,23 @@
-     {
-       bfd_byte *esym;
-+      /* Since there is no version information in the dynamic string,
-+       if there is no version info in symbol version section, we will
-+       have a run-time problem.  */
-+      if (h->verinfo.verdef == NULL)
-+      {
-+        char *p = strrchr (h->root.root.string, ELF_VER_CHR);
-+
-+        if (p && p [1] != '\0')
-+          {
-+            (*_bfd_error_handler)
-+              (_("%B: No symbol version section for versioned symbol `%s'"),
-+               finfo->output_bfd, h->root.root.string);
-+            eoinfo->failed = TRUE;
-+            return FALSE;
-+          }
-+      }
-+
-       sym.st_name = h->dynstr_index;
-       esym = finfo->dynsym_sec->contents + h->dynindx * bed->s->sizeof_sym;
-       if (! check_dynsym (finfo->output_bfd, &sym))
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect.exp binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect.exp
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect.exp        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect.exp 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,126 @@
-+# Expect script for various indirect symbol tests.
-+#   Copyright 2006 Free Software Foundation, Inc.
-+#
-+# This file is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
-+#
-+
-+#
-+# Written by H.J. Lu (hongjiu.lu@intel.com)
-+#
-+
-+# Exclude non-ELF targets.
-+
-+if ![is_elf_format] {
-+    return
-+}
-+
-+# Check if compiler works
-+if { [which $CC] == 0 } {
-+    return
-+}
-+
-+proc check_link_message { cmd string testname } {
-+    send_log "$cmd\n"
-+    verbose "$cmd"
-+    catch "exec $cmd" exec_output
-+    send_log "$exec_output\n"
-+    verbose "$exec_output"
-+
-+    foreach str $string {
-+      if [string match "*$str*" $exec_output] {
-+          pass "$testname: $str"
-+      } else {
-+          fail "$testname: $str"
-+      }
-+    }
-+}
-+
-+if { ![ld_compile $CC $srcdir/$subdir/indirect1a.c tmpdir/indirect1a.o]
-+     || ![ld_compile $CC $srcdir/$subdir/indirect1b.c tmpdir/indirect1b.o]
-+     || ![ld_compile "$CC -fPIC" $srcdir/$subdir/indirect2.c tmpdir/indirect2.o]
-+     || ![ld_compile $CC $srcdir/$subdir/indirect3a.c tmpdir/indirect3a.o]
-+     || ![ld_compile $CC $srcdir/$subdir/indirect3b.c tmpdir/indirect3b.o]
-+     || ![ld_compile $CC $srcdir/$subdir/indirect4a.c tmpdir/indirect4a.o]
-+     || ![ld_compile $CC $srcdir/$subdir/indirect4b.c tmpdir/indirect4b.o] } {
-+    unresolved "Indirect symbol tests"
-+    return
-+}
-+
-+set build_tests {
-+  {"Build libindirect1c.so"
-+   "-shared" "-fPIC"
-+   {indirect1c.c} {} "libindirect1c.so"}
-+  {"Build libindirect3c.so"
-+   "-shared" "-fPIC"
-+   {indirect3c.c} {} "libindirect3c.so"}
-+  {"Build libindirect4c.so"
-+   "-shared" "-fPIC"
-+   {indirect4c.c} {} "libindirect4c.so"}
-+}
-+
-+run_cc_link_tests $build_tests
-+
-+global ld
-+
-+set string ": final link failed: Nonrepresentable section on output"
-+
-+set string1 ": local symbol \`foo\' in tmpdir/indirect1b.o is referenced by DSO"
-+
-+set testname "Indirect symbol 1a"
-+set cmd "$ld -e start -o tmpdir/indirect1 tmpdir/indirect1a.o tmpdir/indirect1b.o tmpdir/libindirect1c.so"
-+check_link_message "$cmd" [list $string1 $string] "$testname"
-+
-+set testname "Indirect symbol 1b"
-+set cmd "$ld -e start -o tmpdir/indirect1 tmpdir/indirect1a.o tmpdir/libindirect1c.so tmpdir/indirect1b.o"
-+check_link_message "$cmd" [list $string1 $string] "$testname"
-+
-+set string2 ": No symbol version section for versioned symbol \`foo@FOO\'"
-+set testname "Indirect symbol 2"
-+set cmd "$ld -shared  -o tmpdir/indirect2.so tmpdir/indirect2.o"
-+check_link_message "$cmd" [list $string2 $string] "$testname"
-+
-+# The following tests require running the executable generated by ld.
-+if ![isnative] {
-+    return
-+}
-+
-+set run_tests {
-+    {"Run with libindirect3c.so 1"
-+     "tmpdir/indirect3a.o tmpdir/indirect3b.o tmpdir/libindirect3c.so" ""
-+     {dummy.c} "indirect3a" "indirect3.out"}
-+    {"Run with libindirect3c.so 2"
-+     "tmpdir/indirect3a.o tmpdir/libindirect3c.so tmpdir/indirect3b.o" ""
-+     {dummy.c} "indirect3b" "indirect3.out"}
-+    {"Run with libindirect3c.so 3"
-+     "tmpdir/indirect3b.o tmpdir/libindirect3c.so tmpdir/indirect3a.o" ""
-+     {dummy.c} "indirect3c" "indirect3.out"}
-+    {"Run with libindirect3c.so 4"
-+     "tmpdir/libindirect3c.so tmpdir/indirect3b.o tmpdir/indirect3a.o" ""
-+     {dummy.c} "indirect3d" "indirect3.out"}
-+    {"Run with libindirect4c.so 1"
-+     "tmpdir/indirect4a.o tmpdir/indirect4b.o tmpdir/libindirect4c.so" ""
-+     {dummy.c} "indirect4a" "indirect4.out"}
-+    {"Run with libindirect4c.so 2"
-+     "tmpdir/indirect4a.o tmpdir/libindirect4c.so tmpdir/indirect4b.o" ""
-+     {dummy.c} "indirect4b" "indirect4.out"}
-+    {"Run with libindirect4c.so 3"
-+     "tmpdir/indirect4b.o tmpdir/libindirect4c.so tmpdir/indirect4a.o" ""
-+     {dummy.c} "indirect4c" "indirect4.out"}
-+    {"Run with libindirect4c.so 4"
-+     "tmpdir/libindirect4c.so tmpdir/indirect4b.o tmpdir/indirect4a.o" ""
-+     {dummy.c} "indirect4d" "indirect4.out"}
-+}
-+
-+run_ld_link_exec_tests [] $run_tests
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect1a.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect1a.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect1a.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect1a.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,8 @@
-+extern void bar (void);
-+
-+int
-+start (void)
-+{
-+  bar ();
-+  return 0;
-+}
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect1b.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect1b.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect1b.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect1b.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,6 @@
-+void
-+foo (void)
-+{
-+}
-+
-+asm (".symver foo,foo@FOO");
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect1c.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect1c.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect1c.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect1c.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,7 @@
-+extern void foo (void);
-+
-+void
-+bar (void)
-+{
-+  foo ();
-+}
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect2.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect2.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect2.c 1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect2.c  2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,9 @@
-+extern void foo (void);
-+
-+asm (".symver foo,foo@@@FOO");
-+
-+void
-+bar (void)
-+{
-+  foo ();
-+}
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3.out binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3.out
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3.out       1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3.out        2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,2 @@
-+MAIN
-+DSO
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3a.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3a.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3a.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3a.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,10 @@
-+extern void bar (void);
-+extern void foo (void);
-+
-+int
-+main (void)
-+{
-+  foo ();
-+  bar ();
-+  return 0;
-+}
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3b.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3b.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3b.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3b.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,9 @@
-+#include <stdio.h>
-+
-+void
-+foo (void)
-+{
-+  printf ("MAIN\n");
-+}
-+
-+asm (".symver foo,foo@FOO");
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3c.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3c.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect3c.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect3c.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,15 @@
-+#include <stdio.h>
-+
-+extern void foo (void);
-+
-+void
-+foo (void)
-+{
-+  printf ("DSO\n");
-+}
-+
-+void
-+bar (void)
-+{
-+  foo ();
-+}
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4.out binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4.out
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4.out       1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4.out        2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,2 @@
-+MAIN2
-+MAIN2
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4a.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4a.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4a.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4a.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,10 @@
-+extern void bar (void);
-+extern void foo (void);
-+
-+int
-+main (void)
-+{
-+  foo ();
-+  bar ();
-+  return 0;
-+}
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4b.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4b.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4b.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4b.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,17 @@
-+#include <stdio.h>
-+
-+void
-+foo2 (void)
-+{
-+  printf ("MAIN2\n");
-+}
-+
-+asm (".symver foo2,foo@@FOO2");
-+
-+void
-+foo1 (void)
-+{
-+  printf ("MAIN1\n");
-+}
-+
-+asm (".symver foo1,foo@FOO1");
-diff -urNad binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4c.c binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4c.c
---- binutils-2.18~cvs20070812~/ld/testsuite/ld-elf/indirect4c.c        1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.18~cvs20070812/ld/testsuite/ld-elf/indirect4c.c 2007-08-12 13:27:51.000000000 +0200
-@@ -0,0 +1,15 @@
-+#include <stdio.h>
-+
-+extern void foo (void);
-+
-+void
-+foo (void)
-+{
-+  printf ("DSO\n");
-+}
-+
-+void
-+bar (void)
-+{
-+  foo ();
-+}