Date: Thu, 24 Apr 1997 12:36:22 +0300 From: Ruslan Shevchenko <rssh@cki.ipri.kiev.ua> To: Terry Lambert <terry@lambert.org> Cc: joerg_wunsch@uriah.heep.sax.de, freebsd-hackers@FreeBSD.ORG Subject: Re: Dynamic linking libraries [Q] Message-ID: <335F299C.843@cki.ipri.kiev.ua> References: <199704232337.QAA29885@phaeton.artisoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert wrote: > > > > Try using 'nm' instead. The error messages are static, so they can > > > be mapped in as data, since they are referenced by the mapped in code > > > in order to set up the global: > > > > > 00001670 F _exit.o > > > 000015ac T _main > > > 000020ec D _sys_errlist <************************************* > > > 000015a0 t gcc2_compiled. > > > 00001038 T start > > > > > > The marked data is from the libc for the sys_errlist[] reference. > > > > ...which actually turns out to be: > > > > j@uriah 912% gdb -q a.out > > (gdb) b main > > Breakpoint 1 at 0x160c: file foo.c, line 6. > > (gdb) run > > Starting program: /tmp/a.out > > > > Breakpoint 1, main () at foo.c:6 > > 6 printf("%s\n", sys_errlist[E2BIG]); > > (gdb) p/x sys_errlist > > $1 = 0x80624fc > > > > (Thus inside the shared lib.) > > No it's not. It's at 20ec, in the image -- and is in the data segment > of the in core image. You are dereferencing the thing. > > The compiler can not generate a post-link reference to the data in > a shared library unless it knows where the data will be mapped in > memory. > But we can do pointer to the data, which have p[ost0link reference (i.e. we have lib_cln.so, which stab to lib-manager, and lib_srv.so, which really lib) > Because shared library sizes can be changed, this is impossible > to know in advance if you are using two or more shared libraries, > since if the first one changes size, the second one may be mapped > at a different location. > > The Microsoft compiler knows to do this because of __declspec(dllimport); > the FreeBSD compiler doesn't know this because you can't tell it to > generate different code... it doesn't have "__declspec" > > Are you claiming that the image is "fixed up" for all references? > If it were, then the idea of "shared code" would go out the window. What means fixed-up ? > > Regards, > Terry Lambert > terry@lambert.org > --- > Any opinions in this posting are my own and not those of my present > or previous employers.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?335F299C.843>