<div dir="ltr">Hi Chris,<div><br></div><div class="gmail_extra"><br><div class="gmail_quote">2014-09-08 14:16 GMT+08:00 Chris Johns <span dir="ltr"><<a href="mailto:chrisj@rtems.org" target="_blank">chrisj@rtems.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">On 18/08/2014 12:17 am, Peng Fan wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class="">
<br>
2014-08-16 10:51 GMT+08:00 Chris Johns <<a href="mailto:chrisj@rtems.org" target="_blank">chrisj@rtems.org</a><br></span>
<mailto:<a href="mailto:chrisj@rtems.org" target="_blank">chrisj@rtems.org</a>>>:<span class=""><br>
    On 15/08/2014 7:37 pm, Peng Fan wrote:<br>
        On 08/15/2014 04:15 PM, Chris Johns wrote:><br></span><div><div class="h5">
            I think the user should manage this in their build<br>
            environment. The<br>
            rtems-tld (trace linker) will need the BSP set up to work so<br>
            this is a<br>
            different case.<br>
<br>
        I have not read related source code. what is it for?<br>
<br>
<br>
    The rtems-tld is a trace linker. It is still being worked on and not<br>
    usable. Trace linking lets a user define a set of functions they<br>
    want to trace and rtems-tld will generate the wrapping functions,<br>
    compile them and perform a link using the GNU ld's '--wrap=symbol'<br>
    option. This will combine with the capture engine to allow real-time<br>
    tracing on targets.<br>
<br>
    The first pass of the rtems-tld will provide a proof of concept way<br>
    to output to stdout entry to a function with the arguments and the<br>
    return value shown as hex dumps. The capture engine integration is<br>
    happening slowly with Jennifer and is the end objective.<br>
<br>
    If things work out with rtems-tld the wrapping generators will be<br>
    specified in INI files which lets users provide custom ways to trace<br>
    execution. The INI files in the repo show the idea being worked on.<br>
<br>
I tried rtems-tld and read about the verbose output msg from rtems-tld.<br>
Currently I found that it can only generate wrap functions. rtems-tld is<br>
to generate wrapping functions, compile the generated files with<br>
wrapping functions in it and other source files passed to rtems-tld<br>
using parameters, and link them using '--wrap-symbol'? is the final<br>
linked file is a rap file or others?<br>
  is there a protocal between the capture engine and the wrapping<br>
functions? using serial to communicate? I just wonder this.:)<br>
</div></div></blockquote>
<br>
The protocol is defined in configuration files. I have the trace linker building applications with wrapped function and I now need to add the code to generate the logging code based on the configuration to show it is working. My plan is let users play with this stuff in the examples-v2.<div><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
                Using the machine flags, xxx_rtemsxx_gcc can search the<br>
                related libs<br>
                first, if not found, then search the common libs,<br>
                because the machine<br>
                related lib path is in the first.<br>
<br>
<br>
            Yes it can.<br>
<br>
<br>
                Just my thought, the code above is not good. Hmm. using<br>
                String, new and<br>
                class in c++<br>
<br>
<br>
            I understand.<br>
<br>
                I think we may pass a madantory bsp name to rtl-host,<br>
                such as "--bsp<br>
                xxxxxxx" , xxxxxxx means the bsp name<br>
<br>
<br>
            Or we pass --cc-flags and let the user manage the interface<br>
            to the BSP.<br>
<br>
        If not pass correct machine flags to gcc, rtems-ld may link wrong<br>
        libgcc.a and other libxxx.a, and rtems-ld can not give any error msg<br>
        about this. At last, when loading rap file, error occurs, but<br>
        hard to<br>
        find what happens.<br>
        I am not sure, but I think let user to handle the machine flags<br>
        is not<br>
        user friendly, unless users are clearly about what machine flags<br>
        should<br>
        be passed to xx-rtemsxx-gcc by rtems-ld.<br>
        If using --cc-flags, this option may be manatory, but not<br>
        optional. And<br>
        the user should extract the machine flags from rtems source code.<br>
        I think  passing bsp name to rtems-ld, and rtems-ld search a<br>
        table which<br>
        contains bsps' name and the machine flags corresponding to the<br>
        bsp. If<br>
        the bsp name passed to rtems-ld can not be found in the table,<br>
        rtems-ld<br>
        complains err msg, If found, then all is fine.<br>
<br>
<br>
    This sounds reasonable. Maybe we provide both and users can decide.<br>
    The bsp option may be suitable and may need some extra options or<br>
    they can provide the full list and not specify a bsp.<br>
<br>
  1. using a bsp option. extra options?<br>
</blockquote>
<br></div></div>
I have added support for the arch/bsp and/or cflags with a default (path based) or user supplied compiler or linker (absolute paths).<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
  2. they can provide the full list. You mean let user define the<br>
machine flags? like "--machine-flags "-mthumb -msoft-float -mxxx" "?<br>
Anyway, I do not have enough experience. You decide. To me, I'd like to<br>
use a bsp option, and as u said users can also decide. I am newbie:)<br>
</blockquote>
<br></span>
This is supported via the cflags options.<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
    Which ever way we go the rtems-ld and rtems-tld should be the similar.<br>
<br>
If the final image generated by rtems-tld is not a dynamically loadable<br>
elf/rap file, i think it is not needed to make rtems-tld have the same<br>
saying '--bsp' option with rtems-ld. Because the machine flags passed to<br>
xx-rtemsxx-gcc only affects the rap/elf  dynamically loadable file.<br>
<br>
</blockquote>
<br></span>
The rtems-tld currently has a little bit more code to set the compiler and linker. This is useful if you want to use absolute paths to the compiler and linker rather than depend on paths.<br>
<br>
I have made a number of changes and I have not tested rtems-ld. Are you able to run some tests on rtems-ld for me ?</blockquote><div>I tried rtems-ld to compile python.rap for arm realview_pbx_qemu_a9 bsp using such options:</div><div>'-B arm/realview_pbx_qemu_a9 -r /opt/rtems-4.11' and rtems-ld can link the final rap image. At last when load the python.rap, the simpile xx.py file can be correctly executed. Yeah, I do some debug, and found that use '-B' can let gcc search the correct libs.</div><div>I found that '-B' and '-r' should be set both, otherwise rtems-ld will complains errors 'No RTEMS path provide with arch/bsp'. </div><div><br></div><div>Regards,</div><div>Peng.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span class=""><font color="#888888"><br>
<br>
Chris<br>
</font></span></blockquote></div><br></div></div>