comp.lang.ada
 help / color / mirror / Atom feed
* gcc-7 breaks unsized C array bindings
@ 2017-08-25  8:03 ytomino
  2017-08-27  7:16 ` Shark8
  2017-08-30 21:27 ` Simon Wright
  0 siblings, 2 replies; 4+ messages in thread
From: ytomino @ 2017-08-25  8:03 UTC (permalink / 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?

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-08-30 21:27 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-08-25  8:03 gcc-7 breaks unsized C array bindings ytomino
2017-08-27  7:16 ` Shark8
2017-08-27  7:57   ` Jeffrey R. Carter
2017-08-30 21:27 ` Simon Wright

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