diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 880221176027e9..062fbd2e4c0a44 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -8124,7 +8124,7 @@ def show_inst : Flag<["-"], "show-inst">, def dwarf_debug_producer : Separate<["-"], "dwarf-debug-producer">, HelpText<"The string to embed in the Dwarf debug AT_producer record.">; -def defsym : Separate<["-"], "defsym">, +def defsym : Separate<["--"], "defsym">, HelpText<"Define a value for a symbol">; } // let Visibility = [CC1AsOption] diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index acd32bddea6b65..331cf6e713d890 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -2666,7 +2666,7 @@ static void CollectArgsForIntegratedAssembler(Compilation &C, D.Diag(diag::err_drv_defsym_invalid_symval) << SVal; break; } - CmdArgs.push_back(Value.data()); + CmdArgs.push_back("--defsym"); TakeNextArg = true; } else if (Value == "-fdebug-compilation-dir") { CmdArgs.push_back("-fdebug-compilation-dir"); diff --git a/clang/test/Driver/defsym.s b/clang/test/Driver/defsym.s index d152b326ae8b18..af66656cce15e1 100644 --- a/clang/test/Driver/defsym.s +++ b/clang/test/Driver/defsym.s @@ -6,9 +6,10 @@ // RUN: %clang -### -c -no-integrated-as -target x86_64-unknown-unknown %s \ // RUN: -Wa,-defsym,abc=5 -Wa,--defsym,xyz=0xa \ -// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM1 +// RUN: 2>&1 | FileCheck %s --check-prefix=CHECK-DEFSYM1-GAS -// CHECK-DEFSYM1: "-defsym" "abc=5" "--defsym" "xyz=0xa" +// CHECK-DEFSYM1: "--defsym" "abc=5" "--defsym" "xyz=0xa" +// CHECK-DEFSYM1-GAS: "-defsym" "abc=5" "--defsym" "xyz=0xa" // RUN: not %clang -c -integrated-as -o /dev/null %s \ // RUN: -Wa,-defsym,abc= \ diff --git a/clang/test/Misc/cc1as-defsym.s b/clang/test/Misc/cc1as-defsym.s new file mode 100644 index 00000000000000..0dc7f24dac2c0b --- /dev/null +++ b/clang/test/Misc/cc1as-defsym.s @@ -0,0 +1,12 @@ +// REQUIRES: x86-registered-target +// RUN: %clang -cc1as -triple x86_64 -filetype obj --defsym A=1 %s -o %t.o +// RUN: llvm-nm %t.o | FileCheck %s + +// CHECK: 0000000000000001 A foo + +.globl foo +.ifdef A +foo = 1 +.else +foo = 0 +.endif