From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gunnar.Strand@ericsson.com (Gunnar Strand) Date: Tue, 19 Sep 2017 05:35:08 +0200 Subject: [lttng-dev] Bug in lttng-ust tool lttng-gen-tp which replaces all ".c" with ".h" in the path In-Reply-To: <20170918162747.tdbrpxopqxlv3jbo@psrcode-TP-X230> References: <021b9053-2599-9b1c-0218-a994fa0e25a7@ericsson.com> <20170918162747.tdbrpxopqxlv3jbo@psrcode-TP-X230> Message-ID: <33a474df-f79d-01f4-7654-8adb5d1148ac@ericsson.com> Hi, On 09/18/17 18:27, Jonathan Rajotte-Julien wrote: > Hi, > > On Mon, Sep 18, 2017 at 11:47:28AM +0200, Gunnar Strand wrote: >> Hi, >> >> It does not seem like anonymous bug reporting is supported, so I am >> submitting the report here instead. >> >> I found the following bug in the tools/lttng-gen-tp tool in the lttng-ust >> component, which is present in the latest commit on master, >> d0f6cf574ef992620b09c183cb3a0ea771070ea5: >> >>  66 class CFile: >> ... >>  79     def write(self): >>  80         outputFile = open(self.outputFilename,"w") >>  81 >>  82         headerFilename = self.outputFilename.replace(".c",".h") >> > I agree with you here. Still, based on basic testing on my side passing a path as > a template/-o arguments (e.g absolute path) yield more problems [1] than only this replacement. > > There is also another occurrence of a buggy replacement on line 129: > > def write(self): > cFilename = self.outputFilename.replace(".o",".c") > cc = self._detectCC() > if cc == "": > > Could you give me the exact command you are using? > > [1] The header template use a relative path for inclusion passing an absolute > path for any parameters will end up in a compilation error for most use-case. Yes, an absolute path is passed to the command, and in this case and that is how the issue got exposed for us. We have a workaround in place, but using relative paths would be the better solution, thanks. BR Gunnar > > Cheers > >> Line 82 replaces all occurrences of ".c" with ".h" which breaks compilation >> if the path to the source contains ".c" anywhere, eg.: >> /path/to/my.cigar/source/... >> >> Only the last occurrence should be replaced, eg.: >> >> if self.outputFilename.endswith(".c"): >> >>     headerFilename = self.outputFilename[:-2] + ".h" >> >> Or just the second line if the code can assume that the string has a ".c" >> suffix. >> >> BR >> >> Gunnar >> >> _______________________________________________ >> lttng-dev mailing list >> lttng-dev at lists.lttng.org >> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev