Age | Commit message (Collapse) | Author |
|
lib loader to make it more obvious what is wrong when things puke
early on in the process.
-Erik
|
|
some other minor warnings.
|
|
|
|
under the LGPL. I noticed Steven J. Hill has accidentally changed the license
to be GPL. Per email with him, change it back to LGPL.
Erik Andersen wrote:
>I just noticed that uClibc/ldso/ldso/mips/resolve.S is
>listed as licensed under the GPL, rather than the LGPL
>like the rest of uClibc. Accident?
>
Yes. Feel free to change it.
|
|
|
|
type of 'struct stat' and 'struct stat64' so they use consistant types.
This change is the result of a bug I found while trying to use GNU tar. The
problem was caused by our using kernel types within struct stat and trying to
directly compare these values with standard types. Trying an 'if (a < b)' when
'a' is an 'unsigned long' and 'b' is an 'int' leads to very different results
then when comparing entities of the same type (i.e. time_t values)....
Grumble. Nasty stuff, but I'm glad I got this out of the way now.
As a result of this fix, uClibc 0.9.17 will not be binary compatible with
earlier releases. I have always warned people this can and will happen.
-Erik
|
|
dlopen and have it be successful. This required moving some
things out of ldso.c into readelflib1.c, and directly including
hash.c and readelflib1.c into dlib.c when building the static
version of the library.
-Erik
|
|
linked stuff, so put it back but add a check for NULL
|
|
|
|
|
|
- Invert all FORCE_SHAREABLE_TEXT_SEGMENTS checks.
- Define FORCE_SHAREABLE_TEXT_SEGMENTS in the Makefile,
so it can be configured by the config system.
- linuxelf.h inspects that we don't combine FORCE_SHAREABLE_TEXT_SEGMENTS
and SVR4_BUGCOMPAT
- Add a new config option for FORCE_SHAREABLE_TEXT_SEGMENTS
|
|
the more clear FORCE_SHAREABLE_TEXT_SEGMENTS.
|
|
I fixed two little bugs in ldso.c:
- For LDD support we test the old environment variable
LD_TRACE_LOADED_OBJECTS.
- Before we init the GOT table of the dynamic loader
we have to check, if we have a DT_PLTGOT entry.
If DT_PLTGOT was zero we patch somthing in the header
of the dynamic loader. This was the cause, why we have to
enable the DO_MPROTECT_HACKS option for all targets, to avoid
segment faults.
In readelflib1.c I added a warning, if we try to load a shared library, which
wasn't compiled with -fPIC or -fpic. So if we disable the DO_MPROTECT_HACKS
option we are sure, that we don't waste memory by shared libraries which
aren't able to share their text segment. I think this is a helpful option on
little embedded systems.
|
|
-Erik
|
|
Ok, now i got it after a day of work.
I have had a look into glibc and found the following:
sysdeps/powerpc/dl-machine.c:
...
case R_PPC_JMP_SLOT:
/* It used to be that elf_machine_fixup_plt was used here,
but that doesn't work when ld.so relocates itself
for the second time. On the bright side, there's
no need to worry about thread-safety here. */
{
Elf32_Sword delta = finaladdr - (Elf32_Word) reloc_addr;
...
The comment made me suspicious. The same position in uClibc looks like this:
ldso/ldso/powerpc/elfinterp.c:
...
case R_PPC_JMP_SLOT:
{
unsigned long targ_addr = (unsigned long)_dl_linux_resolve;
int delta = targ_addr - (unsigned long)reloc_addr;
...
When I change it to the following it works:
...
case R_PPC_JMP_SLOT:
{
unsigned long targ_addr = *reloc_addr;
int delta = targ_addr - (unsigned long)reloc_addr;
...
I hope it will not break anything. Can anyone review this change and
commit it into CVS?
thanks,
ron
|
|
this is the last patch, we need to make the support of multitarget libgcc
complete.
---------------------------------
In ldso/ldso/Makefile
I added the CPU_LDFLAGS-y to the LDFLAGS
---------------------------------
In libc/Makefile
I set the LDFLAGS for the script get-needed-objects.sh with CPU_LDFLAGS-y
---------------------------------
In extra/scripts/get-needed-object.sh
we now use the LIBGCC from Rules.mak and call LD with LDFLAGS
(==CPU_LDFLAGS-y). Addtionally I grep the NM output, to fix the unresolved
external __GLOBAL_OFFSET_TABLE__ on SuperH targets.
---------------------------------
|
|
|
|
the SuperH lib loader can be compiled by GCC 3.3
|
|
|
|
|
|
Move all configuration options into the new config system.
-Erik
|
|
|
|
and "M. R. Brown" <mrbrown@0xd6.org>
|
|
"depreciated multi-line string literals" warnings
|
|
-Erik
|
|
been working on a new config system on and off for about 6 months
now, but I've never been fully satisfied. Well, I'm finally am
happy with the new config system, so here it is. This completely
removes the old uClibc configuration system, and replaces it with
an entirely new system based on LinuxKernelConf, from
http://www.xs4all.nl/~zippel/lc/
As it turns out, Linus has just merged LinuxKernelConf into Linux
2.5.45, so it looks like I made the right choice.
I have thus far updated only x86. I'll be updating the other
architectures shortly.
-Erik
|
|
how uClibc handles _init and _fini, allowing shared lib constructors and
destructors to initialize things in the correct sequence. Stefan ported the SH
architecture. I then ported x86, arm, and mips. x86 and arm are working fine,
but I don't think I quite got things correct for mips.
|
|
instead.
|
|
* Do not clobber things that are specified as outputs.
|
|
|
|
|
|
|
|
<tero@paravant.fi>
|
|
-Erik
|
|
|
|
-Erik
|
|
loader build properly. Mostly just sprinkling casts, and making
static some things that should be static.
|
|
-Erik
|
|
-Erik
|
|
not previously linking vs libgcc
-Erik
|
|
|
|
-Erik
|
|
-Erik
|
|
-Erik
|
|
shared library support. This also adds some cleaner error
handling, which I (Erik) then ported over to x86 and arm.
In addition Stefan added the following fixes:
- in hash.c was the lvalue handling of global library functions wrong.
To fix this I had to change the prototype of _dl_find_hash. (==> TIS and
ELF spec. Vers. 1.2)
- in ldso.c was the order of the .init sections calls wrong. Before we call
the initialization code of a library we have to check that all dependend
libraries are already initialized. This can easily made by calling it in the
revers loading order. For this I added a previous pointer chain.
- in ldso.c the ELF magics wasn't checked fo PPC, MIPS and SH architecture
|
|
-Erik
|
|
|
|
the ldso specific syscalls and use the generic ones instead.
-Erik
|
|
-Erik
|
|
-Erik
|