summaryrefslogtreecommitdiffstats
path: root/ldso
Commit message (Collapse)AuthorAgeFilesLines
* Joakim Tjernlund writes:Eric Andersen2003-11-131-10/+11
| | | | | | | | | | | | | | | | | | | I think I messed up a little in my latest patch to Erik. Can you try this on top of CVS(which I think you have already) Jocke And later writes: Hi Erik I just saw something that might be a problem. The "delta" variable is signed and the "delta" calculations, such as delta = PLT_LONGBRANCH_ENTRY_WORDS*4 - (insn_addr-plt_addr+4), are supposed to be unsigned. Jocke
* It seems that the powerpc ldso doesn't like -O0Eric Andersen2003-11-111-1/+7
|
* Joakim Tjernlund writes:Eric Andersen2003-11-111-7/+9
| | | | | | | | | | | | Comparing glibc with uClibc makes me think that the delta calculations are wrong here. Comparing some more I still think there are a data_words[index] assignments missing. Here is a path that has both the data_words[index] and the above delta calclations. This also fixes a terribly obvious bug, also spotted by Joakim, which Erik introduced when he copied things from the i386 ldso code. With this patch applied, things now seem to be working perfectly!
* Another cleanup patch from Joakim Tjernlund:Eric Andersen2003-11-111-12/+10
| | | | | | | Hi again Back at work. Here is a patch that fixes the 2 errors I found yesterday. I have excluded the "data_words[index]" part for now.
* Sigh. I can't type this morning.Eric Andersen2003-11-082-2/+2
|
* Joakim Tjernlund writes:Eric Andersen2003-11-082-4/+6
| | | | | Oops, found another ppc 8xx bug. 8xx CPUs may need this as well to work:
* Joakim Tjernlund writes:Eric Andersen2003-11-081-2/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > Very interesting. Do you have any suggestions for how > we could fix our powerpc shared library loader Removing those instr. comes with a very big performance penalty. To flush the dcache you will have read up to 8KB dummy data and to invalidate the icache you will have to execute up to 16KB nops. I don't know of any other way from user space. hmm, actually I think it will work reliable to perform a store to the same page(s) as the dcbst/icbi will act on. That way you will make the DTLB Error happen(if any) prior to the dcbst/icbi. The worst thing that can happen then is a regular DTLB Miss and that works for dcbst/icbi. You will have to lookout for if dcbst/icbi crosses a page boundary. Then you will have to perform a store to both pages. Jocke # And again later writes: Hi again I think I know what the problem is. The PPC_DCBST;PPC_SYNC;PPC_ICBI;PPC_ISYNC sequence is executed even if no modification has been done i some cases: _dl_linux_resolver(), the last else has no store for insns[0]. these is a insns[1] = OPCODE_B(delta - 4) that does not have a PPC_DCBST. _dl_do_lazy_reloc(), for R_PPC_NONE there is no store. for R_PPC_JMP_SLOT there is a insns[1] = OPCODE_B(delta)that does not have a PPC_DCBST. _dl_do_reloc(), for R_PPC_COPY there is no store. for R_PPC_JMP_SLOT there is a reloc_addr[1] = OPCODE_B(delta) that does not have a PPC_DCBST. _dl_init_got(), I THINK that the PPC_DCBST(plt); PPC_DCBST(plt+4); PPC_DCBST(plt+8); PPC_SYNC; PPC_ICBI(plt); PPC_ICBI(plt+4); PPC_ICBI(plt+8); PPC_ISYNC; is off a bit. The address range does not match the sum of the plt[] and tramp[] address range. Jocke # And then later added the comment: I think that the tramp[] part should be included in the PPC_DCBST/PPC_ICBI sequence. Then you have to add entries for plt+12 and plt+16. If the tramp[] part should be excluded, then all is well. Jocke
* Begin converting the client utilsEric Andersen2003-11-0610-2247/+2
|
* Revert change 1.26, which breaks everything. :-(Eric Andersen2003-11-061-2/+3
|
* A few debugging cleanupsEric Andersen2003-11-061-6/+14
|
* Fix a misnamed arrayEric Andersen2003-11-051-7/+1
|
* tiny cleanupEric Andersen2003-11-051-3/+2
|
* Rework the powerpc lib loader to better match the other architecturesEric Andersen2003-11-051-331/+328
|
* Fix a buglet that shows up on powerpcEric Andersen2003-11-052-4/+4
|
* Rework the config system. Better utilize the Kconfig languageEric Andersen2003-11-049-58/+32
| | | | | which should simplify enabling arbitrary architectures. -Erik
* Some more soft float fixes... for arm in particular (libfloat).Manuel Novoa III2003-10-311-3/+3
| | | | | | Remove the ADD_LIBGCC_FUNCTIONS option and do things the right way. Either we have a shared libgcc available, or the libgcc routines aren't PIC and don't belong in the shared libc anyway.
* Peter Kjellerstedt writes:Eric Andersen2003-10-184-8/+8
| | | | | | | | | | ln.patch: * Define $(LN) as ln in Rules.mak. * Change all occurrences of ln into $(LN). * Change all constructs like (cd path && ln -sf foo/file file) into $(LN) -sf foo/file path/file. The latter construct is already used in a number of places so it should not be an additional compatibility problem.
* Peter Kjellerstedt writes:Eric Andersen2003-10-185-11/+10
| | | | | | | rm.patch: * Define $(RM) as rm -f in Rules.mak and test/Rules.mak (this is the same definition as gmake uses by default). * Change all occurrences of rm and rm -f into $(RM).
* Peter Kjellerstedt writes:Eric Andersen2003-10-182-6/+6
| | | | | | | | | install.patch: * Define $(INSTALL) as install in Rules.mak. * Change all occurrences of install into $(INSTALL). * Change all occurrences of mkdir -p into $(INSTALL) -d. install -d is already used in a number of places so this should not be an additional compatibility problem.
* Doh! I was returning with an incorrect pointer type when dlopeningEric Andersen2003-10-152-14/+14
| | | | | | already loaded libs, which unsurprisingly would cause dlsym() to not work at all... -Erik
* Enable full debug support for ld-uClibc and libdlEric Andersen2003-10-142-0/+18
|
* sigh. the warn funcs seem to be broken. Use local versionsEric Andersen2003-10-131-17/+71
| | | | till I can straighten that out.
* Fix an ldd bug, more ldconfig cleanupEric Andersen2003-10-132-264/+287
|
* Always build and install ldconfigEric Andersen2003-10-125-94/+85
|
* move the test for loading the wrong C library into theEric Andersen2003-10-092-32/+52
| | | | _dl_check_if_named_library_is_loaded function
* When someone would dlopen a shared lib that was already opened,Eric Andersen2003-10-092-24/+28
| | | | | | | | | we would try to re-fixup the lib's relocations with rather horrible results. So fix that by checking the the dlopened lib has already had its init functions called, which will never be the case for newly loaded libs, and skip the rest in that case. also apply a few minor fixups
* Fix a stupid bug causing 'ldd' output to not contain the fullEric Andersen2003-10-041-2/+1
| | | | path to the target library
* Don't forget addend on relocations + minor other fixes.Tobias Anderberg2003-09-301-3/+11
|
* Fix SUPPORT_LD_DEBUG_EARLY on powerpcEric Andersen2003-09-292-2/+2
|
* * Partial re-write to match other archs and remove duplicate code.Tobias Anderberg2003-09-191-229/+226
| | | | * Assign insead of add when doing relocations.
* Corrected LD_BOOT macroTobias Anderberg2003-09-192-2/+2
|
* Initialize strings as pointers instead of arrays.Tobias Anderberg2003-09-192-4/+4
|
* Re-add cris to "define list" when fixing auxvt.Tobias Anderberg2003-09-191-1/+1
|
* Make sure we use the local copy of elf.h, since some systemEric Andersen2003-09-171-6/+9
| | | | versions are insufficient....
* Simplify an expression. Use static const on strings to avoidEric Andersen2003-09-112-12/+10
| | | | a gcc 2.95 compiler problem on powerpc.
* Stefan Allius writes:Eric Andersen2003-09-111-36/+45
| | | | | | | | | Hello, my patch changed the format of the ldso debug output to the same format as on the i386 systems. By Stefan
* Fix cris shared lib loader so it compiles...Eric Andersen2003-09-091-2/+4
|
* Arm needs this to compile with gcc 2.95Eric Andersen2003-09-092-0/+24
|
* cleanup/simplify duplicate handling.Eric Andersen2003-09-022-26/+92
|
* delete some garbage, cleanup duplicate handlingEric Andersen2003-09-021-67/+34
|
* Fix a problem with dtors/dtors.Eric Andersen2003-09-022-70/+92
|
* Weed out duplicates before trying to load libraries.... DelayedEric Andersen2003-08-315-30/+102
| | | | | checking for duplicates and returning an alias if an existing lib is already loaded is still correct for the dlopen case.
* Removed CRIS specific code.Tobias Anderberg2003-08-271-4/+0
|
* Cosmetic changes.Tobias Anderberg2003-08-275-169/+181
|
* Make the mips ld.so debug noise somewhat useful, and less gratuitouslyEric Andersen2003-08-221-35/+129
| | | | | different than all other arches. -Erik
* Remove some mips specific hacks that are no longer needed, and actively breakEric Andersen2003-08-221-31/+13
| | | | | | things, now that I have cleaned up the code to be a bit less horribly messy. With this, the shared lib loader works on mips once again. -Erik
* Be sure to remove the old ldso.h, since it will screw thingsEric Andersen2003-08-211-1/+1
| | | | up badly if still present...
* I just realized we need global symbol resolution for everything inEric Andersen2003-08-192-122/+10
| | | | | | | | | | | a chain of dependent libraries or libraries that depend on other shared libraries will not work! So with a well placed dyn_chain->flags |= RTLD_GLOBAL; everything is now working perfectly!!! Sweet!!!! This patch also removes some leftover junk from my previous efforts.
* More routine cleanupEric Andersen2003-08-191-12/+13
|
* Cool. Found most of the problem. Turns out we were inadvertanly loading someEric Andersen2003-08-1910-281/+501
| | | | | | | libraries multiple times, wasting memory and causing different libraries to use different symbol sets, some of which were not properly resolved. Continue scrubbing ld.so and converting it to use proper types.