[cfe-commits] [patch] profiling support for OpenBSD

Eli Friedman eli.friedman at gmail.com
Mon Dec 12 11:06:46 PST 2011


On Sat, Dec 10, 2011 at 3:14 PM, Jonathan Gray <jsg at openbsd.org> wrote:
> The following lets profiling work on OpenBSD.  While here
> fix the symbol prefix to be empty rather than an underscore.
>
> Index: lib/Basic/Targets.cpp
> ===================================================================
> --- lib/Basic/Targets.cpp       (revision 146203)
> +++ lib/Basic/Targets.cpp       (working copy)
> @@ -371,7 +371,26 @@
>   }
>  public:
>   OpenBSDTargetInfo(const std::string &triple)
> -    : OSTargetInfo<Target>(triple) {}
> +    : OSTargetInfo<Target>(triple) {
> +      this->UserLabelPrefix = "";
> +
> +      llvm::Triple Triple(triple);
> +      switch (Triple.getArch()) {
> +        default:
> +        case llvm::Triple::x86:
> +        case llvm::Triple::x86_64:
> +        case llvm::Triple::arm:
> +       case llvm::Triple::sparc:
> +          this->MCountName = "__mcount";
> +          break;
> +        case llvm::Triple::mips64:
> +        case llvm::Triple::mips64el:
> +        case llvm::Triple::ppc:
> +       case llvm::Triple::sparcv9:
> +          this->MCountName = "_mcount";
> +          break;
> +      }
> +  }
>  };
>
>  // PSP Target
> Index: lib/Driver/Tools.cpp
> ===================================================================
> --- lib/Driver/Tools.cpp        (revision 146203)
> +++ lib/Driver/Tools.cpp        (working copy)
> @@ -3890,9 +3890,13 @@
>   if (!Args.hasArg(options::OPT_nostdlib) &&
>       !Args.hasArg(options::OPT_nostartfiles)) {
>     if (!Args.hasArg(options::OPT_shared)) {
> +      if (Args.hasArg(options::OPT_pg))
> +        CmdArgs.push_back(Args.MakeArgString(
> +                                getToolChain().GetFilePath("gcrt0.o")));
> +      else
> +        CmdArgs.push_back(Args.MakeArgString(
> +                                getToolChain().GetFilePath("crt0.o")));
>       CmdArgs.push_back(Args.MakeArgString(
> -                              getToolChain().GetFilePath("crt0.o")));
> -      CmdArgs.push_back(Args.MakeArgString(
>                               getToolChain().GetFilePath("crtbegin.o")));
>     } else {
>       CmdArgs.push_back(Args.MakeArgString(
> @@ -3916,7 +3920,10 @@
>       !Args.hasArg(options::OPT_nodefaultlibs)) {
>     if (D.CCCIsCXX) {
>       getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
> -      CmdArgs.push_back("-lm");
> +      if (Args.hasArg(options::OPT_pg))
> +        CmdArgs.push_back("-lm_p");
> +      else
> +        CmdArgs.push_back("-lm");
>     }
>
>     // FIXME: For some reason GCC passes -lgcc before adding
> @@ -3926,7 +3933,10 @@
>     if (Args.hasArg(options::OPT_pthread))
>       CmdArgs.push_back("-lpthread");
>     if (!Args.hasArg(options::OPT_shared))
> -      CmdArgs.push_back("-lc");
> +      if (Args.hasArg(options::OPT_pg))
> +         CmdArgs.push_back("-lc_p");
> +      else
> +         CmdArgs.push_back("-lc");
>     CmdArgs.push_back("-lgcc");
>   }
>

Patch looks fine.

If you want me to commit, please attach the patch rather than putting it inline.

-Eli




More information about the cfe-commits mailing list