Qualcuno ha aggiunto un pass a gcc? o non proprio un passaggio ma aggiungendo un'opzione per fare alcune cose brutte ... :-) ...Aggiunta di un passaggio a gcc?
Ho ancora lo stesso problema a chiamare una funzione appena prima di tornare da un altro ... quindi mi piacerebbe investigarlo implementando qualcosa in gcc ...
Cheers.
EDIT: Aggiungere un passaggio a un compilatore significa rivisitare l'albero per eseguire alcune ottimizzazioni o alcune analisi. Vorrei emulare il comportamento di __cyg_profile_func_exit ma solo per alcune funzioni e poter accedere al valore di ritorno originale.
Quindi ho intenzione di provare a migliorare la mia domanda. Mi piacerebbe emulare un comportamento molto simile a quello di AOSD. La programmazione AOSD o Aspect consente di aggiungere preoccupazioni trasversali (il debugging è una preoccupazione trasversale).
int main(int argc, char ** argv) {
return foo(argc);
}
int foo(int arg_num) {
int result = arg_num > 3 ? arg_num : 42;
return result;
}
int dbg(int returned) {
printf("Return %d", returned);
}
Vorrei poter dire, mi piacerebbe attivare la funzione dbg dopo la funzione foo è stato eseguito. Il problema è come dire al compilatore di modificare il flusso di controllo ed eseguire dbg. dbg dovrebbe essere eseguito tra return e foo (argc) ...
Questo è veramente come __cyg_profile_function_exit ma solo in alcuni casi (e il problema in __cyg_profile_function_exit è che non si può facilmente vedere e modificare il valore restituito).
Err ... Con chi ora? –
Qualcuno una volta non ha dimostrato un hack che inserisce codice dannoso quando si è compilato da fonti (e quelle fonti potrebbero essere prive del codice errato)? –
Non ho idea di cosa tu stia parlando, e so qualcosa su C, gcc e compilatori. –