Index: lld/trunk/lib/Driver/GnuLdDriver.cpp =================================================================== --- lld/trunk/lib/Driver/GnuLdDriver.cpp +++ lld/trunk/lib/Driver/GnuLdDriver.cpp @@ -545,22 +545,21 @@ ctx->setOutputFileType(arg->getValue()); // Process ELF/ARM specific options - bool hasArmTarget1Rel = parsedArgs->hasArg(OPT_arm_target1_rel); - bool hasArmTarget1Abs = parsedArgs->hasArg(OPT_arm_target1_abs); + bool hasArmTarget1Rel = parsedArgs->hasArg(OPT_target1_rel); + bool hasArmTarget1Abs = parsedArgs->hasArg(OPT_target1_abs); if (triple.getArch() == llvm::Triple::arm) { if (hasArmTarget1Rel && hasArmTarget1Abs) { - diag << "error: options --arm-target1-rel and --arm-target1-abs" + diag << "error: options --target1-rel and --target1-abs" " can't be used together.\n"; return false; } else if (hasArmTarget1Rel || hasArmTarget1Abs) { ctx->setArmTarget1Rel(hasArmTarget1Rel && !hasArmTarget1Abs); } - } else if (hasArmTarget1Rel) { - diag << "warning: ignoring unsupported ARM/ELF specific argument: " - << "--arm-target1-rel\n"; - } else if (hasArmTarget1Abs) { - diag << "warning: ignoring unsupported ARM/ELF specific argument: " - << "--arm-target1-abs\n"; + } else { + for (const auto *arg : parsedArgs->filtered(OPT_grp_arm_targetopts)) { + diag << "warning: ignoring unsupported ARM/ELF specific argument: " + << arg->getSpelling() << "\n"; + } } // Process MIPS specific options. Index: lld/trunk/lib/Driver/GnuLdOptions.td =================================================================== --- lld/trunk/lib/Driver/GnuLdOptions.td +++ lld/trunk/lib/Driver/GnuLdOptions.td @@ -333,10 +333,16 @@ //===----------------------------------------------------------------------===// def grp_targetopts : OptionGroup<"opts">, HelpText<"ARCH SPECIFIC OPTIONS">; -def arm_target1_rel : Flag<["--"], "arm-target1-rel">, - Group, HelpText<"Interpret R_ARM_TARGET1 as R_ARM_REL32">; -def arm_target1_abs : Flag<["--"], "arm-target1-abs">, - Group, HelpText<"Interpret R_ARM_TARGET1 as R_ARM_ABS32">; + +//===----------------------------------------------------------------------===// +/// ARM Target Specific Options +//===----------------------------------------------------------------------===// +def grp_arm_targetopts : OptionGroup<"ARM SPECIFIC OPTIONS">, + Group; +def target1_rel : Flag<["--"], "target1-rel">, + Group, HelpText<"Interpret R_ARM_TARGET1 as R_ARM_REL32">; +def target1_abs : Flag<["--"], "target1-abs">, + Group, HelpText<"Interpret R_ARM_TARGET1 as R_ARM_ABS32">; //===----------------------------------------------------------------------===// /// MIPS Target Specific Options Index: lld/trunk/test/elf/ARM/rel-arm-target1.test =================================================================== --- lld/trunk/test/elf/ARM/rel-arm-target1.test +++ lld/trunk/test/elf/ARM/rel-arm-target1.test @@ -3,7 +3,7 @@ # 1. R_ARM_TARGET1 is equal to R_ARM_ABS32 # RUN: yaml2obj -format=elf -docnum 1 %s > %t-abs32.o # RUN: lld -flavor gnu -target arm -m armelf_linux_eabi -Bstatic \ -# RUN: --noinhibit-exec --arm-target1-abs %t-abs32.o -o %t-abs32 +# RUN: --noinhibit-exec --target1-abs %t-abs32.o -o %t-abs32 # RUN: llvm-objdump -s -t %t-abs32 | FileCheck -check-prefix=CHECK-ABS32 %s # # CHECK-ABS32: Contents of section .data: @@ -16,7 +16,7 @@ # Check handling of R_ARM_REL32 relocation. # RUN: yaml2obj -format=elf %s -docnum 2 > %t-rel32.o # RUN: lld -flavor gnu -target arm -m armelf_linux_eabi -Bstatic \ -# RUN: --noinhibit-exec --arm-target1-rel %t-rel32.o -o %t-rel32 +# RUN: --noinhibit-exec --target1-rel %t-rel32.o -o %t-rel32 # RUN: llvm-objdump -s -t %t-rel32 | FileCheck -check-prefix=CHECK-REL32 %s # # CHECK-REL32: Contents of section .text: Index: lld/trunk/test/elf/options/target-specific-args.test =================================================================== --- lld/trunk/test/elf/options/target-specific-args.test +++ lld/trunk/test/elf/options/target-specific-args.test @@ -1,5 +1,5 @@ # Test of target specific options -# RUN: lld -flavor gnu -target x86_64 --arm-target1-rel \ +# RUN: lld -flavor gnu -target x86_64 --target1-rel \ # RUN: %p/../Inputs/foo.o.x86-64 --noinhibit-exec -o %t 2>&1 | FileCheck %s -# CHECK: warning: ignoring unsupported ARM/ELF specific argument: --arm-target1-rel +# CHECK: warning: ignoring unsupported ARM/ELF specific argument: --target1-rel