/*
* ALSA lib - dynamic symbol versions
- * Copyright (c) 2002 by Jaroslav Kysela <perex@suse.cz>
+ * Copyright (c) 2002 by Jaroslav Kysela <perex@perex.cz>
*
*
* This library is free software; you can redistribute it and/or modify
#define INTERNAL_CONCAT2_2(Pre, Post) Pre##Post
#define INTERNAL(Name) INTERNAL_CONCAT2_2(__, Name)
-#define symbol_version(real, name, version) \
- __asm__ (".symver " #real "," #name "@" #version)
-#define default_symbol_version(real, name, version) \
- __asm__ (".symver " #real "," #name "@@" #version)
+#ifdef __powerpc64__
+# define symbol_version(real, name, version) \
+ __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@" #version); \
+ __asm__ (".symver ." ASM_NAME(#real) ",." ASM_NAME(#name) "@" #version)
+# define default_symbol_version(real, name, version) \
+ __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@@" #version); \
+ __asm__ (".symver ." ASM_NAME(#real) ",." ASM_NAME(#name) "@@" #version)
+#else
+# define symbol_version(real, name, version) \
+ __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@" #version)
+# define default_symbol_version(real, name, version) \
+ __asm__ (".symver " ASM_NAME(#real) "," ASM_NAME(#name) "@@" #version)
+#endif
+
+#ifdef USE_VERSIONED_SYMBOLS
+#define use_symbol_version(real, name, version) \
+ symbol_version(real, name, version)
+#define use_default_symbol_version(real, name, version) \
+ default_symbol_version(real, name, version)
+#else
+#define use_symbol_version(real, name, version) /* nothing */
+#ifdef __powerpc64__
+#define use_default_symbol_version(real, name, version) \
+ __asm__ (".weak " ASM_NAME(#name)); \
+ __asm__ (".weak ." ASM_NAME(#name)); \
+ __asm__ (".set " ASM_NAME(#name) "," ASM_NAME(#real)); \
+ __asm__ (".set ." ASM_NAME(#name) ",." ASM_NAME(#real))
+#else
+#if defined(__alpha__) || defined(__mips__)
+#define use_default_symbol_version(real, name, version) \
+ __asm__ (".weak " ASM_NAME(#name)); \
+ __asm__ (ASM_NAME(#name) " = " ASM_NAME(#real))
+#else
+#define use_default_symbol_version(real, name, version) \
+ __asm__ (".weak " ASM_NAME(#name)); \
+ __asm__ (".set " ASM_NAME(#name) "," ASM_NAME(#real))
+#endif
+#endif
+#endif
#endif /* __ALSA_SYMBOLS_H */