diff --git a/api/arceos_posix_api/Cargo.toml b/api/arceos_posix_api/Cargo.toml index a3dd531176..2794bda372 100644 --- a/api/arceos_posix_api/Cargo.toml +++ b/api/arceos_posix_api/Cargo.toml @@ -29,7 +29,7 @@ net = ["dep:axnet", "axfeat/net", "fd"] pipe = ["fd"] select = ["fd"] epoll = ["fd"] -uspace = ["axns/thread-local", "axfs/thread-local", "smp", "irq", "fs", "multitask", "net", "pipe", "select", "epoll"] +uspace = ["axns/thread-local"] [dependencies] # ArceOS modules diff --git a/modules/axfs/Cargo.toml b/modules/axfs/Cargo.toml index b0c05346cf..5db182dc47 100644 --- a/modules/axfs/Cargo.toml +++ b/modules/axfs/Cargo.toml @@ -10,7 +10,6 @@ repository = "https://github.com/arceos-org/arceos/tree/main/modules/axfs" documentation = "https://arceos-org.github.io/arceos/axfs/index.html" [features] -thread-local = ["axns/thread-local"] devfs = ["dep:axfs_devfs"] ramfs = ["dep:axfs_ramfs"] procfs = ["dep:axfs_ramfs"] diff --git a/modules/axhal/linker.lds.S b/modules/axhal/linker.lds.S index ba3e7d2c3d..bc9422096e 100644 --- a/modules/axhal/linker.lds.S +++ b/modules/axhal/linker.lds.S @@ -26,12 +26,10 @@ SECTIONS } .init_array : ALIGN(4K) { - _sinit_array = .; __init_array_start = .; *(.init_array .init_array.*) __init_array_end = .; . = ALIGN(4K); - _einit_array = .; } .data : ALIGN(4K) { diff --git a/modules/axhal/src/mem.rs b/modules/axhal/src/mem.rs index 4a30464eb7..37a27cc239 100644 --- a/modules/axhal/src/mem.rs +++ b/modules/axhal/src/mem.rs @@ -89,8 +89,9 @@ fn kernel_image_regions() -> impl Iterator { name: ".rodata", }, MemRegion { - paddr: virt_to_phys((_sinit_array as usize).into()), - size: _einit_array as usize - _sinit_array as usize, + paddr: virt_to_phys((__init_array_start as usize).into()).align_down_4k(), + size: VirtAddr::from_usize(__init_array_end as usize).align_up_4k() + - VirtAddr::from_usize(__init_array_start as usize).align_down_4k(), flags: MemRegionFlags::RESERVED | MemRegionFlags::READ, name: ".init_array", }, @@ -157,8 +158,8 @@ unsafe extern "C" { fn _etext(); fn _srodata(); fn _erodata(); - fn _sinit_array(); - fn _einit_array(); + fn __init_array_start(); + fn __init_array_end(); fn _sdata(); fn _edata(); fn _sbss();