BLOG main image
분류 전체보기 (222)
Reversing (13)
Pwnable (4)
Linux Kernel (3)
Crypto (2)
Wargames (66)
Programming (18)
Write Up (32)
Project (22)
Web (2)
My Life (52)
Memo (3)
etc (2)
발표자료 (1)
36,063 Visitors up to today!
Today 12 hit, Yesterday 30 hit
daisy rss
tistory 티스토리 가입하기!
2018.03.20 15:57

가끔씩 옛날 버전 컴파일 하다가 ____ilog2_nan 이거 없다고 에러날 때가 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
diff --git a/include/linux/log2.h b/include/linux/log2.h
index ef3d4f67118c..07ef24eedf83 100644
--- a/include/linux/log2.h
+++ b/include/linux/log2.h
@@ -16,12 +16,6 @@ 
 #include <linux/bitops.h>
 
 /*
- * deal with unrepresentable constant logarithms
- */
-extern __attribute__((const, noreturn))
-int ____ilog2_NaN(void);
-
-/*
  * non-constant log of base 2 calculators
  * - the arch may override these in asm/bitops.h if they can be implemented
  *   more efficiently than using fls() and fls64()
@@ -85,7 +79,7 @@  unsigned long __rounddown_pow_of_two(unsigned long n)
 #define ilog2(n)                \
 (                        \
     __builtin_constant_p(n) ? (        \
-        (n) < 1 ? ____ilog2_NaN() :    \
+        (n) < 1 ? 0 :            \
         (n) & (1ULL << 63) ? 63 :    \
         (n) & (1ULL << 62) ? 62 :    \
         (n) & (1ULL << 61) ? 61 :    \
@@ -149,9 +143,7 @@  unsigned long __rounddown_pow_of_two(unsigned long n)
         (n) & (1ULL <<  3) ?  3 :    \
         (n) & (1ULL <<  2) ?  2 :    \
         (n) & (1ULL <<  1) ?  1 :    \
-        (n) & (1ULL <<  0) ?  0 :    \
-        ____ilog2_NaN()            \
-                   ) :        \
+        0           ) :        \
     (sizeof(n) <= 4) ?            \
     __ilog2_u32(n) :            \
     __ilog2_u64(n)                \
cs

이거 커널 소스 디렉토리에서 이거 붙여넣어서 ilog.patch로 저장하고 patch -p1 < ilog.patch 하면 지가 알아서 패치해준다.

그리고 다시 make ㄲㄲ

Name
Password
Homepage
Secret
prev"" #1 #2 #3 next