mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-12 12:16:04 +08:00
9307efbe9e
It is possible for the tables in the .debug_{rng,loc}lists sections to not have an array of offsets. In that case, the offset_entry_count field of the header is 0. The forms DW_FORM_{rng,loc}listx (reference by index) can't be used with that table. Instead, the DW_FORM_sec_offset form, which references a {rng,loc}list by direct offset in the section, must be used. From what I saw, this is what GCC currently produces. Add tests for this case. I didn't see any bug related to this, I just think that it would be nice to have coverage for this. A new `-with-offset-array` option is added to the `table` procs, used when generating {rng,loc}lists, to decide whether to generate the offset array. gdb/testsuite/ChangeLog: * lib/dwarf.exp (rnglists): Add -no-offset-array option to table proc. * gdb.dwarf2/rnglists-sec-offset.exp: Add test for .debug_rnglists table without offset array. * gdb.dwarf2/loclists-sec-offset.exp: Add test for .debug_loclists table without offset array. Change-Id: I8e34a7bf68c9682215ffbbf66600da5b7db91ef7
70 lines
1.3 KiB
C
70 lines
1.3 KiB
C
/* Copyright (C) 2021 Free Software Foundation, Inc.
|
|
|
|
This file is part of GDB.
|
|
|
|
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/>. */
|
|
|
|
static int
|
|
func1 (void)
|
|
{
|
|
asm ("func1_label: .global func1_label\n");
|
|
return 1;
|
|
}
|
|
|
|
static int
|
|
func2 (void)
|
|
{
|
|
asm ("func2_label: .global func2_label\n");
|
|
return 2;
|
|
}
|
|
|
|
static int
|
|
func3 (void)
|
|
{
|
|
asm ("func3_label: .global func3_label\n");
|
|
return 3;
|
|
}
|
|
|
|
static int
|
|
func4 (void)
|
|
{
|
|
asm ("func4_label: .global func4_label\n");
|
|
return 4;
|
|
}
|
|
|
|
static int
|
|
func5 (void)
|
|
{
|
|
asm ("func5_label: .global func5_label\n");
|
|
return 5;
|
|
}
|
|
|
|
static int
|
|
func6 (void)
|
|
{
|
|
asm ("func6_label: .global func6_label\n");
|
|
return 6;
|
|
}
|
|
|
|
int
|
|
main (void)
|
|
{
|
|
func1 ();
|
|
func2 ();
|
|
func3 ();
|
|
func4 ();
|
|
func5 ();
|
|
func6 ();
|
|
}
|