-fPIC changes sizeof class

Andrew Haley aph@redhat.com
Mon Aug 10 09:06:00 GMT 2009

Alan M. Carroll wrote:

> I have chased down a crash in my code to -fPIC changing the
> size of a class.

That seems odd.

> My overall project uses some static libraries which are
> compiled without -fPIC and some dynamic libraries that use
> -fPIC. The effect is that if I use a template class in a static
> library and a dynamic library that links to the static library,
> I have to compile the static library with -fPIC as well.

Well, yes.  generally speaking, all code in a DSO should be
PIC, and that includes code pulled in from libraries.

> According to the documentation[1] this flag shouldn't have any
> effect at all because I am building for 64 bit Intel.

I can't find that reference.  Can you please quote the section to
which you are referring?

> My question is, is this expected behavior? Or should I try to
> get a smaller example that demonstrates the problem?

I can't see why the size of a class should change.  However, it's
not a good idea to mix PIC and non-PIC in a DSO.


More information about the Gcc-help mailing list