On Tue, 27 Jan 2015, Dominik Vogt wrote:

> On Tue, Jan 27, 2015 at 10:12:15AM +0100, Richard Biener wrote:
> > On Tue, 27 Jan 2015, Jakub Jelinek wrote:
> > > On Tue, Jan 27, 2015 at 10:04:38AM +0100, Richard Biener wrote:
> > > > On Tue, 27 Jan 2015, Andreas Krebbel wrote:
> > > > > [PATCH] S/390: -mhotpatch v2
> > > > > https://gcc.gnu.org/ml/gcc-patches/2015-01/msg02370.html
> > > > > 
> > > > > It is a backend only change to our existing -mhotpatch feature
> > > > > requested by the Linux kernel guys for the ftrace implementation:
> > > > > https://lkml.org/lkml/2015/1/26/320
> > > > > 
> > > > > They need it in an upstream GCC asap. If we don't get it into 5.0 we
> > > > > probably would need to commit it onto 5.1 branch right after the
> > > > > release. I would rather try to avoid this since it would make the
> > > > > hotpatch feature incompatible between 5.0 and 5.1.
> 
> > > > Did you consider using an alternate option name instead of changing
> > > > it in an incompatible way?  I realize SUSE will need to backport this
> > > 
> > > Yeah, the option incompatibility worries me.  Can't -mhotpatch without =
> > > stand for the old behavior?  Does it map to some -mhotpatch=X,Y value,
> > > or is it not worth to support both?
> > 
> > It maps to -mhotpatch=12.
> 
> The new expression for the old behaviour would be -mhotpatch=12,2
> (or attribute((hotpatch(12,2))), and -mno-notpatch is expressed as
> -mhotpatch=0,0 now.
> 
> > The old one had one argument while the new
> > one has two...  so eventually you can distinguish them this way,
> > though for the inlining I'd have added -minline-hotpatched and
> > if you switch the arguments of the new hotpatch then -mhotpatch=12
> > would trivially become supported again...
> 
> The reasons for the incompatible changes are:
> 
>  - With the old code it was really weird that you requested n
>    halfwords to be patched before the label and silently got two
>    halfwords patched after the label too.
> 
>  - The interaction between inlining and hotpatching was really
>    awkward to code and led to behaviour hard to understand for the
>    user.  Furthermore hotpatching is now compatible with
>    always_inline (which generated an error in the old code).
> 
>  - With the simplification to the interaction between inlining and
>    hotpatching (needed by the kernel), the new code would only look
>    the same on the command line but actually do something else.
> 
>  - The old code had already three options (-mhotpatch,
>    -mno-hotpatch and -mhotpatch=) and adding another one to define
>    the size to be patched after the label would have made an even
>    bigger mess of the already bad usability.
> 
>  - The user who requested that feature does not use it yet and
>    will get the updated patch with the new semantics before he
>    starts to use it.
> 
>  - We believe that nobody has tried to use the old semantics
>    (except the colleague next door who requested the new
>    functionality for use in the kernel).
> 
> To sum it up, given that we don't expect any current users, making
> an incompatible change and thus avoiding the extra hassle in
> favour of a clean design seemed acceptable.  It would certainly be
> possible to keep the interfaces compatible, but we think it is not
> worth the effort.

Thanks for the clarification.

Richard.

Reply via email to