[PATCH] MC: Don't emit min version directives when -fno-integrated-as is on

Filipe Cabecinhas filcab at gmail.com
Thu Jan 22 09:51:26 PST 2015


Hi Nico,

That parenthesis might or might not work. I was going to submit a similar
patch, but then I remembered that clang will call as with as-style
parameters, not with clang parameters. At most, maybe -cc1as could work,
but I don't think it's compatible either.

An as-compatible driver would be one solution for not patching afl, like
Rafael said.
I haven't had the time to tinker with those things, though. I have a bunch
of llvm-dis fixes to do, derived from afl.

(sorry for the off-topic. Ending it)

Regards,

  Filipe

On Thu, Jan 22, 2015 at 9:38 AM, Nico Weber <thakis at chromium.org> wrote:

> On Thu, Jan 22, 2015 at 9:00 AM, Filipe Cabecinhas <filcab at gmail.com>
> wrote:
>
>> Hi all,
>>
>> For using cctools: use as -q, which uses the clang assembler.
>>
>> For afl-fuzz it's simple. You have two options:
>> Use Xcode's clang, which is the same used for as -q, which afl uses
>> (AFL_CLANG=`xcrun -p clang` (AFL_CXX too)).
>>
>
> Xcode's clang doesn't support -fsanitize=adress from what I can tell.
>
>
>> Or
>> Change afl-as.c, look for -q (lower case. Should be conditioned on
>> DARWIN), change to -c. Export AFL_AS=clang (path to your top of tree clang
>> that is emitting the asm that as doesn't understand).
>>
>
> This works.
>
> Aha, looking through cctools/as/driver.c, -q just causes `clang -x
> assembler ... -integrated-as -c` to be called, and I suppose my Xcode 6.1
> clang doesn't understand the .macosx_version_min (that was added last
> April!) yet. I agree that this patch is unnecessary, then.
>
> Thanks!
>
> (Maybe afl-as could call `AFL_CC ? AFL_CC : AFL_CXX ? AFL_CXX : clang`
> with -x assembler -integrated-as -c instead of as -q ifdef __APPLE__ to
> increase afl's it's-just-worksiness, but that's off-topic for this issue
> :-) ).
>
>
>>
>> Regards,
>>
>>   Filipe
>>
>>
>> On Thursday, January 22, 2015, Nico Weber <thakis at chromium.org> wrote:
>>
>>> On Thu, Jan 22, 2015 at 6:05 AM, Rafael Espíndola <
>>> rafael.espindola at gmail.com> wrote:
>>>
>>>> On 22 January 2015 at 00:36, Nico Weber <thakis at chromium.org> wrote:
>>>> > I'm trying to use afl-fuzz with asan on OS X. afl-fuzz tells you to
>>>> set CXX to afl-clang++ and rebuild your program. afl-clang++ then calls
>>>> clang++ with -no-integrated-as and -B to a path with its own as wrapper
>>>> that inserts some instrumentation assembly before calling real as. This
>>>> doesn't work on OS X because clang++ writes this .macosx_version_min
>>>> directive that as doesn't support. If I apply this patch, everything does
>>>> work. So this seems like a useful thing to me – are there any downsides to
>>>> this patch?
>>>>
>>>> Yes, it puts us in a direction we really don't want to go.
>>>>
>>>> On OS X /usr/bin/as is really old and not supported. If afl is using
>>>> it instead clang that is a bug in afl.
>>>>
>>>
>>> afl is using -no-integrated-as to munge the asm output. It doesn't care
>>> which as gets run.
>>>
>>>
>>>> The correct way of making this easier would probably be to write a
>>>> program that is command line compatible with /usr/bin/as but uses MC.
>>>>
>>>
>>> That sounds great, but until that exists this patch seems to increase
>>> clang's it's-just-works-iness  by at least 8.3% for a very minor code
>>> change. Once llvm-gas (or however it should be called) exists, it's no
>>> longer necessary.
>>>
>>
>>
>> --
>>   F
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150122/0c5ed38b/attachment.html>


More information about the llvm-commits mailing list