Hello Michael, I have adapted the test cases.
Please find the patch below with Change log, description and test results. Description: ------------------ This branch is regarding a new implemented feature in GCC Microblaze that allows Position Independent Code to run using Data Text Relative addressing instead of using Global Offset Table. Its aim was to make 'PIC' more efficient and flexible as elf size excess/ performance overhead were noticed when using GOT due to the indirect addressing. The change was tested with the dhrystone benchmark on a real Hardware (Xilinx FPGA Spartan 6) and the test report went successfully for all optimization levels. Indeed, Microblaze does not support PC-relative addressing in Hardware like ARM. The idea was to store the start address of current text section in 'r20' instead of GOT, in the function prologue. Correspondingly, data references will be an offset from the original reference value to the start of text thus being added to the 'r20' base register will resolve the actual address. Henceforth, 2 new relocations have been created: - 'R_MICROBLAZE_TEXTPCREL_64': resolves offset of current PC to start of text in order to set r20 - 'R_MICROBLAZE_TEXTREL_64': resolves offset of mentioned data reference to start of text Accordingly, both assembler and linker (binutils) have been adapted. For extra details: https://github.com/andrewsadek/microblaze-pic-data-text-rel/blob/pic_data_text_rel/README.md Change Log: --------------------- 2018-03-22 Andrew Sadek <andrew.sadek...@gmail.com> Microblaze Target: PIC data text relative * gcc/config/microblaze/microblaze.opt: add new option -mpic-data-text-rel. * gcc/config/microblaze/microblaze-protos.h (microblaze_constant_address_p): Add microblaze_constant_address_p function instead of the macro in microblaze.h * gcc/config/microblaze/microblaze.c (TARGET_PIC_DATA_TEXT_REL): New addressing mode for data-text relative position indepenedent code. (microblaze_classify_unspec): add 'UNSPEC_TEXT' case -> 'ADDRESS_SYMBOLIC_TXT_REL'. (microblaze_classify_address): add handling for UNSPEC + CONST_INT. (microblaze_legitimate_pic_operand): exclude function calls from pic operands in case of TARGET_PIC_DATA_TEXT_REL option. (microblaze_legitimize_address): generate 'UNSPEC_TEXT' for all possible addresses cases. (microblaze_address_insns): add 'ADDRESS_SYMBOLIC_TXT_REL' case. (print_operand): add 'ADDRESS_SYMBOLIC_TXT_REL' case. (print_operand_address): add 'ADDRESS_SYMBOLIC_TXT_REL' case + handling for 'address + offset'. (microblaze_expand_prologue): add new function prologue call for 'r20' assignation. (microblaze_asm_generate_pic_addr_dif_vec): override new target hook 'TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC' to disable address diff vector table in case of TARGET_PIC_DATA_TEXT_REL. (expand_pic_symbol_ref): add handling for 'UNSPEC_TEXT'. * gcc/config/microblaze/microblaze.md (TARGET_PIC_DATA_TEXT_REL): Add new macros 'UNSPEC_TEXT', 'UNSPEC_SET_TEXT' + add rule for setting r20 in function prologue + exclude function calls from 'UNSPEC_PLT' in case of data text relative mode. * gcc/doc/tm.texi.in (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): Add new target hook for generating address diff vector tables in case of flag_pic. * gcc/doc/tm.texi : Regenerate. * gcc/stmt.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): append new condition 'targetm.asm_out.generate_pic_addr_diff_vec' to flag_pic in case of addr diff vector generation. * gcc/target.def (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): add target hook definition. * gcc/targhooks.h, gcc/targhooks.c (TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC): add default function for generate_pic_addr_diff_vec -> flag_pic. * gcc/doc/invoke.texi (Add new pic option): Add new microblaze pic option for data text relative. Test Results (using qemu microblaze little endian): ---------------------------------------------------------------------------- === gcc Summary === # of expected passes 90874 # of unexpected failures 1317 # of unexpected successes 3 # of expected failures 207 # of unresolved testcases 115 # of unsupported tests 2828 Full summary: https://raw.githubusercontent.com/andrewsadek/microblaze-pic-data-text-rel/pic_data_text_rel/PATCH_BUNDLE/gcc.sum Patch: ---------- Actually, I found that gmail transforms tabs to spaces even plain text mode, also I can not attach the patch as I receive error from sourceware server, so for now kindly find the patch in the link below,, if you have solution for that please advise. https://github.com/andrewsadek/microblaze-pic-data-text-rel/blob/pic_data_text_rel/PATCH_BUNDLE/gcc.patch On Tue, Mar 20, 2018 at 5:30 PM, Michael Eager <ea...@eagerm.com> wrote: > Hi Andrew -- > > I just do a visual check. The script can help. > > On 03/20/2018 07:13 AM, Andrew Sadek wrote: >> >> Many Thanks Michael for the updates .. I was actually looking for >> something >> similar for my test case .. I m currently revising the Gnu code >> conventions >> on the patches then will send them again. >> I m actually running the 'check_GNU_Style' in contrib folder,, is this the >> correct way ? Is it enough ? >> >> Andrew >> >> On Tue, Mar 20, 2018, 03:30 Michael Eager <ea...@eagerm.com> wrote: >> >>> Also check the { dg-skip-if } directive. >>> https://gcc.gnu.org/onlinedocs/gccint/Directives.html >>> >>> On 03/19/2018 06:14 PM, Michael Eager wrote: >>>> >>>> Hi Andrew -- >>>> >>>> Please take a look at the test case description: >>>> https://gcc.gnu.org/wiki/HowToPrepareATestcase >>>> and see if you can do one of the following: >>>> - Modify the regex expression in the scan-assembler to accept >>>> either format of generated output >>>> or >>>> - Add { dg-option } directives to turn off your new options >>>> if specified. (You should be able to specify -mno-pic....) >>>> or >>>> - Duplicate the test cases and add { dg-option } directives >>>> to specify the correct options, with and without your >>>> new options. >>>> or >>>> - Add test cases with a { dg-option } directive with your >>>> new options. >>>> >>>> This is not required -- your patch appears to work OK. Normally, >>>> the new PIC Data options would not be used when running the test >>>> suite, so the tests would not fail. It's just nice to have the >>>> test suite updated when new options are added. >>>> >>>> On 03/19/2018 01:07 PM, Michael Eager wrote: >>>>> >>>>> Hi Andrew -- >>>>> >>>>> Good work. >>>>> >>>>> Please submit your updated patch. Check that you follow >>>>> GNU coding standards. Also make sure that the new options >>>>> are documented in gcc/doc/invoke.texi. >>>>> >>>>> On 03/18/18 03:27, Andrew Sadek wrote: >>>>>> >>>>>> Hello Michael, >>>>>> >>>>>> I have run the test using the new PIC options. >>>>>> Actually, I have discovered 2 unhandled cases in >>>>>> 'microblaze_expand_move' + missing conditions in linker relax >>>>>> leading some test cases execution to fail. >>>>>> After fixing them, I made a re-run for the whole regression, and the >>>>>> results analogy below: >>>>>> >>>>>> Original, without my patch: >>>>>> === gcc Summary === >>>>>> >>>>>> # of expected passes 90776 >>>>>> # of unexpected failures 1317 >>>>>> # of unexpected successes 3 >>>>>> # of expected failures 207 >>>>>> # of unresolved testcases 115 >>>>>> # of unsupported tests 2828 >>>>>> >>>>>> With my patch, calling '-fPIE - mpic-data-text-rel' >>>>>> === gcc Summary === >>>>>> >>>>>> # of expected passes 90843 >>>>>> # of unexpected failures 1256 >>>>>> # of unexpected successes 3 >>>>>> # of expected failures 207 >>>>>> # of unresolved testcases 115 >>>>>> # of unsupported tests 2853 >>>>>> >>>>>> After running the 'dg-cmp-results.sh' in contrib folder, the >>>>>> PASS->FAIL are below: >>>>>> >>>>>> PASS->FAIL: gcc.dg/uninit-19.c (test for excess errors) >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -O2 >>>>>> -flto -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -O2 >>>>>> -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -O2 >>>>>> -flto -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -O2 >>>>>> -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> >>>>>> the 'gcc.dg/uninit-19.c ' already fails with -fPIE, and for the >>>>>> others in microblaze, >>>>>> expectation is r0 or r13 as a base register which is not the case >>>>>> here 'r20', and these tests also fails with -fPIE. >>>>>> Moreover, the test cases that failed due 'unresolved >>>>>> GLOBAL_OFFSET_TABLE' now pass as we do not have GOT in data text >>>>>> relative. >>>>>> >>>>>> Please tell me if any adjustments needed or If I need to re-run >>> >>> nything. >>>>>> >>>>>> >>>>>> Thanks >>>>>> >>>>>> On Sun, Mar 18, 2018 at 12:25 PM, Andrew Sadek >>>>>> <andrew.sadek...@gmail.com <mailto:andrew.sadek...@gmail.com>> wrote: >>>>>> >>>>>> Hello Michael, >>>>>> >>>>>> I have run the test using the new PIC options. >>>>>> Actually, I have discovered 2 unhandled cases in >>>>>> 'microblaze_expand_move' + missing conditions in linker relax >>>>>> leading some test cases execution to fail. >>>>>> After fixing them, I made a re-run for the whole regression, and >>> >>> the >>>>>> >>>>>> results analogy below: >>>>>> >>>>>> Original, without my patch: >>>>>> === gcc Summary === >>>>>> >>>>>> # of expected passes 90776 >>>>>> # of unexpected failures 1317 >>>>>> # of unexpected successes 3 >>>>>> # of expected failures 207 >>>>>> # of unresolved testcases 115 >>>>>> # of unsupported tests 2828 >>>>>> >>>>>> With my patch, calling '-fPIE - mpic-data-text-rel' >>>>>> === gcc Summary === >>>>>> >>>>>> # of expected passes 90843 >>>>>> # of unexpected failures 1256 >>>>>> # of unexpected successes 3 >>>>>> # of expected failures 207 >>>>>> # of unresolved testcases 115 >>>>>> # of unsupported tests 2853 >>>>>> >>>>>> After running the 'dg-cmp-results.sh' in contrib folder, the >>>>>> PASS->FAIL are below: >>>>>> >>>>>> PASS->FAIL: gcc.dg/uninit-19.c (test for excess errors) >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var1.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/data_var2.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r0 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var1.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var2.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var4.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O0 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O1 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O2 -flto >>>>>> -fno-use-linker-plugin -flto-partition=none scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O2 -flto >>>>>> -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O2 >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -O3 -g >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/sdata_var5.c -Os >>>>>> scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -O0 scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -O1 scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -O2 >>>>>> -flto -fno-use-linker-plugin -flto-partition=none >>>>>> scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -O2 >>>>>> -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -O2 scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -O3 >>>>>> -g scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst1_gpopt.c >>>>>> -Os scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -O0 scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -O1 scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -O2 >>>>>> -flto -fno-use-linker-plugin -flto-partition=none >>>>>> scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -O2 >>>>>> -flto -fuse-linker-plugin -fno-fat-lto-objects scan-assembler >>>>>> lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -O2 scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -O3 >>>>>> -g scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> PASS->FAIL: gcc.target/microblaze/others/string_cst2_gpopt.c >>>>>> -Os scan-assembler lwi\tr([0-9]|[1-2][0-9]|3[0-1]),r13 >>>>>> >>>>>> the 'gcc.dg/uninit-19.c ' already fails with -fPIE, and for the >>>>>> others in microblaze, >>>>>> expectation is r0 or r13 as a base register which is not the case >>>>>> here 'r20', and these tests also fails with -fPIE. >>>>>> Moreover, the test cases that failed due 'unresolved >>>>>> GLOBAL_OFFSET_TABLE' now pass as we do not have GOT in data text >>>>>> relative. >>>>>> >>>>>> Attached the compare output of the scripit with verbosity 2. >>>>>> Please tell me if any adjustments needed or If I need to re-run >>>>>> nything. >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> On Tue, Mar 13, 2018 at 10:44 PM, Michael Eager <ea...@eagerm.com >>>>>> <mailto:ea...@eagerm.com>> wrote: >>>>>> >>>>>> On 03/13/18 00:56, Andrew Sadek wrote: >>>>>> >>>>>> Ok, so you mean with '-fPIC -mpic-data-text-relative' as >>>>>> I >>>>>> do in my test case ? >>>>>> If all is Ok, execution and compilation shall ideally >>>>>> pass >>>>>> for the test cases. >>>>>> >>>>>> >>>>>> Correct. >>>>>> >>>>>> I want to make sure of two things: >>>>>> -- Your patch doesn't break anything (i.e., cause a >>>>>> regression) when >>>>>> you don't use the options. This seems complete. >>>>>> -- Your patch works as intended when you do use the >>>>>> options. >>>>>> >>>>>> But I have noticed that there are some output pattern >>> >>> checks >>>>>> >>>>>> done in some test cases and this may fail since the >>>>>> output >>>>>> assembly is different, >>>>>> anyway I shall give it a try and send you the results >>>>>> with >>>>>> the new options. >>>>>> >>>>>> >>>>>> There should be no target dependencies in the generic GCC >>> >>> tests. >>>>>> >>>>>> Different instruction patterns which generate the correct >>>>>> results should >>>>>> not be a problem. >>>>>> >>>>>> >>>>>> -- Michael Eager ea...@eagerm.com >>>>>> <mailto:ea...@eagerm.com> >>>>>> 1960 Park Blvd., Palo Alto, CA 94306 >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Andrew >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> >>>>>> Andrew >>>>> >>>>> >>>> >>> >>> -- >>> Michael Eager ea...@eagerm.com >>> 1960 Park Blvd., Palo Alto, CA 94306 >>> >> > > -- > Michael Eager ea...@eagerm.com > 1960 Park Blvd., Palo Alto, CA 94306 -- Andrew