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