'Binary does not work when PIE and Partial RELRO are enabled together

When PIE or Full RELRO is enabled, the code works perfectly fine. But, when PIE is enabled with Partial RELRO, some piece of code (function calls) is not invoked. The compiler is not gcc on x86 but arm-linux-gnueabi compiler. Does it mean that, dynamic loader has not fully loaded the symbols and at run time , when symbols needs to be found, loader tries to write the non-plt section? And that's why PIE and partial RELRO may not work together? (Note: I see that gcc enables Full RELRO when PIE is enabled, as default. Needs an explicit disabling of PIE if partial RELRO needs to be enabled.) Thanks in advance.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source