On 04/01/16 03:47, Joel Sherrill wrote:


On Sun, Jan 3, 2016 at 8:26 PM, Chris Johns <chr...@rtems.org <mailto:chr...@rtems.org>> wrote:

    On 01/04/16 12:55, Joel Sherrill wrote:

        On SPARC/SIS, the main lesson I learned is that if the executable
        dropped to something ridiculously small, then something was
        broken. I
        had one iteration where hello.exe had 48 bytes of code. :)


    Nice work.


That much was pretty obvious. Why was a problem. :)


        Any thoughts on how to catch breakages on BSPs we can only link?


    Can you get a suitable list of functions that must be present in
    the executable and check they are present with nm?


It should be simple if the breakage is between the entry point and the rest of the BSP. If hello does not include bsp_start() or rtems_initialize_data_structures(), then it is known to be broken. This is what broke on sis -- the first 16 instructions of the start code had no dependency on anything else. So the linkages were satisfied and nothing else pulled in. :)

        I think this is a good thing to try to sweep in for 4.12 since
        we can
        easily check 4.11 vs 4.12 for breakages on specific BSPs.


    So this is a once only check and not something we always check for?


Should be one time only. If the linkage between the start code and C code is correct, it will stay correct. Once you get to C code, everything should be magically correct.

I think this is simple enough in principle where it could be written up as a series of GCI tasks. One task per BSP given the amount of time. It isn't much editing but I would want

(1) patch to make/custom/XXX.cfg

(2) the commit message to include:
    + base size for some tests like hello and ticker (same on all BSPs)
    + new size for the same tests

(3) Confirmation with hello.num posted to GCI task so we can see the symbols ourselves. But they should have checked it.

OTOH, one of us could probably sweep the argument changes into the custom files quickly, my build scripts capture the size of the tests already, and we are used to scripting and automated passes. Maybe I should play the next couple of weeks. If someone wants to help, it would be nice to have some.

I am in favour to enable this for all BSPs. Basically the linker scripts must have the KEEP () directive for the relevant sections. So, for a symbol test we should pick up one using the network stack and one using a global C++ constructor.

Do we really have to patch all the XXX.cfg files? Maybe wait until we have a new build system and add this to a common place?

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.hu...@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.

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

Reply via email to