- Apr 19, 2020
-
-
Ahmed Abd El Mawgood authored
This patch implements ld.so code that makes use of both .init_array and .fini_array. .init_array is fully utilized and is used in the correct manner. However .fini_array is not used yet although the function that runs .fini_array exists
-
Ahmed Abd El Mawgood authored
This patch implements tree-based data-structure for catching circular dependency where libA.so will depen on arbitrarily long chain (including zero length) of libNs.so one of which will depend on libA.so again. The main intention of this patch was merely capturing the dependency tree to prioterize which Elf's .init_array and which .fini_array should run first, but as a side effect it can capture circular dependencies as well.
-
- Apr 13, 2020
-
-
Ahmed Abd El Mawgood authored
This patch makes use of the data structures and functions impelemented in the last patch to enable RTLD debugging protocol as per SVR4
-
- Apr 07, 2020
-
-
Ahmed Abd El Mawgood authored
At least in linux kernel, assuming that a.out is an elf that is linked against relibc's own ld.so. When a user attempts `./a.out`, Linux kernel will map `./a.out`, then map `ld.so` and jump into ld.so entry point. In relibc ld.so will simply ignore the kernel mapped a.out and create its own mapping. This patch forces relic ld.so to use the already mapped `a.out` when ever possible. This would normally have slight performance improvement (especially that currently relibc doesn't map a.out but instead copy the data into empty mmaped memory). The real motivation behind this patch is while impelemnting Runtime linker debugging protocol for relibc. part of the protocol is ld.so inseting address of some ld.so managed data structure into .dynamic seciton of a.out then the debugger would check it there. The thing is that debuggers have information about the kernel loaded ./a.out and they check that one specifically which is in our case totally ignored by relibc.
-
- Mar 08, 2020
-
-
Ahmed Abd El Mawgood authored
This patch keep 2 lists, one for strong symbols and one for weak symbols. First it will check for the symbol to be resolved in the strong symbols' list, if it is not there it will then check in the weak symbol list.
-
- Mar 07, 2020
-
-
Ahmed Abd El Mawgood authored
This patch does basically two things: - First make `global` variable not public, And make it accessable via a function `get_sym`. - Isolate the procedure that collect global symbols into single function that does that and call it `collect_syms`. The motivation of this patch is the second one where this procedure is extended, thus it needs a seamless way to access those symbols
-
- Feb 29, 2020
-
-
Jeremy Soller authored
-
- Feb 24, 2020
-
-
Ahmed Abd El Mawgood authored
-
- Dec 19, 2019
-
-
Jeremy Soller authored
-
Jeremy Soller authored
-
- Dec 18, 2019
-
-
Jeremy Soller authored
-
- Dec 17, 2019
-
-
Jeremy Soller authored
-
- Dec 15, 2019
-
-
Jeremy Soller authored
-
- Dec 07, 2019
-
-
Jeremy Soller authored
-
- Dec 01, 2019
-
-
Jeremy Soller authored
-
- Aug 04, 2019
- Jul 04, 2019
-
-
- May 11, 2019
-
-
Mateusz Mikuła authored
-
- Apr 21, 2019
-
-
Jeremy Soller authored
-
jD91mZM2 authored
Just a small step along the way to reduce the massive wall of spam every time you compile. This was done partly automagically with `cargo fix`. The rest was me deleting or commenting out a bunch of variables. Hope nothing was important...
-
- Apr 15, 2019
-
-
Jeremy Soller authored
-
- Apr 14, 2019
-
-
Jeremy Soller authored
-
Jeremy Soller authored
-
Jeremy Soller authored
-
Jeremy Soller authored
-
Jeremy Soller authored
-
Jeremy Soller authored
-
- Apr 13, 2019
-
-
Jeremy Soller authored
-