[PATCH] D92633: Add -f[no-]direct-access-external-data to deprecate -mpie-copy-relocations

Fangrui Song via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 4 09:35:03 PST 2020


MaskRay added a comment.

In D92633#2433108 <https://reviews.llvm.org/D92633#2433108>, @tmsriram wrote:

> You said : "The name -mpie-copy-relocations is misleading [1] and does not capture the idea that this option can actually apply to all of -fno-pic,-fpie, ..."
>
> Could you please clarify why this option needs to apply to -fno-pic?  Here is what I tried with trunk clang:

If the user wants to guarantee no copy relocations in -fno-pic code, they can theoretically apply -fno-direct-access-external-data to use a GOT indirection.
This is not implemented, though.

> extern int var;
> int get() { return var; }
>
> $ clang -S foo.c -o -
> ....
> 	movl	var, %eax
> 	popq	%rbp
> ...
>
> With -fno-pic,  this will never need to use -mpie-copy-relocations at all, so this case is not relevant right?  Did I miss anything?

-fno-pic code can only be used with -no-pie links (position-dependent executables) If var is not defined in the linked executable, it will have a copy relocation.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92633/new/

https://reviews.llvm.org/D92633



More information about the cfe-commits mailing list