Merge remote-tracking branch 'github/noreturn' into PSI-7.0

This commit is contained in:
2025-03-04 17:55:32 +01:00
12 changed files with 34 additions and 11 deletions

View File

@ -3396,7 +3396,7 @@ void verifyContextRundownChanStillExist (
showProgressEnd ( interestLevel ); showProgressEnd ( interestLevel );
} }
int acctst ( const char * pName, unsigned interestLevel, unsigned channelCount, void acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
unsigned repetitionCount, enum ca_preemptive_callback_select select ) unsigned repetitionCount, enum ca_preemptive_callback_select select )
{ {
chid chan; chid chan;
@ -3549,8 +3549,6 @@ int acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
printf ( "\nTest Complete\n" ); printf ( "\nTest Complete\n" );
epicsExit ( EXIT_SUCCESS ); epicsExit ( EXIT_SUCCESS );
return 0;
} }

View File

@ -20,7 +20,8 @@ extern "C" {
enum appendNumberFlag {appendNumber, dontAppendNumber}; enum appendNumberFlag {appendNumber, dontAppendNumber};
int catime ( const char *channelName, unsigned channelCount, enum appendNumberFlag appNF ); int catime ( const char *channelName, unsigned channelCount, enum appendNumberFlag appNF );
int acctst ( const char *pname, unsigned logggingInterestLevel, EPICS_NORETURN
void acctst ( const char *pname, unsigned logggingInterestLevel,
unsigned channelCount, unsigned repetitionCount, unsigned channelCount, unsigned repetitionCount,
enum ca_preemptive_callback_select select ); enum ca_preemptive_callback_select select );

View File

@ -696,16 +696,16 @@ extern void dataend (void);
extern void flexerror (char[]) NORETURN; extern void flexerror (char[]) NORETURN;
/* report a fatal error message and terminate */ /* report a fatal error message and terminate */
extern void flexfatal (char[]); extern void flexfatal (char[]) NORETURN;
/* return current time */ /* return current time */
extern char *flex_gettime(); extern char *flex_gettime();
/* report an error message formatted with one integer argument */ /* report an error message formatted with one integer argument */
extern void lerrif (char[], int); extern void lerrif (char[], int) NORETURN;
/* report an error message formatted with one string argument */ /* report an error message formatted with one string argument */
extern void lerrsf (char[], char[]); extern void lerrsf (char[], char[]) NORETURN;
/* spit out a "# line" statement */ /* spit out a "# line" statement */
extern void line_directive_out (FILE*); extern void line_directive_out (FILE*);

View File

@ -43,7 +43,8 @@ extern "C" {
* \param errorMessage A printf-style error message describing the error. * \param errorMessage A printf-style error message describing the error.
* \param ... Any parameters required for the error message. * \param ... Any parameters required for the error message.
*/ */
LIBCOM_API void cantProceed( LIBCOM_API EPICS_NORETURN
void cantProceed(
EPICS_PRINTF_FMT(const char *errorMessage), ... EPICS_PRINTF_FMT(const char *errorMessage), ...
) EPICS_PRINTF_STYLE(1,2); ) EPICS_PRINTF_STYLE(1,2);

View File

@ -23,6 +23,7 @@
#ifndef epicsExith #ifndef epicsExith
#define epicsExith #define epicsExith
#include <libComAPI.h> #include <libComAPI.h>
#include "compilerDependencies.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
@ -38,7 +39,8 @@ typedef void (*epicsExitFunc)(void *arg);
* \brief Calls epicsExitCallAtExits(), then the OS exit() routine. * \brief Calls epicsExitCallAtExits(), then the OS exit() routine.
* \param status Passed to exit() * \param status Passed to exit()
*/ */
LIBCOM_API void epicsExit(int status); LIBCOM_API EPICS_NORETURN
void epicsExit(int status);
/** /**
* \brief Arrange to call epicsExit() later from a low priority thread. * \brief Arrange to call epicsExit() later from a low priority thread.
* *

View File

@ -223,7 +223,8 @@ LIBCOM_API void testTodoEnd(void);
* \param fmt A printf-style format string giving the reason for stopping. * \param fmt A printf-style format string giving the reason for stopping.
* \param ... Any parameters required for the format string. * \param ... Any parameters required for the format string.
*/ */
LIBCOM_API void testAbort(EPICS_PRINTF_FMT(const char *fmt), ...) LIBCOM_API EPICS_NORETURN
void testAbort(EPICS_PRINTF_FMT(const char *fmt), ...)
EPICS_PRINTF_STYLE(1, 2); EPICS_PRINTF_STYLE(1, 2);
/** @} */ /** @} */

View File

@ -58,4 +58,9 @@
*/ */
#define EPICS_UNUSED __attribute__((unused)) #define EPICS_UNUSED __attribute__((unused))
/*
* No return marker
*/
#define EPICS_NORETURN __attribute__((noreturn))
#endif /* ifndef compilerSpecific_h */ #endif /* ifndef compilerSpecific_h */

View File

@ -65,4 +65,9 @@
*/ */
#define EPICS_UNUSED __attribute__((unused)) #define EPICS_UNUSED __attribute__((unused))
/*
* No return marker
*/
#define EPICS_NORETURN __attribute__((noreturn))
#endif /* ifndef compilerSpecific_h */ #endif /* ifndef compilerSpecific_h */

View File

@ -52,4 +52,9 @@
# define EPICS_PRINTF_FMT(a) _Printf_format_string_ a # define EPICS_PRINTF_FMT(a) _Printf_format_string_ a
#endif #endif
/*
* No return marker
*/
#define EPICS_NORETURN __declspec(noreturn)
#endif /* ifndef compilerSpecific_h */ #endif /* ifndef compilerSpecific_h */

View File

@ -52,6 +52,10 @@
# define EPICS_UNUSED # define EPICS_UNUSED
#endif #endif
#ifndef EPICS_NORETURN
# define EPICS_NORETURN
#endif
#ifndef EPICS_FUNCTION #ifndef EPICS_FUNCTION
#if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) || (defined(__cplusplus) && __cplusplus>=201103L) #if (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)) || (defined(__cplusplus) && __cplusplus>=201103L)
# define EPICS_FUNCTION __func__ # define EPICS_FUNCTION __func__

View File

@ -437,6 +437,7 @@ private:
epicsThread ( const epicsThread & ); epicsThread ( const epicsThread & );
epicsThread & operator = ( const epicsThread & ); epicsThread & operator = ( const epicsThread & );
friend void epicsThreadCallEntryPoint ( void * ); friend void epicsThreadCallEntryPoint ( void * );
EPICS_NORETURN
void printLastChanceExceptionMessage ( void printLastChanceExceptionMessage (
const char * pExceptionTypeName, const char * pExceptionTypeName,
const char * pExceptionContext ); const char * pExceptionContext );

View File

@ -297,7 +297,7 @@ extern void tokenized_start(char *s) NORETURN;
extern void retyped_warning(char *s); extern void retyped_warning(char *s);
extern void reprec_warning(char *s); extern void reprec_warning(char *s);
extern void revalued_warning(char *s); extern void revalued_warning(char *s);
extern void terminal_start(char *s); extern void terminal_start(char *s) NORETURN;
extern void restarted_warning(void); extern void restarted_warning(void);
extern void no_grammar(void) NORETURN; extern void no_grammar(void) NORETURN;
extern void terminal_lhs(int s_lineno) NORETURN; extern void terminal_lhs(int s_lineno) NORETURN;