[LLVMdev] Mod for using GAS with MS VC++
Aaron Gray
angray at beeb.net
Mon Jul 11 16:49:52 PDT 2005
>> Here is a mod to X86 that allows GAS to be used with MS Visual C++.
>>
>> I introduces a 'forWindows' variable like 'forCygwin' in th
>> X86SharedAsmPrinter class.
>>
>
> A couple of comments:
>
> 1. Please send patches instead of full files. The best way to do this is
> to use CVS like this: 'cvs diff -u' in the directory that you care
> about. You can also specify specific files to diff as well.
Okay, I will do this in future, our posts crossed so I have not done that
for the MASM backend.
I will do this in future. If you want me to redo the MASM Printer as diff's
I can do so tommorow as it is late now.
> 2. Please update to the latest CVS bits.
Okay I may have been behind but am still not used to using CVS and how to
reintegrate changes that go cross purpose with stuff I already have written
but do not want to release yet. So I may have gotten out of sync here.
I resync'ed and make the changes for the MASM Printer again earlier, but did
not do diff's.
> 3. You need to invent a target triple for your new configuration. You'll
> notice that the forCygwin/forDarwin variables are set based on the
> target triple of the module... as you coded it, forWindows is only
> ever set if the t-t is empty.
Right, presumably Wndows does not set the TT. Should Windows or MSVC++ have
one ?
If so how do I go about it. Maybe Jeff should be involved ?
> 4. The name forWindows isn't very specific, as there are multiple dev
> systems available on windows (including cygwin, mingw, masm, nasm,
> etc). Please use something more specific.
Maybe it should be MSVC specific then ?
> 5. I notice that the stuff you are controlling enables/disables the exact
> same stuff as needed for cygwin. Will this change in the future?
Same as Cygwin, so MSVC++ build, gas generated code, can be run on gas.
>> This may prompt thurther normalization, on the otherhand it may not :)
>
> Yes, I think it will. :) In particular, instead of a bunch of checks
> based on the target, what we really want is something like this:
>
> ... in the AsmPrinter ctor...
> if (isDarwin) {
> TargetUsesFooFeature = true;
> TargetUsesBarFeature = true;
> TargetUsesBazFeature = false;
> } else if (isCygwin) {
> ...
> }
> etc.
>
> Then instead of code that looks like this:
>
> if (!forCygwin && !forDarwin && !forWindows && I->hasInternalLinkage())
> O << "\t.local " << name << "\n";
>
> We would have:
>
> if (TargetUsesSymbolsMarkedLocal && I->hasInternalLinkage())
> O << "\t.local " << name << "\n";
>
> ... or something.
Yes that would be much better and more normalized.
Aaron
More information about the llvm-dev
mailing list