diff mbox

disas: Fix ATTRIBUTE_UNUSED define clash with ALSA headers

Message ID 1468937076-21503-1-git-send-email-peter.maydell@linaro.org
State New
Headers show

Commit Message

Peter Maydell July 19, 2016, 2:04 p.m. UTC
disas/bfd.h defines ATTRIBUTE_UNUSED, but unfortunately the
ALSA system headers also define this macro, which means that
you can get a compilation failure if building with ALSA and
any files happen to include the alsa headers before bfd.h
rather than the other way around.

This is unfortunate namespace pollution by the ALSA headers but
we can work around it. Add an #ifndef guard to bfd.h and remove
the unnecessary extra definition in disas/arm.c to fix this.

Reported-by: BALATON Zoltan <balaton@eik.bme.hu>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 disas/arm.c         | 1 -
 include/disas/bfd.h | 2 ++
 2 files changed, 2 insertions(+), 1 deletion(-)

Comments

Stefan Hajnoczi July 19, 2016, 2:17 p.m. UTC | #1
On Tue, Jul 19, 2016 at 03:04:36PM +0100, Peter Maydell wrote:
> disas/bfd.h defines ATTRIBUTE_UNUSED, but unfortunately the
> ALSA system headers also define this macro, which means that
> you can get a compilation failure if building with ALSA and
> any files happen to include the alsa headers before bfd.h
> rather than the other way around.
> 
> This is unfortunate namespace pollution by the ALSA headers but
> we can work around it. Add an #ifndef guard to bfd.h and remove
> the unnecessary extra definition in disas/arm.c to fix this.
> 
> Reported-by: BALATON Zoltan <balaton@eik.bme.hu>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  disas/arm.c         | 1 -
>  include/disas/bfd.h | 2 ++
>  2 files changed, 2 insertions(+), 1 deletion(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Peter Maydell July 19, 2016, 4:50 p.m. UTC | #2
On 19 July 2016 at 15:17, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Tue, Jul 19, 2016 at 03:04:36PM +0100, Peter Maydell wrote:
>> disas/bfd.h defines ATTRIBUTE_UNUSED, but unfortunately the
>> ALSA system headers also define this macro, which means that
>> you can get a compilation failure if building with ALSA and
>> any files happen to include the alsa headers before bfd.h
>> rather than the other way around.
>>
>> This is unfortunate namespace pollution by the ALSA headers but
>> we can work around it. Add an #ifndef guard to bfd.h and remove
>> the unnecessary extra definition in disas/arm.c to fix this.
>>
>> Reported-by: BALATON Zoltan <balaton@eik.bme.hu>
>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>> ---
>>  disas/arm.c         | 1 -
>>  include/disas/bfd.h | 2 ++
>>  2 files changed, 2 insertions(+), 1 deletion(-)
>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Thanks; applied to master as a buildfix.

-- PMM
diff mbox

Patch

diff --git a/disas/arm.c b/disas/arm.c
index 32f8ca9..426270f 100644
--- a/disas/arm.c
+++ b/disas/arm.c
@@ -24,7 +24,6 @@ 
 
 #include "qemu/osdep.h"
 #include "disas/bfd.h"
-#define ATTRIBUTE_UNUSED __attribute__((unused))
 #define ISSPACE(x) ((x) == ' ' || (x) == '\t' || (x) == '\n')
 
 #define ARM_EXT_V1	 0
diff --git a/include/disas/bfd.h b/include/disas/bfd.h
index 231e5fb..8a3488c 100644
--- a/include/disas/bfd.h
+++ b/include/disas/bfd.h
@@ -477,7 +477,9 @@  int generic_symbol_at_address(bfd_vma, struct disassemble_info *);
   (INFO).disassembler_options = NULL, \
   (INFO).insn_info_valid = 0
 
+#ifndef ATTRIBUTE_UNUSED
 #define ATTRIBUTE_UNUSED __attribute__((unused))
+#endif
 
 /* from libbfd */