Draft for moving network headers from RTEMS to newlib
Sebastian Huber
sebastian.huber at embedded-brains.de
Wed Apr 27 05:58:10 UTC 2016
On 27/04/16 05:53, Chris Johns wrote:
> On 26/04/2016 19:26, Sebastian Huber wrote:
>>
>>
>> On 26/04/16 10:27, Chris Johns wrote:
>>> On 26/04/2016 17:31, Sebastian Huber wrote:
>>>> On 26/04/16 07:51, Chris Johns wrote:
>>>>> On 26/04/2016 01:06, Christian Mauderer wrote:
[...]
>> I see an
>> explosion of libraries if we build them for each BSP. We have count of
>> BSPs > count of multilibs, otherwise the GCC configuration is broken.
>
> This is only valid for developers who have to build all BSPS. Most
> uses have one or maybe 2 BSPs they are working with at a time.
>
> My question was, do we care about this? You do not see it as an issue
> because your need to package built tools and libraries is important,
> and I can live with it cause I have fast machines and fast disks but
> we are just 2 people.
I think its quite nice if you are able to build support libraries as a
part of the tool chain and not specific to a particular BSP.
>
> FYI there are 11 variants in ARM.
Yes, and we need them all.
>
>>
>>>
>>>> You are able to use the
>>>> network header files during GCC build, which makes it easier to build
>>>> the run-time libraries of Ada and Go.
>>>
>>> Nice. Maybe limiting what is added to just building languages would be
>>> a nice first starting point.
>>>
>>>>
>>>>>
>>>>> How do you get the flags for the compiler to build the package?
>>>>
>>>> See attached script which builds for example libpng for all multilibs.
>>>
>>> Multilibs has not had a very successful history with RTEMS (outside of
>>> gcc). They are not very user friendly and are a source of questions
>>> and issues.
>>
>> I think multilibs are great for libraries which don't depend on BSP
>> specifics.
>
> I know ...
>
> https://lists.rtems.org/pipermail/users/2012-February/024544.html
>
> :)
>
> It is a useful idea and I like the work being done with the standards
> based headers.
>
> There is something inconsistent about this I am yet to put my finger
> on. I suspect it is related to some libraries being multilib and some
> libraries not being multilib. Consider an example app and lets assume
> all packages are working perfectly ..
>
> 1) GCC, newlib. - Multilib, /bd/rtems/4.11.0
> 2) RTEMS - Specific, /bd/rtems/4.11.0/bsps
> 3) NTP - Multilib, /bd/rtems/4.11.0/bsps
> 4) Protobufs - Multilib, /bd/rtems/4.11.0/bsps
> 5) Civetweb - Multilib, /bd/rtems/4.11.0/bsps
> 6) NetSNMP - Specific, /bd/rtems/4.11.0/bsps
> 7) Application - Executable
>
> I wonder what the application linker command line looks like?
>
> Does gcc's multilib search extend beyond it's own install base?
A multilib is a normal library which is available via the builtin search
paths of GCC:
LIBRARY_PATH=/opt/rtems-4.12/lib64/gcc/arm-rtems4.12/6.0.1/thumb/armv7-m/:/opt/rtems-4.12/lib64/gcc/arm-rtems4.12/6.0.1/../../../../arm-rtems4.12/lib/thumb/armv7-m/:/opt/rtems-4.12/lib64/gcc/arm-rtems4.12/6.0.1/:/opt/rtems-4.12/lib64/gcc/arm-rtems4.12/6.0.1/../../../../arm-rtems4.12/lib/
>
> The NetSNMP package is put here as Specific because it uses a large
> number of platform specific header files to access things like
> interfaces and routing tables.
>
> My point is, when a user considers 3rd party packages they have moved
> to the specific requirements for a specific project and multilibs
> verses per BSP builds mean little. The multilib view is nice when
> viewed from the RTEMS developer perspective or someone providing a
> service to clients where they bundle packages as prebuilt libraries,
> but is it nice to users from the community? I do not know. If both
> multilib and specific libraries can coexist I have no issue but this
> needs to be shown.
>
> Note, the layout is based on the Project Sandboxing documentation I
> have in the Getting Started Guide
> (https://ftp.rtems.org/pub/rtems/people/chrisj/docs/user/start/index.html#project-sandboxing).
> This documentation would need to be updated (hint).
>
>> What is the benefit of per BSP libpng for example?
>
> What is built is tested, there is a 1:1 relationship here. The user is
> able to see and understand what is built, where it is installed and
> what they are linking too. Multilibing packages adds a layer of
> indirection and with that extra complexity.
>
> Multilibs in gcc is not very user friendly ....
>
> $ i386-rtems4.11-gcc -print-multi-lib
> .;
> m486;@mtune=i486
> mpentium;@mtune=pentium
> mpentiumpro;@mtune=pentiumpro
> soft-float;@msoft-float
> m486/soft-float;@mtune=i486 at msoft-float
The output is just like the clang output. What do you mean with not user
friendly? Its good enough to simply use it in the previously attached
script.
>
> $ arm-rtems4.11-gcc -print-multi-lib
> .;
> thumb;@mthumb
> thumb/armv6-m;@mthumb at march=armv6-m
> thumb/armv7-a;@mthumb at march=armv7-a
> thumb/armv7-r;@mthumb at march=armv7-r
> thumb/armv7-m;@mthumb at march=armv7-m
> thumb/armv7-a/neon/hard;@mthumb at march=armv7-a at mfpu=neon at mfloat-abi=hard
> thumb/armv7-r/vfpv3-d16/hard;@mthumb at march=armv7-r at mfpu=vfpv3-d16 at mfloat-abi=hard
>
> thumb/armv7-m/fpv4-sp-d16/hard;@mthumb at march=armv7-m at mfpu=fpv4-sp-d16 at mfloat-abi=hard
>
> eb/thumb/armv7-r;@mbig-endian at mthumb@march=armv7-r
> eb/thumb/armv7-r/vfpv3-d16/hard;@mbig-endian at mthumb@march=armv7-r at mfpu=vfpv3-d16 at mfloat-abi=hard
>
>
> I have no idea what this all means.
One problem is that even you don't find the places where things are
documented in RTEMS:
https://docs.rtems.org/doc-current/share/rtems/html/cpu_supplement/Port-Specific-Information-Multilibs.html#Port-Specific-Information-Multilibs
https://docs.rtems.org/doc-current/share/rtems/html/cpu_supplement/ARM-Specific-Information-Multilibs.html#ARM-Specific-Information-Multilibs
However, not all architectures have this section or an up to date content.
[...]
>> I don't understand why you need these libraries per BSP if they have
>> absolutely no BSP dependency. I use these multilib based libraries for
>> several years and it works quite well.
>
> Great to hear and I am sure these changes will make your private
> efforts simpler.
I am pretty sure it will not only make my private efforts simpler.
>
> I am attempting to understand what effect this has on the RTEMS
> project and our users. If you are able to build the existing 3rd party
> packages in the RSB before and after the changes then I am happy. Some
> may not build completely so if you can achieve the same level of build
> that would be fine. I would also like to see some documentation about
> multilibing and how users are able to use it and do this themselves.
>
> Chris
If you build the package against a particular BSP, then nothing will
change, except that you see standard network headers even if the BSP is
built without a network stack.
We should come to a conclusion if we want the standard network headers
in Newlib or not.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list