^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #!/bin/sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # Test for gcc 'asm goto' support
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) # Copyright (C) 2010, Jason Baron <jbaron@redhat.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) cat << "END" | $@ -x c - -fno-PIE -c -o /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) int main(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #if defined(__arm__) || defined(__aarch64__)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * Not related to asm goto, but used by jump label
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * and broken on some ARM GCC versions (see GCC Bug 48637).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) static struct { int dummy; int state; } tp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) asm (".long %c0" :: "i" (&tp.state));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) entry:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) asm goto ("" :::: entry);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) END