컴파일러의 최적화 옵션 가운데 하나인 -fomit-frame-pointer 옵션이 적용된 것이 아닌가 싶은데요. gcc 매뉴얼을 보니 -O, -O2, -O3, -Os 옵션에 의해 이 옵션도 함께 켜진다고 합니다.
심지어 gcc 4.6부터는 일부 32-bit x86 플랫폼에서의 기본값이 '켜짐'으로 바뀌었다고도 나오네요.
-fomit-frame-pointer
Don’t keep the frame pointer in a register for functions that don’t
need one. This avoids the instructions to save, set up and restore
frame pointers; it also makes an extra register available in many
functions. It also makes debugging impossible on some machines.
.
.
Starting with GCC version 4.6, the default setting (when not
optimizing for size) for 32-bit GNU/Linux x86 and 32-bit Darwin x86
targets has been changed to -fomit-frame-pointer. The default can
be reverted to -fno-omit-frame-pointer by configuring GCC with the
--enable-frame-pointer configure option.
Enabled at levels -O, -O2, -O3, -Os.
-fno-omit-frame-pointer 옵션을 주면 다른 최적화옵션은 놔두고 이것만 따로 끌 수 있습니다.
최적화 옵션 가운데 하나인
컴파일러의 최적화 옵션 가운데 하나인 -fomit-frame-pointer 옵션이 적용된 것이 아닌가 싶은데요.
gcc 매뉴얼을 보니 -O, -O2, -O3, -Os 옵션에 의해 이 옵션도 함께 켜진다고 합니다.
심지어 gcc 4.6부터는 일부 32-bit x86 플랫폼에서의 기본값이 '켜짐'으로 바뀌었다고도 나오네요.
-fno-omit-frame-pointer 옵션을 주면 다른 최적화옵션은 놔두고 이것만 따로 끌 수 있습니다.
감사합니다 ^^
우분투 12 쓰는데 GCC 4.6이 기본으로 깔려있어서
-fomit-frame-pointer 옵션이 디폴트로 켜져있었나보네요 ㅠㅠ
-fno-omit-frame-pointer 넣어주니까 잘됩니다.
댓글 달기