From 6aaa1d573912828efed1514fbec5e1ef8a7cc3bc Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Fri, 13 May 2022 07:48:50 -0300 Subject: [PATCH] ada: gcc-if: build proper String_Pointer for Get_External_Name The compiler is allowed to assume it can access String bounds, such as the prefix passed to Get_External_Name, even in circumstances in which the prefix is not going to be used and has_prefix is false, so, from the C side, we have to build a proper String_Template for the String_Pointer. for gcc/ada/ChangeLog * gcc-interface/decl.cc (is_cplusplus_method): Build proper String for Get_External_Name. --- gcc/ada/gcc-interface/decl.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc index 56ad4998e22..28e1ab7ce81 100644 --- a/gcc/ada/gcc-interface/decl.cc +++ b/gcc/ada/gcc-interface/decl.cc @@ -4956,7 +4956,8 @@ is_cplusplus_method (Entity_Id gnat_entity) 'this' parameter is not encoded in the mangled name of a method. */ if (Is_Subprogram (gnat_entity) && Present (Interface_Name (gnat_entity))) { - String_Pointer sp = { NULL, NULL }; + String_Template temp = { 0, 0 }; + String_Pointer sp = { "", &temp }; Get_External_Name (gnat_entity, false, sp); void *mem; -- 2.47.2