binutils-gdb/gdb/testsuite/gdb.dwarf2/atomic.c
Jan Kratochvil e87324746c [ppc64] Fix for function descriptors
Marin Cermak has found various testcases (or one of them) of GDB FAIL on
ppc64.

https://sourceware.org/bugzilla/show_bug.cgi?id=20328

.o contained only the function descriptor address.

The DWARF as produced by Tcl Dwarf::assemble:
 <1><27>: Abbrev Number: 4 (DW_TAG_subprogram)
    <28>   DW_AT_name        : main
    <2d>   DW_AT_external    : 1
    <2e>   DW_AT_low_pc      : 0x1001ff98
    <36>   DW_AT_high_pc     : 0x1002ff98
 <2><3e>: Abbrev Number: 5 (DW_TAG_lexical_block)

Runtime info:
$2 = {<text variable, no debug info>} 0x10000674 <.main>
$3 = {void ()} 0x1001ff98 <main>

On Tue, 12 Jul 2016 15:22:49 +0200, Ulrich Weigand wrote:
Well, most of the gdb.dwarf2 test cases simply use explicitly placed labels
for the DW_AT_low_pc / DW_AT_high_pc attributes.

See e.g. dw2-unresolved-main.c:

asm (".globl cu_text_start");
asm ("cu_text_start:");

On Wed, 13 Jul 2016 10:54:00 +0200, Jan Kratochvil wrote:
Now I see I should not do that because:

lib/dwarf.exp:
proc function_range { func src } {

So I am providing this patch.

gdb/testsuite/ChangeLog
2016-07-13  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* gdb.dwarf2/atomic-type.exp: Use function_range for low_pc and high_pc.
	* gdb.dwarf2/atomic.c (f): Rename f_end_lbl to f_label.
	* gdb.dwarf2/dw2-bad-mips-linkage-name.c (f): Rename f_end_lbl to
	f_label.
	(g): Rename g_end_lbl to g_label.
	* gdb.dwarf2/dw2-bad-mips-linkage-name.exp: Use function_range for
	low_pc and high_pc.
	* gdb.dwarf2/dw2-lexical-block-bare.exp: Likewise.
2016-07-13 13:58:19 +02:00

35 lines
1002 B
C

/* This testcase is part of GDB, the GNU debugger.
Copyright 2004-2016 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 <http://www.gnu.org/licenses/>. */
/* Dummy main function. */
int
main (void)
{
asm ("main_label: .globl main_label");
return 0;
}
/* dummy f function, DWARF will describe arguments and type differently. */
int
f (char *x)
{
asm ("f_label: .globl f_label");
return 0;
}