All of lore.kernel.org
 help / color / mirror / Atom feed
From: "greg@kroah.com" <greg@kroah.com>
To: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH 1/2] Correct function definition for C++
Date: Wed, 22 Feb 2017 15:22:14 +0100	[thread overview]
Message-ID: <20170222142214.GA6830@kroah.com> (raw)
In-Reply-To: <1487772051.5760.20.camel@infinera.com>

On Wed, Feb 22, 2017 at 02:00:53PM +0000, Joakim Tjernlund wrote:
> On Wed, 2017-02-22 at 14:03 +0100, greg@kroah.com wrote:
> > On Wed, Feb 22, 2017 at 07:50:46AM +0000, Joakim Tjernlund wrote:
> > > On Wed, 2017-02-22 at 08:10 +0100, Greg KH wrote:
> > > > On Tue, Feb 21, 2017 at 04:24:04PM +0100, Joakim Tjernlund wrote:
> > > > > C++ does does not like the extra extern before asmlinkage, remove it.
> > > > > 
> > > > > Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
> > > > > ---
> > > > >  include/linux/printk.h | 4 ++--
> > > > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/include/linux/printk.h b/include/linux/printk.h
> > > > > index 3472cc6..be823f5 100644
> > > > > --- a/include/linux/printk.h
> > > > > +++ b/include/linux/printk.h
> > > > 
> > > > 
> > > > Why are you building this file with a C++ compiler?
> > > 
> > > virtualbox uses C++ and includes various kernel headers and the build
> > > fails, virtualbox guest additions has not build for quite some time now and
> > > this is one of the problems.
> > 
> > Virtualbox is a horrid pile of crap.  You can quote me on that.  We
> > don't care about out-of-tree drivers, the authors should work to get
> > them merged properly if they do care.
> 
> Sure, I believe you :)
>  
> But in this case it is not the kernel modules that fails, it is their
> guest additions/xf86 video driver. Seem like that these need to include some
> kernel herders there too.

Seems like their build system is broken, it should not be including non
uapi header files at all.

> > Kernel code should be C, not C++, and if you do want to use C++, then
> > you are on your own, sorry.
> 
> But there are already a lot of C++ adjustments!? Just grepping for __cplusplus shows
> plenty of hits and what is the point of asmlinkage then:
> #ifdef __cplusplus
> #define CPP_ASMLINKAGE extern "C"
> #else
> #define CPP_ASMLINKAGE
> #endif
> 
> #ifndef asmlinkage
> #define asmlinkage CPP_ASMLINKAGE
> #endif

The usages in include/uapi/ make a bit of sense, but not much.
Everything outside of there makes no sense at all (really just some drm
and one scsi file.)  They should be removed.

> I read all of this that C++ code should be able to at least include kernel headers
> without fatal errors. 

For uapi stuff, yes.  But that's not what you are doing here.  You are
trying to build kernel code with a c++ compiler.  That's not going to
work.

How is a C++ compiler supposed to parse the following line in device.h
	struct class;
(one of my most proud moments...)

thanks,

greg k-h

WARNING: multiple messages have this Message-ID (diff)
From: "greg@kroah.com" <greg@kroah.com>
To: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH 1/2] Correct function definition for C++
Date: Wed, 22 Feb 2017 15:22:14 +0100	[thread overview]
Message-ID: <20170222142214.GA6830@kroah.com> (raw)
In-Reply-To: <1487772051.5760.20.camel@infinera.com>

On Wed, Feb 22, 2017 at 02:00:53PM +0000, Joakim Tjernlund wrote:
> On Wed, 2017-02-22 at 14:03 +0100, greg@kroah.com wrote:
> > On Wed, Feb 22, 2017 at 07:50:46AM +0000, Joakim Tjernlund wrote:
> > > On Wed, 2017-02-22 at 08:10 +0100, Greg KH wrote:
> > > > On Tue, Feb 21, 2017 at 04:24:04PM +0100, Joakim Tjernlund wrote:
> > > > > C++ does does not like the extra extern before asmlinkage, remove it.
> > > > > 
> > > > > Signed-off-by: Joakim Tjernlund <joakim.tjernlund@infinera.com>
> > > > > ---
> > > > >  include/linux/printk.h | 4 ++--
> > > > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > > > 
> > > > > diff --git a/include/linux/printk.h b/include/linux/printk.h
> > > > > index 3472cc6..be823f5 100644
> > > > > --- a/include/linux/printk.h
> > > > > +++ b/include/linux/printk.h
> > > > 
> > > > 
> > > > Why are you building this file with a C++ compiler?
> > > 
> > > virtualbox uses C++ and includes various kernel headers and the build
> > > fails, virtualbox guest additions has not build for quite some time now and
> > > this is one of the problems.
> > 
> > Virtualbox is a horrid pile of crap.  You can quote me on that.  We
> > don't care about out-of-tree drivers, the authors should work to get
> > them merged properly if they do care.
> 
> Sure, I believe you :)
>  
> But in this case it is not the kernel modules that fails, it is their
> guest additions/xf86 video driver. Seem like that these need to include some
> kernel herders there too.

Seems like their build system is broken, it should not be including non
uapi header files at all.

> > Kernel code should be C, not C++, and if you do want to use C++, then
> > you are on your own, sorry.
> 
> But there are already a lot of C++ adjustments!? Just grepping for __cplusplus shows
> plenty of hits and what is the point of asmlinkage then:
> #ifdef __cplusplus
> #define CPP_ASMLINKAGE extern "C"
> #else
> #define CPP_ASMLINKAGE
> #endif
> 
> #ifndef asmlinkage
> #define asmlinkage CPP_ASMLINKAGE
> #endif

The usages in include/uapi/ make a bit of sense, but not much.
Everything outside of there makes no sense at all (really just some drm
and one scsi file.)  They should be removed.

> I read all of this that C++ code should be able to at least include kernel headers
> without fatal errors.�

For uapi stuff, yes.  But that's not what you are doing here.  You are
trying to build kernel code with a c++ compiler.  That's not going to
work.

How is a C++ compiler supposed to parse the following line in device.h
	struct class;
(one of my most proud moments...)

thanks,

greg k-h

  reply	other threads:[~2017-02-22 14:22 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-21 15:24 [PATCH 1/2] Correct function definition for C++ Joakim Tjernlund
2017-02-21 15:24 ` [PATCH 2/2] compiler.h: fix C++ uninitialized const issue Joakim Tjernlund
2017-02-22  7:10 ` [PATCH 1/2] Correct function definition for C++ Greg KH
2017-02-22  7:50   ` Joakim Tjernlund
2017-02-22 13:03     ` greg
2017-02-22 14:00       ` Joakim Tjernlund
2017-02-22 14:22         ` greg [this message]
2017-02-22 14:22           ` greg
2017-02-22 16:25           ` Joakim Tjernlund
2017-02-28 23:15     ` Thomas Backlund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170222142214.GA6830@kroah.com \
    --to=greg@kroah.com \
    --cc=Joakim.Tjernlund@infinera.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.