This is the mail archive of the binutils@sourceware.org mailing list for the binutils 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 2/2] gold: Add s390 -fsplit-stack support.


On Mon, Feb 15, 2016 at 3:01 AM, Marcin KoÅcielnicki <koriakin@0x04.net> wrote:
> On 06/02/16 01:47, Marcin KoÅcielnicki wrote:
>>
>> On 06/02/16 01:24, Cary Coutant wrote:
>>>>
>>>> gold/ChangeLog:
>>>>
>>>>          * s390.cc (Target_s390::match_view_u): New helper method.
>>>>          (Target_s390::do_is_call_to_non_split): New method.
>>>>          (Target_s390::ss_code_st_r14): New const.
>>>>          (Target_s390::ss_code_l_r14): New const.
>>>>          (Target_s390::ss_code_bras_8): New const.
>>>>          (Target_s390::ss_code_l_basr): New const.
>>>>          (Target_s390::ss_code_a_basr): New const.
>>>>          (Target_s390::ss_code_ear): New const.
>>>>          (Target_s390::ss_code_c): New const.
>>>>          (Target_s390::ss_code_larl): New const.
>>>>          (Target_s390::ss_code_brasl): New const.
>>>>          (Target_s390::ss_code_jg): New const.
>>>>          (Target_s390::ss_code_jgl): New const.
>>>>          (Target_s390::ss_match_mcount): New helper method.
>>>>          (Target_s390::ss_match_l): New helper method.
>>>>          (Target_s390::ss_match_ahi): New helper method.
>>>>          (Target_s390::ss_match_alfi): New helper method.
>>>>          (Target_s390::ss_match_cr): New helper method.
>>>>          (Target_s390::do_calls_non_split): New method.
>>>>          * testsuite/Makefile.am: Added new tests.
>>>
>>>
>>> Please add:
>>>
>>>          * testsuite/Makefile.in: Regenerate.
>>>
>>>>          * testsuite/split_s390.sh: New test.
>>>>          * testsuite/split_s390_1_a1.s: New test.
>>>>          * testsuite/split_s390_1_a2.s: New test.
>>>>          * testsuite/split_s390_1_n1.s: New test.
>>>>          * testsuite/split_s390_1_n2.s: New test.
>>>>          * testsuite/split_s390_1_z1.s: New test.
>>>>          * testsuite/split_s390_1_z2.s: New test.
>>>>          * testsuite/split_s390_1_z3.s: New test.
>>>>          * testsuite/split_s390_1_z4.s: New test.
>>>>          * testsuite/split_s390_2_ns.s: New test.
>>>>          * testsuite/split_s390_2_s.s: New test.
>>>>          * testsuite/split_s390x_1_a1.s: New test.
>>>>          * testsuite/split_s390x_1_a2.s: New test.
>>>>          * testsuite/split_s390x_1_n1.s: New test.
>>>>          * testsuite/split_s390x_1_n2.s: New test.
>>>>          * testsuite/split_s390x_1_z1.s: New test.
>>>>          * testsuite/split_s390x_1_z2.s: New test.
>>>>          * testsuite/split_s390x_1_z3.s: New test.
>>>>          * testsuite/split_s390x_1_z4.s: New test.
>>>>          * testsuite/split_s390x_2_ns.s: New test.
>>>>          * testsuite/split_s390x_2_s.s: New test.
>>>
>>>
>>>
>>>> diff --git a/gold/Makefile.in b/gold/Makefile.in
>>>> index 58552ef..97ce000 100644
>>>> --- a/gold/Makefile.in
>>>> +++ b/gold/Makefile.in
>>>> @@ -70,8 +70,8 @@ subdir = .
>>>>   DIST_COMMON = NEWS README ChangeLog $(srcdir)/Makefile.in \
>>>>          $(srcdir)/Makefile.am $(top_srcdir)/configure \
>>>>          $(am__configure_deps) $(srcdir)/config.in \
>>>> -       $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in pread.c \
>>>> -       ffsll.c ftruncate.c mremap.c yyscript.h yyscript.c \
>>>> +       $(srcdir)/../mkinstalldirs $(top_srcdir)/po/Make-in mremap.c \
>>>> +       ffsll.c pread.c ftruncate.c yyscript.h yyscript.c \
>>>>          $(srcdir)/../depcomp $(srcdir)/../ylwrap
>>>>   ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
>>>>   am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
>>>
>>>
>>> This diff is a persistent annoying change caused by non-deterministic
>>> behavior in automake. Please don't commit this -- it only adds churn.
>>> (Just do "git checkout gold/Makefile.in" after running automake if you
>>> haven't made any changes to gold/Makefile.am.)
>>>
>>>> +    // Tricky case.  When used in a brasl, jg, and other branch
>>>> instructions,
>>>> +    // it's a call or a sibcall.  However, when used in larl, it
>>>> only loads
>>>> +    // the function's address - not a call.
>>>> +    case elfcpp::R_390_PC32DBL:
>>>> +      {
>>>> +       if (offset < 2 || offset + 4 >
>>>> static_cast<section_offset_type>(view_size))
>>>
>>>
>>> Line too long.
>>>
>>> This is OK with those changes. Are you ready to check it in, or do you
>>> want to wait for the GCC patches?
>>
>>
>> Still waiting, will commit it with above fixes once gcc side is done.
>> Thanks!
>>>
>>>
>>> Thanks!
>>>
>>> -cary
>>>
>>
>
> The gcc patch has landed now, so I pushed it in.  Thanks!

It caused:

https://sourceware.org/bugzilla/show_bug.cgi?id=19960

-- 
H.J.


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