Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
dynamisches Linken unter Assembler (nasm)

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
asmUser
Gast





BeitragVerfasst am: 23. Nov 2011 12:30   Titel: dynamisches Linken unter Assembler (nasm)

Hallo allerseits,

ich habe eine Datei library.so, welche aus C-Dateien besteht, und einer in Assembler (nasm) codierten Datei, welche ich strikt nach den Anweisungen in der Assembler Dokumentation erstellt habe. Der Erstellungs.- und Linkvorgang der Datei zu der Library wird ohne jegliche Fehlerausgabe fertiggestellt. Nun rufe ich aus dem in C codierten Teil des Codes eine in Assembler codierte Funktion auf. Ich gebe mir in dem C-Programm die Adresse der Assembler codierten Funktion aus, welche irgend einen Wert ungleich null hat.

Beim Laden der dynamischen Library durch den dynamischen Linker wird keinerlei Fehlermeldung angezeigt. Beim Aufruf der in Assembler codierten Funktion aus dem C-programmierten Code heraus ensteht jedoch ein Segmentation fault. Die Assemblerfunktion wird nicht aufgerufen, Das C-Programm scheint da an eine Adresse zu springen, welche keine ausführbaren Code enthält.

Die Überprüfung des Assembler generierten Object - Codes mittels objdump zeigt jedoch, daß die aufzurufende Funktion ordnungsgemäß exportiert wird.

Wie kann man sich in so einem Fall verhalten ?
Was kann man da tun ?

Beste Grüße und vielen Dank im voraus

asmUser
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 24. Nov 2011 15:19   Titel:

Vereinfache erst einmal die Assembler-Funktion auf ein "ret", um Fehler in der Funktion selbst auszuschließen. Dann solltest du dir die Aufrufkonventionen von C-Compiler und Assembler genau angucken. Gcc ist nämlich darauf eingestellt, mit "gas" zusammenzuarbeiten, nicht mit nasm. Vielleicht sind sich gcc und nasm darüber uneins, wie der Stack zum Aufruf einer Assembler-Funktion aus C heraus auszusehen hat.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy