Adding VERSION_MIN load command to MachO file on Darwin

Rafael EspĂ­ndola rafael.espindola at gmail.com
Thu Jul 23 19:29:44 PDT 2015


Testcase?

In particular, is it the intention that an assembly file with no directives
will get this load command?
On Jul 23, 2015 9:51 PM, "Steven Wu" <stevenwu at apple.com> wrote:

> Hi Jim
>
> Here is a patch that forces all the MachO objects on Darwin to have
> version_min load command. When MCObjectStreamer is created, it will
> inferred the default version_min from target triple. When there is a
> version_min directive in the assembly input, it will overwrite the default.
> By doing so, it will not affect the assembly source that already have
> version_min directive, but force a version_min load command on the others.
>
> The only relevant part of the change is following and the rest is just
> updating the test for correct load command number and offset in the file:
>
> diff --git a/lib/MC/MCMachOStreamer.cpp b/lib/MC/MCMachOStreamer.cpp
> index 53cd131..116ef09 100644
> --- a/lib/MC/MCMachOStreamer.cpp
> +++ b/lib/MC/MCMachOStreamer.cpp
> @@ -493,6 +493,16 @@ MCStreamer *llvm::createMachOStreamer(MCContext
> &Context, MCAsmBackend &MAB,
>                                        bool LabelSections) {
>    MCMachOStreamer *S = new MCMachOStreamer(Context, MAB, OS, CE,
>                                             DWARFMustBeAtTheEnd,
> LabelSections);
> +  const Triple &TT = Context.getObjectFileInfo()->getTargetTriple();
> +  if (TT.isOSDarwin()) {
> +    unsigned Major, Minor, Update;
> +    TT.getOSVersion(Major, Minor, Update);
> +    // If there is a version specified, Major will be non-zero.
> +    if (Major)
> +      S->EmitVersionMin((TT.isMacOSX() ?
> +                        MCVM_OSXVersionMin : MCVM_IOSVersionMin),
> +                        Major, Minor, Update);
> +  }
>    if (RelaxAll)
>      S->getAssembler().setRelaxAll(true);
>    return S;
>
> Thanks
>
> Steven
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150723/1cdb8b50/attachment.html>


More information about the llvm-commits mailing list