This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi guys, I've built a versioned glibc 2.1.3 on a NetWinder, and a kernel with a debug printk on WFS (the instruction called when __setfpucw is called). If I build static and dynamic test executables (I was using fp-cmp-1.c from the gcc testsuite), I only get a printk from WFS when the static executable is run. If I look at sysdeps/unix/sysv/linux/init-first.c, around line 70, there is a call to __setfpucw that should be executed. If I look at the the generated .o and .os files it is easy to see why it is failing. It doesn't work when dynamically linked because of the if statement included when compiling with PIC enabled. As far as I can tell __fpu_control is almost always equal to _dl_fpu_control. __fpu_control is defined and statically initialized in sysdeps/generic/fpu_control.c. It is initialized with _FPU_DEFAULT. _dl_fpu_control is defined in elf/rtld.c, and statically initialized with _FPU_DEFAULT. It is also dynamically initialized from _dl_sysdep_start in sysdeps/generic/dl-sysdep.c. The initialization is done if the flag AT_FPUCW is in the the headers in the executable. The value used is taken from the executable as well. This doesn't seem to be an ARM specific problem, but a Linux specific one. Does anyone else see the same thing on other platforms? Scott -- Scott Bambrough - Software Engineer REBEL.COM http://www.rebel.com NetWinder http://www.netwinder.org
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |