tools.h: include `stdarg.h` to fix `error: 'va_list' has not been declared` with uClibc

Message ID 1292191437.13905.63.camel@mattotaupa
State New
Headers

Commit Message

Paul Menzel Dec. 12, 2010, 10:03 p.m. UTC
  From a94d15b582df5d1464cec8bc7dd68be46e1bf937 Mon Sep 17 00:00:00 2001
From: Paul Menzel <paulepanter@users.sourceforge.net>
Date: Sun, 12 Dec 2010 19:21:25 +0100
Subject: [PATCH] tools.h: include `stdarg.h`

For some reason using uClibc `tools.h` needs to have `stdarg.h` included explicitly. Otherwise it fails with the following error. Using Libc or EGLIBC this error does not surface.

	NOTE: package vdr-1.7.16-r0: task do_distribute_sources: Succeeded
	ERROR: TaskFailed event exception, aborting
	ERROR: Build of /oe/openembedded/recipes/vdr/vdr_1.7.16.bb do_compile failed
	ERROR: Task 11 (/oe/openembedded/recipes/vdr/vdr_1.7.16.bb, do_compile) failed with 256
	ERROR: Function do_compile failed
	NOTE: Task failed: ('function do_compile failed', '/oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/vdr-1.7.16-r0/temp/log.do_compile.8011')
	ERROR: Logfile of failure stored in: /oe/build-minimal-uclibc/minimal-uclibc-dev/work/armv7a-oe-linux-uclibceabi/vdr-1.7.16-r0/temp/log.do_compile.8011
	Log data follows:
	| NOTE: make -j4 -e MAKEFLAGS= INCLUDES=-I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/freetype2
	| arm-oe-linux-uclibceabi-g++ -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb -isystem/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -fpermissive -fvisibility-inlines-hidden -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DREMOTE_KBD -DLIRC_DEVICE=\"/dev/lircd\" -DRCU_DEVICE=\"/dev/ttyS1\" -D_GNU_SOURCE -DVIDEODIR=\"/video\" -DCONFDIR=\"/video\" -DPLUGINDIR=\"./PLUGINS/lib\" -DLOCDIR=\"./locale\" -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/freetype2 audio.c
	| arm-oe-linux-uclibceabi-g++ -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb -isystem/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -fpermissive -fvisibility-inlines-hidden -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DREMOTE_KBD -DLIRC_DEVICE=\"/dev/lircd\" -DRCU_DEVICE=\"/dev/ttyS1\" -D_GNU_SOURCE -DVIDEODIR=\"/video\" -DCONFDIR=\"/video\" -DPLUGINDIR=\"./PLUGINS/lib\" -DLOCDIR=\"./locale\" -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/freetype2 channels.c
	| arm-oe-linux-uclibceabi-g++ -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb -isystem/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -fpermissive -fvisibility-inlines-hidden -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DREMOTE_KBD -DLIRC_DEVICE=\"/dev/lircd\" -DRCU_DEVICE=\"/dev/ttyS1\" -D_GNU_SOURCE -DVIDEODIR=\"/video\" -DCONFDIR=\"/video\" -DPLUGINDIR=\"./PLUGINS/lib\" -DLOCDIR=\"./locale\" -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/freetype2 ci.c
	| arm-oe-linux-uclibceabi-g++ -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb -isystem/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -fpermissive -fvisibility-inlines-hidden -c -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DREMOTE_KBD -DLIRC_DEVICE=\"/dev/lircd\" -DRCU_DEVICE=\"/dev/ttyS1\" -D_GNU_SOURCE -DVIDEODIR=\"/video\" -DCONFDIR=\"/video\" -DPLUGINDIR=\"./PLUGINS/lib\" -DLOCDIR=\"./locale\" -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/freetype2 config.c
	| In file included from i18n.h:14:0,
	|                  from config.h:19,
	|                  from channels.h:13,
	|                  from ci.h:15,
	|                  from ci.c:10:
	| tools.h:176:43: error: 'va_list' has not been declared
	| In file included from audio.h:14:0,
	|                  from audio.c:10:
	| tools.h:176:43: error: 'va_list' has not been declared
	| In file included from i18n.h:14:0,
	|                  from config.h:19,
	|                  from config.c:10:
	| tools.h:176:43: error: 'va_list' has not been declared
	| In file included from i18n.h:14:0,
	|                  from config.h:19,
	|                  from channels.h:13,
	|                  from channels.c:10:
	| tools.h:176:43: error: 'va_list' has not been declared
	| make: *** [audio.o] Error 1
	| make: *** Waiting for unfinished jobs....
	| make: *** [config.o] Error 1
	| make: *** [channels.o] Error 1
	| make: *** [ci.o] Error 1
	| FATAL: oe_runmake failed
	| ERROR: Function do_compile failed
	NOTE: package vdr-1.7.16-r0: task do_compile: Failed
	ERROR: TaskFailed event exception, aborting
	ERROR: Build of /oe/openembedded/recipes/vdr/vdr_1.7.16.bb do_compile failed
	ERROR: Task 11 (/oe/openembedded/recipes/vdr/vdr_1.7.16.bb, do_compile) failed with 256
	ERROR: '/oe/openembedded/recipes/vdr/vdr_1.7.16.bb' failed
	ERROR: '/oe/openembedded/recipes/vdr/vdr_1.7.16.bb' failed
	ERROR: '/oe/openembedded/recipes/vdr/vdr_1.7.16.bb' failed

I used OpenEmbedded as a framework and tested this patch with the following configurations.

	Build Configuration:
	BB_VERSION        = "1.10.0"
	METADATA_BRANCH   = "org.openembedded.dev"
	METADATA_REVISION = "ff41526"
	TARGET_ARCH       = "arm"
	TARGET_OS         = "linux-uclibceabi"
	MACHINE           = "beagleboard"
	DISTRO            = "minimal-uclibc"
	DISTRO_VERSION    = "dev-snapshot-20101212"
	TARGET_FPU        = "hard"

	Build Configuration:
	BB_VERSION        = "1.10.0"
	METADATA_BRANCH   = "org.openembedded.dev"
	METADATA_REVISION = "ff41526"
	TARGET_ARCH       = "arm"
	TARGET_OS         = "linux-gnueabi"
	MACHINE           = "beagleboard"
	DISTRO            = "minimal"
	DISTRO_VERSION    = "dev-snapshot-20101212"
	TARGET_FPU        = "hard"

This change was made by Henning Heinhold when packaging VDR 1.7.10 for OpenEmbedded [1].

[1] http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/vdr/files/cplusplus.patch

Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
CC: Henning Heinold <heinold@inf.fu-berlin.de>
---
 tools.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
  

Comments

Klaus Schmidinger Dec. 12, 2010, 11:18 p.m. UTC | #1
On 12.12.2010 23:03, Paul Menzel wrote:
> From a94d15b582df5d1464cec8bc7dd68be46e1bf937 Mon Sep 17 00:00:00 2001
> From: Paul Menzel <paulepanter@users.sourceforge.net>
> Date: Sun, 12 Dec 2010 19:21:25 +0100
> Subject: [PATCH] tools.h: include `stdarg.h`
> 
> For some reason using uClibc `tools.h` needs to have `stdarg.h` included explicitly. Otherwise it fails with the following error. Using Libc or EGLIBC this error does not surface.

Since tools.h uses va_list you're apparently right.
I wonder which one of the other header files tools.h
includes pulls in that declaration (apparently unnecessarily).

> ...
> This change was made by Henning Heinhold when packaging VDR 1.7.10 for OpenEmbedded [1].
> 
> [1] http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/vdr/files/cplusplus.patch

So I'll mention Henning in the CONTRIBUTORS file then, if that's ok with you.

> Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
> CC: Henning Heinold <heinold@inf.fu-berlin.de>
> ---
>  tools.h |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/tools.h b/tools.h
> index 95c35ff..1fbe005 100644
> --- a/tools.h
> +++ b/tools.h
> @@ -17,6 +17,7 @@
>  #include <iconv.h>
>  #include <math.h>
>  #include <poll.h>
> +#include <stdarg.h>
>  #include <stddef.h>
>  #include <stdint.h>
>  #include <stdio.h>

The '#include <stdarg.h>' can then also be removed from tools.c,
and apparently it's included unnecessarily in osd.c and receiver.c.

Klaus
  
Paul Menzel Dec. 13, 2010, 9:12 a.m. UTC | #2
Am Montag, den 13.12.2010, 00:18 +0100 schrieb Klaus Schmidinger:
> On 12.12.2010 23:03, Paul Menzel wrote:
> > From a94d15b582df5d1464cec8bc7dd68be46e1bf937 Mon Sep 17 00:00:00 2001
> > From: Paul Menzel <paulepanter@users.sourceforge.net>
> > Date: Sun, 12 Dec 2010 19:21:25 +0100
> > Subject: [PATCH] tools.h: include `stdarg.h`
> > 
> > For some reason using uClibc `tools.h` needs to have `stdarg.h` included explicitly. Otherwise it fails with the following error. Using Libc or EGLIBC this error does not surface.
> 
> Since tools.h uses va_list you're apparently right.
> I wonder which one of the other header files tools.h
> includes pulls in that declaration (apparently unnecessarily).

Sorry I have no idea.

> > ...
> > This change was made by Henning Heinhold when packaging VDR 1.7.10 for OpenEmbedded [1].
> > 
> > [1] http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/vdr/files/cplusplus.patch
> 
> So I'll mention Henning in the CONTRIBUTORS file then, if that's ok with you.

That would be fine.

> > Signed-off-by: Paul Menzel <paulepanter@users.sourceforge.net>
> > CC: Henning Heinold <heinold@inf.fu-berlin.de>
> > ---
> >  tools.h |    1 +
> >  1 files changed, 1 insertions(+), 0 deletions(-)
> > 
> > diff --git a/tools.h b/tools.h
> > index 95c35ff..1fbe005 100644
> > --- a/tools.h
> > +++ b/tools.h
> > @@ -17,6 +17,7 @@
> >  #include <iconv.h>
> >  #include <math.h>
> >  #include <poll.h>
> > +#include <stdarg.h>
> >  #include <stddef.h>
> >  #include <stdint.h>
> >  #include <stdio.h>
> 
> The '#include <stdarg.h>' can then also be removed from tools.c,
> and apparently it's included unnecessarily in osd.c and receiver.c.

Good catches.


Thank you for your fast response and analysis,

Paul
  

Patch

diff --git a/tools.h b/tools.h
index 95c35ff..1fbe005 100644
--- a/tools.h
+++ b/tools.h
@@ -17,6 +17,7 @@ 
 #include <iconv.h>
 #include <math.h>
 #include <poll.h>
+#include <stdarg.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>