History log of /haiku/src/system/runtime_loader/arch/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
b1ec65fc 04-Apr-2019 PulkoMandy <pulkomandy@pulkomandy.tk>

sparc: link the runtime_loader

Change-Id: Id30476480f4e4141935d6735209ecc0872dd6696
Reviewed-on: https://review.haiku-os.org/c/1367
Reviewed-by: waddlesplash <waddlesplash@gmail.com>

e8f58ba4 28-Mar-2019 PulkoMandy <pulkomandy@pulkomandy.tk>

sparc: fix bootloader build

- Add various missing jamfiles
- Add required implementation stubs
- Update openfirmware jamfiles for multiboot support
- Update linker rules for sparc loader

Change-Id: I2d06c7a4d33827f58d82946687003f9a0dcb1b7d
Reviewed-on: https://review.haiku-os.org/c/1329
Reviewed-by: waddlesplash <waddlesplash@gmail.com>

c59cde3d 03-Apr-2019 Alexander von Gluck IV <kallisti5@unixzen.com>

riscv32: Drop any remaining mentions

* I added this early on, but to be honest, any interesting
workstation class hardware would be riscv64.
* Since riscv32 is mostly embedded or low power, just drop.

Change-Id: Id36274c882c46e766268f2ab53eb1bd5f95227be
Reviewed-on: https://review.haiku-os.org/c/1352
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>

c085f386 18-Mar-2019 Alexander von Gluck IV <kallisti5@unixzen.com>

riscv64: Fill in more bulk architecture items around libroot/kernel

Change-Id: Ia2a86d8814d06950ea2d2d19d966c642d26f81d6
Reviewed-on: https://review.haiku-os.org/c/1302
Reviewed-by: Alex von Gluck IV <kallisti5@unixzen.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>

7dcd941d 05-Dec-2018 Alexander von Gluck IV <kallisti5@unixzen.com>

riscv32/64: Stub out some core architecture code

Change-Id: I437dff816e87ec5692cca0aaacaada27b43089ee

ee692b38 06-Aug-2018 Jérôme Duval <jerome.duval@gmail.com>

x86_64: R_X86_64_PC32 and R_X86_64_DTPOFF32 are 32-bit wide relocations.

Change-Id: I9c4e6c5ae77f4c17c2b6901f2b133db4b9dc48e3
Reviewed-on: https://review.haiku-os.org/445
Reviewed-by: waddlesplash <waddlesplash@gmail.com>

2aaad308 02-May-2018 Jérôme Duval <jerome.duval@gmail.com>

runtime_loader: enable elf32 on x86_64, elf64 on x86.

use x86 as default sSearchPathSubDir in compatibility mode.
use the generic memset/memcpy when x86_64 is the primary arch.

Change-Id: Ib464c308ff97f7ae2482ef4c037de1b1bb2bf61b

4bd0c106 25-Feb-2018 Jérôme Duval <jerome.duval@gmail.com>

runtime_loader: add hybrid support.

75c31ae2 26-Oct-2015 Simon South <ssouth@simonsouth.com>

system: Build using public elf.h header

Reduce duplication of code by

* Removing from elf_common.h definitions available in os/kernel/elf.h
* Deleting elf32.h and elf64.h
* Renaming elf_common.h to elf_private.h
* Updating source to build using public and private ELF header files

Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>

d3b1caa6 25-Aug-2014 Paweł Dziepak <pdziepak@quarnos.org>

kernel, libroot: use C++11 atomics in atomic_*()

The less assembler in our sources the better. These functions wouldn't
be used very much since SupportDef.h inlines them, but the symbols should
be available.

Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>

df58e6a9 03-May-2014 Pawel Dziepak <pdziepak@quarnos.org>

runtime_loader: support linking TLS symbols from any DSO

Previously TLS_DTPMOD relocation blindly returned ID of the current DSO.
This patch does proper symbol lookup if there is a symbol assigned to the
relocation and uses ID of the DSO in which the symbol is defined.

44c0c4d3 03-May-2014 Pawel Dziepak <pdziepak@quarnos.org>

runtime_loader: add support for ELF based TLS

This patch introduces support of ELF based TLS handling with lazy allocation
and initalization of TLS block for each DSO and thread. The implementation
generally follows the official ABI except that generation counter in dtv
is in fact a pointer to Generation object that contains both generation
counter and size of the dtv. That simplified the implementation a bit, but
could be changed later. The ABI requirements regariding in memory position
of TLS block is not honoured what results in static TLS model being
unsupported. However, that should not be a problem as long as
"executables" in Haiku are in fact shared objects and optimizations which
require specific TLS block in memory layout are not possible anyway.

9fc69d1b 12-Jan-2014 Jonathan Schleifer <js@webkeks.org>

runtime_loader: Add __dso_handle.

The symbol is needed for global objects. Usually, GCC also requires
this, but for some reason, the linking error only occurs when using

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>

b0944c78 01-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

More work towards hybrid support

* All packaging architecture dependent variables do now have a
respective suffix and are set up for each configured packaging
architecture, save for the kernel and boot loader variables, which
are still only set up for the primary architecture.
and TARGET_LIBSTDC++ are set to the respective values for the primary
packaging architecture by default.
* Introduce a set of MultiArch* rules to help with building targets for
multiple packaging architectures. Generally the respective targets are
(additionally) gristed with the packaging architecture. For libraries
the additional grist is usually omitted for the primary architecture
(e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that
Jamfiles for targets built only for the primary architecture don't
need to be changed.
* Add multi-arch build support for all targets needed for the stage 1
cross devel package as well as for libbe (untested).

2beda3bb 22-Nov-2012 Ithamar R. Adema <ithamar@upgrade-android.com>

ARM/runtime_loader: add stub to make it compile

12b3e8a8 28-Jul-2012 Alex Smith <alex@alex-smith.me.uk>

Support x86_64 in the runtime loader.

* Added x86_64 linker script and relocation code.
* Some 64-bit safety fixes to the heap code.
* Added runtime_loader, libroot and bash to the x86_64 image. The boot
script will be launched, but will panic shortly after because fork
is broken.

25dc253d 22-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Merged weak-symbols branch.
* Fixed trivial merge conflict in src/system/libroot/posix/locale/nl_langinfo.cpp
* Fixed gcc 2 compilation of src/system/glue/init_term_dyn.c.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39571 a95241bf-73f2-0310-859d-f6bbb57e9c96

3d649765 05-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

The TRACE() macro is defined in runtime_loader_private.h.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39315 a95241bf-73f2-0310-859d-f6bbb57e9c96

258b34c5 30-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Fixed wrong parameter of lazy_mutex_destroy().
* Split locks.cpp into mutex.cpp, recursive_lock.cpp, and rw_lock.cpp (new
subdirectory locks/).
* runtime_loader no longer includes the rw_lock, allowing removal of the TLS
dependency again.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34364 a95241bf-73f2-0310-859d-f6bbb57e9c96

f6379d41 29-Nov-2009 Jérôme Duval <korli@users.berlios.de>

added tls.o to runtimeloader. It linked successfully on x86 because of inlining.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34360 a95241bf-73f2-0310-859d-f6bbb57e9c96

1fcdc256 12-Jun-2009 François Revol <revol@free.fr>

Fix build due to stricter type checking in C++ than C.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31021 a95241bf-73f2-0310-859d-f6bbb57e9c96

003ebb0e 19-May-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Also define the build system variables TARGET_STATIC_{LIBSTDC++,LIBSUPC++}.
* runtime loader:
- Fixed gcc 4 warnings.
- Enabled -Werror.
- Renamed all remaining *.c source files to *.cpp.
- Implemented GNU style ELF symbol versioning support.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30806 a95241bf-73f2-0310-859d-f6bbb57e9c96

b18c9b97 10-Oct-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Implemented x86 assembly version of memset().
* memset() is now available through the commpage.
* CPU modules can provide a model-optimized memset().

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27952 a95241bf-73f2-0310-859d-f6bbb57e9c96

379ad6d0 09-Oct-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Moved the arch specific stuff in src/system/kernel/lib into arch/...
subdirectories. Also moved the x86 kernel arch_string.S there.
* Moved memcpy.c from src/system/libroot/posix/string into the
arch/generic subdirectory.
* Dealt with the consequences of moving things around. Affected are also
the boot loader and runtime loader builds.

Adjust the m68k and ppc parts, too, but only the x86 build is tested.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27947 a95241bf-73f2-0310-859d-f6bbb57e9c96

7e60c269 23-Jun-2008 François Revol <revol@free.fr>

m68k runtime loader code, not sure it works.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26103 a95241bf-73f2-0310-859d-f6bbb57e9c96

46f4d849 01-Jun-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Got rid of sLoadingImages. It was always empty.
* The previous symbol resolution code was incorrect. It would search all
loaded images in the order they had been loaded. Thus an add-on would
possibly see a symbol of an earlier loaded add-on. Now we search
recursively starting with the respective root image (executable or
* Added BeOS style symbol resolution and made it the default. A symbol
undefined in an image is only searched in its direct dependencies.
Fixes bug #889 (BeOS apps crashing under Haiku when opening a file

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21290 a95241bf-73f2-0310-859d-f6bbb57e9c96

0cd3c003 26-Jun-2006 Axel Dörfler <axeld@pinc-software.de>

While investigating how our deals with doubled shared libs, I found two
* Our glue code was broken after all - it allowed Haiku apps to start under
BeOS (and vice versa), but the initialization/termination functions were
called with an invalid image ID - on *both* sides! As it turns out, the
Be glue code did *something* with %ebx, but certainly didn't put the image
ID in there, but just passed it on the stack, as we did before (just in
the wrong order...). Therefore, the arch_call_init_term stuff is not
* When unloading add-ons, their termination functions were never called, as
the image (for get_image_symbol()) was already made inaccessible, and
therefore the symbol couldn't be found.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17928 a95241bf-73f2-0310-859d-f6bbb57e9c96

76cd9b19 30-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Renamed runtime loader source files.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16935 a95241bf-73f2-0310-859d-f6bbb57e9c96

bae7848e 16-Jan-2006 Ingo Weinhold <ingo_weinhold@gmx.de>

We were trashing non-volatile register ebx in the arch_call_{init,term}()
functions. Weird things could happen due to that. E.g. application crashes when
unloading add-ons.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15994 a95241bf-73f2-0310-859d-f6bbb57e9c96

1005ea4b 07-Jan-2006 Ingo Weinhold <ingo_weinhold@gmx.de>

Fixed PPC build.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15857 a95241bf-73f2-0310-859d-f6bbb57e9c96

34a95562 05-Jan-2006 Stephan Aßmus <superstippi@gmx.de>

Made our glue code compatible to BeOS again. IOW executables compiled for Haiku will
now run under BeOS as well (as long as they don't use any functions that are not
available under R5).
The solution is a bit messy, but we have to live with it :-)
The runtime loader now patches the __gRuntimeLoader symbol in libroot.so to point
to its exported structure instead of passing it to the init functions as an
(Hax0red by axeld and bonefish on stippi's assimilated machine -- resistence is futile)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15848 a95241bf-73f2-0310-859d-f6bbb57e9c96

9cc1e772 16-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

More debug output.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14963 a95241bf-73f2-0310-859d-f6bbb57e9c96

5af32e75 13-Apr-2005 Axel Dörfler <axeld@pinc-software.de>

Renamed src/kernel to src/system.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12359 a95241bf-73f2-0310-859d-f6bbb57e9c96