// REQUIRES: x86-registered-target
// RUN: %clang -cc1 -triple x86_64 %s -emit-obj -o %t.o -mnoexecstack
// RUN: llvm-readelf -S %t.o | FileCheck %s

// RUN: %clang -cc1 -triple x86_64 %s -S -o %t.s
// RUN: FileCheck --check-prefix=ASM %s < %t.s
// RUN: %clang -cc1as -triple x86_64 %t.s -filetype obj -mnoexecstack -o %t.o
// RUN: llvm-readelf -S %t.o | FileCheck %s
/// Without -mnoexecstack on a .s that lacks .note.GNU-stack, the section should be absent.
// RUN: echo "nop" | %clang -cc1as -triple x86_64 - -filetype obj -o %t.o
// RUN: llvm-readelf -S %t.o | FileCheck --check-prefix=NOSTACK %s

// CHECK: .text             PROGBITS        0000000000000000 {{[0-9a-f]+}} 000001 00  AX  0   0 16
// CHECK: .note.GNU-stack   PROGBITS        0000000000000000 {{[0-9a-f]+}} 000000 00      0   0  1

// NOSTACK-NOT: .note.GNU-stack

// ASM:     .text
// ASM:     .section        ".note.GNU-stack","",@progbits
// ASM-NOT: ".note.GNU-stack"

void f() {}
