[openbeosnetteam] Re: libnet fix

  • From: "Niels Reedijk" <n.reedijk@xxxxxxxxx>
  • To: <openbeosnetteam@xxxxxxxxxxxxx>
  • Date: Thu, 19 Jun 2003 08:50:12 +0200

> > Do you by any chance use an outdated version of Jam? IIRC the
original
> > port of Jam did for any reason link everything against libnet.so.
> >
> > BTW, you can pass `-d2' to jam to make it print the invoked
commands,
> > which should help to solve the problem.
> 
> While the rename of the _res symbol might fix this issue, I would
> prefere to know why this is necessary.

That would be nice.

> The BeOS R5 libnet.so has a "D" type (don't know what "D" means, but
"T"
> is export, and "U" is import)
>  symbol called _res, while our libnet.so only has a "U", that's why
the
> symbol is missing when applications
> are run (type should be "T").

According to the nm documentation, a D means that the symbol is in the
initialised data section. Our _res in res_init (where it's declared) had
a C in front of it:
        C
        The symbol is common. Common symbols are uninitialized data.
When    linking, multiple common symbols may appear with the same name.
If the  symbol is defined anywhere, the common symbols are treated as
undefined references.
Hmmmm. I need to wake up before I can think about this.

> I don't know why the ld decides to make the symbol "U" instead of "T".

I believe that's explained above.

Niels




Other related posts: