Skip to content

Commit

Permalink
tools/elfutils: use weak alias over no alias for macOS
Browse files Browse the repository at this point in the history
Clang has support for weak aliases
despite no support for strong aliases,
but it only works with the #pragma directive.

Implementing weak aliases instead of none
is likely a more upstream-friendly solution
for supporting building on other platforms.

Signed-off-by: Michael Pratt <[email protected]>
Link: openwrt/openwrt#15690
Signed-off-by: Robert Marko <[email protected]>
  • Loading branch information
mcprat authored and robimarko committed Jun 19, 2024
1 parent 52a5344 commit e4fb7c9
Showing 1 changed file with 5 additions and 4 deletions.
9 changes: 5 additions & 4 deletions tools/elfutils/patches/100-portability.patch
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
LIBS="$saved_LIBS"
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -59,14 +59,18 @@
@@ -59,14 +59,19 @@
# define once(once_control, init_routine) init_routine()
#endif /* USE_LOCKS */

Expand All @@ -45,16 +45,17 @@
#define _(Str) dgettext ("elfutils", Str)

/* Compiler-specific definitions. */
+#define __PRAGMA(str) _Pragma (#str)
+#ifdef __APPLE__
+#define strong_alias(name, aliasname)
+#define strong_alias(name, aliasname) __PRAGMA(weak aliasname = name)
+#else
#define strong_alias(name, aliasname) \
extern __typeof (name) aliasname __attribute__ ((alias (#name)));
+#endif

#ifdef __i386__
# define internal_function __attribute__ ((regparm (3), stdcall))
@@ -77,7 +81,7 @@
@@ -77,7 +82,7 @@
#define internal_strong_alias(name, aliasname) \
extern __typeof (name) aliasname __attribute__ ((alias (#name))) internal_function;

Expand All @@ -63,7 +64,7 @@
#define attribute_hidden \
__attribute__ ((visibility ("hidden")))
#else
@@ -166,7 +170,7 @@ asm (".section predict_data, \"aw\"; .pr
@@ -166,7 +171,7 @@ asm (".section predict_data, \"aw\"; .pr
#endif

/* Avoid PLT entries. */
Expand Down

0 comments on commit e4fb7c9

Please sign in to comment.