Improve helpers.h

Use C11 standard _Noreturn instead of attributes (except, of course, MSVC)
Remove unused helpers
Avoid trapping in release builds, in favor of just unreachability
Improve shim when __builtin_* are not available
This commit is contained in:
ISSOtm
2020-10-26 15:03:37 +01:00
parent 6c57ad2226
commit 0c55703438
10 changed files with 40 additions and 31 deletions

View File

@@ -439,7 +439,7 @@ void assign_AssignSections(void)
return;
}
trap_;
unreachable_();
}
void assign_Cleanup(void)

View File

@@ -99,7 +99,7 @@ void error(struct FileStackNode const *where, uint32_t lineNo, char const *fmt,
nbErrors++;
}
noreturn_ void fatal(struct FileStackNode const *where, uint32_t lineNo, char const *fmt, ...)
_Noreturn void fatal(struct FileStackNode const *where, uint32_t lineNo, char const *fmt, ...)
{
va_list ap;

View File

@@ -318,7 +318,7 @@ static void processCommand(enum LinkerScriptCommand command, uint16_t arg,
{
switch (command) {
case COMMAND_INVALID:
trap_;
unreachable_();
case COMMAND_ORG:
break;
@@ -391,12 +391,12 @@ struct SectionPlacement *script_NextSection(void)
switch (parserState) {
case PARSER_FIRSTTIME:
trap_;
unreachable_();
case PARSER_LINESTART:
switch (token->type) {
case TOKEN_INVALID:
trap_;
unreachable_();
case TOKEN_EOF:
if (!popFile())

View File

@@ -108,7 +108,7 @@ static void mergeSections(struct Section *target, struct Section *other, enum Se
break;
case SECTION_NORMAL:
trap_;
unreachable_();
}
other->nextu = target->nextu;