libgcov-interface.c (STRONG_ALIAS): Rename to ...
authorNathan Sidwell <nathan@acm.org>
Sun, 7 Sep 2014 18:09:34 +0000 (18:09 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Sun, 7 Sep 2014 18:09:34 +0000 (18:09 +0000)
* libgcov-interface.c (STRONG_ALIAS): Rename to ...
(ALIAS_weak): ... here. Use forwarding function.  Adjust uses.

From-SVN: r215005

libgcc/ChangeLog
libgcc/libgcov-interface.c

index 01b5883fc7233b6a92a4f71d586efb83ef16a8e3..4ab05ef8f948abed846e0257f96c0cd9ac23d186 100644 (file)
@@ -1,3 +1,8 @@
+2014-09-07  Nathan sidwell  <nathan@acm.org>
+
+       * libgcov-interface.c (STRONG_ALIAS): Rename to ...
+       (ALIAS_weak): ... here. Use forwarding function.  Adjust uses.
+
 2014-09-05  Joseph Myers  <joseph@codesourcery.com>
 
        * Makefile.in (CRTSTUFF_CFLAGS): Add -fbuilding-libgcc.
index 76d3f9731d7f8f58461dfc07a5bcd37dde2ff434..e40268991af57de16e1539fcd99f4e936d05ae24 100644 (file)
@@ -42,11 +42,14 @@ void __gcov_dump (void) {}
 
 #else
 
-
 /* Some functions we want to bind in this dynamic object, but have an
-   overridable global alias.  */
-#define STRONG_ALIAS(src,dst) \
-  extern __typeof (src) dst __attribute__((alias (#src)))
+   overridable global alias.  Unfortunately not all targets support
+   aliases, so we just have a forwarding function.  That'll be tail
+   called, so the cost is a single jump instruction.*/
+
+#define ALIAS_void_fn(src,dst) \
+  void dst (void)          \
+  { src (); }
 
 extern __gthread_mutex_t __gcov_flush_mx ATTRIBUTE_HIDDEN;
 extern __gthread_mutex_t __gcov_flush_mx ATTRIBUTE_HIDDEN;
@@ -133,7 +136,7 @@ __gcov_reset_int (void)
   __gcov_root.dumped = 0;
 }
 
-STRONG_ALIAS (__gcov_reset_int, __gcov_reset);
+ALIAS_void_fn (__gcov_reset_int, __gcov_reset);
 
 #endif /* L_gcov_reset */