checkra1n / PongoOS

pongoOS
https://checkra.in
Other
2.49k stars 405 forks source link

error: variable 'vm_index_start' set but not used #128

Closed mh-cbon closed 2 years ago

mh-cbon commented 2 years ago
clang -o build/Pongo --target=arm64-apple-ios12.0 -std=gnu17 -Wall -Wunused-label -Werror -O3 -flto -ffreestanding -U__nonnull -nostdlibinc -DTARGET_OS_OSX=0 -DTARGET_OS_MACCATALYST=0 -Inewlib/aarch64-none-darwin/include -nostdlib -static -Wl,-fatal_warnings -Wl,-dead_strip -Wl,-Z -fuse-ld=/home/mh-cbon/testing/PongoOS/../ld64/ld64  -DPONGO_VERSION='"2.5.1-4c9b7541"' -DAUTOBOOT -DPONGO_PRIVATE=1 -Isrc/lib -Iinclude -Iapple-include -Iinclude/modules/linux/ -Isrc/kernel -Isrc/drivers -Isrc/modules/linux/libfdt -Lnewlib/aarch64-none-darwin/lib -lc -lm -Wl,-preload -Wl,-no_uuid -Wl,-e,start -Wl,-order_file,src/sym_order.txt -Wl,-image_base,0x100000000 -Wl,-sectalign,__DATA,__common,0x8 -Wl,-segalign,0x4000 -DDER_TAG_SIZE=8 src/boot/entry.S  src/boot/stage3.c  src/boot/clearhook.S  src/boot/patches.S  src/boot/demote_patch.S  src/boot/jump_to_image.S  src/boot/main.c src/kernel/dtree.c src/kernel/dtree_getprop.c src/kernel/entry.c src/kernel/legacy.c src/kernel/locks.c src/kernel/lowlevel.c src/kernel/main_task.c src/kernel/mm.c src/kernel/panic.c src/kernel/syscall.c src/kernel/task.c src/kernel/vfs.c src/kernel/support/exit.c src/kernel/support/io.c src/kernel/support/malloc.c src/kernel/support/process.c src/kernel/support/sbrk.c src/dynamic/modload.c src/dynamic/modload_macho.c src/kernel/int.S src/shell/autoboot.c src/shell/command.c src/shell/hex.c src/shell/linux.c src/shell/main.c src/shell/usbloader.c src/drivers/aes/aes_a7.c src/drivers/aes/aes_a9.c src/drivers/aes/aes.c src/drivers/framebuffer/fb.c src/drivers/gpio/gpio.c src/drivers/hal/hal.c src/drivers/mipi/mipi.c src/drivers/plat/s5l8960.c src/drivers/plat/s8000.c src/drivers/plat/s8001.c src/drivers/plat/s8003.c src/drivers/plat/t7000.c src/drivers/plat/t7001.c src/drivers/plat/t8010.c src/drivers/plat/t8011.c src/drivers/plat/t8012.c src/drivers/plat/t8015.c src/drivers/recfg/recfg.c src/drivers/recfg/recfg_soc.c src/drivers/sep/sep.c src/drivers/timer/timer.c src/drivers/tz/tz.c src/drivers/uart/uart.c src/drivers/usb/synopsys_otg.c src/drivers/xnu/xnu.c src/drivers/sep/sep_racer.S src/drivers/xnu/xnu.S src/modules/linux/libfdt/fdt_addresses.c src/modules/linux/libfdt/fdt.c src/modules/linux/libfdt/fdt_empty_tree.c src/modules/linux/libfdt/fdt_overlay.c src/modules/linux/libfdt/fdt_ro.c src/modules/linux/libfdt/fdt_rw.c src/modules/linux/libfdt/fdt_strerror.c src/modules/linux/libfdt/fdt_sw.c src/modules/linux/libfdt/fdt_wip.c src/modules/linux/linux.c src/lib/img4/img4.c src/lib/libDER/DER_Decode.c src/lib/libDER/DER_Encode.c src/lib/libDER/oids.c src/lib/lzma/lzmadec.c
src/kernel/mm.c:379:22: error: variable 'vm_index_start' set but not used [-Werror,-Wunused-but-set-variable]
            uint32_t vm_index_start = 0;
                     ^
1 error generated.

I also got a similar one

src/kernel/mm.c:934:10: error: variable 'is_tt1' set but not used [-Werror,-Wunused-but-set-variable]
    bool is_tt1 = false;
         ^

I ma not sure what happens here, but i was blocked by those errors, i had to remove them manually. Maybe it exists some way to lower clang requirements and build anyways even with those errors.

I blindly modified the sources

diff --git a/src/kernel/mm.c b/src/kernel/mm.c
index e1196c9..48cd58c 100644
--- a/src/kernel/mm.c
+++ b/src/kernel/mm.c
@@ -371,13 +371,11 @@ err_t vm_allocate(struct vm_space* vmspace, uint64_t* addr, uint64_t size, vm_fl
     uint32_t vm_scan_base = 0;
     uint64_t vm_scan_size = (VM_SPACE_SIZE / PAGE_SIZE);
     uint32_t found_pages = 0;
-    uint32_t vm_index_start = 0;

     if (flags & VM_FLAGS_FIXED) {
         uint64_t vm_offset = *addr - vmspace->vm_space_base;
         if (vm_offset > vmspace->vm_space_end) vm_scan_size = 0;
         else {
-            vm_index_start = vm_offset / PAGE_SIZE;
             vm_scan_size = ((size + PAGE_MASK) & ~PAGE_MASK) / PAGE_SIZE;
         }
     } else {
@@ -931,18 +929,15 @@ void ttbpage_free_walk(uint64_t base, bool is_tt1) {
 }
 bool tte_walk_get(struct vm_space* vmspace, uint64_t va, uint64_t** tte_out) {
     uint64_t bits = 64ULL;
-    bool is_tt1 = false;
     uint64_t* ttb = NULL;
     if (va & 0x7000000000000000) {
         bits -= t1sz;
         va -= (0xffffffffffffffff - ((1ULL << (65 - t1sz)) - 1));
         va &= (1ULL << bits) - 1;
-        is_tt1 = true;
         ttb = phystokv(vmspace->ttbr1);
     } else {
         bits -= t0sz;
         va &= (1ULL << bits) - 1;
-        is_tt1 = false;
         ttb = phystokv(vmspace->ttbr0);
     }
     uint32_t levels = ((bits - (tt_bits + 3ULL)) / tt_bits);
mh-cbon commented 2 years ago

I added a dockerfile, then ran docker build -t check/ra1n . followed by docker run --rm -v $(pwd):/pongo check/ra1n

It built!

$ cat Dockerfile
FROM ubuntu:20.04

RUN apt -y update; apt -y upgrade
RUN apt -y install gnupg ca-certificates
RUN echo 'deb https://assets.checkra.in/debian /' | tee /etc/apt/sources.list.d/checkra1n.list
RUN apt-key adv --fetch-keys https://assets.checkra.in/debian/archive.key
RUN apt -y update; apt -y upgrade
RUN apt -y install automake make llvm clang autoconf gcc git wget tar xz-utils lzma libtinfo5 xxd ld64 cctools-strip

RUN mkdir -p /pongo

CMD ["bash", "-c", "cd /pongo; make distclean all"]