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 <arg> to the linker on AIX (only).">, MetaVarName<"<arg>">, + Group<Link_Group>; def cl_opt_disable : Flag<["-"], "cl-opt-disable">, Group<opencl_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<opencl_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