On 23 July 2013 17:40, Janis Johnson <janis_john...@mentor.com> wrote: > On 07/22/2013 02:59 AM, Vidya Praveen wrote: >> Hello, >> >> There are 42 test files (25 under gcc.dg) that specifies >> >> { dg-add-options bind_pic_locally } >> >> in the regression testsuite. The procedure add_options_for_bind_pic_locally >> from lib/target-supports.exp adds -fPIE or -fpie when -fPIC or -fpic is >> passed >> respectively. But this is added before the dejagnu multilib options are >> added. >> So when -fPIC is passed as a multilib option, -fPIE will be unset by -fPIC >> (see gcc/common.opt). This should have been the behaviour since the patch >> http://gcc.gnu.org/ml/gcc-patches/2012-11/msg01026.html that brings all -fPIC >> & -fPIE variants in a Negative loop, was applied. >> >> I tried fixing this in dejagnu/target.exp by adding the multilib options >> before >> the other options: >> >> default_target_compile: >> >> < append add_flags " [board_info $dest multilib_flags]" >> --- >>> set add_flags " [board_info $dest multilib_flags] $add_flags" >> >> and ran regressions for x86_64-unknown-linux-gnu before and after the change. >> The only difference in the results after the change was 24 new PASSes which >> are from the testcases which either use bind_pic_locally or that use >> -fno-pic. >> >> (Interestingly, there are many test files that bind_pic_locally pass without >> any issue before and after the change.) >> >> I tend to think that the options added from the test files should always win. >> Please correct me if I'm wrong. If I'm right, is dejagnu/target.exp is the >> best place to fix this and the way it tried to fix? Any better suggestions? >> >> Though this case is to do with -fPIC, I'm sure there are other options which >> when they come as multilib options might have same issue with the some of the >> options added by the test files or the default options. >> >> Regards >> VP > > Ideally we would ask for that change in DejaGnu, but relying on such a > change would require everyone testing GCC to upgrade to a version of > DejaGnu with that fix, and I don't think we're ready to do that. > > Tests that add options that might override or conflict with multilib > flags should check for those flags first and skip the test if they are > used. For examples, see tests in gcc.target/arm that use dg-skip-if.
Umm, the purpose of bind_pic_locally appears to be to detect the use of -fPIC and override that behavior with -fPIE. If I understand the above paragraph correctly then bind_pic_locally is fundamentally broken and all of the tests that use it need rewriting to skip if -fPIC or -fpic is in use? Cheers /Marcus