<div dir="ltr">Hi,<div><br></div><div style>I add the following code to ignore ARM.attributes and ARM.exidx sections</div><div style>which are contained in xa.c x-long.*.c and rtld.prelink. Not sure whether</div><div style>
this is right or not, but when compling rtl target, all is passed. This may looks</div><div style>not a good way.</div><div><div>diff --git a/elftoolchain/libelf/elf_data.c b/elftoolchain/libelf/elf_data.c</div><div>index 5ac6453..a6e17ae 100644</div>
<div>--- a/elftoolchain/libelf/elf_data.c</div><div>+++ b/elftoolchain/libelf/elf_data.c</div><div>@@ -87,9 +87,20 @@ elf_getdata(Elf_Scn *s, Elf_Data *d)</div><div> <span class="" style="white-space:pre">               </span>return (NULL);</div>
<div> <span class="" style="white-space:pre">   </span>}</div><div> </div><div>+<span class="" style="white-space:pre"> </span>if (sh_type == 0x70000003 || sh_type == 0x70000001) {</div><div>+<span class="" style="white-space:pre">                             </span>if ((d = _libelf_allocate_data(s)) == NULL)</div>
<div>+<span class="" style="white-space:pre">                                           </span>return (NULL);</div><div>+<span style="white-space:pre">                                      </span>d->d_buf = 0;</div><div>+<span style="white-space:pre">                                      </span>d->d_size = 0;</div>
<div>+<span class="" style="white-space:pre">                                   </span>return (d);</div><div>+<span class="" style="white-space:pre">       </span>}</div><div>+  //printf("freenix %x %x\n", (sh_type), ELF_T_FIRST);</div><div>+</div>
</div><div><br></div><div style>Now, I am trying to make the rtld run on my Tiny6410 board. It does run, but rap load ./x.rap fails. Error msg is:</div><div style>rtl: reloc unknown: sym = 0, type = 29, offset = 0x4, contents = 0xeafffffe</div>
<div>error: loading: (22) .text: Unsupported relocation type 29 in non-PLT relocations</div><div><br></div><div style>Type 29 in elf for arm is R_TYPE_JUMP24 which is not supported in rtl-target side, thus error occurs. I am trying to add this to target side.</div>
<div style><br></div><div style>I have finished a proposal draft. It is <a href="https://docs.google.com/document/d/1HBkRU7_kUOvoiCQWTUxQ151kvX--3x_E7r0rTerxYbo/edit?usp=sharing">here</a>. You can edit it. Hope you can give me some suggestions. On the target side, I know the main work that I should done is in rtl-mdreloc-arm.c, but on the host side, It seems all have been done.  Thnnks.</div>
<div style><br></div><div style>Regards,</div><div style>Peng.</div><div style><br></div><div style><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/20 Peng Fan <span dir="ltr"><<a href="mailto:van.freenix@gmail.com" target="_blank">van.freenix@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">It works when I add a 'int rtems(int argc, char **argv)' function. Thanks.</div><div class="HOEnZb">
<div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/20 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Peng Fan wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
    Added the code, I can see the three files: libx.a shell-init  x.rap<br>
<br>
    Here appears another problem:<br>
<br>
    When"rap ld ./x.rap", it tells"error: loading: (0)"<br>
<br>
    When"dlo x.rap","error: duplicate global symbol: hello". However,  dlo libx.a:xa.c.1.o and dlo libx.a:x-long-name-to-create-<u></u>gnu-extension-in-archive.c.1.o is ok.<br>
<br>
<br>
Tried to find why "When "rap ld ./x.rap", it tells "error: loading: (0)""<br>
</blockquote>
<br></div>
Did you grep for the string and set a break point in it and then look at the back trace ? This is a pretty bad error message. Something is wrong here.<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I trace rtld using sparc-rtems4.11-gdb.<br>
In rap.c, there are two functions to do the loading ,linking and finding<br>
symbol job, dlopen foucsing on loading and resolving symbols, while<br>
dlsym returns the symbol address.<br>
</blockquote>
<br></div>
Correct.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
When debugging dlopen returns sucessfully, but "init = dlsym<br></div>
(app->handle, "*rtems*");" returns with "init=NULL".Thus rap load failed.<br>
</blockquote>
<br>
What is "*rtems*" ? Wild cards will not work.<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
In dlsym, It first try find the symbol in it's local "global_table".<br>
</blockquote>
<br></div>
Correct.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
In<br>
x.rap, It's global_table includes "hello", "w_writeln" ,"x_writeln",<br>
"y_writeln", "z_writeln", "public", "my_main". with no one matches<br></div>
"*rtems*". Then It tries to find the symbol in global symbol which maybe<div><br>
generated in rtld-gsyms.c using a hash method.However, it still can not<br>
find the    match "rtems" symbol. Thus, failed.<br>
</div></blockquote>
<br>
Oh ok I get what is happening, yes this is correct. The symbols is 'rtems' and it is a kind of 'main' for the RTEMS application. It is nothing more than that. The x.rap is a progression and I ended up testing the whole think with a waf based libbsdports that create a RAP image. I need to get this out onto a server somewhere.<div>

<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I do not know the "rtems" symbol means what. I see it is assigned to<br>
init, and then init(*, *). I am confusing  about why "rtems".<br>
<br>
</blockquote>
<br></div>
This is understandable because I failed to add the reason to the doco. As I said this is an RTEMS Application's main. I did not want to use main because this has a well known and understood use.<br>
<br>
Well done on getting this far. If you add an 'rtems' function to the x.rap and have it print something the load should work.<span><font color="#888888"><br>
<br>
Chris<br>
</font></span></blockquote></div><br></div>
</div></div></blockquote></div><br></div>