Index: include/clang/Driver/Options.td =================================================================== --- include/clang/Driver/Options.td +++ include/clang/Driver/Options.td @@ -830,6 +830,8 @@ def mno_thumb : Flag<["-"], "mno-thumb">, Group; def marm : Flag<["-"], "marm">, Alias; +def mehabi : Flag<["-"], "mehabi">, Group, + HelpText<"Emit ARM EHABI compatible tables">; def mno_warn_nonportable_cfstrings : Flag<["-"], "mno-warn-nonportable-cfstrings">, Group; def mno_omit_leaf_frame_pointer : Flag<["-"], "mno-omit-leaf-frame-pointer">, Group; Index: lib/Driver/Tools.cpp =================================================================== --- lib/Driver/Tools.cpp +++ lib/Driver/Tools.cpp @@ -822,6 +822,14 @@ if (Args.hasArg(options::OPT_mno_implicit_float)) CmdArgs.push_back("-no-implicit-float"); + + if (Args.hasArg(options::OPT_mehabi)) { + CmdArgs.push_back("-backend-option"); + CmdArgs.push_back("-arm-enable-ehabi"); + + CmdArgs.push_back("-backend-option"); + CmdArgs.push_back("-arm-enable-ehabi-descriptors"); + } } // Translate MIPS CPU name alias option to CPU name. Index: test/Driver/arm-ehabi.c =================================================================== --- test/Driver/arm-ehabi.c +++ test/Driver/arm-ehabi.c @@ -0,0 +1,6 @@ +// RUN: %clang -target armv7-linux-gnueabi %s -mehabi -### -o %t.o 2>&1 \ +// RUN: | FileCheck %s +// RUN: %clang -target armv5te-linux-gnueabi %s -mehabi -### -o %t.o 2>&1 \ +// RUN: | FileCheck %s +// CHECK: "-backend-option" "-arm-enable-ehabi" +// CHECK: "-backend-option" "-arm-enable-ehabi-descriptors"