Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Erreur de compil

31 views
Skip to first unread message

Frédéric Praca

unread,
Dec 23, 2011, 9:35:15 AM12/23/11
to
Bonjour à tous,
j'ai écrit un bout de code utilisant un sous-type d'un type privé.
Mon problème est que la compilation provoque une erreur du compilateur.
J'ai donc fait un rapport de bug sur le Bugzilla de Gcc mais n'ayant pas
de confirmation, j'aurais voulu savoir si cela se produisait aussi chez
vous.
Pour information, il s'agit d'un extrait d'un programme permettant le
"calcul" des notes composant une gamme musicale et ses accords associés.
Compte tenu de la longueur des sources et pour ne pas polluer le
newsgroup, vous pourrez trouver le code incriminé sur le rapport de bogue
(http://gcc.gnu.org/bugzilla/attachment.cgi?id=25810 ) ou sur pastebin
(http://pastebin.com/RN21TtX8 ).

Optionnellement, si vous avez des suggestions/remarques sur
l'architecture du code fourni, vous êtes les bienvenus :)

Fred

Frédéric Praca

unread,
Dec 23, 2011, 9:54:44 AM12/23/11
to
Quel débutant je fais !!! Même si cela apparaît dans le rapport, j'ai
oublié de préciser ici que j'ai testé sur Ubuntu avec un gcc-4.4.3 et sur
FreeBSD avec gnat-aux qui utilise un gcc-4.6.1.

Désolé pour l'oubli
Fred

J-P. Rosen

unread,
Dec 23, 2011, 1:34:37 PM12/23/11
to
Le 23/12/2011 15:35, Frédéric Praca a écrit :
> Bonjour à tous,
> j'ai écrit un bout de code utilisant un sous-type d'un type privé.
Désolé, j'ai regardé ton code sur Bugzilla, le mot "subtype" n'apparait
pas. Peux-tu nous mettre l'extrait qui te semble provoquer le problème?
--
---------------------------------------------------------
J-P. Rosen (ro...@adalog.fr)
Adalog a déménagé / Adalog has moved:
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00

Frédéric Praca

unread,
Dec 23, 2011, 6:05:05 PM12/23/11
to
Le Fri, 23 Dec 2011 19:34:37 +0100, J-P. Rosen a écrit :

>> Bonjour à tous,
>> j'ai écrit un bout de code utilisant un sous-type d'un type privé.
> Désolé, j'ai regardé ton code sur Bugzilla, le mot "subtype" n'apparait
> pas. Peux-tu nous mettre l'extrait qui te semble provoquer le problème?

Exact, ce n'est pas un sous-type mais un type dérivé.
En fait, ce sont les types dérivés de NamedStructure qui semblent poser
problème.
Mon but était de créer des types dérivés privés issus de NamedStructure,
lui-même un type privé. Cela m'a conduit à créer des opérations permettant
la manipulation de ces différents types en conservant une sémantique
identique.

La dernière info est que j'ai contourné le problème en ne déclarant pas
NamedStructure comme étant privé.

Voilà, désolé pour la mauvaise description.

Fred

Frédéric Praca

unread,
Dec 24, 2011, 6:40:44 AM12/24/11
to
>> Bonjour à tous,
>> j'ai écrit un bout de code utilisant un sous-type d'un type privé.
> Désolé, j'ai regardé ton code sur Bugzilla, le mot "subtype" n'apparait
> pas. Peux-tu nous mettre l'extrait qui te semble provoquer le problème?
Bonjour,
j'ai finalement pris le temps de faire un bout de code beaucoup plus
court et moins complexe.
Il provoque un plantage du compilateur dès l'appel à la fonction de
création du type dérivé.

with Root_Private;

package Derived_Root is
type Derived_Root_obj(Size : Positive) is private;

function Create(Name : String) return Derived_Root_obj;

private
type Derived_Root_obj(Size: Positive) is new Root_Private.Root(Size);

end Derived_Root;
package Root_Private is
type Root(Size : Positive) is private;

function Create(Name : String) return Root;

private
type Root(Size : Positive) is
record
Name : String(1..Size);
end record;
end Root_Private;

package body Derived_Root is

function Create(Name : String) return Derived_Root_obj is
begin
return Derived_Root_obj(Root_Private.Create(Name));
end Create;

end Derived_Root;
package body Root_Private is

function Create(Name : String) return Root is
Returned_Root : Root(Name'Length);
begin
Returned_Root.Name := Name;
return Returned_Root;
end Create;

end Root_Private;
with Root_Private; use Root_Private;
with Derived_Root; use Derived_Root;

procedure Test is
My_Root : Root := Create("My test");
My_Derived : Derived_Root_obj := Derived_Root.Create("My derived
root");
begin
null;
end Test;

J-P. Rosen

unread,
Dec 26, 2011, 2:30:01 AM12/26/11
to
Le 24/12/2011 12:40, Frédéric Praca a écrit :
> j'ai finalement pris le temps de faire un bout de code beaucoup plus
> court et moins complexe.
> Il provoque un plantage du compilateur dès l'appel à la fonction de
> création du type dérivé.
Je suppose que tu veux dire: un plantage sur la ligne qui contient
l'appel à Derived_Root.Create (l'appel lui-même a lieu à l'exécution,
pas à la compilation). C'est important, parce-que rien ne dit que ce
soit la compilation de l'appel qui plante. D'autre part, quel est le
plantage? Une bug-box? Avec quel message?

Si c'est vraiment un plantage compilateur (bug-box), il n'y a aucun
doute, c'est une erreur du compilateur qu'il faut signaler.

Frédéric PRACA

unread,
Dec 26, 2011, 5:41:05 AM12/26/11
to
> On 26 déc, 08:30, "J-P. Rosen" <ro...@adalog.fr> wrote:
> > Le 24/12/2011 12:40, Frédéric Praca a écrit :
> > j'ai finalement pris le temps de faire un bout de code beaucoup plus
> > court et moins complexe.
> > Il provoque un plantage du compilateur dès l'appel à la fonction de
> > création du type dérivé.
>
> Je suppose que tu veux dire: un plantage sur la ligne qui contient
> l'appel à Derived_Root.Create (l'appel lui-même a lieu à l'exécution,
> pas à la compilation). C'est important, parce-que rien ne dit que ce
Oui, c'est bien ça, il s'agit d'un plantage à la compilation de la
ligne qui
contient l'appel à Derived_Root.Create.

> soit la compilation de l'appel qui plante. D'autre part, quel est le
> plantage? Une bug-box? Avec quel message?
Comme je l'ai précisé sur http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51114
,
il s'agit bel et bien d'une bug-box.

> Si c'est vraiment un plantage compilateur (bug-box), il n'y a aucun
> doute, c'est une erreur du compilateur qu'il faut signaler.
J'ai bien signalé le problème mais je voulais savoir si une personne
du groupe
le reproduisait.

Frédéric PRACA

unread,
Dec 26, 2011, 5:42:44 AM12/26/11
to
On 26 déc, 11:41, Frédéric PRACA <frederic.pr...@googlemail.com>
wrote:
> > On 26 déc, 08:30, "J-P. Rosen" <ro...@adalog.fr> wrote:
> > > Le 24/12/2011 12:40, Frédéric Praca a écrit :
> > > j'ai finalement pris le temps de faire un bout de code beaucoup plus
> > > court et moins complexe.
> > > Il provoque un plantage du compilateur dès l'appel à la fonction de
> > > création du type dérivé.
>
> > Je suppose que tu veux dire: un plantage sur la ligne qui contient
> > l'appel à Derived_Root.Create (l'appel lui-même a lieu à l'exécution,
> > pas à la compilation). C'est important, parce-que rien ne dit que ce
>
> Oui, c'est bien ça, il s'agit d'un plantage à la compilation de la
> ligne qui
> contient l'appel à Derived_Root.Create.
>
> > soit la compilation de l'appel qui plante. D'autre part, quel est le
> > plantage? Une bug-box? Avec quel message?
>
> Comme je l'ai précisé surhttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=51114
> ,
> il s'agit bel et bien d'une bug-box.
>
> > Si c'est vraiment un plantage compilateur (bug-box), il n'y a aucun
> > doute, c'est une erreur du compilateur qu'il faut signaler.
>
> J'ai bien signalé le problème mais je voulais savoir si une personne
> du groupe
> le reproduisait.

désolé pour l'indentation bizarre mais l'interface des Google Groups
ne précise pas qu'elle ré-indentera le message elle-même :)

Blady

unread,
Dec 26, 2012, 12:36:04 PM12/26/12
to frederi...@googlemail.com
Le lundi 26 décembre 2011 11:41:05 UTC+1, Frédéric PRACA a écrit :
> > On 26 déc, 08:30, "J-P. Rosen" <ro...@adalog.fr> wrote:
> > > Le 24/12/2011 12:40, Frédéric Praca a écrit :
> > > j'ai finalement pris le temps de faire un bout de code beaucoup plus
> > > court et moins complexe.
> > > Il provoque un plantage du compilateur dès l'appel à la fonction de
> > > création du type dérivé.
> > Je suppose que tu veux dire: un plantage sur la ligne qui contient
> > l'appel à Derived_Root.Create (l'appel lui-même a lieu à l'exécution,
> > pas à la compilation). C'est important, parce-que rien ne dit que ce
> Oui, c'est bien ça, il s'agit d'un plantage à la compilation de la
> ligne qui
> contient l'appel à Derived_Root.Create.
> > soit la compilation de l'appel qui plante. D'autre part, quel est le
> > plantage? Une bug-box? Avec quel message?
> Comme je l'ai précisé sur http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51114
> il s'agit bel et bien d'une bug-box.
> > Si c'est vraiment un plantage compilateur (bug-box), il n'y a aucun
> > doute, c'est une erreur du compilateur qu'il faut signaler.
> J'ai bien signalé le problème mais je voulais savoir si une personne
> du groupe
> le reproduisait.

Bonjour Frédéric, j'ai bien reproduit le problème avec GNAT GPL 2012 :

$ gnatmake test01
gcc -c test01.adb
+===========================GNAT BUG DETECTED==============================+
| GPL 2012 (20120509) (x86_64-apple-darwin10.8.0) GCC error: |
| in gnat_to_gnu_entity, at ada/gcc-interface/decl.c:551 |
| Error detected at test01.adb:49:49 |
| Please submit a bug report by email to rep...@adacore.com. |

As-tu eu des retours suite à ton signalement sur gcc.gnu.org ?

Meilleurs voeux, Pascal.

Frédéric Praca

unread,
Dec 27, 2012, 5:52:02 AM12/27/12
to
Le Wed, 26 Dec 2012 09:36:04 -0800, Blady a écrit :

> Le lundi 26 décembre 2011 11:41:05 UTC+1, Frédéric PRACA a écrit :
>> > On 26 déc, 08:30, "J-P. Rosen" <ro...@adalog.fr> wrote:
>> > > Le 24/12/2011 12:40, Frédéric Praca a écrit :
> > > > j'ai finalement pris le temps de faire un bout de code beaucoup
> > > > plus
>> > > court et moins complexe.
>> > > Il provoque un plantage du compilateur dès l'appel à la fonction de
>> > > création du type dérivé.
>> > Je suppose que tu veux dire: un plantage sur la ligne qui contient
>> > l'appel à Derived_Root.Create (l'appel lui-même a lieu à l'exécution,
>> > pas à la compilation). C'est important, parce-que rien ne dit que ce
>> Oui, c'est bien ça, il s'agit d'un plantage à la compilation de la
>> ligne qui contient l'appel à Derived_Root.Create.
>> > soit la compilation de l'appel qui plante. D'autre part, quel est le
>> > plantage? Une bug-box? Avec quel message?
>> Comme je l'ai précisé sur
>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51114 il s'agit bel et bien
>> d'une bug-box.
>> > Si c'est vraiment un plantage compilateur (bug-box), il n'y a aucun
>> > doute, c'est une erreur du compilateur qu'il faut signaler.
>> J'ai bien signalé le problème mais je voulais savoir si une personne du
>> groupe le reproduisait.
>
> Bonjour Frédéric, j'ai bien reproduit le problème avec GNAT GPL 2012 :
Salut Pascal,

> $ gnatmake test01 gcc -c test01.adb +===========================GNAT BUG
> DETECTED==============================+
> | GPL 2012 (20120509) (x86_64-apple-darwin10.8.0) GCC error:
> |
> | in gnat_to_gnu_entity, at ada/gcc-interface/decl.c:551
> |
> | Error detected at test01.adb:49:49
> |
> | Please submit a bug report by email to rep...@adacore.com.
> |
>
> As-tu eu des retours suite à ton signalement sur gcc.gnu.org ?
Que dalle !! A première vue, rien n'a été corrigé vu que tu as le
problème sur la version de cette année. A tout hasard, je vais refaire le
test avec la deernière Gnat Aux de FreeBSD mais bon, je n'ai pas beaucoup
d'espoir de la faire marcher mieux que l'officielle.

> Meilleurs voeux, Pascal.
De même

Fred

Blady

unread,
Dec 27, 2012, 12:41:12 PM12/27/12
to
Le 27/12/12 11:52, Frédéric Praca a écrit :
>> Bonjour Frédéric, j'ai bien reproduit le problème avec GNAT GPL 2012 :
> Salut Pascal,
>
>> $ gnatmake test01 gcc -c test01.adb +===========================GNAT BUG
>> DETECTED==============================+
>> | GPL 2012 (20120509) (x86_64-apple-darwin10.8.0) GCC error:
>> |
>> | in gnat_to_gnu_entity, at ada/gcc-interface/decl.c:551
>> |
>> | Error detected at test01.adb:49:49
>> |
>> | Please submit a bug report by email to rep...@adacore.com.
>> |
>>
>> As-tu eu des retours suite à ton signalement sur gcc.gnu.org ?
> Que dalle !! A première vue, rien n'a été corrigé vu que tu as le
> problème sur la version de cette année. A tout hasard, je vais refaire le
> test avec la deernière Gnat Aux de FreeBSD mais bon, je n'ai pas beaucoup
> d'espoir de la faire marcher mieux que l'officielle.
>
>> Meilleurs voeux, Pascal.
> De même
>
> Fred
>
Il faudra alors plutôt contacter rep...@adacore.com.
Veux-tu que je le fasse ?
A+, Pascal.


gautier...@hotmail.com

unread,
Dec 27, 2012, 4:33:40 PM12/27/12
to
Pareil sur GNAT GPL 2012 pour Windows - cf ci-dessous.
Je te conseille comme Pascal d'envoyer directement le rapport à l'adresse indiquée dans le bug box. En général la réponse est très rapide - quelle qu'en soit sa teneur...
_________________________
Gautier's Ada programming
http://gautiersblog.blogspot.com/search/label/Ada
NB: adresse mail valide sur le lien ci-dessus

>gnatchop bb.txt
splitting bb.txt into:
derived_root.ads
root_private.ads
derived_root.adb
root_private.adb
test.adb

>gnatmake test
gcc -c test.adb
+===========================GNAT BUG DETECTED==============================+
| GPL 2012 (20120509) (i686-pc-mingw32) GCC error: |
| in gnat_to_gnu_entity, at ada/gcc-interface/decl.c:551 |
| Error detected at test.adb:6:49 |
| Please submit a bug report by email to ... |
| GAP members can alternatively use GNAT Tracker: |
| http://www.adacore.com/ section 'send a report'. |
| See gnatinfo.txt for full info on procedure for submitting bugs. |
| Use a subject line meaningful to you and us to track the bug. |
| Include the entire contents of this bug box in the report. |
| Include the exact gcc or gnatmake command that you entered. |
| Also include sources listed below in gnatchop format |
| (concatenated together with no headers between files). |
| Use plain ASCII or MIME attachment. |
+==========================================================================+

Please include these source files with error report
Note that list may not be accurate in some cases,
so please double check that the problem can still
be reproduced with the set of files listed.
Consider also -gnatd.n switch (see debug.adb).

test.adb
root_private.ads
derived_root.ads

compilation abandoned
gnatmake: "test.adb" compilation error

Frédéric Praca

unread,
Dec 29, 2012, 4:50:17 PM12/29/12
to
On Thu, 27 Dec 2012 18:41:12 +0100, Blady wrote:

> Il faudra alors plutôt contacter rep...@adacore.com. Veux-tu que je le
> fasse ?

Pourquoi pas.
Ceci dit, si tu regardes bien le rapport de bug, tu verras que le seul
utilisateur qui suit le bug n'est autre qu'Eric Botcazou qui possède une
belle adresse mail en adacore.com... J'ai donc tendance à penser que le
bug est déjà connu :)
Par contre, on peut rajouter en commentaire dans le bug que les versions
suivantes sont aussi sujettes au problème.

> A+, Pascal.
A+

Fred

0 new messages