* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 [not found] ` <20160811210118.GA5342@aurel32.net> @ 2016-12-22 0:36 ` Aaro Koskinen 2016-12-22 0:53 ` Maciej W. Rozycki 0 siblings, 1 reply; 8+ messages in thread From: Aaro Koskinen @ 2016-12-22 0:36 UTC (permalink / raw) To: Maciej W. Rozycki, binutils Cc: Faraz Shahbazker, Joseph Myers, libc-alpha, Aurelien Jarno Hi, On Thu, Aug 11, 2016 at 11:01:18PM +0200, Aurelien Jarno wrote: > On 2016-02-05 10:38, Faraz Shahbazker wrote: > > Bump! > > > > Related patches for review: > > * binutils: https://sourceware.org/ml/libc-alpha/2016-01/msg00567.html > > * gcc : https://gcc.gnu.org/ml/gcc-patches/2016-02/msg00444.html > > > > It seems that the patches are present in the 2.27 binutils release, > while they are not yet ready on the glibc side (I guess still waiting > on the IFUNC patches). > > This means that building binaries with -Wl,-z,noexecstack set the ABI > version to 5 and we then have no way to execute them. Some configure > scripts probe for the availability of this option and enable it > automatically. Would it be possible to revert (or provide option to disable) these changes in binutils 2.28? A. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 0:36 ` [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 Aaro Koskinen @ 2016-12-22 0:53 ` Maciej W. Rozycki 2016-12-22 1:08 ` Joseph Myers 2016-12-22 1:12 ` Aaro Koskinen 0 siblings, 2 replies; 8+ messages in thread From: Maciej W. Rozycki @ 2016-12-22 0:53 UTC (permalink / raw) To: Aaro Koskinen Cc: binutils, Faraz Shahbazker, Joseph Myers, libc-alpha, Aurelien Jarno Hi, On Thu, 22 Dec 2016, Aaro Koskinen wrote: > On Thu, Aug 11, 2016 at 11:01:18PM +0200, Aurelien Jarno wrote: > > On 2016-02-05 10:38, Faraz Shahbazker wrote: > > > Bump! > > > > > > Related patches for review: > > > * binutils: https://sourceware.org/ml/libc-alpha/2016-01/msg00567.html > > > * gcc : https://gcc.gnu.org/ml/gcc-patches/2016-02/msg00444.html > > > > > > > It seems that the patches are present in the 2.27 binutils release, > > while they are not yet ready on the glibc side (I guess still waiting > > on the IFUNC patches). > > > > This means that building binaries with -Wl,-z,noexecstack set the ABI > > version to 5 and we then have no way to execute them. Some configure > > scripts probe for the availability of this option and enable it > > automatically. > > Would it be possible to revert (or provide option to disable) these > changes in binutils 2.28? Making PT_GNU_STACK executables stop working with legacy glibc which does not support the feature required is IIUC the whole point of the binutils change, so it serves its purpose AFAICT. I can revert the change, but before I do it can someone please tell me why can't MIPS support for PT_GNU_STACK be simply pushed to glibc instead? And what's the relevance of the IFUNC feature here (which will now use ABI version 6, the next available one) -- is there a functional dependency between the glibc side of these two features? Maciej ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 0:53 ` Maciej W. Rozycki @ 2016-12-22 1:08 ` Joseph Myers 2016-12-22 1:10 ` Joseph Myers 2016-12-22 1:12 ` Aaro Koskinen 1 sibling, 1 reply; 8+ messages in thread From: Joseph Myers @ 2016-12-22 1:08 UTC (permalink / raw) To: Maciej W. Rozycki Cc: Aaro Koskinen, binutils, Faraz Shahbazker, libc-alpha, Aurelien Jarno On Thu, 22 Dec 2016, Maciej W. Rozycki wrote: > Making PT_GNU_STACK executables stop working with legacy glibc which > does not support the feature required is IIUC the whole point of the > binutils change, so it serves its purpose AFAICT. I can revert the > change, but before I do it can someone please tell me why can't MIPS > support for PT_GNU_STACK be simply pushed to glibc instead? And what's > the relevance of the IFUNC feature here (which will now use ABI version > 6, the next available one) -- is there a functional dependency between > the glibc side of these two features? I thought 4 was reserved for IFUNC, meaning that support for 5 implied support for IFUNC (because a simple comparison is all that's available to tell whether glibc supports the features required by an executable / shared library; it's a single ABI version number, not a bitmask of features used) and so the ordering was forced. Certainly the patch here lists IFUNC before MIPS_GNU_STACK, and I don't think the libc-abis system supports gaps in the numbering (you'd need to put in a dummy name if 4 is now to be unused, but then the dummy name would be visible when you run libc.so.6, which it shouldn't be). Has a non-RFC patch posting for glibc for this feature been made? If it's to get in glibc someone will need to post a patch tested against current glibc - with the architecture-independent pieces posted separately from the MIPS-specific pieces, please, as they are likely to be reviewed separately, making sure to include self-contained rationale and pointers to any relevant ABIs, information about kernel, GCC, binutils support, etc. (I'd suggest updating the comment on the XFAIL in sysdeps/unix/sysv/linux/mips/Makefile to give concrete information about the specific versions of GCC and binutils needed for the test to pass / kernel version needed for no-exec stack support to work properly - I mean upstream mainline versions, any references to uncommitted or non-mainline patches need to be clear about their status). Even then, it seems unlikely you'll get review in time for 2.25, i.e. by 31 December (and you may need to keep pinging weekly); I don't know how many dynamic linker experts we have to review the design of the architecture-independent pieces. -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 1:08 ` Joseph Myers @ 2016-12-22 1:10 ` Joseph Myers 2016-12-22 1:40 ` Maciej W. Rozycki 0 siblings, 1 reply; 8+ messages in thread From: Joseph Myers @ 2016-12-22 1:10 UTC (permalink / raw) To: Maciej W. Rozycki Cc: Aaro Koskinen, binutils, Faraz Shahbazker, libc-alpha, Aurelien Jarno On Thu, 22 Dec 2016, Joseph Myers wrote: > I thought 4 was reserved for IFUNC, meaning that support for 5 implied > support for IFUNC (because a simple comparison is all that's available to > tell whether glibc supports the features required by an executable / > shared library; it's a single ABI version number, not a bitmask of > features used) and so the ordering was forced. Certainly the patch here > lists IFUNC before MIPS_GNU_STACK, and I don't think the libc-abis system > supports gaps in the numbering (you'd need to put in a dummy name if 4 is > now to be unused, but then the dummy name would be visible when you run > libc.so.6, which it shouldn't be). The natural way to address that issue, incidentally, would be to reassign number 4 to MIPS_GNU_STACK and say that IFUNC will get number 5 when ready. (All the other comments about patch proposals that are explicitly for review not RFC, with rationale, architecture-independent pieces split out etc., still apply.) -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 1:10 ` Joseph Myers @ 2016-12-22 1:40 ` Maciej W. Rozycki 2016-12-22 1:51 ` Joseph Myers 0 siblings, 1 reply; 8+ messages in thread From: Maciej W. Rozycki @ 2016-12-22 1:40 UTC (permalink / raw) To: Joseph Myers Cc: Aaro Koskinen, binutils, Faraz Shahbazker, libc-alpha, Aurelien Jarno On Thu, 22 Dec 2016, Joseph Myers wrote: > > I thought 4 was reserved for IFUNC, meaning that support for 5 implied > > support for IFUNC (because a simple comparison is all that's available to > > tell whether glibc supports the features required by an executable / > > shared library; it's a single ABI version number, not a bitmask of > > features used) and so the ordering was forced. Certainly the patch here > > lists IFUNC before MIPS_GNU_STACK, and I don't think the libc-abis system > > supports gaps in the numbering (you'd need to put in a dummy name if 4 is > > now to be unused, but then the dummy name would be visible when you run > > libc.so.6, which it shouldn't be). > > The natural way to address that issue, incidentally, would be to reassign > number 4 to MIPS_GNU_STACK and say that IFUNC will get number 5 when > ready. (All the other comments about patch proposals that are explicitly > for review not RFC, with rationale, architecture-independent pieces split > out etc., still apply.) Unfortunately binutils 2.27 have been released which already set ABI version to 5 despite that they do not support IFUNC. So we cannot retroactively make version 5 imply IFUNC support, and consequently we cannot make version 4 imply IFUNC support either, as we work under the assumption that any given ABI version supports all the previous (lower-numbered) ABI versions' features. We can make version 4 imply MIPS_GNU_STACK because it will not break the said assumption, and I suppose it may help with chosing reasonable ABI names for versions 4 and 5 if we cannot support gaps (why?). However IFUNC will have to use version 6 or higher. Have I missed anything? Regrettably I haven't realised I need to veto the binutils change before it was upstreamed, or at least back it out before 2.27 went out; sorry about that. Maciej ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 1:40 ` Maciej W. Rozycki @ 2016-12-22 1:51 ` Joseph Myers 2016-12-23 23:16 ` Maciej W. Rozycki 0 siblings, 1 reply; 8+ messages in thread From: Joseph Myers @ 2016-12-22 1:51 UTC (permalink / raw) To: Maciej W. Rozycki Cc: Aaro Koskinen, binutils, Faraz Shahbazker, libc-alpha, Aurelien Jarno On Thu, 22 Dec 2016, Maciej W. Rozycki wrote: > Unfortunately binutils 2.27 have been released which already set ABI > version to 5 despite that they do not support IFUNC. So we cannot > retroactively make version 5 imply IFUNC support, and consequently we > cannot make version 4 imply IFUNC support either, as we work under the > assumption that any given ABI version supports all the previous > (lower-numbered) ABI versions' features. It's only if a version was released in glibc that you can't reassign it. I don't see why you can't change binutils to use version 4 for GNU_STACK (and then 5 for IFUNC), probably including on 2.27 branch - binaries built to use version 5 for GNU_STACK just won't work with glibc until it gets IFUNC support. The relevant rule is: glibc doesn't claim to support a version unless it supports all ABIs <= that version (that is, all ABIs used by binaries that give a version <= that version). It's OK for binaries to specify an ABI version higher than they require (which would, effectively, be the case for binaries built now that use version 5 for GNU_STACK - version 5 meaning, under the reassigned numbers, that you need a glibc supporting all of MIPS_PLT, UNIQUE, MIPS_O32_FP64, GNU_STACK and IFUNC - which is a stricter requirement than necessary, but it's OK for binaries to specify stricter requirements than necessary). -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 1:51 ` Joseph Myers @ 2016-12-23 23:16 ` Maciej W. Rozycki 0 siblings, 0 replies; 8+ messages in thread From: Maciej W. Rozycki @ 2016-12-23 23:16 UTC (permalink / raw) To: Joseph Myers Cc: Aaro Koskinen, binutils, Faraz Shahbazker, libc-alpha, Aurelien Jarno On Thu, 22 Dec 2016, Joseph Myers wrote: > It's only if a version was released in glibc that you can't reassign it. > I don't see why you can't change binutils to use version 4 for GNU_STACK > (and then 5 for IFUNC), probably including on 2.27 branch - binaries built > to use version 5 for GNU_STACK just won't work with glibc until it gets > IFUNC support. The relevant rule is: glibc doesn't claim to support a > version unless it supports all ABIs <= that version (that is, all ABIs > used by binaries that give a version <= that version). > > It's OK for binaries to specify an ABI version higher than they require > (which would, effectively, be the case for binaries built now that use > version 5 for GNU_STACK - version 5 meaning, under the reassigned numbers, > that you need a glibc supporting all of MIPS_PLT, UNIQUE, MIPS_O32_FP64, > GNU_STACK and IFUNC - which is a stricter requirement than necessary, but > it's OK for binaries to specify stricter requirements than necessary). OK, this makes sense to me, thanks for the clarification. Change reverted now then with commit 4d4f40e041ce ("MIPS/BFD: Remove EI_ABIVERSION 5 allocation for PT_GNU_STACK support") and backported to 2.28 and 2.27 branches. Happy festive season, everyone! Maciej ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 2016-12-22 0:53 ` Maciej W. Rozycki 2016-12-22 1:08 ` Joseph Myers @ 2016-12-22 1:12 ` Aaro Koskinen 1 sibling, 0 replies; 8+ messages in thread From: Aaro Koskinen @ 2016-12-22 1:12 UTC (permalink / raw) To: Maciej W. Rozycki Cc: binutils, Faraz Shahbazker, Joseph Myers, libc-alpha, Aurelien Jarno Hi, On Thu, Dec 22, 2016 at 12:52:41AM +0000, Maciej W. Rozycki wrote: > On Thu, 22 Dec 2016, Aaro Koskinen wrote: > > On Thu, Aug 11, 2016 at 11:01:18PM +0200, Aurelien Jarno wrote: > > > On 2016-02-05 10:38, Faraz Shahbazker wrote: > > > > Bump! > > > > > > > > Related patches for review: > > > > * binutils: https://sourceware.org/ml/libc-alpha/2016-01/msg00567.html > > > > * gcc : https://gcc.gnu.org/ml/gcc-patches/2016-02/msg00444.html > > > > > > > > > > It seems that the patches are present in the 2.27 binutils release, > > > while they are not yet ready on the glibc side (I guess still waiting > > > on the IFUNC patches). > > > > > > This means that building binaries with -Wl,-z,noexecstack set the ABI > > > version to 5 and we then have no way to execute them. Some configure > > > scripts probe for the availability of this option and enable it > > > automatically. > > > > Would it be possible to revert (or provide option to disable) these > > changes in binutils 2.28? > > Making PT_GNU_STACK executables stop working with legacy glibc which > does not support the feature required is IIUC the whole point of the > binutils change, so it serves its purpose AFAICT. Maybe, but today only "legacy glibc" exists and people have no way of knowing or preparing for that when taking new binutils into use. I don't think it's good a practice to make a release that depends on some imaginary future version of some other software component. At least it's not very pragmatic. A. ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-12-23 23:16 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <56A15768.20005@imgtec.com> [not found] ` <56A157AF.8080504@imgtec.com> [not found] ` <alpine.DEB.2.10.1601212215030.24424@digraph.polyomino.org.uk> [not found] ` <56A6BF93.5010401@imgtec.com> [not found] ` <56B4EC43.7040000@imgtec.com> [not found] ` <20160811210118.GA5342@aurel32.net> 2016-12-22 0:36 ` [RFC] [MIPS] Enable non-executable PT_GNU_STACK support v2 Aaro Koskinen 2016-12-22 0:53 ` Maciej W. Rozycki 2016-12-22 1:08 ` Joseph Myers 2016-12-22 1:10 ` Joseph Myers 2016-12-22 1:40 ` Maciej W. Rozycki 2016-12-22 1:51 ` Joseph Myers 2016-12-23 23:16 ` Maciej W. Rozycki 2016-12-22 1:12 ` Aaro Koskinen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).