2016-01-20 6 views
5

Ich bin auf der Suche durch die Quelle von gcc-Compiler So, und ich habe an diesen in fork.c kommen:was die weak_alias Funktion tut und wo es definiert

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

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

Ich versuche zu Figur aus, was weak_alias macht. Ich habe den Befehl grep innerhalb der glibc-Quelldateien verwendet, um alle Vorkommen von #define weak_alias zu finden:

grep -r "#define weak_alias" 

Ich habe viele Vorkommen des Makro gefunden:

#define weak_alias(n, a) 

aber der Makros don‘ Ich erkläre eigentlich nichts. Sie definieren nur diese Aussage, sie zeigen nicht, wie sie ersetzt wird. Zum Beispiel ein Vorkommen ist in profil.c:

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

So Irgendwelche Ideen, was weak_alias hat und wo es definiert wird?

Vielen Dank im Voraus

+0

Mögliche Duplikat [mit glibc Quelle Brauchen Sie Hilfe] (http://stackoverflow.com/questions/6515583/need-hilfe-mit-glibc-quelle) –

+0

Danke. Überprüfte die ersten 10 Seiten von Google und sah dies nicht. – Programmer123

Antwort

8

von 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))); 

Über schwach Symbol:

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

+0

Genau das, was ich gesucht habe. Vielen Dank. – Programmer123