Age | Commit message (Collapse) | Author |
|
* Store the symbol adress received from _dl_find_hash
and do not recompute it.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
relocations.
Make use of macros from sys/asm.h in crt1.S
These two changes are needed for mips nptl to boot once again.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
The TLS merge 534661b91c9849 introduced multiple style problems as well as
random breakage:
- missing _dl_free
- incomplete parametrization of _dl_lookup_hash
- restore FDPIC handling in _dl_lookup_hash
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
|
|
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
|
|
|
|
from all archs.
Signed-off-by: Jiri Olsa <olsajiri@gmail.com>
|
|
It is controlled by ARCH_NEEDS_BOOTSTRAP_RELOCS macro.
Signed-off-by: Jirka <olsajiri@gmail.com>
Acked-by: Carmelo Amoroso <carmelo.amoroso@st.com>
|
|
ldso/ldso/avr32/dl-startup.h: remove superfluous definition of START() macro.
ldso/ldso/*/dl-startup.h: fix a typo in comment
text data bss dec hex filename
- 16752 244 92 17088 42c0 lib/ld-uClibc.so
+ 16709 240 92 17041 4291 lib/ld-uClibc.so
|
|
|
|
Some powerpc machines can support 64k pages, enabled by the
CONFIG_64K_PAGES option in linux.
However, the uClibc dynamic loader won't currently work on these
machines, as it uses hard-coded values (PAGE_ALIGN, ADDR_ALIGN and
OFFS_ALIGN) in the ldso architecture-specific headers. When running on
a kernel with 64k pages, ld.so tries to mmap with 4k-aligned addresses,
rather than 64k, so mmap fails with -EINVAL.
When booting a 64k machine with a uClibc dynamic linker, init fails
with:
/init:500: can't map '/lib/libc.so.0'
/init:500: can't map '/lib/libc.so.0'
/init:500: can't map '/lib/libc.so.0'
/init: can't load library 'libc.so.0'
Kernel panic - not syncing: Attempted to kill init!
This change allows ld.so determine these alignment masks at runtime,
rather than compile-time. Since we have the _dl_pagesize variable
available, we can use that to generate the appropriate masks.
Since almost all of the architectures can use the common definitions for
the _ALIGN macros, we can consolidate them all in ldso.h, and override
in the sysdep headers where necessary (ie, mips).
This allows me to start a uClibc-based root fs on a 64k machine.
Signed-off-by: Jeremy Kerr <jk at ozlabs org>
|
|
|
|
|
|
|
|
|
|
From Atsushi Nemoto.
|
|
|
|
64bit MIPS ELF format tweaks. (from glibc)
Elf32/ElfW convertions.
asm code adjustments.
|
|
|
|
create some default macros for do_rem/do_div_10 so we dont duplicate the samething in many arch header files
|
|
|
|
|
|
specific header file to make porting/updates a lot easier
|
|
the default
|
|
|
|
|
|
syscall.h should not have it's own version of __set_errno, instead syscall.h should
include errno.h(see powerpc) since errno handling depends on threads/no threads.
I leave the the fixing of syscall.h since there might be some smaller compile problems.
|
|
dl-syscalls.h
|
|
its requirements about initial bootstrapping
|
|
|
|
|
|
the name of our mips resolver function to match gdb's expectations.
|
|
where possible. This will also make ldso smaller.
However the patch touches all archs and I have only tested PPC and x86.
|
|
|
|
execution of ldso.
Added new asm for MIPS to be tested.
All arches should retest.
|
|
|
|
|
|
Add elf_machine_dynamic() and elf_machine_load_address() for
all archs. elf_machine_dynamic() replaces the #ifdef mess to
get at the GOT. elf_machine_load_address() is needed to execute
ldso directly, this is not complete yet.
I probably broke one or two archs(only tested PPC) so please
try and report problems. For a report to be useful you need
to enable __SUPPORT_LD_DEBUG_EARLY__ and __SUPPORT_LD_DEBUG__
|
|
Mips did not honour the LD_BIND_NOW env. variable or the DT_BIND_NOW flag
in the dynamic section.
|
|
Andrew de Quincey, who has been most helpful getting this sorted
out, thanks. Thanks also to Peter Mazinger who did alot of testing.
Removed all traces of dl_parse_copy_information() since it is no longer used.
|
|
- Replace all open coded dynamic handling with a function. Reduces size.
- Fold special MIPS dynamic code into the dynamic_info item.
- Add RELRO support.
- Support linking with "-z now".
- prepare for DT_RELACOUNT/DT_RELCOUNT optimization.
- Add -z now to ld.so linking, this is what ld.so does anyway so
let the linker know that.
|
|
|
|
|
|
the whole lot in a single pass.
-Erik
|
|
only the global GOT entry relocations for the loaded shared libs were being
handled. This made applications segfault when using un-fixedup symbols. After
many hours debugging to track down the problem, this patch makes the mips port
happy again.
-Erik
|
|
Hi Manuel & Erik
I think I know why MIPS is broken. _dl_perform_mips_global_got_relocations() is
broken. It will due to my latest changes reloctate ldso. This
function needs to die and its job should be done inside _dl_parse_relocation_information().
It is mostly a copy and paste job,
Also PERFORM_BOOTSTRAP_GOT and PERFORM_BOOTSTRAP_RELOCATION should be fixed, they
use symbols which aren't passed as arguments.
Jocke
|
|
Remove unused function parameter in ldso.
Remove echo option '-e' since it is not supported on Solaris.
|
|
is needed if ldso should use libcs malloc whenever possible.
Fix RTLD_LAZY propagation to RTLD_NOW relocation when requested by
libdl.
|
|
|
|
Hi yet again :)
in dl-startup.c when performing boot strap relocation the following test
exists to make sure that only "_dl_" symbols are relocated:
/* We only do a partial dynamic linking right now. The user
is not supposed to define any symbols that start with a
'_dl', so we can do this with confidence. */
if (!symname || !_dl_symbol(symname)) {
continue;
}
However on PPC(and the other archs as well I suspect) all symbols are
"_dl_" symbols so the test is never true. The test can be removed and the
whole loop simplified(smaller). This also makes it possible to
simplify elfinterp.c
This remove the scanning of ldso.so relocs, making relocation faster.
I have tested this on PPC and it works well.
Do you think this optimization will work for the other arches as well?
I can't see why not.
Jocke
* Tested on x86, arm, mipsel, and powerpc by Erik and works nicely
-Erik
|