summaryrefslogtreecommitdiff
path: root/src/local-link.h
diff options
context:
space:
mode:
authorGuillem Jover <guillem@hadrons.org>2019-08-06 19:14:29 +0200
committerGuillem Jover <guillem@hadrons.org>2019-08-08 03:22:09 +0200
commit2e071c3cc152ec55db7b87248fdc017a0f735302 (patch)
tree89a1f452376f18986d48492adf6d597e4468cbee /src/local-link.h
parent890699a78b892a8591cd465f97d4967ee94d54c9 (diff)
build: Support platforms without symbol versioning
The .symver directive is ELF-specific. On non-ELF platforms, work around this with __attribute__((__alias__)) for the default symbol, and ignore the variant versioned symbols. Based-on-patch-by: Aaron Dierking <aarond@fb.com> Signed-off-by: Guillem Jover <guillem@hadrons.org>
Diffstat (limited to 'src/local-link.h')
-rw-r--r--src/local-link.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/local-link.h b/src/local-link.h
index 5a17bfe..0d4351a 100644
--- a/src/local-link.h
+++ b/src/local-link.h
@@ -31,10 +31,17 @@
static const char libbsd_emit_link_warning_##symbol[] \
__attribute__((__used__,__section__(".gnu.warning." #symbol))) = msg;
+#ifdef __ELF__
#define libbsd_symver_default(alias, symbol, version) \
__asm__(".symver " #symbol "," #alias "@@" #version)
#define libbsd_symver_variant(alias, symbol, version) \
__asm__(".symver " #symbol "," #alias "@" #version)
+#else
+#define libbsd_symver_default(alias, symbol, version) \
+ extern __typeof(symbol) alias __attribute__((__alias__(#symbol)))
+
+#define libbsd_symver_variant(alias, symbol, version)
+#endif
#endif