Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > Help porting app from HP-UX to Linux

Reply
Thread Tools

Help porting app from HP-UX to Linux

 
 
James Egan
Guest
Posts: n/a
 
      03-25-2008
I'm porting a legacy application from HP-UX to Linux. The va_start macro
takes one argument under HP-UX, but takes two under Linux:

va_start under HP-UX takes only one var:

hp:/home/fred> grep va_start
/ndata1/scratch/gcc-3.2/binutils/include/mpw/>
#define va_start(list) list = (char *) &va_alist


va_start under linux takes two:

linux:/home/fred> grep -i va_start
/usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h
#define va_start(v,l) __builtin_va_start(v,l)


The errors I'm seeing are listed below. What would be the best way to
handle the discrepancy in va_start between the two systems?


>make

lprintf.c: In function 'lprintf':
lprintf.c:73: error: expected declaration specifiers before 'va_dcl'
lprintf.c:89:13: error: macro "va_start" requires 2 arguments, but only
1 given
lprintf.c:145: error: expected '=', ',', ';', 'asm' or '__attribute__'
before 'va_dcl'
lprintf.c:161:13: error: macro "va_start" requires 2 arguments, but only
1 given
lprintf.c:218: error: expected '=', ',', ';', 'asm' or '__attribute__'
before 'va_dcl'
lprintf.c:234:13: error: macro "va_start" requires 2 arguments, but only
1 given
lprintf.c:284: error: expected '{' at end of input
make[1]: *** [lprintf.o] Error 1
make: *** [upper] Error 2

 
Reply With Quote
 
 
 
 
Richard Heathfield
Guest
Posts: n/a
 
      03-25-2008
James Egan said:

> I'm porting a legacy application from HP-UX to Linux. The va_start macro
> takes one argument under HP-UX, but takes two under Linux:


In standard C, va_start takes two arguments, the first being the name of
the object with type 'va_list', and the second being the name of the
last-named parameter in the function parameter list.

One possibility is to invoke your HP-UX compiler in conforming mode (in
which case it must accept the two arguments, because otherwise it doesn't
conform). If that won't wash for you, you could try conditional
compilation, I guess.

<snip>

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
 
Reply With Quote
 
 
 
 
user923005
Guest
Posts: n/a
 
      03-25-2008
On Mar 24, 8:24*pm, James Egan <(E-Mail Removed)> wrote:
> I'm porting a legacy application from HP-UX to Linux. *The va_start macro
> takes one argument under HP-UX, but takes two under Linux:
>
> va_start under HP-UX takes only one var:
>
> hp:/home/fred> grep va_start
> /ndata1/scratch/gcc-3.2/binutils/include/mpw/>
> #define va_start(list) list = (char *) &va_alist
>
> va_start under linux takes two:
>
> linux:/home/fred> grep -i va_start
> /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h
> #define va_start(v,l) * __builtin_va_start(v,l)
>
> The errors I'm seeing are listed below. *What would be the best way to
> handle the discrepancy in va_start between the two systems?
>
> >make

>
> lprintf.c: In function 'lprintf':
> lprintf.c:73: error: expected declaration specifiers before 'va_dcl'
> lprintf.c:89:13: error: macro "va_start" requires 2 arguments, but only
> 1 given
> lprintf.c:145: error: expected '=', ',', ';', 'asm' or '__attribute__'
> before 'va_dcl'
> lprintf.c:161:13: error: macro "va_start" requires 2 arguments, but only
> 1 given
> lprintf.c:218: error: expected '=', ',', ';', 'asm' or '__attribute__'
> before 'va_dcl'
> lprintf.c:234:13: error: macro "va_start" requires 2 arguments, but only
> 1 given
> lprintf.c:284: error: expected '{' at end of input
> make[1]: *** [lprintf.o] Error 1
> make: *** [upper] Error 2


To see an example of how to portably write a varadic function (for
instance to print stuff to a log file) see the C-FAQ starting at
section 15.4 and running over the next few items.
 
Reply With Quote
 
Keith Thompson
Guest
Posts: n/a
 
      03-25-2008
James Egan <(E-Mail Removed)> writes:
> I'm porting a legacy application from HP-UX to Linux. The va_start macro
> takes one argument under HP-UX, but takes two under Linux:
>
> va_start under HP-UX takes only one var:
>
> hp:/home/fred> grep va_start
> /ndata1/scratch/gcc-3.2/binutils/include/mpw/>
> #define va_start(list) list = (char *) &va_alist
>
>
> va_start under linux takes two:
>
> linux:/home/fred> grep -i va_start
> /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stdarg.h
> #define va_start(v,l) __builtin_va_start(v,l)

[snip]

The old pre-standard <varargs.h> interface defines a va_start macro
that takes one argument ("man varargs" on your HP-UX system for
details).

The <stdarg.h> interface was introduced in the 1989 ANSI C standard,
if not earlier. In that interface, va_start is a macro that takes
two arguments.

The <varargs.h> interface is still supported on some systems to
support legacy programs, but <stdarg.h> is the right interface to use.

If at all possible, I suggest modifying the application so it uses
<stdarg.h>, which I'm 99.9% sure you'll find is supported on HP-UX.

If that's not practical, you *might* be able to find an implementation
of the old <varargs.h> for Linux, probably one built on top of
<stdarg.h>. If that's what you need, a Linux newsgroup would be more
likely to help you find it.

--
Keith Thompson (The_Other_Keith) <(E-Mail Removed)>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
"Porting" a desktop app to a web application - best practices ? (2b|!2b)==? ASP .Net 1 03-17-2008 12:37 PM
Need help porting a C++ / Python Embedded app to multiple platforms jpw Python 1 02-05-2008 11:35 PM
problem with porting custom app wizard from vc++ 6.0 to vc++7.1(.Net) siva.isukapalli@gmail.com C++ 1 06-07-2006 05:28 PM
Porting a web-app from win/COM world to Jsp/Tomcat... Dag Sunde Java 10 09-19-2005 07:00 PM
Advice for Porting existing VB.NET App to ASP.Net Web Application Nate ASP .Net 2 02-18-2004 01:18 AM



Advertisments