generic q on freebsd

Mark Millard marklmi at yahoo.com
Wed Oct 7 07:48:44 UTC 2020



On 2020-Oct-7, at 00:20, Kamal Prasad <kamalpr at gmail.com> wrote:

> Android has a libc++. I think that can be ported into the kernel.
> https://developer.android.com/ndk/guides/cpp-support 

So far as I know, Android has libc++ but not in its kernel.

FreeBSD has libc++, but not in its kernel.

In both contexts, libc++ is from LLVM. In both contexts,
userspace programs do not need libc++ to be in the kernel.
In both contexts, the C++ involved is a "hosted
implementation" instead of being limited to a "Freestanding
implemenation".

See https://en.cppreference.com/w/cpp/freestanding about
freestanding vs. hosted. In part:

QUOTE
In a freestanding implementation execution may happen without an operating system
END QUOTE



> thanks
> -kamal
> 
>> On Oct 7, 2020, at 12:40 PM, Kamal Prasad <kamalpr at gmail.com> wrote:
>> 
>> Thanks. Why is it difficult to port the C++ runtime to the kernel? I mean what is the technological hurdle?
>> 
>> thanks
>> -kamal
>> 
>> 
>> 
>> 
>> 
>> 
>> On Oct 6, 2020, at 10:53 PM, Warner Losh <imp at bsdimp.com> wrote:
>>> 
>>> On Tue, Oct 6, 2020, 11:03 AM Kamal R. Prasad <kamalpr at gmail.com> wrote:
>>> 
>>>> hello,
>>>> 
>>>> i am curious if it is possible to compile c++ code inside the freebsd
>>>> kernel.
>>>> 
>>> 
>>> 
>>> Possible? Yes, with restrictions. Easy? No.
>>> 
>>> There are a number of restrictions on doing this. There is no C++ runtime
>>> support provided in stock FreeBSD. You have to write your own, or find
>>> someone else that has published theirs. And the code is likely to be
>>> compiler dependent. People have done it and talked or blogged about it.
>>> 
>>> Generally, if you don't use exceptions, templates, RTTI, expressions that
>>> result in the automatic allocation of objects, have large objects (> 1k) on
>>> the stack, etc, it may be possible. I tried it in the 90s and had to write
>>> just a few routines to make simple classes work, but there's a lot of
>>> dragons here and very little C++ code is written these days w/o reference
>>> to the standard libraries, which aren't present in the kernel.
>>> 
>>> Some googling turns up:
>>> https://github.com/adamlsd/libcpp.ko from 6 years ago
>>> https://lists.freebsd.org/pipermail/freebsd-arch/2018-June/019069.html has
>>> some details from 2 years ago about command line args you might need.
>>> 
>>> Many have tried. Few have succeeded. Those that have write all their code
>>> to conform to a subset of the language. Few have had success moving C++
>>> code for other purposes into the kernel, though if it was written using the
>>> proposed (but never ratified) eC++ (embedded subset), then chances are
>>> greater.
>> 

===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)



More information about the freebsd-arm mailing list