Des Compilers oder des Linkers?Gerti hat geschrieben:Ich bin leider an die Grenzen des Compilers geraten, welcher wegen eines Bugs mein TAP nicht mehr compiliert, wenn es noch grösser wird...
Tonlautstärke der Sender anpassen
- Harvey
- iTina-Promoter und Kuhinteressent

- Beiträge: 3894
- Registriert: So 11. Dez 2005, 22:34
- Receivertyp: 0x1388 PVR
- Receiverfirmware: 13.09.2005
- Wohnort: Planet Erde, Milchstraße
Wenn ich die Zahl richtig im Kopf habe kann MIPS relative Sprünge, welche lokal eigentlich immer benutzt werden nur über +/-128kB.
Vermutlich gehen also so Konstrukte wie
if / while bedingung {
zu viel Code
}
in die Hose.
Ich würde versuchen, die lange Funktion, welche den Ärger macht wenn Du code hinzufügst, in 2 Funktionen aufzuteilen, diese werden nämlich mit der kompletten Adresse angesprungen.
Vermutlich gehen also so Konstrukte wie
if / while bedingung {
zu viel Code
}
in die Hose.
Ich würde versuchen, die lange Funktion, welche den Ärger macht wenn Du code hinzufügst, in 2 Funktionen aufzuteilen, diese werden nämlich mit der kompletten Adresse angesprungen.
Gruss
Harvey
Harvey
- ibbi
- Moderierter Ignorator Bitteschöööön!

- Beiträge: 7110
- Registriert: Fr 9. Dez 2005, 12:49
- Receivertyp: TF5000PVR • SRP-2401CI+ Eco
- Receiverfirmware: Sep 2005 PHTF • Jan 2015
Scheint wirklich ein Bug im 2.95.x mips gcc/assembler zu sein.Gerti hat geschrieben:@Harvey: Ich bekomme "Error: Branch out of range"
Weißt Du noch, an welcher Funktion Du zuletzt gearbeitet hast, bevor der Fehler auftrat? Offenbar ist deren Code jetzt zu umfangreich geworden, folgendes habe ich beim Googlen gefunden:
make the function smaller so that the maximum branch offset is large enough to reach any needed point within the function
Versuche mal, Teile der Funktion auszulagern.
EDIT: Harvey war schneller.
- Harvey
- iTina-Promoter und Kuhinteressent

- Beiträge: 3894
- Registriert: So 11. Dez 2005, 22:34
- Receivertyp: 0x1388 PVR
- Receiverfirmware: 13.09.2005
- Wohnort: Planet Erde, Milchstraße
Samma, kann es sein, daß Du ein Freund unendlich langer Funktionen bist?
Laut Disassemblat bist Du bei 2 Funktionen gefährdet, in diese Beschränkung rein zu laufen, eine kommt noch dazu wenn die auch noch fetter wird.
Die wahrscheinlichste ist die, die mit 104kB ab Speicherstelle 0x0006fbcc beginnt. Welche das ist kann ich nicht sagen. Möglicherweise eine, die 2 Parameter hat. Recht sicher eine, die unter gewissen Bedingungen direkt die Funktion verlassen soll (wird übersetzt als springe an das Ende, wo die Register erst mal restauriert werden, bevor wirklich zurück gesprungen wird). Eine recht frühe Bedingung ist ein Vergleich auf 0x1000e, falls es dir weiter hilft.
Die nächst kleinere hat ca 92kB, an die glaube ich nicht (da sollten pi mal Daumen je nach Komplexität noch 500-2000 C-Zeilen rein passen).
Laut Disassemblat bist Du bei 2 Funktionen gefährdet, in diese Beschränkung rein zu laufen, eine kommt noch dazu wenn die auch noch fetter wird.
Die wahrscheinlichste ist die, die mit 104kB ab Speicherstelle 0x0006fbcc beginnt. Welche das ist kann ich nicht sagen. Möglicherweise eine, die 2 Parameter hat. Recht sicher eine, die unter gewissen Bedingungen direkt die Funktion verlassen soll (wird übersetzt als springe an das Ende, wo die Register erst mal restauriert werden, bevor wirklich zurück gesprungen wird). Eine recht frühe Bedingung ist ein Vergleich auf 0x1000e, falls es dir weiter hilft.
Die nächst kleinere hat ca 92kB, an die glaube ich nicht (da sollten pi mal Daumen je nach Komplexität noch 500-2000 C-Zeilen rein passen).
Gruss
Harvey
Harvey
