From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-3.sys.kth.se (smtp-3.sys.kth.se [IPv6:2001:6b0:1:1300:250:56ff:fea6:2de2]) by sourceware.org (Postfix) with ESMTPS id 0F6423858418; Sat, 4 Sep 2021 23:50:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0F6423858418 Received: from smtp-3.sys.kth.se (localhost.localdomain [127.0.0.1]) by smtp-3.sys.kth.se (Postfix) with ESMTP id 118033F39; Sun, 5 Sep 2021 01:50:49 +0200 (CEST) X-Virus-Scanned: by amavisd-new at kth.se Received: from smtp-3.sys.kth.se ([127.0.0.1]) by smtp-3.sys.kth.se (smtp-3.sys.kth.se [127.0.0.1]) (amavisd-new, port 10024) with LMTP id RkaxOrpx9V2Y; Sun, 5 Sep 2021 01:50:47 +0200 (CEST) Received: from exdb5.ug.kth.se (exdb5.ug.kth.se [192.168.32.60]) by smtp-3.sys.kth.se (Postfix) with ESMTPS id 11F2A3EE8; Sun, 5 Sep 2021 01:50:47 +0200 (CEST) Received: from exdb6.ug.kth.se (192.168.32.61) by exdb5.ug.kth.se (192.168.32.60) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.858.15; Sun, 5 Sep 2021 01:50:46 +0200 Received: from exdb6.ug.kth.se ([192.168.32.61]) by exdb6.ug.kth.se ([192.168.32.61]) with mapi id 15.02.0858.015; Sun, 5 Sep 2021 01:50:46 +0200 From: Petter Tomner To: Petter Tomner , "gcc-patches@gcc.gnu.org" , "jit@gcc.gnu.org" Subject: [PATCH 2/2 v2] jit : Generate debug info for variables, testcase Thread-Topic: [PATCH 2/2 v2] jit : Generate debug info for variables, testcase Thread-Index: Adeh560HLsFihHtcTOGVYNFWtNiStw== Date: Sat, 4 Sep 2021 23:50:46 +0000 Message-ID: <970cdb2b4349430cae7e314fe473bdfd@kth.se> Accept-Language: sv-SE, en-US Content-Language: sv-SE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [192.168.32.250] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: jit@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Jit mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 04 Sep 2021 23:50:51 -0000 >From 87d081f6b4233446f8a45f76dfd674f1e0b6aafe Mon Sep 17 00:00:00 2001 From: Petter Tomner Date: Sun, 5 Sep 2021 00:18:10 +0200 Subject: [PATCH 2/2] libgccjit: Test cases for debug info Assure that debug info is available for a local and global variable and a f= unction with GDB. Signed-off-by: 2021-09-05 Petter Tomner gcc/testsuite/jit.dg/ * jit.exp: Helper function * test-debuginfo.c: New file --- gcc/testsuite/jit.dg/jit.exp | 25 ++++++++++ gcc/testsuite/jit.dg/test-debuginfo.c | 72 +++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 gcc/testsuite/jit.dg/test-debuginfo.c diff --git a/gcc/testsuite/jit.dg/jit.exp b/gcc/testsuite/jit.dg/jit.exp index 005ba01601a..905ebe62fbd 100644 --- a/gcc/testsuite/jit.dg/jit.exp +++ b/gcc/testsuite/jit.dg/jit.exp @@ -377,6 +377,31 @@ proc dg-jit-set-exe-params { args } { } } =20 +# For test-debuginfo.c. Starts gdb, does cmds and checks the output agains= t match +proc jit-check-debug-info { obj_file cmds match } { + verbose "Checking debug info for $obj_file with match: $match" + + if { [catch {exec gdb -v} fid] } { + verbose "No gdb seems to be in path. Can't check debug info. Repor= ting 'unsupported'." + unsupported "No gdb seems to be in path. Can't check debug info" + return + } + + spawn gdb $obj_file + + foreach cmd $cmds { + send $cmd + } + expect { + -re $match { pass OK } + default { fail FAIL } + } + + # Quit gdb + send "set confirm off\n" + send "q\n" +} + proc jit-dg-test { prog do_what extra_tool_flags } { verbose "within jit-dg-test..." verbose " prog: $prog" diff --git a/gcc/testsuite/jit.dg/test-debuginfo.c b/gcc/testsuite/jit.dg/t= est-debuginfo.c new file mode 100644 index 00000000000..49e8834a0ba --- /dev/null +++ b/gcc/testsuite/jit.dg/test-debuginfo.c @@ -0,0 +1,72 @@ +/* Essentially this test checks that debug info are generated for globals + locals and functions, including type info. The comment bellow is used + as fake code (does not affect the test, use for manual debugging). */ +/* +int a_global_for_test_debuginfo; +int main (int argc, char **argv) +{ + int a_local_for_test_debuginfo =3D 2; + return a_global_for_test_debuginfo + a_local_for_test_debuginfo; +} +*/ +#include "libgccjit.h" + +/* We don't want set_options() in harness.h to set -O3 so our little local + is optimized away. */ +#define TEST_ESCHEWS_SET_OPTIONS +static void set_options (gcc_jit_context *ctxt, const char *argv0) +{ + gcc_jit_context_set_bool_option(ctxt, GCC_JIT_BOOL_OPTION_DEBUGINFO, 1= ); +} + +#define TEST_COMPILING_TO_FILE +#define OUTPUT_KIND GCC_JIT_OUTPUT_KIND_EXECUTABLE +#define OUTPUT_FILENAME "jit-debuginfo.o" +#include "harness.h" + +#define LOC(row, col) gcc_jit_context_new_location(ctxt, "test-debuginfo.c= ", row, col) + +void +create_code (gcc_jit_context *ctxt, void* p) +{ + gcc_jit_type *int_type =3D gcc_jit_context_get_type(ctxt, GCC_JIT_TYPE_I= NT); + + gcc_jit_lvalue *bar =3D gcc_jit_context_new_global(ctxt,=20 + LOC(5,1), GCC_JIT_GLOBAL_EXPORTED,=20 + int_type, "a_global_for_test_debuginfo"); + + gcc_jit_param *argc_para =3D gcc_jit_context_new_param(ctxt, LOC(6,15),= =20 + int_type, "argc"); + gcc_jit_param *argv_para =3D gcc_jit_context_new_param(ctxt, LOC(6,28),= =20 + gcc_jit_type_get_pointer( + gcc_jit_type_get_pointer( + gcc_jit_context_get_type(ctxt, GCC_JIT_TYPE_CHAR))), + "argc"); + + gcc_jit_param *params[] =3D {argc_para, argv_para}; + + gcc_jit_function *foo_fn =3D gcc_jit_context_new_function(ctxt, LOC(6,5)= ,=20 + GCC_JIT_FUNCTION_EXPORTED, int_type, "main", 2, params, 0); + gcc_jit_block *start_block =3D gcc_jit_function_new_block(foo_fn,=20 + "start_block"); + + gcc_jit_lvalue *a =3D gcc_jit_function_new_local(foo_fn, LOC(8,5),=20 + int_type, "a_local_for_test_debuginfo"); + gcc_jit_block_add_assignment(start_block, LOC(8,36), a,=20 + gcc_jit_context_new_rvalue_from_int(ctxt, int_type, 2)); + gcc_jit_rvalue *add =3D gcc_jit_context_new_binary_op(ctxt, LOC(9,40),=20 + GCC_JIT_BINARY_OP_PLUS, int_type,=20 + gcc_jit_lvalue_as_rvalue(a), gcc_jit_lvalue_as_rvalue(bar)); + + gcc_jit_block_end_with_return(start_block, LOC(9,5), add); +} + +#undef LOC + +/* jit-check-debug-info fires up gdb and checks that the variables have=20 + debug info */ + +/* { dg-final { jit-check-debug-info "jit-debuginfo.o" {"info variables\n= "} "int\\s+a_global_for_test_debuginfo;" } } */ +/* { dg-final { jit-check-debug-info "jit-debuginfo.o" {"pt main\n"} "int= \\s*\\(\\s*int\\s*,\\s*char\\s*\\*\\*\\s*\\)"} } */ +/* { dg-final { jit-check-debug-info "jit-debuginfo.o" {"start\n" "info l= ocals\n"} "a_local_for_test_debuginfo"} } */ +/* { dg-final { jit-check-debug-info "jit-debuginfo.o" {"start\n" "pt a_l= ocal_for_test_debuginfo\n"} "int"} } */ \ No newline at end of file --=20 2.20.1