On 30 May 2018 at 22:55, Cillian O'Donnell <cpodonne...@gmail.com> wrote:
> > > On Wed, 30 May 2018, 18:15 Vijay Kumar Banerjee, <vijaykumar9...@gmail.com> > wrote: > >> >> >> On Wed, 30 May 2018, 22:42 Cillian O'Donnell, <cpodonne...@gmail.com> >> wrote: >> >>> >>> >>> On Wed, 30 May 2018, 16:58 Gedare Bloom, <ged...@rtems.org> wrote: >>> >>>> On Wed, May 30, 2018 at 11:32 AM, Vijay Kumar Banerjee >>>> <vijaykumar9...@gmail.com> wrote: >>>> > On 30 May 2018 at 20:18, Gedare Bloom <ged...@rtems.org> wrote: >>>> >> >>>> >> Hello Vijay, >>>> >> >>>> >> Do you expect/need an answer to something in here? >>>> >> >>>> >> gedare >>>> >> >>>> > Hello, >>>> > >>>> > I wanted to know if there were any plans on how covoar >>>> > should store the reports when running for multisets. >>>> > Earlier it used to be done by the coverage script, >>>> > after the recent changes covoar can process multi sets. >>>> > >>>> > I think, covoar should store the reports into separate directories >>>> > for each set . eg. score/ , rtems/ . As the coverage can already read >>>> > from separate directories. >>>> >>> >>> Sorry I thought all questions had been answered here. I think you have >>> the right idea. Each set should be a sub-directory of coverage directory. >>> >>> By the way I tested your changes and everything seems fine. Still have >>> to do a review of coverage.py to see how close we are to merging. >>> >> I have squashed everything and sent a patch to devel@. This will make it >> easy to go through all the changes. Please have a look. >> > > Ah just seen it, will take a look. It'll be good to get Chris' thoughts > too. We'll have something more definitive about how close it is to merging. > Sure. > > >>>> > Any advice on how should it be approached ? >>>> >>>> It would help me if you could draw/write a diagram of what the >>>> filesystem tree might look like with separate directories, and what >>>> will go in each subdirectory. >>>> >>>> I don't have enough context to give any useful advice on this question. >>>> >>>> -Gedare >>>> >>>> >> >>>> >> On Wed, May 30, 2018 at 10:29 AM, Vijay Kumar Banerjee >>>> >> <vijaykumar9...@gmail.com> wrote: >>>> >> > On 30 May 2018 at 00:54, Joel Sherrill <j...@rtems.org> wrote: >>>> >> >> >>>> >> >> >>>> >> >> >>>> >> >> On Tue, May 29, 2018 at 11:27 AM, Vijay Kumar Banerjee >>>> >> >> <vijaykumar9...@gmail.com> wrote: >>>> >> >>> >>>> >> >>> >>>> >> >>> >>>> >> >>> On Tue, 29 May 2018, 20:10 Joel Sherrill, <j...@rtems.org> >>>> wrote: >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> On Mon, May 28, 2018 at 11:08 PM, Chris Johns <chr...@rtems.org >>>> > >>>> >> >>>> wrote: >>>> >> >>>>> >>>> >> >>>>> On 29/5/18 4:26 am, Joel Sherrill wrote: >>>> >> >>>>> > On Mon, May 28, 2018 at 5:43 AM, Vijay Kumar Banerjee >>>> >> >>>>> > <vijaykumar9...@gmail.com >>>> >> >>>>> > <mailto:vijaykumar9...@gmail.com>> wrote: >>>> >> >>>>> > >>>> >> >>>>> > Hello, >>>> >> >>>>> > >>>> >> >>>>> > The coverage reports are now showing results. >>>> >> >>>>> > The current branch that holds all the changes is >>>> >> >>>>> > the cov-tester-support branch in my forked repo >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > https://github.com/thelunatic/rtems-tools/tree/cov-tester- >>>> support >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > <https://github.com/thelunatic/rtems-tools/tree/ >>>> cov-tester-support> >>>> >> >>>>> > >>>> >> >>>>> > (Please have a look into the code and test it.) >>>> >> >>>>> > >>>> >> >>>>> > It is close to merging (hopefully). These are the issues >>>> >> >>>>> > that would need a fix before it can be merged : >>>> >> >>>>> > >>>> >> >>>>> > 1. I have added some #FIXME in the code (have a look) >>>> >> >>>>> > in coverage script. I have set the value of the >>>> targe to >>>> >> >>>>> > be >>>> >> >>>>> > sparc-rtems5, which makes it limited to sparc-rtems5 >>>> only. >>>> >> >>>>> > We >>>> >> >>>>> > can >>>> >> >>>>> > include the target in the bsp ini file, That would >>>> >> >>>>> > be a quick fix for this. >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > Yes. This needs to be fixed. >>>> >> >>>>> > >>>> >> >>>>> > My hack to add 4 in ObjdumpProcessor.cc needs to be addressed >>>> >> >>>>> > also. >>>> >> >>>>> > I am thinking of adding a method to Target_*.cc to ask for >>>> the >>>> >> >>>>> > size >>>> >> >>>>> > of an >>>> >> >>>>> > instruction. >>>> >> >>>>> > Then pass it the last instruction. That way we can throw on >>>> other >>>> >> >>>>> > architectures for >>>> >> >>>>> > now. If Chris solves this with his changes before we try >>>> another >>>> >> >>>>> > architecture, >>>> >> >>>>> > great. >>>> >> >>>>> > If not, it will be easy to fix. >>>> >> >>>>> >>>> >> >>>>> What is the overall requirement? >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> To know the ending address of the function. >>>> >> >>>> >>>> >> >>>> Technically there are three pieces of information: >>>> >> >>>> >>>> >> >>>> + start address >>>> >> >>>> + end address >>>> >> >>>> + size >>>> >> >>>> >>>> >> >>>> If you know two of those, you can compute the third. >>>> >> >>>> >>>> >> >>>> I don't care if this comes from DWARF, ELF, or parsing the >>>> >> >>>> disassembly. >>>> >> >>>> It just needs to be reliable. >>>> >> >>>> >>>> >> >>>> And.. I am not proposing my solution as permanent. Just to keep >>>> us >>>> >> >>>> moving. You want to change to an internal disassembler (which >>>> >> >>>> would also need to have the source interspersed) and DWARF. So >>>> >> >>>> this code would go away then. >>>> >> >>>> >>>> >> >>>>> >>>> >> >>>>> >>>> >> >>>>> What defines the function and so size are attempting to get >>>> coverage >>>> >> >>>>> of? What if >>>> >> >>>>> that function calls an inline function and that function is >>>> inlined? >>>> >> >>>>> What if >>>> >> >>>>> that inlined function calls another inlined function? >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> Then it is all inlined. It is done consistently now. I have >>>> never >>>> >> >>>> seen a >>>> >> >>>> case >>>> >> >>>> where two instances of a method differed as the assembly level. >>>> [1] >>>> >> >>>> >>>> >> >>>> The actual body of the inlined method is evaluated at each >>>> expansion >>>> >> >>>> point. >>>> >> >>>> That is why a few years ago, I pushed hard to reduce the >>>> complexity >>>> >> >>>> of >>>> >> >>>> inline methods because we got test patch explosion when an >>>> inlined >>>> >> >>>> method >>>> >> >>>> included complex conditionals. >>>> >> >>>> >>>> >> >>>> Similarly, I think it would be helpful to coverage and >>>> verification >>>> >> >>>> efforts to >>>> >> >>>> follow the **shudder** MISRA rule which want you to write simple >>>> >> >>>> conditional >>>> >> >>>> expressions rather than compound ones. I have taken to writing >>>> code >>>> >> >>>> this >>>> >> >>>> way as much as possible. But haven't pushed it as a coding rule. >>>> >> >>>> >>>> >> >>>> if (a) { >>>> >> >>>> if (b) { >>>> >> >>>> do x; >>>> >> >>>> } >>>> >> >>>> } >>>> >> >>>> >>>> >> >>>> Versus >>>> >> >>>> if (a && b) { >>>> >> >>>> do x; >>>> >> >>>> } >>>> >> >>>> >>>> >> >>>> The reason is that the first is easier to analyse coverage on. >>>> >> >>>> >>>> >> >>>> [1] We both expect LTO could change this. >>>> >> >>>> >>>> >> >>>> [2] ESA did specifically mention this one though. Also in >>>> general >>>> >> >>>> terms, >>>> >> >>>> an RTEMS Project response to MISRA rules. Which ones we follow, >>>> >> >>>> reject, etc.. But I refuse to adopt hard rules which can't be >>>> >> >>>> enforced >>>> >> >>>> by free open source tools. >>>> >> >>>> >>>> >> >>>>> >>>> >> >>>>> >>>> >> >>>>> The DWARF data provides details about the PC low and PC high >>>> of what >>>> >> >>>>> is >>>> >> >>>>> called >>>> >> >>>>> concrete functions and then it provides the details about >>>> inlines. >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> We don't (currently) report on the inlines as independent >>>> methods. >>>> >> >>>> >>>> >> >>>>> >>>> >> >>>>> >>>> >> >>>>> > >>>> >> >>>>> > 2. coverage used to feed ini file for each symbol to >>>> covoar >>>> >> >>>>> > in a loop and store the result in a separate >>>> directory >>>> >> >>>>> > for each symbol . Which is needed no more needed as >>>> >> >>>>> > covoar can now process multi sets from a >>>> >> >>>>> > single ini file. I think the results from covoar >>>> should >>>> >> >>>>> > be >>>> >> >>>>> > store in a separate directory for each symbol >>>> >> >>>>> > example :- score/ >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > A bit of history will help here. Originally covoar was run >>>> against >>>> >> >>>>> > a >>>> >> >>>>> > single set of >>>> >> >>>>> > code by the scripting framework. We would do coverage on >>>> either >>>> >> >>>>> > "core >>>> >> >>>>> > parts" >>>> >> >>>>> > or "developmental" (e.g. nearly all non-networked code). The >>>> >> >>>>> > optimization was >>>> >> >>>>> > either at -O2 or -Os. So there were four coverage variants. >>>> >> >>>>> > >>>> >> >>>>> > Turned out that when we added something to "all", the >>>> percentage >>>> >> >>>>> > would drop >>>> >> >>>>> > and reflect badly on the rest of the code. I remember adding >>>> the >>>> >> >>>>> > dosfs and >>>> >> >>>>> > the coverage dropped almost 20 percent. >>>> >> >>>>> > >>>> >> >>>>> > This led to the idea that we should report on a per >>>> >> >>>>> > directory/subsystem basis. >>>> >> >>>>> > The score, rtems, posix, sapi, and libcsupport should have >>>> high >>>> >> >>>>> > coverage now >>>> >> >>>>> > and the reports should reflect that independent of whether >>>> the >>>> >> >>>>> > dosfs >>>> >> >>>>> > needs a >>>> >> >>>>> > lot more tests. >>>> >> >>>>> > >>>> >> >>>>> > Before each directory/subsystem required a completely >>>> separate run >>>> >> >>>>> > of >>>> >> >>>>> > covoar. >>>> >> >>>>> > If we are headed to a solution where one analysis run of >>>> covoar >>>> >> >>>>> > generates different >>>> >> >>>>> > reports, that should speed up the processing time a lot! >>>> >> >>>>> > >>>> >> >>>>> > The other issue is what should the top directory look >>>> like/contain >>>> >> >>>>> > when a single >>>> >> >>>>> > run produces multiple subsystem reports. Seems like we would >>>> need >>>> >> >>>>> > at >>>> >> >>>>> > least a >>>> >> >>>>> > top level html and text file. >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > 3. currently we are using the leon3-qemu-cov as the bsp. >>>> >> >>>>> > Are we going to have two ini file for each bsp ? ( >>>> one >>>> >> >>>>> > without coverage >>>> >> >>>>> > and one with coverage support) >>>> >> >>>>> > >>>> >> >>>>> > Earlier the approach was to include a section 'coverage' >>>> >> >>>>> > to the bsp ini to put the values we needed for coverage. >>>> >> >>>>> > I think that approach would be more "convenient" for the >>>> user. >>>> >> >>>>> > >>>> >> >>>>> > >>>> >> >>>>> > This was something Chris suggested. I think it was to avoid >>>> adding >>>> >> >>>>> > to >>>> >> >>>>> > the bsp ini file until the code was closer to merging. >>>> >> >>>>> > >>>> >> >>>>> > Chris.. what do you think? Long term, a section would be >>>> nice. >>>> >> >>>>> > >>>> >> >>>>> >>>> >> >>>>> Sorry I cannot remember without looking it up and I am >>>> currently >>>> >> >>>>> buried >>>> >> >>>>> in >>>> >> >>>>> family issues. >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> OK. Having the Python scripting loop over the sets or covoar >>>> looping >>>> >> >>>> over them >>>> >> >>>> is an open issue. Historically, looping over desired symbol >>>> sets was >>>> >> >>>> outside >>>> >> >>>> covoar. So looping inside covoar may take some work. >>>> >> >>> >>>> >> >>> >>>> >> >>> covoar can already loop over the >>>> >> >>> sets it seems, which is implemented >>>> >> >>> in DesiredSymbols. But it stores all the >>>> >> >>> reports generated from into the same directory. >>>> >> >> >>>> >> >> >>>> >> >> If there is an index that makes its possible to navigate through >>>> the >>>> >> >> different "subsystems", then that's the key thing. You don't want >>>> >> >> to think score is poorly covered due to dosfs. >>>> >> >> >>>> >> >>> >>>> >> >>> >>>> >> >>> P.S:Sorry for the previous mail with no message >>>> >> >>>> >>>> >> >>>> >>>> >> >>>> --joel >>>> >> >>>>> >>>> >> >>>>> >>>> >> >>>>> Chris >>>> >> >>>> >>>> >> >>>> >>>> >> >> >>>> >> > >>>> >> > >>>> >> > _______________________________________________ >>>> >> > devel mailing list >>>> >> > devel@rtems.org >>>> >> > http://lists.rtems.org/mailman/listinfo/devel >>>> > >>>> > >>>> _______________________________________________ >>>> devel mailing list >>>> devel@rtems.org >>>> http://lists.rtems.org/mailman/listinfo/devel >>>> >>>
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel