This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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]

.hidden and dso_handle on 3.1 prerelease


Hello Richard,

I've been testing the 3.1 prerelease on s390(x) and it looked quite good,
however when building a glibc with the new compiler and running the glibc
test suite, two test cases failed.  They used to work with the 3.1 branch
from two weeks ago ...

It turns out that the cause is that the dso_handle symbol in crtbegin.o
is no longer marked .hidden by the compiler.  This in turn causes the
symbol to be exported from various shared objects, which causes serious
confusion in glibc's __cxa_atexit handling (as the dynamic linker relocates
the weak dso_handle from the main executable to point to one of those
exported symbols).  Unfortunately, C++ depends on this to work properly.

The reason why dso_handle is no longer .hidden is your change to
configure that tests for a binutils date of 2002-04-04.  I was using
a 2.11.92.0.12.3 binutils version (of 2001-11-21), which used to work
fine before (at least it appeared to -- in any case the symbol was
actually hidden and not exported).

What is the reason for not using .hidden on this binutils version?
If there is really a binutils bug, should we then not rather refuse
to build the compiler at all instead of building without .hidden,
when this breaks glibc?


Mit freundlichen Gruessen / Best Regards

Ulrich Weigand

--
  Dr. Ulrich Weigand
  Linux for S/390 Design & Development
  IBM Deutschland Entwicklung GmbH, Schoenaicher Str. 220, 71032 Boeblingen
  Phone: +49-7031/16-3727   ---   Email: Ulrich.Weigand@de.ibm.com


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