Conversation
End-to-End Test ReportTest PreviewTest Report Deterministic TestsSummary
Test Results by Category
Fail TestsSummary
Test Results by Category
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
…supported by wasm and caused build errors
…uilds which caused undefined symbol error for pow etc
End-to-End Test ReportTest PreviewTest Report Deterministic TestsSummary
Test Results by Category
Fail TestsSummary
Test Results by Category
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
End-to-End Test ReportTest PreviewTest Report Deterministic TestsSummary
Test Results by Category
Fail TestsSummary
Test Results by Category
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pub fn find_symbol_from_global_scope(&self, name: &str) -> Option<u32> { | ||
| for symbol_map in &self.symbol_table { | ||
| // Skip libraries that are not globally visible. | ||
| if !symbol_map.is_local() { |
There was a problem hiding this comment.
Is this correct? This would skip the ones which are not local right?
There was a problem hiding this comment.
yeah this seems like a bug?
There was a problem hiding this comment.
this is bug. I will fix it later
| } | ||
|
|
||
| // push new library instance | ||
| pub fn push_library_symbols(&mut self, symbol_map: SymbolMap) -> Result<usize> { |
There was a problem hiding this comment.
bug I think: store.rs: SymbolTable::add() returns the handler, but it's ignored and count() is returned instead. After library deletions, count != handler, so dlclose will close the wrong library.
| // and then instantiate the library using that cloned linker. | ||
| // | ||
| // `allow_shadowing(true)` permits redefining these globals in the cloned | ||
| // linker without affecting the original linker state. |
There was a problem hiding this comment.
i think you have to do this after the clone for this to be true
| ) -> i32 | ||
| { | ||
| let base = get_memory_base(&mut caller); | ||
| let path = typemap::get_cstr(base + file as u64).unwrap(); |
There was a problem hiding this comment.
invalid pointer panics, same in dlsym
| #include <ldsodefs.h> | ||
| #include <shlib-compat.h> | ||
|
|
||
| int __lind_dlopen(char* filename, int mode) __attribute__(( |
There was a problem hiding this comment.
supposed to be void*? same with dlsym
| // Grow the shared indirect function table by the amount requested by the | ||
| // library (as recorded in its dylink section). New slots are initialized | ||
| // to null funcref. | ||
| table.grow( |
There was a problem hiding this comment.
need to check return value for error
rennergade
left a comment
There was a problem hiding this comment.
Left a few bug comments.
I'm trying to ignore the problems with threading/multi-processing for now as well as the fact that this isn't portable to support static modules anymore.
|
|
||
| // Allocate the main module's indirect function table with | ||
| // the minimal required size. | ||
| // #[cfg(feature = "debug-dylink")] |
There was a problem hiding this comment.
is this supposed to be enabled? cfg commented out multiple times in this file
dynamic loading implementation
code cleanup hasn't fully finished yet, but lind-boot and glibc integration is done. This version is compatible with main and can run dynamic loaded programs
I will split this PR into two PRs later, one for dynamic loading implementation and one for related CI changes