'error: impossible constraint in ‘asm’'에 해당되는 글 1건

  1. 2009.09.21 make시 error: impossible constraint in ‘asm’ 에러
아래 링크를 보니, target을 위한 include 들이 잘못되었을 것이라고 되어있다.
나의 경우에는 samba 크로스컴파일 중에 겪은 녀석으로(글 쓰는 시점에도 미해결 ㅠ.ㅠ)
이걸 해결한 줄 알고 있었더니, 콤보로 Error: unknown opcode 라는 녀석이 발동되었다..
왜인가 했더니.. macro 라고 되어있다. 그런이유로, asm 레벨에서 오류가 있었다고 하고
조금은 뜬금 없어 보이지만, asm 에 불가능한 문구가 있다고 에러가 나는 듯 하다.


FD_ZERO is a macro used to initialise an fd_set structure prior to using
select().  These are OS-provided, so if they won't compile then this
suggests that you're using the wrong headers for the target.

[링크 : http://www.realvnc.com/pipermail/vnc-list/2007-February/057070.html]


추적 / Trace
# grep -rn "FD_ZERO" /usr/include
/usr/include/sys/select.h:96:#define    FD_ZERO(fdsetp)         __FD_ZERO (fdsetp)

/usr/include/bits/select.h:70:#define __FD_ZERO(fdsp) \
 26 # define __FD_ZERO(fdsp) \
 27   do {                                                                        \
 28     int __d0, __d1;                                                           \
 29     __asm__ __volatile__ ("cld; rep; stosl"                                   \
 30                           : "=c" (__d0), "=D" (__d1)                          \
 31                           : "a" (0), "0" (sizeof (fd_set)                     \
 32                                           / sizeof (__fd_mask)),              \
 33                             "1" (&__FDS_BITS (fdsp)[0])                       \
 34                           : "memory");                                        \
 35   } while (0)

/usr/include/asm/posix_types.h:70:#define __FD_ZERO(fdsetp) \
 69 #undef  __FD_ZERO
 70 #define __FD_ZERO(fdsetp) \
 71 do { \
 72         int __d0, __d1; \
 73         __asm__ __volatile__("cld ; rep ; stosl" \
 74                         :"=m" (*(__kernel_fd_set *) (fdsetp)), \
 75                           "=&c" (__d0), "=&D" (__d1) \
 76                         :"a" (0), "1" (__FDSET_LONGS), \
 77                         "2" ((__kernel_fd_set *) (fdsetp)) : "memory"); \
 78 } while (0)

Posted by 구차니