This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: [ARM] Add endless loop to avoid a compiler warning on noreturn functions.
- From: Christophe Lyon <christophe dot lyon at linaro dot org>
- To: howland at lgsinnovations dot com
- Cc: newlib at sourceware dot org
- Date: Tue, 2 Oct 2018 08:52:15 +0200
- Subject: Re: [ARM] Add endless loop to avoid a compiler warning on noreturn functions.
- References: <CAKdteOakzKmCEnCA5EZbd8Mc3HCy39nRR6=DDx2poWz6G1tvxQ@mail.gmail.com> <c6b4cbc6-7d41-5641-a7cf-5fd671c8c737@LGSInnovations.com>
On Tue, 2 Oct 2018 at 00:25, Craig Howland <howland@lgsinnovations.com> wrote:
>
> On 10/01/2018 05:27 PM, Christophe Lyon wrote:
> > Hi,
> >
> > While building newlib for ARM, I noticed GCC warnings for _exit() that
> > the compiler thinks they return a value despite being noreturn.
> >
> > Like other targets, this small adds an endless loop to avoid the warning.
> >
> > OK?
> >
> > Christophe
> The proper fix (for both places) is to add noreturn to the _kill() prototype in
> the file. (Which presumably is true, otherwise _exit() will return. I did test
> that it fixes the warning.) (It would not be surprising if it also needed to be
> added to the _kill() source, itself.)
Well, when compiled with ARM_RDI_MONITOR, _kill does seem to return:
#if SEMIHOST_V2
if (_has_ext_exit_extended ())
return do_AngelSWI (insn, block);
else
#endif
return do_AngelSWI (insn, (void*)block[0]);
I guess the noreturn should not be added to
newlib/libc/include/sys/signal.h
because it depends on the actual target implementation of _kill?
> Craig