2016-01-20 23 views
5

Vì vậy, tôi đang tìm thông qua các nguồn của trình biên dịch gcc và tôi đã đi cùng này trong fork.c:những gì hiện các chức năng weak_alias làm và nơi nó được định nghĩa

int 
__fork() 
{ 
    __set_errno (ENOSYS); 
    return -1; 
} 
libc_hidden_def (__fork) 
stub_warning (fork) 

weak_alias (__fork, fork) 
#include <stub-tag.h> 

Tôi đang cố gắng để con số những gì weak_alias làm. Tôi đã sử dụng lệnh grep trong các file nguồn glibc để tìm tất cả các lần xuất hiện của weak_alias #define:

grep -r "#define weak_alias" 

tôi đã tìm thấy nhiều lần xuất hiện của macro:

#define weak_alias(n, a) 

nhưng các macro don' t thực sự giải thích bất cứ điều gì. Họ chỉ xác định tuyên bố rằng họ không cho thấy nó được thay thế như thế nào. Ví dụ: một lần xuất hiện trong profil.c:

/* Turn off the attempt to generate ld aliasing records. */ 
#undef weak_alias 
#define weak_alias(a,b) 

Vì vậy, bất kỳ ý tưởng nào về yếu tố nào và vị trí đang được xác định?

Cảm ơn trước

+0

có thể trùng lặp của [Cần giúp đỡ với nguồn glibc] (http://stackoverflow.com/question/6515583/need-help-with-glibc-source) –

+0

Cảm ơn bạn. Đã kiểm tra 10 trang đầu tiên của Google và không thấy điều này. – Programmer123

Trả lời

8

từ https://github.com/lattera/glibc/blob/master/include/libc-symbols.h

/* Define ALIASNAME as a weak alias for NAME. 
    If weak aliases are not available, this defines a strong alias. */ 
# define weak_alias(name, aliasname) _weak_alias (name, aliasname) 
# define _weak_alias(name, aliasname) \ 
    extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); 

Về biểu tượng yếu:

https://en.wikipedia.org/wiki/Weak_symbol

+0

Chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn. – Programmer123

Các vấn đề liên quan