[clang] 1099544 - [AIX] Pass the -b option to linker on AIX
Author: Anjan Kumar Date: 2021-07-29T18:14:41Z New Revision: 109954410c34434a181f5eb48cbd14f4122101c7 URL: https://github.com/llvm/llvm-project/commit/109954410c34434a181f5eb48cbd14f4122101c7 DIFF: https://github.com/llvm/llvm-project/commit/109954410c34434a181f5eb48cbd14f4122101c7.diff LOG: [AIX] Pass the -b option to linker on AIX Parse the -b option in the driver and pass it to the linker if the target OS is AIX. This will establish compatibility with the other AIX compilers. Reviewed By: Zarko Todorovski Differential Revision: https://reviews.llvm.org/D106688 Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/Xlinker-args.c Removed: diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 4efb4786f9083..6284fde4d52df 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -815,7 +815,9 @@ def autocomplete : Joined<["--"], "autocomplete=">; def bind__at__load : Flag<["-"], "bind_at_load">; def bundle__loader : Separate<["-"], "bundle_loader">; def bundle : Flag<["-"], "bundle">; -def b : JoinedOrSeparate<["-"], "b">, Flags<[Unsupported]>; +def b : JoinedOrSeparate<["-"], "b">, Flags<[LinkerInput, RenderAsInput]>, + HelpText<"Pass -b to the linker on AIX (only).">, MetaVarName<"">, + Group; def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group, Flags<[CC1Option]>, HelpText<"OpenCL only. This option disables all optimizations. By default optimizations are enabled.">; def cl_strict_aliasing : Flag<["-"], "cl-strict-aliasing">, Group, Flags<[CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index d9a6599a24160..5905b241aa510 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -257,6 +257,16 @@ void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs, // Otherwise, this is a linker input argument. const Arg &A = II.getInputArg(); +if (A.getOption().matches(options::OPT_b)) { + const llvm::Triple &T = TC.getTriple(); + if (!T.isOSAIX()) { +TC.getDriver().Diag(diag::err_drv_unsupported_opt_for_target) +<< A.getAsString(Args); + } + // Pass -b prefix for AIX linker. + A.claim(); + A.render(Args, CmdArgs); +} // Handle reserved library options. if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) TC.AddCXXStdlibLibArgs(Args, CmdArgs); diff --git a/clang/test/Driver/Xlinker-args.c b/clang/test/Driver/Xlinker-args.c index cb045a1d40ac1..5eff8a0748ff9 100644 --- a/clang/test/Driver/Xlinker-args.c +++ b/clang/test/Driver/Xlinker-args.c @@ -11,10 +11,20 @@ // RUN: -e _start -T a.lds -Xlinker one -Xlinker --no-demangle \ // RUN: -Wl,two,--no-demangle,three -Xlinker four -z five -r %s 2> %t // RUN: FileCheck -check-prefix=LINUX < %t %s -// + +// RUN: %clang -target powerpc-unknown-aix -### \ +// RUN: -b one %s 2> %t +// RUN: FileCheck -check-prefix=AIX < %t %s + +// RUN: %clang -target powerpc-unknown-linux -### \ +// RUN: -b one %s 2> %t +// RUN: FileCheck -check-prefix=NOT-AIX < %t %s + // DARWIN-NOT: --no-demangle // DARWIN: "one" "two" "three" "four" "-z" "five" "-r" // LINUX: "--no-demangle" "-e" "_start" "one" "two" "three" "four" "-z" "five" "-r" {{.*}} "-T" "a.lds" +// AIX: "-b" "one" +// NOT-AIX: error: unsupported option '-b one' // Check that we forward '-Xlinker' and '-Wl,' on Windows. // RUN: %clang -target i686-pc-win32 -fuse-ld=link -### \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 7645cdc - Revert "[AIX] Pass the -b option to linker on AIX"
Author: Anjan Kumar Date: 2021-07-29T19:40:25Z New Revision: 7645cdcb482694d30771c3409e43ebf2a448211f URL: https://github.com/llvm/llvm-project/commit/7645cdcb482694d30771c3409e43ebf2a448211f DIFF: https://github.com/llvm/llvm-project/commit/7645cdcb482694d30771c3409e43ebf2a448211f.diff LOG: Revert "[AIX] Pass the -b option to linker on AIX" This reverts commit 109954410c34434a181f5eb48cbd14f4122101c7. Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/Xlinker-args.c Removed: diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 7ae775c2e00b..7e2397c4192f 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -815,9 +815,7 @@ def autocomplete : Joined<["--"], "autocomplete=">; def bind__at__load : Flag<["-"], "bind_at_load">; def bundle__loader : Separate<["-"], "bundle_loader">; def bundle : Flag<["-"], "bundle">; -def b : JoinedOrSeparate<["-"], "b">, Flags<[LinkerInput, RenderAsInput]>, - HelpText<"Pass -b to the linker on AIX (only).">, MetaVarName<"">, - Group; +def b : JoinedOrSeparate<["-"], "b">, Flags<[Unsupported]>; def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group, Flags<[CC1Option]>, HelpText<"OpenCL only. This option disables all optimizations. By default optimizations are enabled.">; def cl_strict_aliasing : Flag<["-"], "cl-strict-aliasing">, Group, Flags<[CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 5905b241aa51..d9a6599a2416 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -257,16 +257,6 @@ void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs, // Otherwise, this is a linker input argument. const Arg &A = II.getInputArg(); -if (A.getOption().matches(options::OPT_b)) { - const llvm::Triple &T = TC.getTriple(); - if (!T.isOSAIX()) { -TC.getDriver().Diag(diag::err_drv_unsupported_opt_for_target) -<< A.getAsString(Args); - } - // Pass -b prefix for AIX linker. - A.claim(); - A.render(Args, CmdArgs); -} // Handle reserved library options. if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) TC.AddCXXStdlibLibArgs(Args, CmdArgs); diff --git a/clang/test/Driver/Xlinker-args.c b/clang/test/Driver/Xlinker-args.c index 5eff8a0748ff..cb045a1d40ac 100644 --- a/clang/test/Driver/Xlinker-args.c +++ b/clang/test/Driver/Xlinker-args.c @@ -11,20 +11,10 @@ // RUN: -e _start -T a.lds -Xlinker one -Xlinker --no-demangle \ // RUN: -Wl,two,--no-demangle,three -Xlinker four -z five -r %s 2> %t // RUN: FileCheck -check-prefix=LINUX < %t %s - -// RUN: %clang -target powerpc-unknown-aix -### \ -// RUN: -b one %s 2> %t -// RUN: FileCheck -check-prefix=AIX < %t %s - -// RUN: %clang -target powerpc-unknown-linux -### \ -// RUN: -b one %s 2> %t -// RUN: FileCheck -check-prefix=NOT-AIX < %t %s - +// // DARWIN-NOT: --no-demangle // DARWIN: "one" "two" "three" "four" "-z" "five" "-r" // LINUX: "--no-demangle" "-e" "_start" "one" "two" "three" "four" "-z" "five" "-r" {{.*}} "-T" "a.lds" -// AIX: "-b" "one" -// NOT-AIX: error: unsupported option '-b one' // Check that we forward '-Xlinker' and '-Wl,' on Windows. // RUN: %clang -target i686-pc-win32 -fuse-ld=link -### \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] aa35c49 - [AIX] Pass the -b option to linker on AIX (with fix to build break)
Author: Anjan Kumar Date: 2021-07-30T15:50:52Z New Revision: aa35c496cf53627147f45adb84fc70ba4f81a38f URL: https://github.com/llvm/llvm-project/commit/aa35c496cf53627147f45adb84fc70ba4f81a38f DIFF: https://github.com/llvm/llvm-project/commit/aa35c496cf53627147f45adb84fc70ba4f81a38f.diff LOG: [AIX] Pass the -b option to linker on AIX (with fix to build break) This patch will re-enable the patch posted under https://reviews.llvm.org/D106688 originally which was reverted due to buildbreak that was caused by mismatched diagnostic message arguments. Reviewed By: Zarko Todorovski Differential Revision: https://reviews.llvm.org/D107105 Added: Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/Xlinker-args.c Removed: diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 819beaffbf9f..64d612d7dbd1 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -815,7 +815,9 @@ def autocomplete : Joined<["--"], "autocomplete=">; def bind__at__load : Flag<["-"], "bind_at_load">; def bundle__loader : Separate<["-"], "bundle_loader">; def bundle : Flag<["-"], "bundle">; -def b : JoinedOrSeparate<["-"], "b">, Flags<[Unsupported]>; +def b : JoinedOrSeparate<["-"], "b">, Flags<[LinkerInput, RenderAsInput]>, + HelpText<"Pass -b to the linker on AIX (only).">, MetaVarName<"">, + Group; def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group, Flags<[CC1Option]>, HelpText<"OpenCL only. This option disables all optimizations. By default optimizations are enabled.">; def cl_strict_aliasing : Flag<["-"], "cl-strict-aliasing">, Group, Flags<[CC1Option]>, diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index d9a6599a2416..00bc92a1933b 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -257,6 +257,16 @@ void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs, // Otherwise, this is a linker input argument. const Arg &A = II.getInputArg(); +if (A.getOption().matches(options::OPT_b)) { + const llvm::Triple &T = TC.getTriple(); + if (!T.isOSAIX()) { +TC.getDriver().Diag(diag::err_drv_unsupported_opt_for_target) + << A.getSpelling() << T.str(); + } + // Pass -b prefix for AIX linker. + A.claim(); + A.render(Args, CmdArgs); +} // Handle reserved library options. if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) TC.AddCXXStdlibLibArgs(Args, CmdArgs); diff --git a/clang/test/Driver/Xlinker-args.c b/clang/test/Driver/Xlinker-args.c index cb045a1d40ac..0ae5cb386672 100644 --- a/clang/test/Driver/Xlinker-args.c +++ b/clang/test/Driver/Xlinker-args.c @@ -11,10 +11,20 @@ // RUN: -e _start -T a.lds -Xlinker one -Xlinker --no-demangle \ // RUN: -Wl,two,--no-demangle,three -Xlinker four -z five -r %s 2> %t // RUN: FileCheck -check-prefix=LINUX < %t %s -// + +// RUN: %clang -target powerpc-unknown-aix -### \ +// RUN: -b one %s 2> %t +// RUN: FileCheck -check-prefix=AIX < %t %s + +// RUN: %clang -target powerpc-unknown-linux -### \ +// RUN: -b one %s 2> %t +// RUN: FileCheck -check-prefix=NOT-AIX < %t %s + // DARWIN-NOT: --no-demangle // DARWIN: "one" "two" "three" "four" "-z" "five" "-r" // LINUX: "--no-demangle" "-e" "_start" "one" "two" "three" "four" "-z" "five" "-r" {{.*}} "-T" "a.lds" +// AIX: "-b" "one" +// NOT-AIX: error: unsupported option '-b' for target 'powerpc-unknown-linux' // Check that we forward '-Xlinker' and '-Wl,' on Windows. // RUN: %clang -target i686-pc-win32 -fuse-ld=link -### \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits