comp.lang.ada
 help / color / mirror / Atom feed
From: ytomino <aghia05@gmail.com>
Subject: gcc-7 breaks unsized C array bindings
Date: Fri, 25 Aug 2017 01:03:06 -0700 (PDT)
Date: 2017-08-25T01:03:06-07:00	[thread overview]
Message-ID: <8e16852a-8d56-401f-bebf-916b918fb020@googlegroups.com> (raw)

Hello.

I'm upgrading my code from gcc-6 to 7, and noticed mysterious Storage_Error in some C bindings.
The cause is array (size_t) for importing unsized C arrays, like below.

C header:

 extern int unsized_C_array[];

Ada binding:

 unsized_C_array : array (Interfaces.C.size_t) of Interfaces.C.int
    with Import, Convention => C, External_Name => "unsized_C_array";

gcc-7 treats this common idiom as a runtime error. Moreover, it reports no message on compile-time. This behavior is very malicious mischief.
(I have already reported it as https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81961 )

Therefore; some bindings are broken now. One way is array (0 .. 0) and pragma Suppress (Index_Check), but I feel it's not smart.
What is better replacement how to rewrite them?

             reply	other threads:[~2017-08-25  8:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-25  8:03 ytomino [this message]
2017-08-27  7:16 ` gcc-7 breaks unsized C array bindings Shark8
2017-08-27  7:57   ` Jeffrey R. Carter
2017-08-30 21:27 ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox