gcc 4.7.2 und Kernel 2.6.28

Welches Modul/Treiber für welche Hardware, Kernel compilieren...
Antworten
guennid

gcc 4.7.2 und Kernel 2.6.28

Beitrag von guennid » 16.02.2014 09:47:53

Ich will einen 2.6.28er Kern bauen mit gcc 4.7.2-1 (wheezy) um etwas auszuprobieren. Die Kompilation bricht ab mit:

Code: Alles auswählen

/usr/src/linux-2.6.28.10/arch/x86/include/asm/ptrace.h:182:13: note: previous declaration of ‘syscall_trace_leave’ was here
make[2]: *** [arch/x86/kernel/ptrace.o] Fehler 1
make[1]: *** [arch/x86/kernel] Fehler 2
make[1]: Leaving directory `/usr/src/linux-2.6.28.10'
make: *** [debian/stamp/build/kernel] Fehler 2
Kann man das beheben?

Grüße Günther
Zuletzt geändert von guennid am 16.02.2014 11:32:01, insgesamt 1-mal geändert.

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von peschmae » 16.02.2014 11:17:44

Natürlich - versuchst du z.B. das hier. Im konkreten Fall dürfts auch einfach gehen wenn du einen älteren GCC hernimmst...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

guennid

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von guennid » 16.02.2014 11:25:36

Danke sehr! Den Link hatte ich auch schon.

Aber der Experte bin ich halt nicht so. Kernel-Patchen habe ich in den zehn Jahren vielleicht ein- zweimal gemacht. :wink: War unsicher, ob der patch nur für das Kompilieren von 2.6.32 gedacht ist. Wenn es nicht allzu viel Mühe macht und mir dementsprechend noch jemand eine kurze Anleitung gibt, wie man patcht, bliebe mir wohl einiges an Suchen erspart. :wink:

Grüße, Günther

[edit]

Vergesst es, ich suche erst mal eine ältere Version.

guennid

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von guennid » 16.02.2014 13:58:58

Die Idee mit der älteren Compiler-Version war wohl doch nicht so gut. Pinning beherrsche ich nicht und der Versuch, per dpkg ein Compiler-downgrade hinzubekommen, überfordert mich ebenfalls.

Also doch patchen.

Alles, was ich so an Anleitungen gefunden habe, geht wohl davon aus, dass der patch in Dateiform vorliegt. Bei peschmaes link ist das aber, wenn ich nichts übersehen habe, nicht der Fall. Wenn ich dem link get diff 1 folge, kriege ich, wenn ich recht sehe, den Inhalt des patches (identisch mit dem unteren Teil des Seiteninhaltes selbst), aber keine Datei. Sollte das so zutreffen: Was stelle ich mit diesem Inhalt an?

Grüße, Günther

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von peschmae » 16.02.2014 18:50:57

Da der Patch ja für eine andere Kernelversion gemacht wurde, lässt der sich sowieso nicht unbeding automatisch mit patch nawenden. Sind aber sowieso nur drei Zeilen, die kannst du auch einfach von Hand im Quellcode anpassen:

Code: Alles auswählen

+++ fix_ptrace.o_compile_error/arch/x86/include/asm/ptrace.h
@@ -130,6 +130,7 @@
 #ifdef __KERNEL__
 
 #include <linux/init.h>
+#include <linux/linkage.h>
 
 struct cpuinfo_x86;
 struct task_struct;
@@ -142,8 +143,8 @@
 			 int error_code, int si_code);
 void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
 
-extern long syscall_trace_enter(struct pt_regs *);
-extern void syscall_trace_leave(struct pt_regs *);
+extern asmregparm long syscall_trace_enter(struct pt_regs *);
+extern asmregparm void syscall_trace_leave(struct pt_regs *);
 
 static inline unsigned long regs_return_value(struct pt_regs *regs)
 {
Also in der Datei arch/x86/include/asm/ptrace.h ein #include <linux/linkage.h> hinzufügen, und die beiden Zeilen mit extern long syscall_trace_enter/leave entsprechend durch extern asmregparm long syscallblabla ersetzen. Und dann mal gucken ob das Ergebnis kompiliert...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

guennid

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von guennid » 17.02.2014 08:37:23

Danke!

Werde ich heute abend versuchen.

guennid

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von guennid » 23.02.2014 16:55:15

Ich habe es bis heute aufgeschoben und obwohl er diesmal weiter gekommen ist, hat es leider doch nicht funktioniert:

Code: Alles auswählen

  VDSO    arch/x86/vdso/vdso32-int80.so.dbg
gcc: error: unrecognized command line option ‘-m’
gcc: error: elf_i386: Datei oder Verzeichnis nicht gefunden
make[2]: *** [arch/x86/vdso/vdso32-int80.so.dbg] Fehler 1
make[1]: *** [arch/x86/vdso] Fehler 2
Grüße, Günther

Benutzeravatar
peschmae
Beiträge: 4844
Registriert: 07.01.2003 12:50:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: nirgendwo im irgendwo

Re: gcc 4.7.2 und Kernel 2.6.28

Beitrag von peschmae » 24.02.2014 20:16:19

Guckst du z.B. hier: http://stackoverflow.com/questions/1042 ... -directory - einfach mal die beiden Vorschläge ausprobieren...

MfG Peschmä
"er hätte nicht in die usa ziehen dürfen - die versauen alles" -- Snoopy

Antworten