On 07/20/2018 06:02 AM, Bin.Cheng wrote: > On Fri, Jun 29, 2018 at 9:54 PM, Martin Liška <mli...@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 <mli...@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 <mli...@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