Autor Thema: NetSurf GEM Alpha  (Gelesen 183828 mal)

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Offline HelmutK

  • Benutzer
  • Beiträge: 676
Re: NetSurf GEM Alpha
« Antwort #160 am: Do 09.01.2014, 23:56:45 »
addr2line scheint ja bei m68k nicht zu funktionieren. Ich hab früher mal ein script gemacht, das mit nm die Adressen ermittelt, und die anhand von TEXT in die Laufzeit-Werte umrechnet. Dann sucht es darin nach dem Wert, der bei PC angegeben ist. So findet man wenigstens die Funktion wo es passiert ist. Wenn Du das brauchst, kannst Du Dich ja melden. Oder geht addr2line vielleicht doch?

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: NetSurf GEM Alpha
« Antwort #161 am: Fr 10.01.2014, 08:53:38 »
Kannst Du ohne großen Aufwand herausfinden was für eine Anweisung an der stelle liegt? Und an welcher physikalischen Adresse in der Exe? Dann könnte ich evtl. herausfinden in welchem Modul und dann wahrscheinlich auch ob es sich um ein Modul handelt das eigentlich richtig kompiliert sein muesste....

Wenn Du beim Linken eine Crossreferenztabelle mitschreiben läßt (-Wl,-map,mapfile, Adressen sind relativ zur Basepageadresse + 0x100, also dem Anfang des Textsegments), sollte sich damit gemeinsam mit den MiNT Crashausgaben, die ich mitgeschickt habe, doch eigentlich die Absturzstelle genau ermitteln lassen?

Gruß,
Markus
« Letzte Änderung: Fr 10.01.2014, 12:53:37 von mfro »
And remember: Beethoven wrote his first symphony in C

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: NetSurf GEM Alpha
« Antwort #162 am: Fr 10.01.2014, 09:09:37 »
addr2line scheint ja bei m68k nicht zu funktionieren. Ich hab früher mal ein script gemacht, das mit nm die Adressen ermittelt, und die anhand von TEXT in die Laufzeit-Werte umrechnet. Dann sucht es darin nach dem Wert, der bei PC angegeben ist. So findet man wenigstens die Funktion wo es passiert ist. Wenn Du das brauchst, kannst Du Dich ja melden. Oder geht addr2line vielleicht doch?

Addr2line funzt (zumindest für mich) prima:

m68k-atari-mint-addr2line -e mcdcook.prg -af -ba.out-mintprg 0x388
0x00000388
_main
/Users/mfro/Documents/workspace/mcdcook/sources/mcdcook.c:99

Natürlich nur, wenn der Code durchgehend mit -g übersetzt und nicht gestrippt ist. Die Umrechnung relativ zur Basepageadresse (s. Ausgabe des MiNT Crash-Reports) mußt Du halt selber erledigen.

Vielleicht eine gute Gelegenheit für einen Verbesserungsvorschlag? Statt:

-> ILLEGAL INSTRUCTION: User PC=201E318 (basepage=1B0A000, text=1B0A100, data=2054D08,bss=2066E6C)
-> ILLEGAL INSTRUCTION: User PC=1B0A000 + 100 + 514218 = 201E318 (basepage=1B0A000, text=1B0A100, data=2054D08,bss=2066E6C)
Dann müsste ich bei meinen Crashes nicht immer selber rechnen ;)

« Letzte Änderung: Fr 10.01.2014, 12:44:43 von mfro »
And remember: Beethoven wrote his first symphony in C

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: NetSurf GEM Alpha
« Antwort #163 am: Fr 10.01.2014, 13:08:56 »
danke für die informationen, ich werde an dem Thema dran bleiben - wird aber etwas dauern bis ich dazu komme. Trotzdem danke nochmal, die Infos sind schon sehr Hilfreich - galube ich :) 

Offline HelmutK

  • Benutzer
  • Beiträge: 676
Re: NetSurf GEM Alpha
« Antwort #164 am: So 12.01.2014, 19:21:28 »
Vielleicht eine gute Gelegenheit für einen Verbesserungsvorschlag? Statt:

-> ILLEGAL INSTRUCTION: User PC=201E318 (basepage=1B0A000, text=1B0A100, data=2054D08,bss=2066E6C)
-> ILLEGAL INSTRUCTION: User PC=1B0A000 + 100 + 514218 = 201E318 (basepage=1B0A000, text=1B0A100, data=2054D08,bss=2066E6C)
Dann müsste ich bei meinen Crashes nicht immer selber rechnen ;)

Wieso so kompliziert? Man kann doch einfach TEXT nehmen, das ist BASEPAGE+0x100, aber nicht immer, meine ich, also ist TEXT besser als BASEPAGE+0x100.

Ich mach das jetzt so (unter anderem):

...
  addr=$(printf "%x" $((0x$1-0x$2)))
  ${prefix}addr2line -e $3 $addr
...

Der kernel könnte dann ja schreiben:

ILLEGAL INSTRUCTION: User PC=201E318(514218)( (basepage=1B0A000, text=1B0A100, data=2054D08,bss=2066E6C)

sofern TEXT<= PC <= (TEXT+TEXTLEN).


Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.430
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: NetSurf GEM Alpha
« Antwort #165 am: Mi 05.02.2014, 15:06:51 »
Habe NetSurf 2.9 mal unter einem MiNT Kernel 1.19 und N.AES 2.0 ausprobiert und läuft, sehr schön ...

Offline patjomki

  • Benutzer
  • Beiträge: 603
Re: NetSurf GEM Alpha
« Antwort #166 am: Fr 01.05.2015, 12:25:35 »
Habe NetSurf 2.9 mal unter einem MiNT Kernel 1.19 und N.AES 2.0 ausprobiert und läuft, sehr schön ...

So, muss mal diesen alten Thread wieder ausgraben.

Ich habe jetzt gerade mal den aktuellsten (3.3) build ausprobiert. Gefällt mir auch sehr gut. Klasse, daß m0n0 hier so viel Vorarbeit geleistet hat und die neuesten Änderungen sozusagen automatisch in den ATARI-build einfließen können.

Unterschiede zwischen 3.3 und 2.9, die mir bisher aufgefallen sind:

1) Das rsc-File entspricht jetzt mit der Menüzeile den GEM-Konventionen, d.h. die Leerzeichen zwischen "Netsurf", "Page" etc. sind endlich weg.

2) "Loading", "Fetching" etc. befindet sich nun in der Zeile unterhalb der Adresszeile, finde ich persönlich schöner.

3) Das Ladeicon oben rechts sieht bunter aus

4) Einloggen bei atari-home funktioniert jetzt besser

5) Leider ist die Version aber dem Betacharacter entsprechen instabiler, diesen Text habe ich z.B. mit dem 2.9er geschrieben, da der 3.3er dabei abstürzt (edit: konnte ich nicht mehr reproduzieren, geht also jetzt auch)

6) SSL-Zertifikate werden irgendwie alle abgelehnt

7) Die Dialogbox "About" ist nun ein eigener GEM-Dialog, aber dafür leider nicht im Fenster, was Screenshots erschwert

8) Geschwindigkeitsunterschiede konnte ich keine wesentlichen feststellen, läuft in beiden Versionen ungefähr gleich langsam :-) (System, Mint 1.19, Build vom 30.04.2015, ct60 90Mhz, Supervidel 1920x1200)
« Letzte Änderung: Mi 20.05.2015, 00:14:24 von patjomki »

Offline Nervengift

  • Benutzer
  • Beiträge: 1.533
Re: NetSurf GEM Alpha
« Antwort #167 am: Di 11.08.2015, 01:39:33 »
@patjomki: Wo hattest Du denn das 3.3er build denn her? Ich hatte vorhin auf der Netsurfseite nachgeschaut aber nur builds für Coldfire gefunden und nicht für 68k?

Andreas
520 ST(M) (TOS 1.02), Falcon030 (16 MHz, 16 MB RAM, CF-Karte, MiNT & MyAES), Milan040 (25 MHz, 48 MB RAM, EasyMiNT 1.90), Firebee (2nd Edition), PowerMac G5 Late 2005 (2 x 2,3 GHz, Mac OS 10.5), iMac 4K Late 2015 (intel Core i7 4 x 3,3 GHz, Mac OS 10.11.6), IBM XT SFD (640 KB RAM, DR DOS 6.0), Compaq LTE 5300 (Pentium/133 MHz, DR-DOS 7.03), AT-PC (Cyrix 6x86L/200 MHz, Windows 98 SE/MS-DOS 6.22 & Windows 3.11)

Offline 1ST1

  • Benutzer
  • Beiträge: 8.661
  • Gesperrter User
Re: NetSurf GEM Alpha
« Antwort #168 am: Di 11.08.2015, 07:37:20 »
Der Coldfire-Code sollte doch aber auch auf 68k laufen, oder?
Ausgeloggter Mitleser, der hier NIE mehr aktiv wird. Am besten, meine Inhalte komplett löschen. Dabei berufe ich mich auf mein Urheberrecht, die DSGVO und auf die Rechte, die mir unter Impressunm&Datenschutz zugestanden werden. Tschö!

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: NetSurf GEM Alpha
« Antwort #169 am: Di 11.08.2015, 08:07:16 »
Der Coldfire-Code sollte doch aber auch auf 68k laufen, oder?

Nein. gcc verwendet gerne Opcodes (mvz, oder mov3q z.B.) die's bei 68k nicht gibt.

Außerdem verhindert der Coldfire-Startupcode der mintlib, daß das Programm auf einem m68k überhaupt anläuft.
« Letzte Änderung: Di 11.08.2015, 09:07:22 von mfro »
And remember: Beethoven wrote his first symphony in C

Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.430
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
Re: NetSurf GEM Alpha
« Antwort #170 am: Di 11.08.2015, 09:16:10 »
Ich hatte vorhin auf der Netsurfseite nachgeschaut aber nur builds für Coldfire gefunden und nicht für 68k?

Was ist das ->   http://ci.netsurf-browser.org/builds/atari/

Habe bei mir auch den letzten Testbuild laufen ...
« Letzte Änderung: Di 11.08.2015, 10:53:38 von Lukas Frank »

Offline Nervengift

  • Benutzer
  • Beiträge: 1.533
Re: NetSurf GEM Alpha
« Antwort #171 am: Di 11.08.2015, 13:06:04 »
Genau dort hatte ich nachgeschaut. In der aktuellsten Testbuild ist aber nur eine "nsv4e.app" enthalten. >:(
520 ST(M) (TOS 1.02), Falcon030 (16 MHz, 16 MB RAM, CF-Karte, MiNT & MyAES), Milan040 (25 MHz, 48 MB RAM, EasyMiNT 1.90), Firebee (2nd Edition), PowerMac G5 Late 2005 (2 x 2,3 GHz, Mac OS 10.5), iMac 4K Late 2015 (intel Core i7 4 x 3,3 GHz, Mac OS 10.11.6), IBM XT SFD (640 KB RAM, DR DOS 6.0), Compaq LTE 5300 (Pentium/133 MHz, DR-DOS 7.03), AT-PC (Cyrix 6x86L/200 MHz, Windows 98 SE/MS-DOS 6.22 & Windows 3.11)

Offline Lukas Frank

  • Benutzer
  • Beiträge: 13.430
  • fancy Atari Musik anDA Dance "Agare Hinu Harukana"
« Letzte Änderung: Di 11.08.2015, 13:51:22 von Lukas Frank »

Offline Nervengift

  • Benutzer
  • Beiträge: 1.533
Re: NetSurf GEM Alpha
« Antwort #173 am: Di 11.08.2015, 22:27:07 »
Sorry! Ich bin so ein Schussel!!! Manchmal muss man nur genau hingucken und sollte nichts überhasten. ;) Es sind beide Versionen auf der oben genannten Seite vorhanden. ;)
520 ST(M) (TOS 1.02), Falcon030 (16 MHz, 16 MB RAM, CF-Karte, MiNT & MyAES), Milan040 (25 MHz, 48 MB RAM, EasyMiNT 1.90), Firebee (2nd Edition), PowerMac G5 Late 2005 (2 x 2,3 GHz, Mac OS 10.5), iMac 4K Late 2015 (intel Core i7 4 x 3,3 GHz, Mac OS 10.11.6), IBM XT SFD (640 KB RAM, DR DOS 6.0), Compaq LTE 5300 (Pentium/133 MHz, DR-DOS 7.03), AT-PC (Cyrix 6x86L/200 MHz, Windows 98 SE/MS-DOS 6.22 & Windows 3.11)

Offline Mathias

  • Benutzer
  • Beiträge: 1.578
Re: NetSurf GEM Alpha
« Antwort #174 am: Do 13.08.2015, 19:45:11 »
Der Coldfire-Code sollte doch aber auch auf 68k laufen, oder?

Nein. gcc verwendet gerne Opcodes (mvz, oder mov3q z.B.) die's bei 68k nicht gibt.

Außerdem verhindert der Coldfire-Startupcode der mintlib, daß das Programm auf einem m68k überhaupt anläuft.
Nur der Vollständigkeit halber; das ist die Vorgangsweise bei gcc. AHCC wiederum erzeugt Programme die auf 68020 bis inkl. ColdFire laufen. Ein Ansatz den ich für verfolgenswerter halte. Ich kann aber auch verstehen warum Vincent die Optimierung für jede CPU bevorzugt.
« Letzte Änderung: Do 13.08.2015, 20:08:10 von Mathias »
MegaST 4 mit Sounddesigner II MegaBus-Hardware und 56001, MegaSTE, Hades 040, MagiC Mac auf Mac OS 9 und eine FireBee.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: NetSurf GEM Alpha
« Antwort #175 am: Fr 14.08.2015, 00:38:28 »
...
Nur der Vollständigkeit halber; das ist die Vorgangsweise bei gcc. AHCC wiederum erzeugt Programme die auf 68020 bis inkl. ColdFire laufen. Ein Ansatz den ich für verfolgenswerter halte. Ich kann aber auch verstehen warum Vincent die Optimierung für jede CPU bevorzugt.

Jetzt haben wir noch nicht mal die von Freescale versprochenen 401 VAX-MIPS hingekriegt und ich soll auch noch einen Compiler nehmen, der wichtige Coldfire-Befehle einfach nicht nutzt und dadurch deutliche Geschwindigkeitseinbußen hat? Kommt nicht in die Tüte. >:D

Ernsthaft: der AHCC ist ein nettes Werkzeug, aber daß er es schafft, NetSurf fehlerfrei zu compilieren, halte ich für ausgeschlossen. Das ist (mindestens) eine Nummer zu groß für den.
And remember: Beethoven wrote his first symphony in C

Offline m0n0

  • Benutzer
  • Beiträge: 984
Re: NetSurf GEM Alpha
« Antwort #176 am: Fr 14.08.2015, 01:29:23 »
Zitat
und ich soll auch noch einen Compiler nehmen, der wichtige Coldfire-Befehle einfach nicht nutzt und dadurch deutliche Geschwindigkeitseinbußen hat?

IMO wäre es gut wenn gcc per default für 680x0 UND coldfire kompatibel kompiliert.
Speziell optimierte Versionen sind eine gute Sache, aber da NetSurf auf so vielen Komponenten beruht und der Coldfire Prozessor sehr ungnädig mit manchen alten Befehlen ist, und es bei den meisten anderen Plattformen zugunsten der Kompatibilität gelöst ist (IMO), stellt sich auch die Frage, warum das nicht, bei GCC für FreeMiNT bzw. GCC für Coldfire, so ist (wobei, da müsste man noch weiter ausholen..., im NetSurf build system ist der coldfire-gcc-compiler nur durch übergabe des -mcpu=5475 Parameters dazu zu bringen das coldfire kompatibler binärcode ausgespuckt wird. Das ist natürlich beim Bauen der einzelnen Komponenten höchst kritisch. Würde der im Build System verwendete compiler default-mäßig programmecode für coldfire ausgeben, wäre das alles kein Thema, aber... leider ist das nicht über Standardmechanismen in GCC für FreeMiNT/Coldfire möglich, soweit ich das verstanden habe..., in GCC Compilern ffür andere Plattformen funktioniert es wohl, weil kein so exotischer Weg wie beim FreeMiNT/Coldfire GCC genommen wurde...).

Zitat
Außerdem verhindert der Coldfire-Startupcode der mintlib, daß das Programm auf einem m68k überhaupt anläuft.

Stimmt so leider nicht ganz, wenn der Code in einer Library ist, wird dafür kein Check durchgeführt.
Das gilt auch für die Funktionen innerhalb der MiNTLib (ausser dem Startup Code ;-)).

 


« Letzte Änderung: Fr 14.08.2015, 01:50:21 von m0n0 »

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: NetSurf GEM Alpha
« Antwort #177 am: Fr 14.08.2015, 08:35:30 »
Zitat
und ich soll auch noch einen Compiler nehmen, der wichtige Coldfire-Befehle einfach nicht nutzt und dadurch deutliche Geschwindigkeitseinbußen hat?

IMO wäre es gut wenn gcc per default für 680x0 UND coldfire kompatibel kompiliert.

Speziell optimierte Versionen sind eine gute Sache, aber da NetSurf auf so vielen Komponenten beruht und der Coldfire Prozessor sehr ungnädig mit manchen alten Befehlen ist, und es bei den meisten anderen Plattformen zugunsten der Kompatibilität gelöst ist (IMO),...
Nur scheinbar. Das ist m.E. auf anderen Plattformen, die gcc per multiarch unterstützt, genauso.

Ein Compiler z.B., der für einen x68_64 64-Bit Host gebaut wurde, erzeugt Code, der auf einem 32 Bit-Betriebssystem nichts Vernünftiges macht, solange man ihn nicht mit "-m32" dazu überredet. Das funktioniert nur andersherum: von für einen ia32-Host gebautem Compiler generierter Code läuft auch auf einem 64-Bit System. Das liegt aber nicht daran, daß der gcc da "schlauer" wäre, sondern daß Intel dafür gesorgt hat, daß der Prozessor das mit einem Kompatibilitätsmodus in Hardware unterstützt.

Bei den gefühlt Tausenden unterschiedlicher ARM Varianten ist das ähnlich, funktioniert aber nur für ganz wenige, untereinander aufwärtskompatiblen Kombinationen.

Beim gcc für m68k geht's mit Ausnahme der Coldfire-Prozessoren ja auch - ein für m68000-Host gebauter Compiler erzeugt Code, der auch auf einem 68060 noch (zwar ineffizient, aber immerhin) läuft. Beim Coldfire geht das aber nicht - der hat einerseits einen erweiterten (zusätzliche Befehle), andererseits eingeschränkten Befehlssatz gegenüber seinen "Vorgängern" (gleiche Befehle haben nur sehr eingeschränkte Adressierungsarten).

Jetzt könnte man spekulieren, ob es überhaupt eine gute Idee war, Coldfire als zusätzliche Architektur für m68k aufzunehmen und nicht möglicherweise schlauer gewesen wäre, einen ganz speziellen Compiler dafür zu bauen. Innerhalb der Coldfire-Reihe funktioniert die Auf- und Abwärtskompatibilität ja wieder.
Wahrscheinlich schon, denke ich, aber genausogut könnte man spekulieren, daß es dann vielleicht beide Plattformen beim gcc gar nicht mehr gäbe, weil die geteilte - sowieso schon kleine - Entwicklertruppe dann einfach zu klein wäre, um so was zu supporten.

Zitat
bei GCC für FreeMiNT bzw. GCC für Coldfire, so ist (wobei, da müsste man noch weiter ausholen..., im NetSurf build system ist der coldfire-gcc-compiler nur durch übergabe des -mcpu=5475 Parameters dazu zu bringen das coldfire kompatibler binärcode ausgespuckt wird. Das ist natürlich beim Bauen der einzelnen Komponenten höchst kritisch. Würde der im Build System verwendete compiler default-mäßig programmecode für coldfire ausgeben, wäre das alles kein Thema, aber...

Möglicherweise könnte man dem gcc (ähnlich wie bei "m68020-60") beibringen, mit diesem sehr eingeschränkten Befehlssatz auszukommen, das müsste aber erstens jemand machen und zweitens ist das Ergebnis sehr ineffektiv und _deutlich_ langsamer.
Dein Vorschlag geht durchaus - ein Compiler der defaultmäßig Coldfire-Code erzeugt. Hat Mikro ja gezeigt, als er den GCC für den nativen Coldfire-Host gebaut hat.

Zitat
Zitat
Außerdem verhindert der Coldfire-Startupcode der mintlib, daß das Programm auf einem m68k überhaupt anläuft.

Stimmt so leider nicht ganz, wenn der Code in einer Library ist, wird dafür kein Check durchgeführt.
Das gilt auch für die Funktionen innerhalb der MiNTLib (ausser dem Startup Code ;-)).

Auch das ist bei anderen Plattformen nicht anders. Wär' ja auch ziemlich meschugge, wenn der gcc bei jeder neu aufgerufenen Funktion prüfen würde, ob wohl zwischenzeitlich einer den Prozessor gewechselt hat. Da muß - überall - der Programmierer darauf achten, daß er nur Dinge zusammenlinkt, die auch zueinander passen.
And remember: Beethoven wrote his first symphony in C

Offline Mathias

  • Benutzer
  • Beiträge: 1.578
Re: NetSurf GEM Alpha
« Antwort #178 am: Fr 14.08.2015, 09:15:49 »
Jetzt haben wir noch nicht mal die von Freescale versprochenen 401 VAX-MIPS hingekriegt und ich soll auch noch einen Compiler nehmen, der wichtige Coldfire-Befehle einfach nicht nutzt und dadurch deutliche Geschwindigkeitseinbußen hat? Kommt nicht in die Tüte. >:D
Hihi! ;)
Ja, ich sag ja ich kann VIncent schon verstehen. Ich hab ja beispielsweise auch blöd geschaut um wieviel flotter Highwire für den 040er optimiert, dann am Hades gelaufen ist im Gegensatz zur "normalen" Version.

Ernsthaft: der AHCC ist ein nettes Werkzeug, aber daß er es schafft, NetSurf fehlerfrei zu compilieren, halte ich für ausgeschlossen. Das ist (mindestens) eine Nummer zu groß für den.
Davon war ja nie die Rede Netsurf mit AHCC zu kompilieren! Ich wollte nur generell anmerken, daß es grundsätzlich geht, weil 1ST1 so verwundert war. Denn wenn es gar nicht funktionieren würde, hätten wir ja tatsächlich einen PPC nehmen können ;)
MegaST 4 mit Sounddesigner II MegaBus-Hardware und 56001, MegaSTE, Hades 040, MagiC Mac auf Mac OS 9 und eine FireBee.

Offline mfro

  • Benutzer
  • Beiträge: 1.640
Re: NetSurf GEM Alpha
« Antwort #179 am: Fr 14.08.2015, 09:38:24 »
...Denn wenn es gar nicht funktionieren würde, hätten wir ja tatsächlich einen PPC nehmen können ;)

Da unterschlägst Du die cf68klib. Die gibt's für den PPC nicht (und kann's in der Form auch gar nicht geben).

Nicht alles durcheinanderwerfen. "Code für m68k _und_ Coldfire erzeugen", "illegale m68k-Befehle in der cf68klib abfangen und korrigieren" und "eine m68k-CPU auf einer anderen Prozessorarchitektur emulieren" sind prinzipiell völlig unterschiedliche technische Herangehensweisen.
And remember: Beethoven wrote his first symphony in C