Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Code Build and Run Issues #1

Open
eramax opened this issue Oct 22, 2023 · 1 comment
Open

Code Build and Run Issues #1

eramax opened this issue Oct 22, 2023 · 1 comment

Comments

@eramax
Copy link

eramax commented Oct 22, 2023

Hi,

I tried to build and run the code, It seems there are two problems as shown in the logs

aarch64-os git:(main) ✗ make qemu 
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/boot.S -o kernel/boot.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/vectortable.S -o kernel/vectortable.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/file.c -o kernel/file.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/buf.c -o kernel/buf.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/console.c -o kernel/console.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/trap.c -o kernel/trap.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/font.c -o kernel/font.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/ext2.c -o kernel/ext2.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/uname.c -o kernel/uname.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/main.c -o kernel/main.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/printk.c -o kernel/printk.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/proc.c -o kernel/proc.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/kalloc.c -o kernel/kalloc.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/fs.c -o kernel/fs.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/cswitch.S -o kernel/cswitch.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/syscall.c -o kernel/syscall.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/mm.c -o kernel/mm.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/string.c -o kernel/string.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/elf.c -o kernel/elf.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/cdev.c -o kernel/cdev.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/spinlock.c -o kernel/spinlock.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/driver/gicv3.c -o kernel/driver/gicv3.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/driver/timer.c -o kernel/driver/timer.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/driver/virtio.c -o kernel/driver/virtio.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/driver/psci-if.c -o kernel/driver/psci-if.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/driver/psci.S -o kernel/driver/psci.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c kernel/driver/virt/uart.c -o kernel/driver/virt/uart.o
toolchain/aarch64-linux-gnu-gcc -Wall -Og -g -MD -ffreestanding -nostdinc -nostdlib -nostartfiles -mcpu=cortex-a72+nofp -DUSE_ARMVIRT -I ./include/ -c usr/initcode.S -o usr/initcode.o
toolchain/aarch64-linux-gnu-ld -nostdlib  -N -e initcode -Ttext 0x1000 -o usr/initcode.elf usr/initcode.o
toolchain/aarch64-linux-gnu-objcopy -S -O binary usr/initcode.elf usr/initcode
toolchain/aarch64-linux-gnu-ld -r -b binary usr/initcode -o usr/initcode.o
toolchain/aarch64-linux-gnu-ld -nostdlib  -T kernel/kernel.ld -o kernel8.elf kernel/boot.o kernel/vectortable.o kernel/file.o kernel/buf.o kernel/console.o kernel/trap.o kernel/font.o kernel/ext2.o kernel/uname.o kernel/main.o kernel/printk.o kernel/proc.o kernel/kalloc.o kernel/fs.o kernel/cswitch.o kernel/syscall.o kernel/mm.o kernel/string.o kernel/elf.o kernel/cdev.o kernel/spinlock.o    kernel/driver/gicv3.o kernel/driver/timer.o kernel/driver/virtio.o kernel/driver/psci-if.o kernel/driver/psci.o kernel/driver/virt/uart.o usr/initcode.o
toolchain/aarch64-linux-gnu-ld: kernel/console.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/trap.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/ext2.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/uname.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/main.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/proc.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/syscall.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/spinlock.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/driver/gicv3.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/driver/virtio.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
toolchain/aarch64-linux-gnu-ld: kernel/driver/virt/uart.o:/home/emo/dev/aarch64-os/./include/proc.h:47: multiple definition of `cpus'; kernel/file.o:/home/emo/dev/aarch64-os/./include/proc.h:47: first defined here
kernel/proc.o: in function `userproc_init':
/home/emo/dev/aarch64-os/kernel/proc.c:140:(.text+0x368): relocation truncated to fit: R_AARCH64_ADR_PREL_PG_HI21 against symbol `_binary_usr_initcode_size' defined in *ABS* section in kernel8.elf
toolchain/aarch64-linux-gnu-ld: kernel/spinlock.o: in function `acquire':
/home/emo/dev/aarch64-os/kernel/spinlock.c:20: undefined reference to `__aarch64_swp1_acq'
/home/emo/dev/aarch64-os/kernel/spinlock.c:20:(.text+0x98): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `__aarch64_swp1_acq'
make: *** [Makefile:78: kernel8.elf] Error 1

I had to update the makefile LD flags since there is a flag not found in LD, I tried many LD versions and packages but all doesn't have this flag.

LDFLAGS = -nostdlib #-nostartfiles

Could you please help me to make the code up and running?

@k-mrm
Copy link
Owner

k-mrm commented Oct 22, 2023

Hi.
Maybe I fixed this issue in this version so please try to build in your environment.

Thank you.

NOTE: This repository is my hobby project, so this OS is so buggy. If you are looking for a simple OS for aarch64, I recommend xv6-aarch64.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants