user1816723
user1816723

Reputation: 53

Reference function of shared library in executable with relocations but without PIC

I am wondering myself if it is possible to build & link a executable using a shared object so that it is not using PIC (therefore PLT) but load-time relocations.

I think if this is possible, the code section has to be re writeable (which should principal be no problem).

If I try with no additional gcc parameters, it uses PIC (usually, to create a PIC shared lib, I have to add -fPIC).

I know that it is possible with data, for that case a R_386_COPY relocation is executed.

So, is this possible for functions? And if, with which gcc parameters?

Upvotes: 1

Views: 70

Answers (1)

Employed Russian
Employed Russian

Reputation: 213799

is this possible for functions?

Sure.

And if, with which gcc parameters?

No version of ld that I know of will do that (as generally this is considered the wrong thing to do). You'll have to build ld from source, and apply a patch to make it do what you want.

the code section has to be re writeable

Correct.

(which should principal be no problem).

Many environments, such as e.g. SELinux prohibit writeable and executable mappings, as such mappings are exceedingly insecure.

So while your binary with writable code section would run in some environments with no problem, it will not run in many others.

Upvotes: 0

Related Questions