Re: [PATCH] ix86: fix vDSO build
>>> On 11.07.14 at 00:58, wrote: > On 07/03/2014 07:35 AM, Jan Beulich wrote: >> Relying on static functions used just once to get inlined (and >> subsequently have dead code paths eliminated) is wrong: Compilers are >> free to decide whether they do this, regardless of optimization level. >> With this not happening for vdso_addr() (observed with gcc 4.1.x), an >> unresolved reference to align_vdso_addr() causes the build to fail. > > The fix seems odd... more of the flavor of "happens to work" unless I'm > misunderstanding something. If this needs to be inlined, wouldn't > __always_inline make more sense? > > What am I missing? I think this is a matter of taste: Personally I think __always_inline should be used rather rarely, as it takes away decisions from the compiler that it would (generally) be in the better position to make. Sorry for the late reply (was on vacation), Jan -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On 11.07.14 at 00:58, h...@zytor.com wrote: On 07/03/2014 07:35 AM, Jan Beulich wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. The fix seems odd... more of the flavor of happens to work unless I'm misunderstanding something. If this needs to be inlined, wouldn't __always_inline make more sense? What am I missing? I think this is a matter of taste: Personally I think __always_inline should be used rather rarely, as it takes away decisions from the compiler that it would (generally) be in the better position to make. Sorry for the late reply (was on vacation), Jan -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On 07/03/2014 07:35 AM, Jan Beulich wrote: > Relying on static functions used just once to get inlined (and > subsequently have dead code paths eliminated) is wrong: Compilers are > free to decide whether they do this, regardless of optimization level. > With this not happening for vdso_addr() (observed with gcc 4.1.x), an > unresolved reference to align_vdso_addr() causes the build to fail. The fix seems odd... more of the flavor of "happens to work" unless I'm misunderstanding something. If this needs to be inlined, wouldn't __always_inline make more sense? What am I missing? -hpa -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On 07/03/2014 07:35 AM, Jan Beulich wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. The fix seems odd... more of the flavor of happens to work unless I'm misunderstanding something. If this needs to be inlined, wouldn't __always_inline make more sense? What am I missing? -hpa -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On Thu, 03 Jul 2014 15:35:07 +0100 "Jan Beulich" wrote: > Relying on static functions used just once to get inlined (and > subsequently have dead code paths eliminated) is wrong: Compilers are > free to decide whether they do this, regardless of optimization level. > With this not happening for vdso_addr() (observed with gcc 4.1.x), an > unresolved reference to align_vdso_addr() causes the build to fail. > > Signed-off-by: Jan Beulich > Cc: Andy Lutomirski > --- > arch/x86/vdso/vma.c|4 > 1 file changed, 4 insertions(+) > > --- 3.16-rc3/arch/x86/vdso/vma.c > +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c > @@ -62,6 +62,9 @@ struct linux_binprm; > Only used for the 64-bit and x32 vdsos. */ > static unsigned long vdso_addr(unsigned long start, unsigned len) > { > +#ifdef CONFIG_X86_32 > + return 0; > +#else > unsigned long addr, end; > unsigned offset; > end = (start + PMD_SIZE - 1) & PMD_MASK; > @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned > addr = align_vdso_addr(addr); > > return addr; > +#endif > } > > static int map_vdso(const struct vdso_image *image, bool calculate_addr) Tested-by: Andrew Morton -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On Thu, 03 Jul 2014 15:35:07 +0100 Jan Beulich jbeul...@suse.com wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Signed-off-by: Jan Beulich jbeul...@suse.com Cc: Andy Lutomirski l...@amacapital.net --- arch/x86/vdso/vma.c|4 1 file changed, 4 insertions(+) --- 3.16-rc3/arch/x86/vdso/vma.c +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c @@ -62,6 +62,9 @@ struct linux_binprm; Only used for the 64-bit and x32 vdsos. */ static unsigned long vdso_addr(unsigned long start, unsigned len) { +#ifdef CONFIG_X86_32 + return 0; +#else unsigned long addr, end; unsigned offset; end = (start + PMD_SIZE - 1) PMD_MASK; @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned addr = align_vdso_addr(addr); return addr; +#endif } static int map_vdso(const struct vdso_image *image, bool calculate_addr) Tested-by: Andrew Morton a...@linux-foundation.org -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On 07/03/2014 10:35 AM, Jan Beulich wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Tested-by: Boris Ostrovsky Signed-off-by: Jan Beulich Cc: Andy Lutomirski --- arch/x86/vdso/vma.c|4 1 file changed, 4 insertions(+) --- 3.16-rc3/arch/x86/vdso/vma.c +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c @@ -62,6 +62,9 @@ struct linux_binprm; Only used for the 64-bit and x32 vdsos. */ static unsigned long vdso_addr(unsigned long start, unsigned len) { +#ifdef CONFIG_X86_32 + return 0; +#else unsigned long addr, end; unsigned offset; end = (start + PMD_SIZE - 1) & PMD_MASK; @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned addr = align_vdso_addr(addr); return addr; +#endif } static int map_vdso(const struct vdso_image *image, bool calculate_addr) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On Thu, Jul 3, 2014 at 8:44 AM, Jan Beulich wrote: On 03.07.14 at 17:34, wrote: >> On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich wrote: >>> Relying on static functions used just once to get inlined (and >>> subsequently have dead code paths eliminated) is wrong: Compilers are >>> free to decide whether they do this, regardless of optimization level. >>> With this not happening for vdso_addr() (observed with gcc 4.1.x), an >>> unresolved reference to align_vdso_addr() causes the build to fail. >>> >>> Signed-off-by: Jan Beulich >>> Cc: Andy Lutomirski >> >> Acked-by: Andy Lutomirski > > Thanks (also for the other one). > >> Any chance you could send a dump of the symbol and relocation tables >> of a .so.dbg with this problem? I'm curious why checkundef.sh never >> caught it. > > vma.o is part of the kernel, not the .so. Duh :) --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
>>> On 03.07.14 at 17:34, wrote: > On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich wrote: >> Relying on static functions used just once to get inlined (and >> subsequently have dead code paths eliminated) is wrong: Compilers are >> free to decide whether they do this, regardless of optimization level. >> With this not happening for vdso_addr() (observed with gcc 4.1.x), an >> unresolved reference to align_vdso_addr() causes the build to fail. >> >> Signed-off-by: Jan Beulich >> Cc: Andy Lutomirski > > Acked-by: Andy Lutomirski Thanks (also for the other one). > Any chance you could send a dump of the symbol and relocation tables > of a .so.dbg with this problem? I'm curious why checkundef.sh never > caught it. vma.o is part of the kernel, not the .so. Jan -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich wrote: > Relying on static functions used just once to get inlined (and > subsequently have dead code paths eliminated) is wrong: Compilers are > free to decide whether they do this, regardless of optimization level. > With this not happening for vdso_addr() (observed with gcc 4.1.x), an > unresolved reference to align_vdso_addr() causes the build to fail. > > Signed-off-by: Jan Beulich > Cc: Andy Lutomirski Acked-by: Andy Lutomirski Any chance you could send a dump of the symbol and relocation tables of a .so.dbg with this problem? I'm curious why checkundef.sh never caught it. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] ix86: fix vDSO build
Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Signed-off-by: Jan Beulich Cc: Andy Lutomirski --- arch/x86/vdso/vma.c|4 1 file changed, 4 insertions(+) --- 3.16-rc3/arch/x86/vdso/vma.c +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c @@ -62,6 +62,9 @@ struct linux_binprm; Only used for the 64-bit and x32 vdsos. */ static unsigned long vdso_addr(unsigned long start, unsigned len) { +#ifdef CONFIG_X86_32 + return 0; +#else unsigned long addr, end; unsigned offset; end = (start + PMD_SIZE - 1) & PMD_MASK; @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned addr = align_vdso_addr(addr); return addr; +#endif } static int map_vdso(const struct vdso_image *image, bool calculate_addr) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] ix86: fix vDSO build
Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Signed-off-by: Jan Beulich jbeul...@suse.com Cc: Andy Lutomirski l...@amacapital.net --- arch/x86/vdso/vma.c|4 1 file changed, 4 insertions(+) --- 3.16-rc3/arch/x86/vdso/vma.c +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c @@ -62,6 +62,9 @@ struct linux_binprm; Only used for the 64-bit and x32 vdsos. */ static unsigned long vdso_addr(unsigned long start, unsigned len) { +#ifdef CONFIG_X86_32 + return 0; +#else unsigned long addr, end; unsigned offset; end = (start + PMD_SIZE - 1) PMD_MASK; @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned addr = align_vdso_addr(addr); return addr; +#endif } static int map_vdso(const struct vdso_image *image, bool calculate_addr) -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich jbeul...@suse.com wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Signed-off-by: Jan Beulich jbeul...@suse.com Cc: Andy Lutomirski l...@amacapital.net Acked-by: Andy Lutomirski l...@amacapital.net Any chance you could send a dump of the symbol and relocation tables of a .so.dbg with this problem? I'm curious why checkundef.sh never caught it. --Andy -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On 03.07.14 at 17:34, l...@amacapital.net wrote: On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich jbeul...@suse.com wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Signed-off-by: Jan Beulich jbeul...@suse.com Cc: Andy Lutomirski l...@amacapital.net Acked-by: Andy Lutomirski l...@amacapital.net Thanks (also for the other one). Any chance you could send a dump of the symbol and relocation tables of a .so.dbg with this problem? I'm curious why checkundef.sh never caught it. vma.o is part of the kernel, not the .so. Jan -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On Thu, Jul 3, 2014 at 8:44 AM, Jan Beulich jbeul...@suse.com wrote: On 03.07.14 at 17:34, l...@amacapital.net wrote: On Thu, Jul 3, 2014 at 7:35 AM, Jan Beulich jbeul...@suse.com wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Signed-off-by: Jan Beulich jbeul...@suse.com Cc: Andy Lutomirski l...@amacapital.net Acked-by: Andy Lutomirski l...@amacapital.net Thanks (also for the other one). Any chance you could send a dump of the symbol and relocation tables of a .so.dbg with this problem? I'm curious why checkundef.sh never caught it. vma.o is part of the kernel, not the .so. Duh :) --Andy -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] ix86: fix vDSO build
On 07/03/2014 10:35 AM, Jan Beulich wrote: Relying on static functions used just once to get inlined (and subsequently have dead code paths eliminated) is wrong: Compilers are free to decide whether they do this, regardless of optimization level. With this not happening for vdso_addr() (observed with gcc 4.1.x), an unresolved reference to align_vdso_addr() causes the build to fail. Tested-by: Boris Ostrovsky boris.ostrov...@oracle.com Signed-off-by: Jan Beulich jbeul...@suse.com Cc: Andy Lutomirski l...@amacapital.net --- arch/x86/vdso/vma.c|4 1 file changed, 4 insertions(+) --- 3.16-rc3/arch/x86/vdso/vma.c +++ 3.16-rc3-x86-vdso-build/arch/x86/vdso/vma.c @@ -62,6 +62,9 @@ struct linux_binprm; Only used for the 64-bit and x32 vdsos. */ static unsigned long vdso_addr(unsigned long start, unsigned len) { +#ifdef CONFIG_X86_32 + return 0; +#else unsigned long addr, end; unsigned offset; end = (start + PMD_SIZE - 1) PMD_MASK; @@ -83,6 +86,7 @@ static unsigned long vdso_addr(unsigned addr = align_vdso_addr(addr); return addr; +#endif } static int map_vdso(const struct vdso_image *image, bool calculate_addr) -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/