Hi,
I am a kernel newbie.
I tried to insmod a C++ module containing classes, inheritance.
I am getting 'unresolved symbol' error when I use the 'new' keyword.
What could the problem be?
What kind of runtime support is needed ( arm linux kernel)? Is a
patch available for it?
Thanks,
Rohit
Hi
> I am a kernel newbie.
> I tried to insmod a C++ module containing classes, inheritance.
> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> What could the problem be?
under using gcc, new operator use malloc by default.
but linux doesn't have malloc.
Could you create custom allocater?
> What kind of runtime support is needed ( arm linux kernel)? Is a
> patch available for it?
may be nothing.
- kosaki
On Fre, 2008-02-08 at 10:51 +0530, rohit h wrote:
> Hi,
> I am a kernel newbie.
> I tried to insmod a C++ module containing classes, inheritance.
> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> What could the problem be?
That you used C++ is the problem. Use plain C and the gcc.
> What kind of runtime support is needed ( arm linux kernel)? Is a
> patch available for it?
Google for "linux kernel c++" and read on - this has been discussed
several times on this list.
Bernd
--
Firmix Software GmbH http://www.firmix.at/
mobil: +43 664 4416156 fax: +43 1 7890849-55
Embedded Linux Development and Services
"rohit h" <[email protected]> writes:
> Hi,
> I am a kernel newbie.
> I tried to insmod a C++ module containing classes, inheritance.
> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> What could the problem be?
If you want to use C++ in the kernel you would need to provide
all the run time library support for it youself. It's possible,
but not easy and encouraged
-Andi
2008/2/8, rohit h <[email protected]>:
> Hi,
> I am a kernel newbie.
> I tried to insmod a C++ module containing classes, inheritance.
> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> What could the problem be?
>
> What kind of runtime support is needed ( arm linux kernel)? Is a
> patch available for it?
>
> Thanks,
> Rohit
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
Rohit,
Please take a look at click modular router which is using c++ as a
linux kernel module.
http://www.read.cs.ucla.edu/click/
The lib/glue.cc provides custom operator new.
Thanks,
Joonwoo
On Feb 9 2008 00:14, Joonwoo Park wrote:
>2008/2/8, rohit h <[email protected]>:
>> Hi,
>> I am a kernel newbie.
>> I tried to insmod a C++ module containing classes, inheritance.
>> I am getting 'unresolved symbol' error when I use the 'new' keyword.
>> What could the problem be?
>>
>> What kind of runtime support is needed ( arm linux kernel)? Is a
>> patch available for it?
>>
>Please take a look at click modular router which is using c++ as a
>linux kernel module.
>http://www.read.cs.ucla.edu/click/
>The lib/glue.cc provides custom operator new.
Uh, let's not make the world worse :)
Just call malloc from C++, and carefully select what C++ features
you are going to use. The VMware source for example does it right.
2008/2/9, Jan Engelhardt <[email protected]>:
>
> On Feb 9 2008 00:14, Joonwoo Park wrote:
> >2008/2/8, rohit h <[email protected]>:
> >> Hi,
> >> I am a kernel newbie.
> >> I tried to insmod a C++ module containing classes, inheritance.
> >> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> >> What could the problem be?
> >>
> >> What kind of runtime support is needed ( arm linux kernel)? Is a
> >> patch available for it?
> >>
> >Please take a look at click modular router which is using c++ as a
> >linux kernel module.
> >http://www.read.cs.ucla.edu/click/
> >The lib/glue.cc provides custom operator new.
>
> Uh, let's not make the world worse :)
> Just call malloc from C++, and carefully select what C++ features
> you are going to use. The VMware source for example does it right.
>
Yep, also I think that if kmalloc is possible it would better than the
operator new.
Rohit,
Compiling the kernel module with g++ is not a simple work, you may
need big patch for kernel itself.
The c++ has more internal keywords than c.
e.g) new, delete, and ::
The new and delete should be re-spelled with another names.
The '::' is used in inline assembly however in c++ it means global namespace.
In conclusion, I don't recommand c++ for linux kernel without very
special goal like the click project :)
Joonwoo
On Feb 8, 2008 9:24 PM, Jan Engelhardt <[email protected]> wrote:
>
> On Feb 9 2008 00:14, Joonwoo Park wrote:
> >2008/2/8, rohit h <[email protected]>:
> >> Hi,
> >> I am a kernel newbie.
> >> I tried to insmod a C++ module containing classes, inheritance.
> >> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> >> What could the problem be?
> >>
> >> What kind of runtime support is needed ( arm linux kernel)? Is a
> >> patch available for it?
> >>
> >Please take a look at click modular router which is using c++ as a
> >linux kernel module.
> >http://www.read.cs.ucla.edu/click/
> >The lib/glue.cc provides custom operator new.
>
> Uh, let's not make the world worse :)
> Just call malloc from C++, and carefully select what C++ features
> you are going to use. The VMware source for example does it right.
>
>From the links given, I dig that following C++ features need runtime support:
a. Pure virtual functions
b. Global objects : Needs compiler dependent changes
c. new & delete : Can use kmalloc / kfree instead
d. Run time type info
e. Exceptions
I guess features d & e need considerable effort.
Apart from these, am I free to use other C++ features?
Where could I see the VMWare sources?
> Compiling the kernel module with g++ is not a simple work, you may
> need big patch for kernel itself.
I don't want to compile entire kernel.
I only want to compile my module with g++ and insmod it.
Any hint on how to write the Makefile.
Thanks in advance,
Rohit
http://www.vmware.com/download/server/open_source.html
On Feb 11, 2008 5:07 PM, rohit h <[email protected]> wrote:
>
> On Feb 8, 2008 9:24 PM, Jan Engelhardt <[email protected]> wrote:
> >
> > On Feb 9 2008 00:14, Joonwoo Park wrote:
> > >2008/2/8, rohit h <[email protected]>:
> > >> Hi,
> > >> I am a kernel newbie.
> > >> I tried to insmod a C++ module containing classes, inheritance.
> > >> I am getting 'unresolved symbol' error when I use the 'new' keyword.
> > >> What could the problem be?
> > >>
> > >> What kind of runtime support is needed ( arm linux kernel)? Is a
> > >> patch available for it?
> > >>
> > >Please take a look at click modular router which is using c++ as a
> > >linux kernel module.
> > >http://www.read.cs.ucla.edu/click/
> > >The lib/glue.cc provides custom operator new.
> >
> > Uh, let's not make the world worse :)
> > Just call malloc from C++, and carefully select what C++ features
> > you are going to use. The VMware source for example does it right.
> >
>
> From the links given, I dig that following C++ features need runtime support:
> a. Pure virtual functions
> b. Global objects : Needs compiler dependent changes
> c. new & delete : Can use kmalloc / kfree instead
> d. Run time type info
> e. Exceptions
> I guess features d & e need considerable effort.
> Apart from these, am I free to use other C++ features?
> Where could I see the VMWare sources?
>
>
>
> > Compiling the kernel module with g++ is not a simple work, you may
> > need big patch for kernel itself.
>
> I don't want to compile entire kernel.
> I only want to compile my module with g++ and insmod it.
> Any hint on how to write the Makefile.
>
> Thanks in advance,
> Rohit
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
----------------------------------------------
"Why is it that every time I'm with you, makes me believe in magic?"
On Mon, 2008-02-11 at 17:07 +0530, rohit h wrote:
> On Feb 8, 2008 9:24 PM, Jan Engelhardt <[email protected]> wrote:
[...]
> > Compiling the kernel module with g++ is not a simple work, you may
> > need big patch for kernel itself.
>
> I don't want to compile entire kernel.
> I only want to compile my module with g++ and insmod it.
> Any hint on how to write the Makefile.
You really should learn on the differences at run-time between between
- pure C in a hosted environment (read: you have a full libc),
- pure C in a standalone environment (read: e.g. the Linux kernel), and
- C++ in both variants.
Bernd
--
Firmix Software GmbH http://www.firmix.at/
mobil: +43 664 4416156 fax: +43 1 7890849-55
Embedded Linux Development and Services