Dear. all I'm trying to compile m5threads.
At the m5threads directory, when I run the command gcc -static -c pthread.c -o pthread.o the error occurs like below. pthread.c: In function ‘pthread_create’: pthread.c:256:3: warning: implicit declaration of function ‘clone’; did you mean ‘close’? [-Wimplicit-function-declaration] clone(__pthread_trampoline, tcb->stack_start_addr, CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD, tcb); ^~~~~ close In file included from pthread.c:49:0: pthread.c: In function ‘pthread_rwlock_init’: pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:380:5: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ PTHREAD_RWLOCK_T_LOCK(lock) = 0; // used only with spin_lock, so we know to initilize to zero ^~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:103:77: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__nr_readers’; did you mean ‘__readers’? PTHREAD_RWLOCK_T_READERS(rwlock) (*(volatile int*)(&rwlock->__data.__nr_readers)) ^ pthread.c:381:5: note: in expansion of macro ‘PTHREAD_RWLOCK_T_READERS’ PTHREAD_RWLOCK_T_READERS(lock) = 0; ^~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:382:5: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ PTHREAD_RWLOCK_T_WRITER(lock) = -1; // -1 means no one owns the write lock ^~~~~~~~~~~~~~~~~~~~~~~ pthread.c: In function ‘pthread_rwlock_rdlock’: pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:398:32: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ pthread_t writer = PTHREAD_RWLOCK_T_WRITER(lock); ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:404:27: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_lock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:405:24: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ if ((pthread_t)PTHREAD_RWLOCK_T_WRITER(lock) == -1) { ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:103:77: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__nr_readers’; did you mean ‘__readers’? PTHREAD_RWLOCK_T_READERS(rwlock) (*(volatile int*)(&rwlock->__data.__nr_readers)) ^ pthread.c:406:13: note: in expansion of macro ‘PTHREAD_RWLOCK_T_READERS’ PTHREAD_RWLOCK_T_READERS(lock)++; ^~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:407:33: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_unlock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:411:29: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_unlock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread.c: In function ‘pthread_rwlock_wrlock’: pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:422:32: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ pthread_t writer = PTHREAD_RWLOCK_T_WRITER(lock); ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:103:77: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__nr_readers’; did you mean ‘__readers’? PTHREAD_RWLOCK_T_READERS(rwlock) (*(volatile int*)(&rwlock->__data.__nr_readers)) ^ pthread.c:426:31: note: in expansion of macro ‘PTHREAD_RWLOCK_T_READERS’ int num_readers = PTHREAD_RWLOCK_T_READERS(lock); ^~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:432:27: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_lock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:433:24: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ if ((pthread_t)PTHREAD_RWLOCK_T_WRITER(lock) == -1 && PTHREAD_RWLOCK_T_READERS(lock) == 0) { ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:103:77: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__nr_readers’; did you mean ‘__readers’? PTHREAD_RWLOCK_T_READERS(rwlock) (*(volatile int*)(&rwlock->__data.__nr_readers)) ^ pthread.c:433:63: note: in expansion of macro ‘PTHREAD_RWLOCK_T_READERS’ if ((pthread_t)PTHREAD_RWLOCK_T_WRITER(lock) == -1 && PTHREAD_RWLOCK_T_READERS(lock) == 0) { ^~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:434:13: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ PTHREAD_RWLOCK_T_WRITER(lock) = pthread_self(); ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:435:33: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_unlock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:439:29: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_unlock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread.c: In function ‘pthread_rwlock_unlock’: pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:448:23: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_lock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:449:27: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ if (pthread_self() == PTHREAD_RWLOCK_T_WRITER(lock)) { ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:104:76: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__writer’; did you mean ‘__writers’? e PTHREAD_RWLOCK_T_WRITER(rwlock) (*(volatile int*)(&rwlock->__data.__writer)) ^ pthread.c:451:9: note: in expansion of macro ‘PTHREAD_RWLOCK_T_WRITER’ PTHREAD_RWLOCK_T_WRITER(lock) = -1; ^~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:103:77: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__nr_readers’; did you mean ‘__readers’? PTHREAD_RWLOCK_T_READERS(rwlock) (*(volatile int*)(&rwlock->__data.__nr_readers)) ^ pthread.c:454:9: note: in expansion of macro ‘PTHREAD_RWLOCK_T_READERS’ PTHREAD_RWLOCK_T_READERS(lock) = PTHREAD_RWLOCK_T_READERS(lock) - 1; ^~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:103:77: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__nr_readers’; did you mean ‘__readers’? PTHREAD_RWLOCK_T_READERS(rwlock) (*(volatile int*)(&rwlock->__data.__nr_readers)) ^ pthread.c:454:42: note: in expansion of macro ‘PTHREAD_RWLOCK_T_READERS’ PTHREAD_RWLOCK_T_READERS(lock) = PTHREAD_RWLOCK_T_READERS(lock) - 1; ^~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:102:73: error: ‘struct __pthread_rwlock_arch_t’ has no member named ‘__lock’ efine PTHREAD_RWLOCK_T_LOCK(rwlock) (*(volatile int*)(&rwlock->__data.__lock)) ^ pthread.c:456:25: note: in expansion of macro ‘PTHREAD_RWLOCK_T_LOCK’ spin_unlock((int*)&(PTHREAD_RWLOCK_T_LOCK(lock))); ^~~~~~~~~~~~~~~~~~~~~ pthread.c: In function ‘pthread_cond_init’: pthread_defs.h:107:67: error: ‘struct __pthread_cond_s’ has no member named ‘__lock’ #define PTHREAD_COND_T_FLAG(cond) (*(volatile int*)(&(cond->__data.__lock))) ^ pthread.c:536:5: note: in expansion of macro ‘PTHREAD_COND_T_FLAG’ PTHREAD_COND_T_FLAG(cond) = 0; ^~~~~~~~~~~~~~~~~~~ pthread_defs.h:108:76: error: ‘struct __pthread_cond_s’ has no member named ‘__futex’ PTHREAD_COND_T_THREAD_COUNT(cond) (*(volatile int*)(&(cond-> __data.__futex))) ^ pthread.c:537:5: note: in expansion of macro ‘PTHREAD_COND_T_THREAD_COUNT’ PTHREAD_COND_T_THREAD_COUNT(cond) = 0; ^~~~~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:109:74: error: ‘struct __pthread_cond_s’ has no member named ‘__nwaiters’; did you mean ‘__wrefs’? ne PTHREAD_COND_T_COUNT_LOCK(cond) (*(volatile int*)(&(cond->__data.__nwaiters))) ^ pthread.c:538:5: note: in expansion of macro ‘PTHREAD_COND_T_COUNT_LOCK’ PTHREAD_COND_T_COUNT_LOCK(cond) = 0; ^~~~~~~~~~~~~~~~~~~~~~~~~ pthread.c: In function ‘pthread_cond_broadcast’: pthread_defs.h:107:67: error: ‘struct __pthread_cond_s’ has no member named ‘__lock’ #define PTHREAD_COND_T_FLAG(cond) (*(volatile int*)(&(cond->__data.__lock))) ^ pthread.c:549:5: note: in expansion of macro ‘PTHREAD_COND_T_FLAG’ PTHREAD_COND_T_FLAG(cond) = 1; ^~~~~~~~~~~~~~~~~~~ pthread.c: In function ‘pthread_cond_wait’: pthread_defs.h:108:76: error: ‘struct __pthread_cond_s’ has no member named ‘__futex’ PTHREAD_COND_T_THREAD_COUNT(cond) (*(volatile int*)(&(cond-> __data.__futex))) ^ pthread.c:556:37: note: in expansion of macro ‘PTHREAD_COND_T_THREAD_COUNT’ volatile int* thread_count = &(PTHREAD_COND_T_THREAD_COUNT(cond)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~ pthread_defs.h:107:67: error: ‘struct __pthread_cond_s’ has no member named ‘__lock’ #define PTHREAD_COND_T_FLAG(cond) (*(volatile int*)(&(cond->__data.__lock))) ^ pthread.c:557:28: note: in expansion of macro ‘PTHREAD_COND_T_FLAG’ volatile int* flag = &(PTHREAD_COND_T_FLAG(cond)); ^~~~~~~~~~~~~~~~~~~ pthread_defs.h:109:74: error: ‘struct __pthread_cond_s’ has no member named ‘__nwaiters’; did you mean ‘__wrefs’? ne PTHREAD_COND_T_COUNT_LOCK(cond) (*(volatile int*)(&(cond->__data.__nwaiters))) ^ pthread.c:558:37: note: in expansion of macro ‘PTHREAD_COND_T_COUNT_LOCK’ volatile int* count_lock = &(PTHREAD_COND_T_COUNT_LOCK(cond)); ^~~~~~~~~~~~~~~~~~~~~~~~~ What is the problem and how can I handle it?? Thanks. Haeyoon Cho.
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users