Re: CONFIG_GCD is never defined in the latest alsa-driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Sat, 26 Dec 2009 12:55:24 +0200,
Ozan Çağlayan wrote:
> 
> Hi,
> 
> Compiling the latest alsa-driver with kernel > 2.6.31 results in gcd()
> symbol duplication. Although there's a check in configure for
> linux/gcd.h, no boolean is adjusted according to that.
> 
> In acore/wrappers.c, gcd() is exported if CONFIG_GCD is not defined
> which seems always the case for now.

CONFIG_GCD looks new indeed.  For 2.6.31 and 32, we need more check.
I applied the following fix instead in case linux/gcd.h is defined
by vendor kernels.


thanks,

Takashi

===
>From 68c3169b5f9aec19ade5a5619ee3dfa4be676855 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@xxxxxxx>
Date: Sat, 26 Dec 2009 12:29:34 +0100
Subject: [PATCH] Don't define gcd() when already exists
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Define compatible gcd() only when linux/gcd. doesn't exist.
CONFIG_GCD isn't defined for 2.6.31/32, so it can'be used reliablty
as the compile condition.

Reported-by: Ozan Çağlayan <ozan@xxxxxxxxxxxxx>
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---
 acore/wrappers.c     |    3 +++
 include/gcd_compat.h |    1 +
 2 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/acore/wrappers.c b/acore/wrappers.c
index e9478bd..68750a7 100644
--- a/acore/wrappers.c
+++ b/acore/wrappers.c
@@ -340,6 +340,8 @@ EXPORT_SYMBOL(compat_skip_spaces);
 #endif /* < 2.6.33 */
 
 #ifndef CONFIG_GCD
+#include <linux/gcd.h>
+#ifdef CONFIG_SND_COMPAT_GCD
 /* Greatest common divisor */
 unsigned long gcd(unsigned long a, unsigned long b)
 {
@@ -356,4 +358,5 @@ unsigned long gcd(unsigned long a, unsigned long b)
 	return b;
 }
 EXPORT_SYMBOL(gcd);
+#endif /* CONFIG_SND_COMPAT_GCD */
 #endif /* !CONFIG_GCD */
diff --git a/include/gcd_compat.h b/include/gcd_compat.h
index beeda05..daedab1 100644
--- a/include/gcd_compat.h
+++ b/include/gcd_compat.h
@@ -1,6 +1,7 @@
 #ifndef _LINUX_GCD_H
 #define _LINUX_GCD_H
 
+#define CONFIG_SND_COMPAT_GCD
 unsigned long gcd(unsigned long a, unsigned long b);
 
 #endif /* _LINUX_GCD_H */
-- 
1.6.5.7

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux