conversion of the __inline__ and inline pragmas to RTEMS_INLINE_ROUTINE?
Joel Sherrill
joel.sherrill at OARcorp.com
Wed Nov 9 16:08:24 UTC 2011
On 11/9/2011 9:40 AM, Ralf Corsepius wrote:
> On 11/09/2011 03:42 PM, Joel Sherrill wrote:
>> On 11/09/2011 08:20 AM, Gedare Bloom wrote:
>>> On Wed, Nov 9, 2011 at 3:55 AM, Ralf
>>> Corsepius<ralf.corsepius at rtems.org> wrote:
>>>> On 11/09/2011 09:49 AM, Sebastian Huber wrote:
>>>>> Hi,
>>>>>
>>>>> On 11/04/2011 09:15 PM, Cudmore, Alan P. (GSFC-5820) wrote:
>>>>>> Hi,
>>>>>> Is there an effort to convert the __inline__ and inline compiler
>>>>>> pragmas into the RTEMS_INLINE_ROUTINE macro?
>>>>>> I noticed that there is still a mixture of __inline__, inline, and
>>>>>> RTEMS_INLINE_ROUTINE in 4.10.1.
>>>>> I would replace all __inline__ and RTEMS_INLINE_ROUTINE with
>>>>> inline. ISO
>>>>> C 99 is now 12 years old.
>>>> I would replace all inline and RTEMS_INLINE_ROUTINE with __inline__
>>>> because
>>>> the rtems toolchain is _far_ from being c99 compliant.
>>>>
>>> It sounds like Alan's requirements are to not use __inline__, unless I
>>> misunderstood. So every inline should be RTEMS_INLINE_ROUTINE so that
>>> inlining is a switch that can be turned off.
>> We are not always going to be tied to gcc so anything that makes
>> it harder to port to a non-GNU compilers is not a good thing. Leaving
>> macros like RTEMS_INLINE_ROUTINE in place was done to allow
>> use of different compilers. When added, we could still be compiled
>> with non-GNU compilers.
>>
> Well, the sad and unpleasant truth is: RTEMS is closer tied to GCC than
> it ever was. Telling people it was possible to compile RTEMS with
> non-gcc's is cheating to yourselves.
And that needs to be addressed. The only way to do that is to attempt
to compile
with non-gcc compilers. I have made progress with clang and can compile up
until the build process hits bsp_specs. That is the next hurdle to clear.
After that, I plan to do a "empty" port to some target with another FOSS
compiler like
OpenWatcom, sdcc, or pcc. It doesn't have to run at first -- just flag
gcc-isms.
Your focus is on the gcc-isms in the source code. The code at one point
did
compile with the Metrowerks and GreenHills compilers. It has been a
long time
but it did work at one point.
I worry that the build system has more dependencies on gcc.
>> We already have bsp_specs which need to go away. They
>> are strictly gcc-isms and non-standard.
> Right, ...
And if we accept that as something that can't be changed, it will never
change.
I want to be able compile RTEMS with non-GNU toolsets. That is a goal. It
does not have a deadline or say it is easy. It is a series of steps and
challenges.
The first step was getting RTEMS to compile at all with clang (x86 target).
The next step is to link and run a program with clang.
The next hurdle is bsp_specs.
>> I am in the experimentation and investigation stage of compiling
>> RTEMS with non-gcc compilers. Please do not tie us to gcc
>> any tighter than we already are.
> The reasons for keeping then is: To be able to test for c99 and POSIX
> compliance you need to be able to compile RTEMS with CFLAGS which are
> violently enforcing "non-c99/non-POSIX" c-dialects - I occasionally do
> so and am trying to improve things.
That's fine. We have not set the minimum requirements for a non-GNU
compiler.
> Once this will have reached a sufficient status (IMO, we are in less
> problematic shape than we were some years ago), we can switch all at
> once to "c99".
>
> Unfortunately, esp. newlib is not in a shape, which renders such efforts
> an easy task nor is RTEMS excessive usage of defines helpful.
Then submit patches to them. They want to improve as well.
> Ralf
>
More information about the users
mailing list