This is the mail archive of the binutils@sources.redhat.com 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]

Re: RFH: libgcc_s.so being unnecessarily linked for mipsel-linux crosscompiler...


dank@kegel.com wrote:
ddaney wrote:

I have a a mipsel-linux cross compiler (gcc-3.4.3/binutils-2.16.1)
and whenever I compile even the simplest hello-world.c libgcc_s.so is

linked.



Just curious -- how did you build your cross-compiler?

I have a bunch of rpm build scripts, but they pretty much just do a standard configure and make.


I never do a clean build of glibc and gcc in the same pass so I don't have the chicken and egg glibc header file problem.

Do toolchains built by crosstool have this problem?

I have not checked, but I suspect so.


The problem is in the linker. I am trying to fix it, but ld is an ugly beast.

It seems that the linker thinks that any shared object that references the magic _gp_disp symbol actually provides it. Since all mips objects reference _gp_disp, ld thinks that all shared objects are required to resolve all the other _gp_disp references. This causes all shared objects specified with --as-needed to be deemed needed and get a DT_NEEDED entry.

The linker automagically resolves _gp_disp so this symbol should not cause a shared library to be needed.

I hope that makes at least a little sense.

I suspect that the problem is mips specific as _gp_disp handling is mips specific.

David Daney


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