Wie kann ich die Rücksendeadresse im Stapel ermitteln?

Ich weiß das, wenn ich mich in einer Funktion befindefoo() das heißt irgendwo abbar() Funktion, dann wird diese Rücksprungadresse auf den Stack geschoben.

    #include <stdio.h>

    void foo()
    {
            unsigned int x;
            printf("inside foo %x\n", &x);
    }
    int main()
    {
            foo();
            printf("in main\n");
            return 0;
    }

Im obigen Code erhalte ich die Adresse der ersten lokal übertragenen Variablen auf dem Stack, wenn die Funktion foo aktiv ist. Wie kann ich auf die Rücksendeadresse (main called foo) zugreifen, die irgendwo vor dieser Variablen im Stapel abgelegt wird? Ist dieser Speicherort fest und kann relativ zur ersten lokalen Variablen zugegriffen werden? Wie kann ich es ändern?

BEARBEITEN: Meine Umgebung ist Ubuntu 9.04 auf x86-Prozessor mit GCC-Compiler.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage