This is the mail archive of the mailing list for the binutils project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

mipsel-linux and --export-dynamic

Hi there,

I've compiled binutils 2.15 on an Intel Linux platform with a target of mipsel-linux ("./configure --target=mipsel-linux"). I am using this build to link objects generated by a cross-plattform GCC. My problem is that all external symbols end up in the dynamic symbol table (verified with "objdump --dynamic-syms"), although I do not pass "--export-dynamic" to the linker.

The problem with this is that I have an executable and shared objects loaded by this executable that have conflicting symbols, i.e. some symbols appear in the executable as well as in the shared objects. So, if an external variable "x" appears in the executable and in a shared object, both access the same memory location. I would, however, prefer everyone to have his own copy of "x". (Because otherwise the program crashes. :-D)

Working around the problem by renaming the symbols in the shared objects or the executable to remove the overlaps or making the affected variables static would be possible in my case. However, I'd prefer the linker to behave as expected. Or is there something that I am missing?

If this is not a known issue, I'll be happy to try to reproduce this with the latest binutils CVS version.

Would it also make sense to try to reproduce this with the latest CVS version of GCC? I don't know much about ELF, but a symbol is a symbol is a symbol, isn't it? So the GCC version shouldn't have any impact on this problem, should it?

Thanks for your time

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]