Age | Commit message (Collapse) | Author |
|
Much of the logic in the bfin/frv subdirs is FDPIC specific and not arch
specific. So start a new fdpic/ subdir to keep common things.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
We have a problem with DT_TEXTREL shared libraries on nommu machines.
The dynamic linker's strategy is to map the text segment read-only
first, then look for DT_TEXTREL, and use mprotect to change protections
if necessary. This fails on nommu, since a nommu kernel can decide to
share the memory for private read-only file mappings, and mprotect
doesn't (can't) do anything about this sharing. Existing nommu targets
apparently have no need for this, but on C6X, we may need to assign
library indices at run-time if no --dsbt-index option was passed to the
linker at build time.
Hence, the following patch, which instead of using mprotect, redoes the
mapping with PF_W set.
Signed-off-by: Bernd Schmidt <bernds@codesourcery.com>
|
|
The entry symbol is __start rather than __dl_boot. While in the past this
was silently ignored, now with common code checking the _start symbol in C
code, we end up with link errors:
ldso/ldso/ld-uClibc_so.a(ldso.oS): In function `__dl_get_ready_to_run':
ldso/ldso/ldso.c:(.text+0x2b30): undefined reference to `__start'
collect2: ld returned 1 exit status
make[1]: *** [lib/ld-uClibc.so] Error 1
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
The Blackfin port never defined elf_machine_load_address() because the one
place this code is called never matters to us. But without it, common code
likes to hit a build failure, so stub it out.
ldso/ldso/dl-startup.c: In function '_dl_start':
ldso/ldso/dl-startup.c:170: warning: implicit declaration of function 'elf_machine_load_address'
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
|
|
|
|
It is controlled by ARCH_NEEDS_BOOTSTRAP_RELOCS macro.
Signed-off-by: Jirka <olsajiri@gmail.com>
Acked-by: Carmelo Amoroso <carmelo.amoroso@st.com>
|
|
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>
|
|
|
|
|
|
|
|
|
|
exists, and move some definitions to their proper place.
|
|
L1 functions
|