Need ld.so help
I discovered the problem I am having with the embedded 8xx processors and cache is that there are several assumptions about cache block size in various functions. The 8xx processors have a 4 word (16 byte) cache line while other PPCs have a 8 word line. This causes problems when trying to flush and invalidate caches.
One place this is done is dynamic linking functions of ld.so, where it is assumed a cache line is 8 words. Unfortunately, I have been unable to build ld.so from the glibc SRPM. I am using the 961212-1h SRPM from the linuxppc.org server, and the appropriate egcs and binutils. All of the other libraries I build from this SRPM are fine. From looking at the RPM of the same version, all of the resulting *.so files appear to be nearly identical, except for ld.so which is much larger than found in the RPM.
The details....I have tracked it down to the elf_get_dynamic_info() function, called from _dl_start(). The failure occurs following the 'while' loop. It appears info[DT_RELA] is OK, or at least not NULL. However, info[DT_RELAENT] is NULL, causing the program to segfault at this point.
I don't understand enough about the libraries to know where to look from here, so I need some help :-)
Oh yeah, the SRPM didn't build quite right. I had to hand patch stdlib/exit.c.....
Thanks.
-- Dan
[[ This message was sent via the linuxppc-dev mailing list. Replies are ]] [[ not forced back to the list, so be sure to Cc linuxppc-dev if your ]] [[ reply is of general interest. To unsubscribe from linuxppc-dev, send ]] [[ the message 'unsubscribe' to [email protected] ]]
Quoted 24 lines · On 27-Dec-98 Dan Malek wrote:
I discovered the problem I am having with the embedded 8xx processors and cache is that there are several assumptions about cache block size in various functions. The 8xx processors have a 4 word (16 byte) cache line while other PPCs have a 8 word line. This causes problems when trying to flush and invalidate caches.
One place this is done is dynamic linking functions of ld.so, where it is assumed a cache line is 8 words. Unfortunately, I have been unable to build ld.so from the glibc SRPM. I am using the 961212-1h SRPM from the linuxppc.org server, and the appropriate egcs and binutils. All of the other libraries I build from this SRPM are fine. From looking at the RPM of the same version, all of the resulting *.so files appear to be nearly identical, except for ld.so which is much larger than found in the RPM.
The details....I have tracked it down to the
elf_get_dynamic_info()function, called from_dl_start(). The failure occurs following the 'while' loop. It appears info[DT_RELA] is OK, or at least not NULL. However, info[DT_RELAENT] is NULL, causing the program to segfault at this point.
Quoted 6 lines
I don't understand enough about the libraries to know where to look from here, so I need some help :-)
Oh yeah, the SRPM didn't build quite right. I had to hand patch
stdlib/exit.c.....
I'm confused. Are all of these problems attributable to the cache-line size stuff? Or are there other problems?
I [obviously] build the libraries directly from the SRPMS, so I'd like to understand what your problems are.
Which software pieces are you running?
EGCS?
BINUTILS?
GLIBC?
Kernel?
------------------------------------------------------------------------
Gary Thomas | email: [email protected] | "Fine wine is a necessity of ... opinions expressed here are mine | life for me" and no one else would claim them! | | Thomas Jefferson
------------------------------------------------------------------------
[[ This message was sent via the linuxppc-dev mailing list. Replies are ]] [[ not forced back to the list, so be sure to Cc linuxppc-dev if your ]] [[ reply is of general interest. To unsubscribe from linuxppc-dev, send ]] [[ the message 'unsubscribe' to [email protected] ]]