Warning: alignment 8 of symbol ... is smaller than 16 ...

When attempting to link I get the following warning:

/usr/bin/ld: Warning: alignment 8 of symbol `fdbug_’ in /fs/hseb.djs/ob81/ohd/ofs/obj/block/RCS/fcblock.o is smaller than 16 in /fs/hseb.djs/pda/users/djs/devl/obj/fcst_fdriv/ex58.o

I compiled the ex58.o object, while the fcblock.o object was compiled elsewhere, by another person.

In a previous thread I saw that having mismatched (i.e. on for one, off for the other) -Mcache_align flags to the compiler can cause this problem. But, as far as I can tell, -Mcache_align was not turned on for either of these compilations. What else might cause this? Is it benign?

-Darrin

I assume this is a 32-bit compile. Compiling one -Mcache_align and one not
can cause this problem.

Yes, 32 bit compile; both for my code and the code/obj’s I’m trying to link with.

I also suspected the -Mcache_align might be the problem. But, as far as I can tell, the code I’m trying to link with did not have this option turned on at compile time, and I know my code doesn’t have this option turned on. Is there some way to verify whether or not an obj was compiled with this option on?

-Darrin

Hi Darrin,

What options do you use to compile ex58.o? -fastsse includes -Mcache_align too.

Hongyon

The options I used for ex58.o were:

-g -fpic -g77libs -Mbackslash -Mpreprocess

As far as I can tell, these were the same options used for fcblock.o as well.

Another thought … I believe the system used for compiling fcblock.o was native 32 bit. My machine is native 64bit - I have to force a 32b compile. Could that have an effect?

-Darrin

Darrin,

It’s possible that ex58.o was compiled with 64-bit compiler. To make sure that you use 32-bit compiler, add -tp k8-32 (for AMD64) or -tp p7(for EM64T) with your options and link flags.


Hongyon

Hi Darrin,

I believe the system used for compiling fcblock.o was native 32 bit. My machine is native 64bit - I have to force a 32b compile. Could that have an effect?

It’s possible if the 32-bit system is a Pentium 3 or earlier (non-SSE). On your system, try compiling for a PIII (-tp piii), or use the “-Mnoscalarsse” flag.

  • Mat

I don’t know the arch of the machine that compiled fcblock.o - it could have been a PIII. In any case, I tried both -Mnoscalarsse and -tp piii for compiling my ex58.o to no avail - I still get the same warning. Also, I tried the compiler options in the previous message earlier to force a 32b compile on my 64b machine. They didn’t work (weren’t recognized, if I recall).

In order to get a 32b compile on my machine, I’m using the compiler in /fs/opt/pgi/linux86/7.0-4/bin/pgf90 and not the one on the machine that’s in /fs/opt/pgi/linux86-64/7.0-4/bin/pgf90. I’m pretty sure I’m getting a 32b compile, because before I was, I believe I was getting linker errors along the lines of “trying to link a 32b .o with a 64b .o” (or something like that).

Any other ideas?

And, back to my original question - How serious is this warning? Is it something that is safe to live with, or should I really figure out what’s going on?

-Darrin