Age | Commit message (Collapse) | Author |
|
The FR-V port is really broken, and I have no emulator
or hardware for this platform. I tried to get some hardware
from RedHat, who made the FR-V port initially. Unfortunately
Fujitsi didn't agreed to sent me some of their unused spare
hardware lying @RedHat. As I invested some time to get stuff compiled,
I decided to add the code and may be anytime later I can gain
access to some emulator or hardware.
GDB simulator for FR-V doesn't support booting Linux AFAIK.
|
|
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>
|
|
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>
|
|
|
|
|
|
|
|
create some default macros for do_rem/do_div_10 so we dont duplicate the samething in many arch header files
|
|
Here's an updated version of the patch I posted about a month ago. It
leaves -nostdinc alone, and uses -print-file-name=include instead of
-print-search-dirs to figure out where GCC's internal headers are.
Please let me know whether there are any portions of this patch you'd
like me to break into smaller pieces, to rework, or to give up trying
to get into uClibc :-) Thanks,
|
|
|
|
|
|
|
|
Here are a number of minor changes to FR-V-specific bits of the uClibc
port:
- I've adjusted the definition of _dl_mmap to cope with the fact that
there will be a definition for an mmap2-only system.
- We don't have COPY relocs, so optimize the copy reloc-related code
away.
- Change the page size to 16KiB, to match the ABI spec, and not a
stale value I'd copied from a linker config file. Oops.
- Fix error handling in clone and vfork; parts of the changes by David
Howells <dhowells@redhat.com>
- Rearrange includes in crtreloc.c.
- Change the API of __syscall_error, to reduce code size.
- Improve __syscall_return in terms of code size, so as to enable
tail-calling of __syscall_error, at least within libc. Ideally,
__syscall_error should be hidden within libc.so, but this didn't
work because of libdl. I haven't looked into why, and figured I'd
leave it visible for now.
- Rename enumerators and macros in sys/ucontext.h to reduce namespace
pollution.
|
|
|
|
This patch adds code to uClibc to support a new ABI designed for the
FR-V architecture, that enables text segments of executables and
shared libraries to be shared by multiple processes on an OS such as
uClinux, that can run on FR-V processors without an MMU.
Patches for binutils and GCC have just been posted in the
corresponding mailing lists. The binutils patch was approved,
but there's one additional patch pending review, that I posted
this week. An updated GCC patch will be posted to
gcc-patches@gcc.gnu.org as soon as I complete testing (I used a
known-good compiler to test the uClibc patch below).
Since the existing dynamic loader code didn't support independent
relocation of segments, it required changes that were somewhat
extensive. I've added a number of new machine-specific macros to try
to keep the platform and ABI-specific details outside the generic
code. I hope this is not a problem.
|