<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><style>body { line-height: 1.5; }blockquote { margin-top: 0px; margin-bottom: 0px; margin-left: 0.5em; }body { font-size: 10.5pt; font-family: ????; color: rgb(0, 0, 0); line-height: 1.5; }</style></head><body>
<div><span></span>Sure, as you mentioned, I used rtems-syms to generate the symbol table, like this: </div><div><br></div><div># rtems-syms -e -c <span style="background-color: rgba(0, 0, 0, 0); font-size: 10.5pt; line-height: 1.5;">"arm-rtems4.11-gcc ${CFLAGS1}" -o bk-symbol.o bkv01.elf </span></div><div><span style="background-color: rgba(0, 0, 0, 0); font-size: 10.5pt; line-height: 1.5;"><br></span></div><div><span style="background-color: rgba(0, 0, 0, 0); font-size: 10.5pt; line-height: 1.5;">And the "CFLAGS1" is "</span><span style="background-color: rgba(0, 0, 0, 0); font-size: 10.5pt; line-height: 1.5;">-qrtems -B/opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/lib -B/opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/ --specs bsp_specs -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard -mtune=cortex-a9</span><span style="background-color: rgba(0, 0, 0, 0); font-size: 10.5pt; line-height: 1.5;">". </span></div><div>Then I loaded the bk-symbol.o into my RAM via ftp server, and my application app01.rap later. </div><div><br></div><div>Am I wrong with something here?</div><div><br></div>
<div><br></div><hr style="width: 210px; height: 1px;" color="#b5c4df" size="1" align="left">
<div><span><div style="MARGIN: 10px; FONT-FAMILY: verdana; FONT-SIZE: 10pt"><div>xuelin.tian@qkmtech.com</div></div></span></div>
<blockquote style="margin-top: 0px; margin-bottom: 0px; margin-left: 0.5em;"><div> </div><div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm"><div style="PADDING-RIGHT: 8px; PADDING-LEFT: 8px; FONT-SIZE: 12px;FONT-FAMILY:tahoma;COLOR:#000000; BACKGROUND: #efefef; PADDING-BOTTOM: 8px; PADDING-TOP: 8px"><div><b>From:</b> <a href="mailto:chrisj@rtems.org">Chris Johns</a></div><div><b>Date:</b> 2017-01-06 10:38</div><div><b>To:</b> <a href="mailto:xuelin.tian@qkmtech.com">xuelin.tian@qkmtech.com</a>; <a href="mailto:salpha.2004@gmail.com">Saeed Ehteshamifar</a></div><div><b>CC:</b> <a href="mailto:users@rtems.org">users@rtems.org</a></div><div><b>Subject:</b> Re: rtems dynamic loading with waf</div></div></div><div><div>On 29/12/2016 20:25, xuelin.tian@qkmtech.com wrote:</div>
<div>> Dear Chris,</div>
<div>> For now, I use rtems-ld to generate my application. I have my base</div>
<div>> kernel, bkv01.elf, and my application, dl-01.c.</div>
<div>></div>
<div>> First, I compiled my application without linking:</div>
<div>> # arm-rtems4.11-gcc ${CFLAGS1} -o dl-01.o -c dl-01.c</div>
<div>> Then, I used rtems-ld to generate my loadable RAP: (something like</div>
<div>> below, please ignore the libs I added)</div>
<div>> #</div>
<div>> rtems-ld -v --base bkv01.elf -e hello_world dl-01.o  -o app01.rap -L /opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/ -lbsd -lrtemsbsp -lrtemscpu -ljffs2 -lrtems++ -lz</div>
<div>></div>
<div>> base-image: bkv01.elf</div>
<div>> cache:load-sym: object files: 1</div>
<div>> cache:load-sym: symbols: 10688</div>
<div>> Finding libraries:</div>
<div>>   found: ./libbsd.a</div>
<div>>   found: /opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/librtemsbsp.a</div>
<div>>   found: /opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/librtemscpu.a</div>
<div>>   found: /opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/libjffs2.a</div>
<div>>   found: /opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/librtems++.a</div>
<div>>   found: /opt/rtems-4.11.1-release/4.11-bsp/arm-rtems4.11/xilinx_zynq_zedboard/lib/libz.a</div>
<div>> cc::stdlib: libgcc.a</div>
<div>> cc::stdlib: libssp.a</div>
<div>> cc::stdlib: libc.a</div>
<div>> cache:load-sym: object files: 4513</div>
<div>> cache:load-sym: symbols: 12987</div>
<div>> resolver:resolving:  undefines, unresolved: 1</div>
<div>> resolver:resolve  :    |- hello_world</div>
<div>> resolver:resolved :    |   `--> dl-01.o (unresolved: 1)</div>
<div>> resolver:resolved :    +-- referenced objects: 1</div>
<div>> resolver:resolving:  ] undefines ==> dl-01.o</div>
<div>> resolver:resolving:  dl-01.o, unresolved: 7</div>
<div>> resolver:resolve  :     |- __getreent</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div>> resolver:resolve  :     |- fprintf</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div>> resolver:resolve  :     |- puts</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div> </div>
<div>This indicates `puts` is in the base image.</div>
<div> </div>
<div>> resolver:resolve  :     |- rtems_status_text</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div>> resolver:resolve  :     |- rtems_task_create</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div>> resolver:resolve  :     |- rtems_task_delete</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div>> resolver:resolve  :     |- rtems_task_start</div>
<div>> resolver:resolved :     |   `--> bkv01.elf (base)</div>
<div>> resolver:resolved :     +-- referenced objects: 0</div>
<div>> resolver:resolving: top: dl-01.o</div>
<div>> resolver:resolving:  dl-01.o is resolved or resolving</div>
<div>> resolver:resolving: dependents: 1</div>
<div>>    1: dl-01.o</div>
<div>> outputter:application: app01.rap</div>
<div>> rap::layout: total:654 text:380 const:178 ctor:0 dtor:0 data:0 bss:0 symbols:12 (1) strings:26 relocs:59</div>
<div>> rap:output: machine=0</div>
<div>> rap:output: header=12</div>
<div>> rap:output: .text: offset=177 size=380</div>
<div>> rap:output: .const: offset=557 size=178</div>
<div>> rap:output: .ctor: offset=735 size=0</div>
<div>> rap:output: .dtor: offset=735 size=0</div>
<div>> rap:output: .data: offset=735 size=0</div>
<div>> rap:output: strtab=735</div>
<div>> rap:output: symbols=761</div>
<div>> rap:output: relocs=773</div>
<div>> rap: objects: 1, size: 881, compression: 54.7%</div>
<div>></div>
<div>> And, I got the RAP format file I want. This RAP would be downloaded into</div>
<div>> my system filesystem via FTP (just make rtems as server, and my host as</div>
<div>> client).</div>
<div>> Finally, I loaded this RAP file with dlopen, then an error came up:</div>
<div>>      dlopen failed: global symbol not found: puts</div>
<div>></div>
<div>> Is there something wrong with my attempt? If so, please give my some</div>
<div>> advise, thanks a lot.</div>
<div>></div>
<div> </div>
<div>Did you generate a symbol table and load it before loading app01.rap?</div>
<div> </div>
<div>Chris</div>
</div></blockquote>
</body></html>