[PATCH] When using -fprofile-generate=/some/path mangle absolute path of file (PR lto/85759).

Martin Liška mliska@suse.cz
Fri Jul 20 08:43:00 GMT 2018


On 07/20/2018 06:02 AM, Bin.Cheng wrote:
> On Fri, Jun 29, 2018 at 9:54 PM, Martin Liška <mliska@suse.cz> wrote:
>> On 06/22/2018 10:35 PM, Jeff Law wrote:
>>> On 05/16/2018 05:53 AM, Martin Liška wrote:
>>>> On 12/21/2017 10:13 AM, Martin Liška wrote:
>>>>> On 12/20/2017 06:45 PM, Jakub Jelinek wrote:
>>>>>> Another thing is that the "/" in there is wrong, so
>>>>>>   const char dir_separator_str[] = { DIR_SEPARATOR, '\0' };
>>>>>>   char *b = concat (profile_data_prefix, dir_separator_str, pwd, NULL);
>>>>>> needs to be used instead.
>>>>> This looks much nicer, I forgot about DIR_SEPARATOR.
>>>>>
>>>>>> Does profile_data_prefix have any dir separators stripped from the end?
>>>>> That's easy to achieve..
>>>>>
>>>>>> Is pwd guaranteed to be relative in this case?
>>>>> .. however this is absolute path, which would be problematic on a DOC based FS.
>>>>> Maybe we should do the same path mangling as we do for purpose of gcov:
>>>>>
>>>>> https://github.com/gcc-mirror/gcc/blob/master/gcc/gcov.c#L2424
>>>> Hi.
>>>>
>>>> I decided to implement that. Which means for:
>>>>
>>>> $ gcc -fprofile-generate=/tmp/myfolder empty.c -O2 && ./a.out
>>>>
>>>> we get following file:
>>>> /tmp/myfolder/#home#marxin#Programming#testcases#tmp#empty.gcda
>>>>
>>>> That guarantees we have a unique file path. As seen in the PR it
>>>> can produce a funny ICE.
>>>>
>>>> I've been testing the patch.
>>>> Ready after it finishes tests?
>>>>
>>>> Martin
>>>>
>>>>> What do you think about it?
>>>>> Regarding the string manipulation: I'm not an expert, but work with string in C
>>>>> is for me always a pain :)
>>>>>
>>>>> Martin
>>>>>
>>>>
>>>> 0001-When-using-fprofile-generate-some-path-mangle-absolu.patch
>>>>
>>>>
>>>> From 386a4561a4d1501e8959871791289e95f6a89af5 Mon Sep 17 00:00:00 2001
>>>> From: marxin <mliska@suse.cz>
>>>> Date: Wed, 16 Aug 2017 10:22:57 +0200
>>>> Subject: [PATCH] When using -fprofile-generate=/some/path mangle absolute path
>>>>  of file (PR lto/85759).
>>>>
>>>> gcc/ChangeLog:
>>>>
>>>> 2018-05-16  Martin Liska  <mliska@suse.cz>
>>>>
>>>>      PR lto/85759
>>>>      * coverage.c (coverage_init): Mangle full path name.
>>>>      * doc/invoke.texi: Document the change.
>>>>      * gcov-io.c (mangle_path): New.
>>>>      * gcov-io.h (mangle_path): Likewise.
>>>>      * gcov.c (mangle_name): Use mangle_path for path mangling.
>>> ISTM you can self-approve this now if you want it to move forward :-)
>>>
>>> jeff
>>>
>>
>> Sure, let me install the patch then.
> Hi,
> I am a bit confused after path mangling change.
> Now with below command line:

Hi.

> $ ./gcc -O2 -fprofile-use=./ sort.c -o sort.c

Does not make sense, it's default. When using argument
to the option, an absolute path is preferred to be used.

> or
> $ ./gcc -O2 -fprofile-use=./sort.gcda sort.c -o sort.c

Should be always a folder, not a path to a file.

> 
> The da_file_name and the final name used in gcov_open is as:
> 
> $ p name
> $11 = 0x2e63050
> ./#home#chengbin.cb#work#gcc-patches#trunk-orig#target.build#bin#sort.gcda
> or
> p da_file_name
> $1 = 0x2e63050 "sort.gcda/#home#chengbin.cb#work#gcc-patches#trunk-orig#target.build#bin#sort.gcda"
> 
> 
> These are not valid paths?  Or how should I modify the command line options?

Yes, please fix options.

Martin

> 
> Thanks,
> bin
>>
>> Martin



More information about the Gcc-patches mailing list