2016-01-20 11 views
5

così sto guardando attraverso la fonte del compilatore gcc e sono arrivato lungo questo in fork.c:quello che fa la funzione weak_alias fare e dove si è definito

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

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

che sto cercando di capire cosa fa weak_alias. Ho usato il comando grep all'interno dei file sorgenti di glibc per trovare tutte le occorrenze di weak_alias #define:

grep -r "#define weak_alias" 

ho trovato molte occorrenze della macro:

#define weak_alias(n, a) 

ma le macro don' In realtà spiegano qualsiasi cosa. Definiscono semplicemente quell'affermazione che non mostrano come viene sostituito. Per esempio un'occorrenza è in profil.c:

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

Quindi tutte le idee che cosa weak_alias fa e dove è in fase di definizione?

Grazie in anticipo

+0

Eventuali duplicati di [bisogno di aiuto con sorgente glibc] (http://stackoverflow.com/questions/6515583/need-help-with-glibc-source) –

+0

Grazie. Controllato le prime 10 pagine di Google e non l'ho visto. – Programmer123

risposta

8

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

Circa simbolo debole:

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

+0

Esattamente quello che stavo cercando. Grazie. – Programmer123

Problemi correlati