On 07/07/2017 12:58, Joel Sherrill wrote:
> On Jul 6, 2017 9:20 PM, "Chris Johns" <chr...@rtems.org
> <mailto:chr...@rtems.org>> wrote:
> 
>     On 07/07/2017 12:10, Joel Sherrill wrote:
>     >
>     >
>     > On Jul 6, 2017 8:52 PM, "Chris Johns" <chr...@rtems.org
>     <mailto:chr...@rtems.org>
>     > <mailto:chr...@rtems.org <mailto:chr...@rtems.org>>> wrote:
>     >
>     >     On 07/07/2017 00:34, Joel Sherrill wrote:
>     >     > On Thu, Jul 6, 2017 at 5:53 AM, Cillian O'Donnell
>     <cpodonne...@gmail.com <mailto:cpodonne...@gmail.com>
>     >     <mailto:cpodonne...@gmail.com <mailto:cpodonne...@gmail.com>>
>     >     > <mailto:cpodonne...@gmail.com <mailto:cpodonne...@gmail.com>
>     <mailto:cpodonne...@gmail.com <mailto:cpodonne...@gmail.com>>>> wrote:
>     >     > It will ignore records when it thinks things are inconsistent. 
> This
>     can occur
>     >     > when a method appears in two different executables and has 
> different
>     >     > sizes. The cause of this is usually padding at the end of the 
> method so
>     >     > the subsequent method in memory starts on a nice cache-line 
> alignment.
>     >     > The code tries to recognize the nops/padding at the end and 
> ignore them.
>     >
>     >     The code in the linked executable can be different to the object 
> file. The
>     >     linker does different things on different architectures and 
> different link
>     >     orders.
>     >
>     >
>     > We do not look at the .o files. The objdump output on exe files is used
> 
>     I would like to see this changed to use:
> 
>     https://git.rtems.org/rtems-tools/tree/rtemstoolkit/rld-symbols.h#n224
>     <https://git.rtems.org/rtems-tools/tree/rtemstoolkit/rld-symbols.h#n224>
> 
>     and to remove any objdump access. The toolkit will be much faster at 
> loading a
>     symbol table.
> 
> 
> That could replace the use of NM. Could it also replace objdump?
> 

Oh nm is being used. What is objdump being used for?

> It looks like now that he has problems with the Couverture trace and running 
> in
> parallel which is independent.
> 
> As a test, can you run all tests with coverage disabled? 
> 
> It would be helpful if running the tests and running covoar could be separate.
> Easier to debug.
> 
> 
>     >     > When the padding inserted by ld changes or the objdump output 
> being>
>     >     parsed changes, covoar needs to be adjusted.
>     >
>     >     This means fragile.
>     >
>     >
>     > Yes a bit.  It has to be taught by architecture what padding LD puts 
> in. But
>     > this doesn't change often or for no reason.
>     >
>     > Ian Taylor assured me years ago that the objdump output format was 5he 
> most
>     > stable way to do this.
> 
>     We have direct access to the EFL file and symbols. I see that as a better
>     solution.
> 
> 
> When things work. I think there are two issues ahead of any issues because of
> this. 

I cannot tell, I do not know how this all works. I was wondering if the fewer
tools and files created the less room there is for error.

> It has been on my wishlist but we need (1) to be to run all tests
> successfully and (2) to be sure the Couverture trace is read correctly.
> 
> 
>     >     > The ignored record message I saw is in the code that reads 
> Couverture
>     >     > trace records. The info in the record appears to be inconsistent
>     with the
>     >     > code to which it has been matched.
>     >
>     >     Sorry, I do not understand why this difference is happening? I
>     understand it is
>     >     object files vs executable, what I do not understand is why the 
> object
>     files are
>     >     being referenced, why not just use the executable?
>     >
>     >
>     > No .o is used. We haven't parsed couverture trace format in years. It
>     could have
>     > changed. I **think** the message indicates that the qemu translation 
> block is
>     > reported as longer than from the current instruction to the end of the 
> method.
>     >
>     > The answer is to know the address range of the flagged trace block and 
> what it
>     > corresponds to in the exe.
> 
>     I wonder if ELF holds the size of the area or can the symbol table sorted 
> by
>     address produce the needed ranges?
> 
> 
> I do not know. I think it has the range but it would be straightforward I 
> think
> to replace the use of NM.

It may in the DWARF info which we do not have access to.

>     > Fwiw this thread needs to be split. There are multiple issues.
> 
>     This specific fragment I have created to address symbols?
> 
> 
> If the issue is NM versus elf info, then it would help. Is there an RTEMS NM
> based on the library?

To load a symbol table you do this:

https://git.rtems.org/rtems-tools/tree/linkers/rtems-syms.cpp#n466

After that you have a symbol table you can use to get at the symbols.

Chris
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to