뭐요

[xv6] writing 1 byte into a region of size 0 에러 본문

Operating System/xv6

[xv6] writing 1 byte into a region of size 0 에러

욕심만 많은 사람 2022. 9. 11. 00:36

배경


m1 맥 사용하고 있으며, 우분투 환경에서 xv6를 설치했다.

이후, xv6 컴파일 및 실행을 위하여

$ make
$ make qemu-nox

명령어를 입력하니 이런 에러가 떴다.

 

 

 

에러 메세지


make qemu-nox 명령어 실행시 나오는 에러 메세지

usertests.c: In function ‘sbrktest’:
usertests.c:1461:13: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
 1461 |   *lastaddr = 99;
      |   ~~~~~~~~~~^~~~
cc1: all warnings being treated as errors
make: *** [<builtin>: usertests.o] Error 1

 

 

추측 원인


에러가 나는 코드가 일반적으로 버그를 유발하는 코드라 경고 발생시키는데, Makefile에서 모든 경고를 에러로 바꾸는 옵션이 있어서 실행이 안되는 것 같다.

 

 

 

 

 

Solution


1. Makefile 확인

$ vi Makefile

 

2. gcc flag에 -Werror=stringop-overflow=0 옵션을 추가

# 79 lines
CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer

에서 

CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer -Werror=stringop-overflow=0

로 변경해주기

(-Werror=stringop-overflow=0 추가)