File files/EDLF64.draft changed (mode: 100644) (index dcc927f..4e7ced1) |
... |
... |
EDLF64_LIBRARY_PATH environment variable to lookup for EDLF64 dynamic libraries: |
71 |
71 |
ending with a 0x00 byte. Each path from EDLF64_LIBRARY_PATH is prepended to a dynamic library name. |
ending with a 0x00 byte. Each path from EDLF64_LIBRARY_PATH is prepended to a dynamic library name. |
72 |
72 |
|
|
73 |
73 |
We use the char '%' used to escape the path separator ':'. To have a '%' in path, you must double |
We use the char '%' used to escape the path separator ':'. To have a '%' in path, you must double |
74 |
|
the %, "%%", and to have a ':' in a path not being interpreted as a separator, use "%:". "::" means |
|
75 |
|
an empty path, usually the current working directory at the time of the lookup. Any invalid |
|
|
74 |
|
the '%', "%%", and to have a ':' in a path not being interpreted as a separator, use "%:". "::" |
|
75 |
|
means an empty path, usually the current working directory at the time of the lookup. Any invalid |
76 |
76 |
combination of '%' with a non handled char ('%' or ':') will result in the path being skiped. |
combination of '%' with a non handled char ('%' or ':') will result in the path being skiped. |
77 |
77 |
==================================================================================================== |
==================================================================================================== |
78 |
|
Prototype of process_entry function, WARNING, there is no stack, those must be passed in registers. |
|
79 |
|
This is, very probably, not a classic ABI function call. |
|
|
78 |
|
Prototype of the process_entry function, WARNING, there is no stack, those must be passed in |
|
79 |
|
registers. This is, very probably, not a classic ABI function call. |
80 |
80 |
|
|
81 |
81 |
void process_entry( |
void process_entry( |
82 |
82 |
void *process_info, /* Virtual address */ |
void *process_info, /* Virtual address */ |
|
... |
... |
links were resolved in this pathname). Namely, without mounted /proc, the execut |
107 |
107 |
private method to lookup for its private dynamic libraries (similar to ELF LD_ORIGIN environment |
private method to lookup for its private dynamic libraries (similar to ELF LD_ORIGIN environment |
108 |
108 |
variable). |
variable). |
109 |
109 |
==================================================================================================== |
==================================================================================================== |
110 |
|
C prototype of resolve function: |
|
|
110 |
|
C prototype of the resolve function: |
111 |
111 |
|
|
112 |
112 |
uint64_t resolve( |
uint64_t resolve( |
113 |
113 |
/*INPUT*/ uint64_t *symbol_id, |
/*INPUT*/ uint64_t *symbol_id, |
114 |
114 |
/*OUTPUT*/ void **symbol_virtual_address); |
/*OUTPUT*/ void **symbol_virtual_address); |
115 |
115 |
|
|
116 |
|
Only one thread can use the resolve function at a time. Entry must be guarded by the reentrancy |
|
117 |
|
lock mechanism. |
|
|
116 |
|
Entry must be guarded by the reentrancy lock mechanism. |
118 |
117 |
|
|
119 |
118 |
symbol_id is a 64bits unique value identifying a symbol (similar to kernel syscalls). Like kernel |
symbol_id is a 64bits unique value identifying a symbol (similar to kernel syscalls). Like kernel |
120 |
119 |
syscalls, those symbol ids must be _EXTREMELY_ stable in time. |
syscalls, those symbol ids must be _EXTREMELY_ stable in time. |
|
... |
... |
Example C prototype of a basic init function: |
140 |
139 |
|
|
141 |
140 |
The process_info here may be a variant from the one provided by the kernel to process_entry. |
The process_info here may be a variant from the one provided by the kernel to process_entry. |
142 |
141 |
Pathname is a pointer on the pathname used to load this edlf64 file. If successful, it should return |
Pathname is a pointer on the pathname used to load this edlf64 file. If successful, it should return |
143 |
|
0. Do not expect process_info to stay in memory after the call. On x64/x86_64 with the SYSV ABI, if |
|
144 |
|
going with more than 6 parameters, just init a transient structure to pass the whole data to work |
|
145 |
|
around some ABI kludge. |
|
|
142 |
|
0. Do not expect process_info to stay in memory after the call, neither pathname. On x64/x86_64 with |
|
143 |
|
the SYSV ABI, if going with more than 6 parameters, just init a transient structure to pass the |
|
144 |
|
whole data to work around some ABI kludge. |
146 |
145 |
|
|
147 |
146 |
Alternative C prototype of a basic init function: |
Alternative C prototype of a basic init function: |
148 |
147 |
uint64_t init( |
uint64_t init( |
File x64/elf/glibc.sh changed (mode: 100755) (index 2ae81a0..713fba4) |
1 |
1 |
#!/bin/sh |
#!/bin/sh |
2 |
2 |
|
|
3 |
|
# The glibc is lost. With the help of the ELF design failures, their manic abuse of GNU versioning, |
|
4 |
|
# mandating a recent gcc compiler... actually many recent gnu only tools, this is just a text-book |
|
5 |
|
# case of planned obsolescence. |
|
|
3 |
|
# The glibc is lost. With the help of the ELF design failures, their manic abuse of gnu symbol |
|
4 |
|
# versioning, mandating a recent gcc compiler... actually some recent gnu only tools, this is just a |
|
5 |
|
# text-book case of planned obsolescence. There is also the libs still requiring static loading |
|
6 |
|
# because of the ELF static TLS flag (not fixed already?). Some glibc objects which are statically |
|
7 |
|
# linked into binaries which require specific gnu symbol versions in the shared glibc libs. |
6 |
8 |
|
|
7 |
9 |
# In the end, you don't really have more freedom than with msft windows. At least it has the decency |
# In the end, you don't really have more freedom than with msft windows. At least it has the decency |
8 |
|
# to cost 0 and nobody should be paid for that work. If anybody is, this is a scam. |
|
|
10 |
|
# to cost 0 and nobody should be paid for that work or even worse, pay for it. If anybody is, this |
|
11 |
|
# is a scam. |
9 |
12 |
|
|
10 |
13 |
# Downgraded to obsolete/scam and should be replaced. |
# Downgraded to obsolete/scam and should be replaced. |
11 |
14 |
|
|