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