[llvm-dev] FW: How to use -forder-file-instrumentation to generate order file for iOS Apps?

Manman Ren via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 24 13:13:01 PDT 2021


We mainly use this for iOS, simulator should work and it should work for
ObjectiveC and Swift.
I don't think we need *-fprofile-instr-generate.*

We are experimenting with a new instrumentation:
https://lists.llvm.org/pipermail/llvm-dev/2021-June/151086.html in case you
are interested.
+ Ellis

Manman

On Fri, Sep 24, 2021 at 3:12 AM Jack Chen <jacklcc at google.com> wrote:

> Thank you Manman!
>
> I did try the feature with a C file and it worked well. I
> called __llvm_profile_set_filename() and __llvm_orderfile_dump() in the C
> file, built it with the flags, and ran the binary on Linux. After running,
> a profraw.order file was generated with correct contents.
>
> However, I wasn't able to make it work for my iOS app - the profraw.order
> file is indeed generated, but it doesn't contain valid contents.
>
> The major differences between them are: (1) the iOS app is written in
> objective c and swift, as opposed to C and (2)  The iOS app was run on iOS
> simulator, and the profraw.order data was collected on iOS simulator, as
> opposed to on linux.
>
> I wonder if you know what could be wrong? Maybe this feature isn't
> supported by objective c and swift, or perhaps it doesn't work on the iOS
> platform?
>
> Thanks again! Really appreciate your help!
>
> Regards,
> Jack
>
>
> On Fri, Sep 24, 2021 at 5:48 AM Manman Ren <manman.ren at gmail.com> wrote:
>
>> I don't think I wrote a doc on this.
>> 'compiler-rt/test/profile/instrprof-order-file.test' shows how to use it,
>> build the app with -forder-file-instrumentation and -mllvm
>> -orderfile-write-mapping, then run the app, use the mapping file to decode
>> the profile.
>>
>> The profile should be in default.profraw.order. But you can change its
>> name via:
>>
>> - Writes to the file with the last name given to \a *
>> - __llvm_profile_set_filename(),
>> - or if it hasn't been called, the \c LLVM_PROFILE_FILE environment
>> variable,
>> - or if that's not set, the last name set to INSTR_PROF_PROFILE_NAME_VAR,
>> - or if that's not set,  \c "default.profraw".
>>
>> Hope this helps!
>> Manman
>>
>> On Thu, Sep 23, 2021 at 2:45 PM Manman Ren <mren at fb.com> wrote:
>>
>>>
>>>
>>>
>>>
>>> *From: *Manman Ren <mren at fb.com>
>>> *Date: *Thursday, September 23, 2021 at 2:20 PM
>>> *To: *Jack Chen <jacklcc at google.com>, llvm-dev at lists.llvm.org <
>>> llvm-dev at lists.llvm.org>
>>> *Subject: *Re: How to use -forder-file-instrumentation to generate
>>> order file for iOS Apps?
>>>
>>> I don't think I wrote a doc on this.
>>> 'compiler-rt/test/profile/instrprof-order-file.test' shows how to use it,
>>> build the app with -forder-file-instrumentation and -mllvm
>>> -orderfile-write-mapping, then run the app, use the mapping file to decode
>>> the profile.
>>>
>>> The profile should be in default.profraw.order. But you can change its
>>> name via:
>>>
>>> - Writes to the file with the last name given to \a *
>>> - __llvm_profile_set_filename(),
>>> - or if it hasn't been called, the \c LLVM_PROFILE_FILE environment
>>> variable,
>>> - or if that's not set, the last name set to INSTR_PROF_PROFILE_NAME_VAR,
>>> - or if that's not set,  \c "default.profraw".
>>>
>>> Hope this helps!
>>> Manman
>>>
>>>
>>>
>>>
>>>
>>> *From: *Jack Chen <jacklcc at google.com>
>>> *Date: *Thursday, September 23, 2021 at 1:05 AM
>>> *To: *llvm-dev at lists.llvm.org <llvm-dev at lists.llvm.org>
>>> *Cc: *Manman Ren <mren at fb.com>
>>> *Subject: *How to use -forder-file-instrumentation to generate order
>>> file for iOS Apps?
>>>
>>> Hello llvm developers,
>>>
>>>
>>>
>>> I wonder how to use the flag *-forder-file-instrumentation* for iOS
>>> Apps written in objective-C and swift?
>>>
>>>
>>>
>>> I enabled the flags* -forder-file-instrumentation -mllvm
>>> -orderfile-write-mapping* *-fprofile-instr-generate *when building my
>>> iOS App, which is written in objective-C and swift.
>>>
>>> After running the App on the iOS simulator on my macbook, a
>>> profraw.order file is generated in the simulator's folder. However,
>>> the file doesn't contain the correct contents. It contains too few bytes,
>>> also most data blobs are 32 bits (I believe the right format is 64-bits
>>> MD5), and many of them are duplicated. FWIW, here are the first few bytes:
>>>
>>> 00000000: 70aa cb11 0100 0000 f8ac cb11 0100 0000  p...............
>>>
>>> 00000010: 90ab cb11 0100 0000 58aa cb11 0100 0000  ........X.......
>>>
>>> 00000020: ffff ffff 0000 0000 0000 0000 0000 0000  ................
>>>
>>> 00000030: 0000 0000 0000 0000 ffff ffff 0000 0000  ................
>>>
>>> 00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
>>>
>>> 00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
>>>
>>> 00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
>>>
>>> 00000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
>>>
>>> 00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
>>>
>>> I wonder if the feature *-forder-file-instrumentation *is supported for
>>> iOS Apps that are written in objective-C and swift?
>>>
>>> If yes, then I wonder what's the proper steps to use it?
>>>
>>>
>>>
>>> Thank you very much for your time.
>>>
>>>
>>>
>>> Regards,
>>>
>>> Jack
>>>
>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210924/7ad05e15/attachment.html>


More information about the llvm-dev mailing list