1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-29 06:55:07 +00:00

Tests+Userland: Prefer using __builtin_trap() instead of UD2

This way we don't have to hard-code per-architecture instructions.
This commit is contained in:
Gunnar Beutner 2022-10-12 22:07:37 +02:00 committed by Linus Groh
parent 7a8206197e
commit dadf656dc9
3 changed files with 5 additions and 4 deletions

View file

@ -113,7 +113,7 @@ int main(int argc, char** argv)
if (do_illegal_instruction || do_all_crash_types) { if (do_illegal_instruction || do_all_crash_types) {
any_failures |= !Crash("Illegal instruction", []() { any_failures |= !Crash("Illegal instruction", []() {
asm volatile("ud2"); __builtin_trap();
return Crash::Failure::DidNotCrash; return Crash::Failure::DidNotCrash;
}).run(run_type); }).run(run_type);
} }

View file

@ -15,7 +15,7 @@ int main(int, char**)
pthread_create( pthread_create(
&tid, nullptr, [](void*) -> void* { &tid, nullptr, [](void*) -> void* {
sleep(1); sleep(1);
asm volatile("ud2"); __builtin_trap();
return nullptr; return nullptr;
}, },
nullptr); nullptr);

View file

@ -214,8 +214,9 @@ int atexit(void (*handler)())
void _abort() void _abort()
{ {
asm volatile("ud2"); // According to the GCC manual __builtin_trap() can call abort() so using it here might not seem safe at first. However,
__builtin_unreachable(); // on all the platforms we support GCC emits an undefined instruction instead of a call.
__builtin_trap();
} }
void abort() void abort()