30

Bon ca fonctionne en BSS avec un super hack sauvage.
Reste à découper en plein de .asm et laisser le linkeur faire son boulôt.
Je tomberais sur plein d'autres erreurs à mon avis, mais bon.

KK: C'est bon pour moi. Tu peux réintégrer. Tu veux un patch ou ce qui a été posté te suffit ?

31

Si tu as changé encore qqch. depuis le ./23, j'aimerais bien le patch mis à jour.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

32

J'ai juste pris en compte tes remarques.

Envoyé.

33

D'ailleurs, je ne veux pas te décourager, mais il reste encore pas mal de boulot avant que ce soit releasable:
* rajouter la nouvelle option partout: KTIGCC 1 et 2, TIGCC IDE, TIGCC.EXE, tprbuilder (ton patch pour le tigcc POSIX m'a l'air bon, mais c'était probablement le plus facile à adapter parmi tous ceux-là),
* documenter la nouvelle option,
* trouver une solution pour le problème de l'optimisation des opérandes de destination.
Désolé, mais je n'aime pas les choses faites à moitié. sad
Et il y a des chances que je release une bêta de TIGCC avant de merger ça parce que la version 0.96 Beta 9 traîne déjà depuis longtemps.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

34

Kevin Kofler (./33) :
* rajouter la nouvelle option partout: KTIGCC 1 et 2, TIGCC IDE, TIGCC.EXE, tprbuilder (ton patch pour le tigcc POSIX m'a l'air bon, mais c'était probablement le plus facile à adapter parmi tous ceux-là),

C'est le seul que j'utilise.
Kevin Kofler (./33) :
* documenter la nouvelle option,

--flash-os-bss-start=VALUE
This option specifies the start of the BSS Section (the address in RAM) for the Flash OS (See --flash-os). The allocation and the initialization of the BSS Section must be done by the Flash OS.
VALUE must be a decimal or an hexadecimal integer.
Example: --flash-os-bss-start=0x5B00

__ld_archive_start:
This built-in symbol represents the start of the archive section (in ROM), aligned to the beginning of a sector. If the program is not a flash os, an error is reported.

__ld_bss_even_end
This built-in symbol represents the even end of the BSS section. It points to the location behind the last item in the section, aligned to the next multiple of 2. If the program does not contain a BSS section, an error is reported.
Kevin Kofler (./33) :
trouver une solution pour le problème de l'optimisation des opérandes de destination.

Là, il y a du boulôt, mais je pense que ce n'est pas indispensable dans une première version.
Kevin Kofler (./33) :
mais il reste encore pas mal de boulot

Ta notion de pas mal de boutôt à changer en 2 ans. grin

35

Bah, je vais être franc: je suis de moins en moins motivé pour travailler sur TIGCC, d'un côté parce que j'ai aussi d'autres projets (par exemple je suis un des packagers de Fedora maintenant), de l'autre côté parce que ça fait des années qu'il ne reste plus grand monde, et avec TI qui ne propage plus que la Nspire (machine totalement fermée), ça ne risque pas de changer. sad
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

36

Je t'avais dit que je finirais mainteneur de tigcc à ta place grin

37

Merci, cette menace va me motiver à continuer. grin Je peux imaginer ce que ça va donner avec toi: mode kernel par défaut, mode _nostub bogué quand on essaie de compiler tout à part PreOs, code de démarrage supprimé, remplacé par l'utilisation de fonctionnalités du tout dernier PreOs, ... grin
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

38

39

Et dans un deuxième temps: TIGCCLIB dynamique, documentation remplacée par un romcalls.txt (voire pedrom.txt grin) de 3 MO et un tigcclib.txt de 500 KO sans liens ou formats, EDIs abandonnés (avec un readme.txt disant d'utiliser vi grin), GCC patché pour utiliser A68k, distribution seulement dans les sources de PreOs et sans binaires, ... grin
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

40

Ca fait un petit moment qu'on se doute tous plus ou moins que tu n'es pas très motivé pour travailler sur TIGCC, d'autant plus que tu t'occupes de KDE dans Fedora wink
S'occuper de KDE dans Fedora est au demeurant carrément plus utile que de t'occuper d'un outil pour spécialistes, d'ailleurs.

C'est nettement visible que tu le fais exprès, mais tu racontes quand même vraiment n'importe quoi dans ./37 et ./39 grin


Ca repose la question de la maintenance et de l'évolution de TIGCC, question déjà soulevée il y a quelques mois.
Problème "classique" (au sens qu'il peut arriver dans les logiciels ouverts maintenus collaborativement) d'un outil devenu maintenu par un seul mainteneur, mainteneur qui ne faisait déjà pas grand chose depuis une paire d'années, et qui a encore moins le temps maintenant, mais qui n'ouvre pas pour autant la maintenance (pour autant que je sache) ?
Il y a des personnes capables de t'aider, mais vu qu'on n'est... heu... pas toujours d'accord avec toi sur la façon de faire, ça risquerait d'être houleux.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

41

Alors déjà je prends très mal ton "ne faisait déjà pas grand chose depuis une paire d'années", as-tu vu tout ce que j'ai fait sur KTIGCC (et aussi le portage KDE 4)? TIGCC lui-même a souffert un peu, mais je ne peux pas travailler sur tout en même temps.

Et ensuite, ça fait longtemps que je cherche des développeurs, mais personne n'est intéressé.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

42

Ouais, j'ai mal formulé mon post, là... il manque "de nouveau" après "pas grand chose".
Je te présente mes excuses.


Tu as effectivement bossé sur KTIGCC et le portage KDE4, en plus de TIEmu. La réécriture KTIGCC permet de s'affranchir de Delphi et d'augmenter la portabilité (en particulier avec KDE 4) de l'IDE. Et je sais bien que ton temps libre est limité, comme le mien (bon, sachant que je ne suis plus étudiant, et même s'il faut que je fasse un peu autre chose le week-end que de rester scotché sur mon PC, j'ai plus de temps que quand j'étais étudiant...).
Mais ce que je voulais signifier, et que tu as du reste compris ("TIGCC lui-même a souffert un peu"), c'est que KTIGCC n'apporte pas vraiment de fonctionnalités nouvelles, d'optimisations dans TIGCCLIB, d'extensions de documentation.

Et ensuite, ça fait longtemps que je cherche des développeurs, mais personne n'est intéressé.

Voir la deuxième partie de ./40: on a déjà discuté des possibles causes de cet état de fait, et de pistes pour améliorer les choses wink
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

43

bon, en même temps, tigcc, il commence a se stabiliser aussi, non?

44

45

En effet, mais il y a des contributions en attente, comme je l'indique en ./42 wink
Sans même parler de la doc (c'est clair que ça a moins de sens de l'intégrer maintenant que les TI-68k sont en fin de vie et que la Nspire est sortie... mais comme c'est prévu de les intégrer depuis 2002-2003, même si ça m'a amusé de faire plein de reverse-engineering sur AMS, ça n'aura pas servi à grand monde que j'y passe plusieurs dizaines de journées à plein temps...), il y a des features / optimisations en attente pour la toolchain ou TIGCCLIB.

Mais ça prend du temps de processer tout ça. Comme je l'avais indiqué, une possibilité pour que ce soit moins lourd, est de partager les tâches.

[EDIT: cross, je répondais à squalyl]
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

46

Bon PedroM compile avec l'option cut-ranges. top
Et en traduisant tous les bsr en jsr, et en laissant faire ld-tigcc, je ne perds que moins de 100 octets.
C'est raisonnable, donc je laisse (Mais ld-tigcc ne les détecte pas tous tongue).

Cependant, un vrai premier problème:
		lea	stderr,a2		; stderr	
		cmpi.b	#'2',d0			; stderr is 2>. First check 2
		bne.s	\EndRedirect		; No, so end of redirection
		move.b	(a0)+,d0		; Read next char
		cmpi.b	#'>',d0			; Check second char
		bne.s	\EndRedirect		; no
		; Does the redirection
\Redirect		cmpi.b	#' ',(a0)+
			beq.s	\Redirect
		tst.b	-(a0)		; Redirection: Check if there is at least a char
		beq.s	\EndRedirect
		jsr	freopen		; Reopen stream to a file
		move.l	a0,d0
		beq.s	\ResetRedirect	; Error: Reset to default
		subq.w	#4,d4
		bhi.s	\RedirectLoop
\ResetRedirect:
	jsr	InitTerminal
\EndRedirect
	rts


ld-tigcc m'optimise le jsr InitTerminal / rts
en un bra.w InitTerminal et en virant le rts.
Ce qui fait que ca plante dès qu'on entre une instruction.

Voici l'extrait de Makefile:
A68K=tigcc -c -WA,-a  --cut-ranges
A68K_INCLUDE=-WA,-ic -WA,-i$(PREOS_SRC)
S2ASM=../bin/s2asm
MAKETIB=tigcc -v --flash-os --flash-os-bss-start=0x5B00 --outputbin --optimize-code --cut-ranges


Je pense qu'a68k n'émet pas de reloc dans ce cas là, et donc ld-tigcc ne le voyant pas, l'optimize à tord. Tu confirmes ?

47

Rajoute aussi --optimize-code dans ta ligne A68K, en particulier si on sait qu'on va linker avec --optimize-returns, l'option pour émettre tous les labels (même locaux) dans le fichier objet sera mise, et le linker n'effectuera pas l'optimisation tailcall s'il y a un label.

Voilà pourquoi il faut toujours passer les mêmes options à tigcc -c qu'à tigcc.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

48

Il me semble qu'elle y ait déjà:

-a
Causes all relocs to be emitted, even PC-relative relocs within a section. It also emits address differences in a special TIGCC-specific format. This will allow more aggressive linker-side optimization.

et

-WA,-a

Mais je veux bien essayer.
[EDIT]: Ca marche.

49

C'est le switch -d le switch magique ici.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

50

C'est pas immédiat en lisant la doc. Ca parle juste d'émettre les symboles pour le débuggeur sad

51

Mais --optimize-code implique --optimize-returns qui implique automatiquement de passer -d à A68k. Bref, il faut toujours passer les switches d'optimisation à tigcc -c aussi. Ou utiliser KTIGCC. tongue
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

52

(ou tprbuilder, nettement plus scriptable - cf. TICT-Explorer tongue)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

53

Tu veux une interface D-Bus pour KTIGCC 2? wink
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

54

... je ne m'attendais pas à cette question grin

Si ce n'est pas difficile à implémenter, pourquoi pas. Mais bon, ça supposerait que j'aie KTIGCC 2 sur ma machine - alors que je n'ai pas encore mis KTIGCC sur celle-ci, que j'utilise depuis septembre.
Plusieurs de mes TPR, en particulier ceux de TICT-Explorer et au moins un d'ExtGraph, sont faits pour fonctionner avec tprbuilder et pas avec TIGCC IDE / KTIGCC.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

55

56

Des nouvelles du front. J'ai pas fait grand chose depuis smile :

* J'ai intégré ttunpack fast LGPL.
* J'ai essayé de commencer à séparer en différent .o: Ca s'annonce mal sad Le linkeur me sort plein d'erreur et n'est pas très locase. Donc on va faire par étape. Première étape: sortir side89.asm.

Avant:
Program Statistics:
  Program Variable Name:                    main\pedrom
  Program Variable Size:                    121597 Bytes
  BSS Size:                                 10232 Bytes
  Absolute Relocs:                          0
  Natively Emitted Relocs:                  0
  Relocs Removed by Branch Optimization:    621
  Relocs Removed by Move Optimization:      63
  Relocs Removable by F-Line Jumps:         1021
  Space Saved by Range-Cutting:             1452 Bytes


Après avec reorder-section
  Program Variable Name:                    main\pedrom
  Program Variable Size:                    122107 Bytes
  BSS Size:                                 10232 Bytes
  Absolute Relocs:                          0
  Natively Emitted Relocs:                  0
  Relocs Removed by Branch Optimization:    516
  Relocs Removed by Move Optimization:      209
  Relocs Removed by Test Optimization:      10
  Relocs Removed by Calc Optimization:      9
  Relocs Removable by F-Line Jumps:         1603
  Space Saved by Range-Cutting:             1564 Bytes


Après sans reorder-section:
Program Statistics:
  Program Variable Name:                    main\pedrom
  Program Variable Size:                    121911 Bytes
  BSS Size:                                 10232 Bytes
  Absolute Relocs:                          0
  Natively Emitted Relocs:                  0
  Relocs Removed by Branch Optimization:    621
  Relocs Removed by Move Optimization:      240
  Relocs Removed by Test Optimization:      10
  Relocs Removed by Calc Optimization:      9
  Relocs Removable by F-Line Jumps:         1039
  Space Saved by Range-Cutting:             1836 Bytes


Deux conclusions s'imposent:
+ augmentation de taille 'normale' car PedroM est (horriblement?) optimisé taille et on ne pouvait pas déplacer les fichiers ou les symboles sans sortir des erreurs de relocation. side a été déplacé à la fin, et donc doit faire que des jsr ou des jmp vers les autres symboles de pedrom.
+ Par contre l'option -reorder-section marche mal et produit un exécutable plus gros. Ca ne me donne pas confiance pour la suite lorsqu'il y a aura vraiment beaucoup de sections et de symboles partout sad

57

Dans le même genre (en continuant à sortir le hack s2asm), j'arrive (avec reorder-section) à des ordres de section impossibles:
PedroM2.89.o: Error: Symbol `SymCmp' too far for size 2 reloc at 0xB7A8.
PedroM2.89.o: Error: Symbol `SymCmp' too far for size 2 reloc at 0xB7BA.
PedroM2.89.o: Error: Symbol `FolderGetCur' too far for size 2 reloc at 0xB80A.
PedroM2.89.o: Error: Symbol `SymFindFirst' too far for size 2 reloc at 0xB896.
PedroM2.89.o: Error: Symbol `SymCmp' too far for size 2 reloc at 0xB8A2.
PedroM2.89.o: Error: Symbol `SymFindFirst' too far for size 2 reloc at 0xB91E.
PedroM2.89.o: Error: Symbol `SymFindNext' too far for size 2 reloc at 0xB938.
PedroM2.89.o: Error: Symbol `SymCmp' too far for size 2 reloc at 0xB966.
PedroM2.89.o: Error: Symbol `SymFindFirst' too far for size 2 reloc at 0xBB92.
PedroM2.89.o: Error: Symbol `SymFindNext' too far for size 2 reloc at 0xBB9E.
PedroM2.89.o: Error: Symbol `MakeHsym' too far for size 2 reloc at 0xBD38.
PedroM2.89.o: Error: Symbol `EM_twinSymFromExtMem' too far for size 2 reloc at 0xBD42.
PedroM2.89.o: Error: Symbol `DerefSym' too far for size 2 reloc at 0xBD50.
PedroM2.89.o: Error: Symbol `DerefSym' too far for size 2 reloc at 0xBDB4.
PedroM2.89.o: Error: Symbol `SymDelTwin' too far for size 2 reloc at 0xBDCC.


Alors que sans, ca passe nickel.
Program Statistics:
  Program Variable Name:                    main\pedrom
  Program Variable Size:                    120739 Bytes
  BSS Size:                                 10232 Bytes
  Absolute Relocs:                          0
  Natively Emitted Relocs:                  0
  Relocs Removed by Branch Optimization:    609
  Relocs Removed by Move Optimization:      244
  Relocs Removed by Test Optimization:      10
  Relocs Removed by Calc Optimization:      13
  Relocs Removable by F-Line Jumps:         1104
  Space Saved by Range-Cutting:             1828 Bytes

58

PpHd (./56) :
+ Par contre l'option -reorder-section marche mal et produit un exécutable plus gros. Ca ne me donne pas confiance pour la suite lorsqu'il y a aura vraiment beaucoup de sections et de symboles partout sad

* Avec seulement 2 ou 3 sections, ça ne peut pas faire grand chose.
* C'est une heuristique, ce n'est pas garanti toujours améliorer les choses.
* Ça a été tuné pour les programmes "normaux"; il se peut fort que l'heuristique marche mal pour les Flash OS. sad
PpHd (./57) :
Dans le même genre (en continuant à sortir le hack s2asm), j'arrive (avec reorder-section) à des ordres de section impossibles:

Ça, c'est ta faute, ton code dépend de l'ordre des sections dans tous les sens (c'est ce qui m'a poussé à abandonner ma tentative de modulariser PedroM). On n'a pas le droit de faire des sauts relatifs d'une section à une autre parce que justement tu ne sais pas dans quel ordre les sections vont se trouver.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

59

Kevin Kofler (./58) :
* Avec seulement 2 ou 3 sections, ça ne peut pas faire grand chose.

A l'heure actuelle, c'est plutot 10/15.
J'ai fait un test avec 400, mais cela me plante sur un :
c/files.89.o: Error: Cannot emit 2 byte absolute reloc to `TMPNAME'.

que je ne comprends pas...
Car s'il y a un 2 byte absolute reloc, c'est que c'est le linkeur qui l'a introduit. A voir.

Après analyse, ca serait :
CountSectionCOFFSize (Section=0x8473890, UserData=0xbfc8e834) at export/exp_dbg.c:138
le coupable.
Kevin Kofler (./58) :
Ça, c'est ta faute, ton code dépend de l'ordre des sections dans tous les sens (c'est ce qui m'a poussé à abandonner ma tentative de modulariser PedroM). On n'a pas le droit de faire des sauts relatifs d'une section à une autre parce que justement tu ne sais pas dans quel ordre les sections vont se trouver.

Tu parles de la 0.81. La 0.82 est beaucoup plus modulaire (Pas encore à 100% par contre).

Et je suis désolé, mais le linkeur ne devrait pas échouer s'il y a un ordre valide !
Il FAUT tester lorsqu'on réordonne les sections, si le nouvel ordre est valide, ie si toutes les relocs relatives restent possibles avec ce nouvel ordre !
Sinon ca ne sert à rien.

Et sinon ca ne sert pas à grand chose:
Avec: 121337
Sans: 120975

60

> car PedroM est (horriblement?) optimisé taille
Ben non, puisque tu as mis la version rapide de ttunpack, vilain roll
Tu n'as pas choisi la version plus de deux fois plus petite (et plus lente à peu près dans la même proportion). Kevin, lui, au moins, a eu la grande finesse de choisir la version petite/lente pour tous les lanceurs spécifiques pour programmes compressés PPG, lanceurs dupliqués en un nombre variable d'exemplaires sur les machines en circulation (c'est bien pour ça qu'il faut les optimiser taille !).



(et oui, je sais où est la sortie et d'ailleurs, j'y vais tout de suite grin
J'ai pas pu résister, c'est tout grin)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.