Merge branch 'shared-dyn-fix' into 'master'

Fix ld_so multiple objects loading the same object

Closes #227

See merge request redox-os/relibc!752
This commit is contained in:
Jeremy Soller
2025-10-29 08:06:07 -06:00
+18 -2
View File
@@ -758,10 +758,26 @@ impl Linker {
) -> Result<Arc<DSO>> {
// fixme: double lookup slow
if let Some(id) = self.name_to_object_id_map.get(name) {
if let Some(obj) = self.objects.get_mut(id) {
if let Some(obj) = self.objects.get(id) {
if let Some(scope) = dependent_scope {
match scope_kind {
ScopeKind::Local => scope.add(obj),
ScopeKind::Global => GLOBAL_SCOPE.write().add(obj),
}
} else if scope_kind == ScopeKind::Global {
GLOBAL_SCOPE.write().add(obj);
}
return Ok(obj.clone());
}
} else if let Some(obj) = new_objects.iter_mut().find(|o| o.name == name) {
} else if let Some(obj) = new_objects.iter().find(|o| o.name == name) {
if let Some(scope) = dependent_scope {
match scope_kind {
ScopeKind::Local => scope.add(obj),
ScopeKind::Global => GLOBAL_SCOPE.write().add(obj),
}
} else if scope_kind == ScopeKind::Global {
GLOBAL_SCOPE.write().add(obj);
}
return Ok(obj.clone());
}