* Problems Compileing PVM
@ 2000-05-06 22:14 ian reinhart geiser
2000-05-07 9:05 ` Andreas Tobler
2000-05-07 14:37 ` Michael Schmitz
0 siblings, 2 replies; 6+ messages in thread
From: ian reinhart geiser @ 2000-05-06 22:14 UTC (permalink / raw)
To: linuxppc-dev
Greetings,
I have a problem with compileing PVMd
on my LinuxPPC 1999 dist.
When i try to build anything liked off of the
PVM libs i get the following errors:
../../lib/LINUXPPC/libpvm3.a(lpvmpack.o): In function
`pvm_vpackf': lpvmpack.o(.text+0x53e8): undefined reference to
`__va_arg_type_violation'
lpvmpack.o(.text+0x53e8): relocation truncated
to fit: R_PPC_REL24 __va_arg_type_violation
lpvmpack.o(.text+0x54f4):
undefined reference to `__va_arg_type_violation'
lpvmpack.o(.text+0x54f4): relocation truncated to fit: R_PPC_REL24
__va_arg_type_violation
It looks like a linker error...
i have never had this error before on any
of my other systems(ARM, ALPHA and INTEL).
has anyone seen this? or am i looking in the
wrong list?
thanks
-ian reinhart geiser
-------------------------------------------------
Ian Reinhart Geiser <geiseri@msoe.edu>
DEC Unix Systems Adimistrator and
Computer Engineering Student
http://www.msoe.edu/~geiseri/finger.phtml
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Problems Compileing PVM
2000-05-06 22:14 Problems Compileing PVM ian reinhart geiser
@ 2000-05-07 9:05 ` Andreas Tobler
2000-05-07 14:37 ` Michael Schmitz
1 sibling, 0 replies; 6+ messages in thread
From: Andreas Tobler @ 2000-05-07 9:05 UTC (permalink / raw)
To: ian reinhart geiser; +Cc: linuxppc-dev
ian reinhart geiser wrote:
>
> Greetings,
> I have a problem with compileing PVMd
> on my LinuxPPC 1999 dist.
>
> When i try to build anything liked off of the
> PVM libs i get the following errors:
>
> ../../lib/LINUXPPC/libpvm3.a(lpvmpack.o): In function
> `pvm_vpackf': lpvmpack.o(.text+0x53e8): undefined reference to
> `__va_arg_type_violation'
> lpvmpack.o(.text+0x53e8): relocation truncated
> to fit: R_PPC_REL24 __va_arg_type_violation
> lpvmpack.o(.text+0x54f4):
> undefined reference to `__va_arg_type_violation'
> lpvmpack.o(.text+0x54f4): relocation truncated to fit: R_PPC_REL24
> __va_arg_type_violation
>
> It looks like a linker error...
> i have never had this error before on any
> of my other systems(ARM, ALPHA and INTEL).
>
> has anyone seen this? or am i looking in the
> wrong list?
Have a look in the function pvm_vpackf. I suppose there is something
like this:
va_arg(xyz,int) and in your case I suppose the int isn't int, it's
something else?!
e.g. when you have this va_arg(xyz,char), this would give the error
described above. You can only get the function as wanted when you do
(char)va_arg(xyz,int).
For further details search the dev-list.
Andreas
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Problems Compileing PVM
2000-05-06 22:14 Problems Compileing PVM ian reinhart geiser
2000-05-07 9:05 ` Andreas Tobler
@ 2000-05-07 14:37 ` Michael Schmitz
2000-05-07 18:28 ` Kevin Hendricks
1 sibling, 1 reply; 6+ messages in thread
From: Michael Schmitz @ 2000-05-07 14:37 UTC (permalink / raw)
To: ian reinhart geiser; +Cc: linuxppc-dev
> __va_arg_type_violation
>
> It looks like a linker error...
No, it rather is a varargs usage error (illegal types used in va_arg()
calls). Sloppy programming is the cause of this, most likely.
If it makes you feel better: the error message goes away if you compile
without optimization. Doesn't mean the code will run, then.
Michael
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Problems Compileing PVM
2000-05-07 14:37 ` Michael Schmitz
@ 2000-05-07 18:28 ` Kevin Hendricks
2000-05-08 9:35 ` Michael Schmitz
0 siblings, 1 reply; 6+ messages in thread
From: Kevin Hendricks @ 2000-05-07 18:28 UTC (permalink / raw)
To: Michael Schmitz, ian reinhart geiser; +Cc: linuxppc-dev
Hi,
On Sun, 07 May 2000, Michael Schmitz wrote:
> > __va_arg_type_violation
Franz once explained this error to me. It seems according to the ANSI C
standard va_arg can only be done with primary (promoted) types like integer,
double, etc. For any other type, a cast must be done to create proper ansi c.
gcc is going to barf on this on all platforms in the future, but right now it
does so only under optimization on ppc.
The solution is just to edit and code and make the correction(s).
Here are some code snippets to illustrate:
va_arg(args,boolean) becomes (boolean)va_arg(args, int)
va_arg(args,byte) becomes (byte)va_arg(args, int)
va_arg(args,char) becomes (char)va_arg(args, int)
va_arg(ags,short) becomes (short)va_arg(args, int)
va_arg(args,int) is okay since it is a primary (promoted) type
va_arg(args, long long) is okay since long long is a primary (promoted) type
va_arg(args,float) becomes (float)va_arg(args, double)
va_arg(args,double) is okay since it is a primary (promoted) type
I hope this helps.
Kevin
On Sun, 07 May 2000, Michael Schmitz wrote:
> > __va_arg_type_violation
> >
> > It looks like a linker error...
>
> No, it rather is a varargs usage error (illegal types used in va_arg()
> calls). Sloppy programming is the cause of this, most likely.
--
Kevin B. Hendricks
Associate Professor of Operations and Information Technology
Richard Ivey School of Business, University of Western Ontario
London, Ontario N6A-3K7 CANADA
khendricks@ivey.uwo.ca, (519) 661-3874, fax: 519-661-3959
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Problems Compileing PVM
2000-05-07 18:28 ` Kevin Hendricks
@ 2000-05-08 9:35 ` Michael Schmitz
2000-05-08 12:56 ` Hendricks, Kevin
0 siblings, 1 reply; 6+ messages in thread
From: Michael Schmitz @ 2000-05-08 9:35 UTC (permalink / raw)
To: Kevin Hendricks; +Cc: ian reinhart geiser, linuxppc-dev
> On Sun, 07 May 2000, Michael Schmitz wrote:
> > > __va_arg_type_violation
>
> Franz once explained this error to me. It seems according to the ANSI C
> standard va_arg can only be done with primary (promoted) types like integer,
> double, etc. For any other type, a cast must be done to create proper ansi c.
That's what I meant by 'sloppy programming'. Your instructions cover
everything but one tiny detail: it is common practice to pass the 'args'
va_list argument to other functions further down. In some cases I've seen,
a pointer to the va_list argument is passed (which breaks on PPC). What's
the proper coding style here?
Michael
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Problems Compileing PVM
2000-05-08 9:35 ` Michael Schmitz
@ 2000-05-08 12:56 ` Hendricks, Kevin
0 siblings, 0 replies; 6+ messages in thread
From: Hendricks, Kevin @ 2000-05-08 12:56 UTC (permalink / raw)
To: Michael Schmitz; +Cc: ian reinhart geiser, linuxppc-dev
Hi,
>That's what I meant by 'sloppy programming'. Your instructions cover
>everything but one tiny detail: it is common practice to pass the 'args'
>va_list argument to other functions further down. In some cases I've seen,
>a pointer to the va_list argument is passed (which breaks on PPC). What's
>the proper coding style here?
In the jdk ppc code, we do exactly that. In fact, a bunch of us argued
that the ppc vararg stuff was very broken because of this fact but the sysv
abi is the bible and no one with any power would change it.
I asked Franz about adding a macro to do this properly (just like the
va_start, va_end) but as it stands, there is no cross-platform way to pass
pointers to varargs. So all code that does this will require a ppc ifdef.
Here is how we handle this case in the jdk source along with a code snippet
to illustrate its use.
If it were up to me I would add an official macro called va_ptr or something:
/* fix for varargs differences */
#if defined(__powerpc__)
#define VARGS(x) (x)
#else
#define VARGS(x) (&x)
#endif
static ResultType JNICALL
jni_CallVoidMethodV(JNIEnv *env, jobject obj,
jmethodID methodID, va_list args) {
ResultType result;
result = jni_Invoke(env, obj, methodID,
jni_PushArgumentsVararg, VARGS(args),
INVOKE_VIRTUAL | retType).unionType;
return result;
}
Kevin
--
Kevin B. Hendricks, Associate Professor of Operations and Information
Technology
Richard Ivey School of Business, University of Western Ontario
London, Ontario N6A-3K7 CANADA
khendricks@ivey.uwo.ca, (519) 661-3874, fax: 519-661-3959
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2000-05-08 12:56 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-05-06 22:14 Problems Compileing PVM ian reinhart geiser
2000-05-07 9:05 ` Andreas Tobler
2000-05-07 14:37 ` Michael Schmitz
2000-05-07 18:28 ` Kevin Hendricks
2000-05-08 9:35 ` Michael Schmitz
2000-05-08 12:56 ` Hendricks, Kevin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).