Hi Nach,

2016-11-03 12:06 GMT+01:00 Nach <joecool2...@yahoo.com>:
> Package: gcc-6
> Version: 6.2.0-10
> Severity: important
>
> Dear Maintainer,
>
> GCC 6 in Debian changes linking policy from what was the default in all 
> previous GCC versions.
> Now when attemping to link an executable which makes use of some static 
> libraries, GCC fails to link.
> Failing includes error messages linking the static libraries like the 
> following:
>
> requires dynamic R_X86_64_PC32 reloc against 'memset' which may overflow at 
> runtime; recompile with -fPIC
> requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile 
> with -fPIC
> requires unsupported dynamic reloc 11; recompile with -fPIC
>
> Recompiling the static libraries with -fPIC as suggested isn't always 
> feasable or even possible.
> Passing -no-pie to the link command is the actual correct solution.

Static libraries shipped by Debian are being recompiled with PIE which
allows linking them
to PIE binaries.

>
> Since all previous versions of GCC in Debian do not require the addition of 
> -no-pie for linking a static library into an executable, this change is 
> unexpected and at least to me, undesired.
> The error message also fails to indicate the best way to achieve simple 
> linking as was possible previously.
> The -no-pie option is also brand new in GCC 5, meaning that build scripts 
> that add it will break compiling for those using earlier versions (like those 
> using GCC from Debian Stable).

Please use -fno-pie. It works with older compilers, too.

Cheers,
Balint

Reply via email to