Pro-Linux.de

Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 16. Dez 2018 5:12

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 23. Nov 2011 12:30 
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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 24. Nov 2011 15:19 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
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.


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 2 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de