This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [Microblaze]: PIC Data Text Relative


Hello Michael,

I have attached the patch as well,
(the same as in :
https://github.com/andrewsadek/microblaze-pic-data-text-rel/blob/pic_data_text_rel/PATCH_BUNDLE/gcc.patch)

On Thu, Mar 22, 2018 at 8:37 PM, Andrew Sadek <andrew.sadek.se@gmail.com> wrote:
> 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.se@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 <eager@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 <eager@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.se@gmail.com <mailto:andrew.sadek.se@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 <eager@eagerm.com
>>>>>>>      <mailto:eager@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 eager@eagerm.com
>>>>>>> <mailto:eager@eagerm.com>
>>>>>>>          1960 Park Blvd., Palo Alto, CA 94306
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>      --
>>>>>>>      Andrew
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Andrew
>>>>>>
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Michael Eager    eager@eagerm.com
>>>> 1960 Park Blvd., Palo Alto, CA 94306
>>>>
>>>
>>
>> --
>> Michael Eager    eager@eagerm.com
>> 1960 Park Blvd., Palo Alto, CA 94306
>
>
>
> --
>
> Andrew



-- 

Andrew

Attachment: gcc.patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]