Re: Compilation using clang

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

 



Hola,

Thanks for the rapid response :)

I am simply attaching a patch, probably in complete defiance of some
standardized announcement/submission pattern.

Yours sincerely,
Donald

On Fri, Jan 10, 2014 at 12:06 PM, Vinicius Costa Gomes
<vcgomes@xxxxxxxxx> wrote:
> Hi Donald,
>
> On 09:57 Fri 10 Jan, Donald Carr wrote:
>> Top of the morning,
>>
>> qtconnectivity currently contains a kludge which is required due to
>> the use of the GCC typeof extension in bluetooth.h which is breaking
>> with Clang compilation against the cxx11 spec.
>
> Another kludge that I have seen is putting a
> "#define typeof(x) __tupeof__(x)" before including bluetooth.h.
>
>>
>> The kludge in question involves molesting the standard (eg -std=cxx11)
>> specified to the compiler (explicitly away from cxx11 toward g++0x)
>> and hence I am hoping to be able to murder its intrusive self. I am
>> not entirely clear on the nuances though:
>>
>> This is the offending section:
>>
>> #define bt_get_unaligned(ptr)                   \
>> ({                                              \
>>         struct __attribute__((packed)) {        \
>>                 typeof(*(ptr)) __v;         \
>>         } *__p = (typeof(__p)) (ptr);               \
>>         __p->__v;                               \
>> })
>>
>> #define bt_put_unaligned(val, ptr)              \
>> do {                                            \
>>         struct __attribute__((packed)) {        \
>>                 typeof(*(ptr)) __v;         \
>>         } *__p = (typeof(__p)) (ptr);               \
>>         __p->__v = (val);                       \
>> } while(0)
>>
>> and changing typeof to __typeof__ has been verified to succeed in the
>> stated circumstance. I don't know whether this is the ideal solution,
>> or whether decltype or so other designator would be a closer/better
>> match.
>
> I would vote for changing it to __typeof__.
>
>>
>> Any feedback would be greatly appreciated, I am using this change
>> locally and I think it could be of broader use to people.
>
> Please send a patch and let's see what others think.
>
>>
>> Yours sincerely,
>> Donald Carr
>>
>>
>> --
>> -------------------------------
>>  °v°  Donald Carr
>> /(_)\ Vaguely Professional Penguin lover
>>  ^ ^
>>
>> Cave canem, te necet lingendo
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
> Cheers,
> --
> Vinicius



-- 
-------------------------------
 °v°  Donald Carr
/(_)\ Vaguely Professional Penguin lover
 ^ ^

Cave canem, te necet lingendo
From 846b84143ee4240258b2aee6aad3cd95565caefb Mon Sep 17 00:00:00 2001
From: Donald Carr <sirspudd@xxxxxxxxx>
Date: Fri, 17 Jan 2014 13:20:39 -0800
Subject: [PATCH] Bluez: Move off gcc typeof extension

Change-Id: I63c70c9b43af6a29aa69ed11a720c45c1085dce9
---
 bluetooth/bluetooth.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/bluetooth/bluetooth.h b/bluetooth/bluetooth.h
index 61c1f9a..bc9b35e 100644
--- a/bluetooth/bluetooth.h
+++ b/bluetooth/bluetooth.h
@@ -158,16 +158,16 @@ enum {
 #define bt_get_unaligned(ptr)			\
 ({						\
 	struct __attribute__((packed)) {	\
-		typeof(*(ptr)) __v;		\
-	} *__p = (typeof(__p)) (ptr);		\
+		__typeof__(*(ptr)) __v;		\
+	} *__p = (__typeof__(__p)) (ptr);		\
 	__p->__v;				\
 })
 
 #define bt_put_unaligned(val, ptr)		\
 do {						\
 	struct __attribute__((packed)) {	\
-		typeof(*(ptr)) __v;		\
-	} *__p = (typeof(__p)) (ptr);		\
+		__typeof__(*(ptr)) __v;		\
+	} *__p = (__typeof__(__p)) (ptr);		\
 	__p->__v = (val);			\
 } while(0)
 
-- 
1.8.5.3


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux