From: Gaius Mulley Date: Sun, 6 Oct 2024 19:40:59 +0000 (+0100) Subject: gdb/m2: add builtin procedure function ADR X-Git-Tag: gdb-16-branchpoint~724 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e756a12bd7aea1f374ef130ce6b33e8110f176f;p=thirdparty%2Fbinutils-gdb.git gdb/m2: add builtin procedure function ADR This patch introduces ADR to the Modula-2 language interface. It return the address of the parameter supplied. The patch also contains a dejagnu test for ADR. Tested on x86_64-linux. Approved-By: Tom Tromey Reviewed-By: Eli Zaretskii --- diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 65a88c8ce10..46ca62ec0c3 100644 --- a/gdb/doc/gdb.texinfo +++ b/gdb/doc/gdb.texinfo @@ -18298,6 +18298,9 @@ All Modula-2 built-in procedures also return a result, described below. @item ABS(@var{n}) Returns the absolute value of @var{n}. +@item ADR(@var{n}) +Returns the memory address of @var{n}. + @item CAP(@var{c}) If @var{c} is a lower case letter, it returns its upper case equivalent, otherwise it returns its argument. diff --git a/gdb/m2-exp.y b/gdb/m2-exp.y index c12767533a8..2887ad2be21 100644 --- a/gdb/m2-exp.y +++ b/gdb/m2-exp.y @@ -117,7 +117,7 @@ using namespace expr; %token TYPENAME %token SIZE CAP ORD HIGH ABS MIN_FUNC MAX_FUNC FLOAT_FUNC VAL CHR ODD TRUNC -%token TSIZE +%token TSIZE ADR %token INC DEC INCL EXCL /* The GDB scope operator */ @@ -191,6 +191,10 @@ exp : ABS '(' exp ')' { error (_("ABS function is not implemented")); } ; +exp : ADR '(' exp ')' + { pstate->wrap (); } + ; + exp : HIGH '(' exp ')' { pstate->wrap (); } ; @@ -699,6 +703,7 @@ static struct keyword keytab[] = {"IN", IN },/* Note space after IN */ {"AND", LOGICAL_AND}, {"ABS", ABS }, + {"ADR", ADR }, {"CHR", CHR }, {"DEC", DEC }, {"NOT", NOT }, diff --git a/gdb/testsuite/gdb.modula2/builtin-procedure-adr.exp b/gdb/testsuite/gdb.modula2/builtin-procedure-adr.exp new file mode 100644 index 00000000000..6588020cfc2 --- /dev/null +++ b/gdb/testsuite/gdb.modula2/builtin-procedure-adr.exp @@ -0,0 +1,32 @@ +# Copyright 2024 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# This file is part of the gdb testsuite. It contains tests for printing +# the elements of an unbounded array using the Modula-2 language mode of +# gdb. + +standard_testfile unbounded1.c + +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug quiet}]} { + return -1 +} + +if {![runto main]} { + return +} + +gdb_test "set lang modula-2" ".*does not match.*" "switch to modula-2" + +gdb_test "print ADR(i)" ".*0x.*" "print the address of local variable i"