[lttng-dev] Bug in lttng-ust tool lttng-gen-tp which replaces all ".c" with ".h" in the path

Jonathan Rajotte-Julien jonathan.rajotte-julien at efficios.com
Mon Sep 18 16:27:47 UTC 2017


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.

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

-- 
Jonathan Rajotte-Julien
EfficiOS


More information about the lttng-dev mailing list