This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi,
Here is a simple example that fails to link with -pie but which
should work just fine without having to use -fPIE.
foo.cc
======
int extern_func();
int main()
{
extern_func();
return 0;
}
bar.cc
=====
int extern_func()
{
return 1;
}
$ g++ -fPIC -shared bar.cc -o libbar.so
$ g++ foo.cc -lbar -pie
ld: error: foo.o: requires dynamic R_X86_64_PC32 reloc against
'_Z11extern_funcv' which may overflow at runtime; recompile with -fPIC
It fails because the linker disallows creating a PLT for
R_X86_64_PC32 reloc when it is perfectly fine to do so. Note that I
could have recompiled foo.cc with -fPIE or -fPIC but I still think
this can be allowed. With support for copy relocations in pie in gold
and with this support, the cases where we would need to use -fPIE to
get working pie links is smaller. This would help us link non-PIE
objects into pie executables.
Attached patch to fix this. I have only tested this patch on X86_64.
Please review.
Thanks
Sri
Attachment:
allow_plt_for_pie.txt
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |