If I change it from <sys/varargs.h> to <varargs.h> then gcc reports a more useful error: /usr/gcc/4.7/lib/gcc/i386-pc-solaris2.11/4.7.2/include/varargs.h:4:2: error: #error "GCC no longer implements <varargs.h>." /usr/gcc/4.7/lib/gcc/i386-pc-solaris2.11/4.7.2/include/varargs.h:5:2: error: #error "Revise your code to use <stdarg.h>."
Changing the include from <sys/varargs.h> to <stdarg.h> makes it compile without any errors or warnings. -alan- On 01/ 8/13 08:28 AM, Rao Shoaib wrote: > I am porting a 3rd party driver that compiles when using gcc 3.4.3. I want to > use the more newer version "gcc (GCC) 4.5.2 " that ships as /usr/bin/gcc. > However I am not able to resolve the following issue. Any ideas on how to > resolve this issue. This is due to a change in gcc which eliminated > __builtin_stdarg_start. > > nptbld-x:rshoaib:/tmp] (517)>cat y.c > #include <sys/types.h> > #include <strings.h> > #include <sys/varargs.h> > > > int > ci_sprintf(char *buf, const char *fmt, ...) > { > va_list args; > > #ifdef WORKS > __builtin_va_start(args, 0); > #else > va_start(args, fmt); > #endif > (void) vsnprintf(buf, 100, fmt, args); > va_end(args); > > return strlen(buf); > } > > main() > { > } > > > [nptbld-x:rshoaib:/tmp] (519)>gcc y.c -o yc > Undefined first referenced > symbol in file > __builtin_stdarg_start /var/tmp//ccE.aiTM.o > ld: fatal: symbol referencing errors. No output written to yc > collect2: ld returned 1 exit status > > The only way I have been able to work this out is by using __builtin_va_start > instead of va_start. That just seems wrong. > > Rao. > _______________________________________________ > userland-discuss mailing list > userland-discuss@opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/userland-discuss -- -Alan Coopersmith- alan.coopersm...@oracle.com Oracle Solaris Engineering - http://blogs.oracle.com/alanc _______________________________________________ userland-discuss mailing list userland-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/userland-discuss