[PATCH 11/11] Add test for objdump new feature which display global variable information based on DWARF info section

Guillaume VACHERIAS guillaume.vacherias@foss.st.com
Thu May 22 11:03:35 GMT 2025


---
 .../testsuite/binutils-all/dw5-map-complex.S  | 809 ++++++++++++++++++
 binutils/testsuite/binutils-all/dw5-map.S     | 430 ++++++++++
 binutils/testsuite/binutils-all/dw5.Y         |   5 +
 .../testsuite/binutils-all/objdump-complex.Y  |  86 ++
 binutils/testsuite/binutils-all/objdump.Y     |  25 +
 binutils/testsuite/binutils-all/objdump.exp   |  68 ++
 6 files changed, 1423 insertions(+)
 create mode 100644 binutils/testsuite/binutils-all/dw5-map-complex.S
 create mode 100644 binutils/testsuite/binutils-all/dw5-map.S
 create mode 100644 binutils/testsuite/binutils-all/dw5.Y
 create mode 100644 binutils/testsuite/binutils-all/objdump-complex.Y
 create mode 100644 binutils/testsuite/binutils-all/objdump.Y

diff --git a/binutils/testsuite/binutils-all/dw5-map-complex.S b/binutils/testsuite/binutils-all/dw5-map-complex.S
new file mode 100644
index 00000000000..33bfa632af1
--- /dev/null
+++ b/binutils/testsuite/binutils-all/dw5-map-complex.S
@@ -0,0 +1,809 @@
+/* Copyright (C) 2017-2023 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/>.  */
+
+/* 
+// Original dw5-map-complex.c file
+
+#include <stdio.h>
+
+// Global integer variable
+int globalInt = 42;
+
+// Global character variable
+char globalChar = 'A';
+
+// Global enumeration
+enum Color { RED, GREEN, BLUE };
+enum Color globalColor = GREEN;
+
+// Global array
+int globalArray[5] = {1, 2, 3, 4, 5};
+
+// Global pointer
+int* globalPointer = &globalInt;
+
+// Global constant
+const double globalConstant = 3.14159;
+
+// Global union
+union Data {
+    int intVal;
+    float floatVal;
+    char charVal;
+};
+union Data globalData = { .intVal = 100 };
+
+// Typedef for structure
+struct Person {
+    char name[50];
+    int age;
+};
+
+// Global structure
+struct Person globalPerson = {"Alice", 30};
+
+// Array of structures
+struct Person globalPeople[3] = {
+    {"Bob", 25},
+    {"Charlie", 35},
+    {"Diana", 28}
+};
+
+// Recursive structure
+struct Node {
+    int value;
+    struct Node* next;
+};
+struct Node globalNode = {10, NULL};
+
+// Array of enumeration
+enum Color globalColors[3] = {RED, GREEN, BLUE};
+
+// Array of unions
+union Data globalDataArray[2] = {
+    {.intVal = 200},
+    {.charVal = 'Z'}
+};
+
+// Array of pointers
+int* globalPointerArray[3] = {&globalArray[0], &globalArray[1], &globalArray[2]}; */
+
+	.file	"dw5-map-complex.c"
+	.text
+.Ltext0:
+	.cfi_sections	.debug_frame
+	.file 1 "dw5-map-complex.c"
+	.global	globalInt
+	.data
+	.align	2
+	.type	globalInt, %object
+	.size	globalInt, 4
+globalInt:
+	.word	42
+	.global	globalChar
+	.type	globalChar, %object
+	.size	globalChar, 1
+globalChar:
+	.byte	65
+	.global	globalColor
+	.type	globalColor, %object
+	.size	globalColor, 1
+globalColor:
+	.byte	1
+	.global	globalArray
+	.align	2
+	.type	globalArray, %object
+	.size	globalArray, 20
+globalArray:
+	.word	1
+	.word	2
+	.word	3
+	.word	4
+	.word	5
+	.global	globalPointer
+	.align	2
+	.type	globalPointer, %object
+	.size	globalPointer, 4
+globalPointer:
+	.word	globalInt
+	.global	globalConstant
+	.section	.rodata
+	.align	3
+	.type	globalConstant, %object
+	.size	globalConstant, 8
+globalConstant:
+	.word	-266631570
+	.word	1074340345
+	.global	globalData
+	.data
+	.align	2
+	.type	globalData, %object
+	.size	globalData, 4
+globalData:
+	.word	100
+	.global	globalPerson
+	.align	2
+	.type	globalPerson, %object
+	.size	globalPerson, 56
+globalPerson:
+	.ascii	"Alice\000"
+	.space	44
+	.space	2
+	.word	30
+	.global	globalPeople
+	.align	2
+	.type	globalPeople, %object
+	.size	globalPeople, 168
+globalPeople:
+	.ascii	"Bob\000"
+	.space	46
+	.space	2
+	.word	25
+	.ascii	"Charlie\000"
+	.space	42
+	.space	2
+	.word	35
+	.ascii	"Diana\000"
+	.space	44
+	.space	2
+	.word	28
+	.global	globalNode
+	.align	2
+	.type	globalNode, %object
+	.size	globalNode, 8
+globalNode:
+	.word	10
+	.word	0
+	.global	globalColors
+	.align	2
+	.type	globalColors, %object
+	.size	globalColors, 3
+globalColors:
+	.byte	0
+	.byte	1
+	.byte	2
+	.global	globalDataArray
+	.align	2
+	.type	globalDataArray, %object
+	.size	globalDataArray, 8
+globalDataArray:
+	.word	200
+	.byte	90
+	.space	3
+	.global	globalPointerArray
+	.align	2
+	.type	globalPointerArray, %object
+	.size	globalPointerArray, 12
+globalPointerArray:
+	.word	globalArray
+	.word	globalArray+4
+	.word	globalArray+8
+	.text
+.Letext0:
+	.section	.debug_info,"",%progbits
+.Ldebug_info0:
+	.4byte	0x266
+	.2byte	0x5
+	.byte	0x1
+	.byte	0x4
+	.4byte	.Ldebug_abbrev0
+	.uleb128 0xa
+	.4byte	.LASF36
+	.byte	0x1d
+	.4byte	.LASF37
+	.4byte	.LASF38
+	.4byte	.Ldebug_line0
+	.uleb128 0x1
+	.byte	0x1
+	.byte	0x6
+	.4byte	.LASF0
+	.uleb128 0x1
+	.byte	0x1
+	.byte	0x8
+	.4byte	.LASF1
+	.uleb128 0x1
+	.byte	0x2
+	.byte	0x5
+	.4byte	.LASF2
+	.uleb128 0x1
+	.byte	0x2
+	.byte	0x7
+	.4byte	.LASF3
+	.uleb128 0x1
+	.byte	0x4
+	.byte	0x5
+	.4byte	.LASF4
+	.uleb128 0x1
+	.byte	0x4
+	.byte	0x7
+	.4byte	.LASF5
+	.uleb128 0x1
+	.byte	0x8
+	.byte	0x5
+	.4byte	.LASF6
+	.uleb128 0x1
+	.byte	0x8
+	.byte	0x7
+	.4byte	.LASF7
+	.uleb128 0xb
+	.byte	0x4
+	.byte	0x5
+	.ascii	"int\000"
+	.uleb128 0x1
+	.byte	0x4
+	.byte	0x7
+	.4byte	.LASF8
+	.uleb128 0x1
+	.byte	0x8
+	.byte	0x4
+	.4byte	.LASF9
+	.uleb128 0x1
+	.byte	0x1
+	.byte	0x8
+	.4byte	.LASF10
+	.uleb128 0x2
+	.4byte	.LASF11
+	.byte	0x4
+	.byte	0x5
+	.4byte	0x56
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalInt
+	.uleb128 0x2
+	.4byte	.LASF12
+	.byte	0x7
+	.byte	0x6
+	.4byte	0x6b
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalChar
+	.uleb128 0xc
+	.4byte	.LASF39
+	.byte	0x7
+	.byte	0x1
+	.4byte	0x25
+	.byte	0x1
+	.byte	0xa
+	.byte	0x6
+	.4byte	0xb9
+	.uleb128 0xd
+	.ascii	"RED\000"
+	.byte	0
+	.uleb128 0x7
+	.4byte	.LASF13
+	.byte	0x1
+	.uleb128 0x7
+	.4byte	.LASF14
+	.byte	0x2
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF15
+	.byte	0xb
+	.byte	0xc
+	.4byte	0x94
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalColor
+	.uleb128 0x3
+	.4byte	0x56
+	.4byte	0xda
+	.uleb128 0x4
+	.4byte	0x5d
+	.byte	0x4
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF16
+	.byte	0xe
+	.byte	0x5
+	.4byte	0xca
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalArray
+	.uleb128 0x2
+	.4byte	.LASF17
+	.byte	0x11
+	.byte	0x6
+	.4byte	0xfc
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalPointer
+	.uleb128 0x8
+	.4byte	0x56
+	.uleb128 0x2
+	.4byte	.LASF18
+	.byte	0x14
+	.byte	0xe
+	.4byte	0x119
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalConstant
+	.uleb128 0x1
+	.byte	0x8
+	.byte	0x4
+	.4byte	.LASF19
+	.uleb128 0xe
+	.4byte	0x112
+	.uleb128 0xf
+	.4byte	.LASF40
+	.byte	0x4
+	.byte	0x1
+	.byte	0x17
+	.byte	0x7
+	.4byte	0x14d
+	.uleb128 0x5
+	.4byte	.LASF20
+	.byte	0x18
+	.byte	0x9
+	.4byte	0x56
+	.uleb128 0x5
+	.4byte	.LASF21
+	.byte	0x19
+	.byte	0xb
+	.4byte	0x14d
+	.uleb128 0x5
+	.4byte	.LASF22
+	.byte	0x1a
+	.byte	0xa
+	.4byte	0x6b
+	.byte	0
+	.uleb128 0x1
+	.byte	0x4
+	.byte	0x4
+	.4byte	.LASF23
+	.uleb128 0x2
+	.4byte	.LASF24
+	.byte	0x1c
+	.byte	0xc
+	.4byte	0x11e
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalData
+	.uleb128 0x9
+	.4byte	.LASF28
+	.byte	0x38
+	.byte	0x1f
+	.4byte	0x18a
+	.uleb128 0x6
+	.4byte	.LASF25
+	.byte	0x20
+	.byte	0xa
+	.4byte	0x18a
+	.byte	0
+	.uleb128 0x10
+	.ascii	"age\000"
+	.byte	0x1
+	.byte	0x21
+	.byte	0x9
+	.4byte	0x56
+	.byte	0x34
+	.byte	0
+	.uleb128 0x3
+	.4byte	0x6b
+	.4byte	0x19a
+	.uleb128 0x4
+	.4byte	0x5d
+	.byte	0x31
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF26
+	.byte	0x25
+	.byte	0xf
+	.4byte	0x165
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalPerson
+	.uleb128 0x3
+	.4byte	0x165
+	.4byte	0x1bb
+	.uleb128 0x4
+	.4byte	0x5d
+	.byte	0x2
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF27
+	.byte	0x28
+	.byte	0xf
+	.4byte	0x1ab
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalPeople
+	.uleb128 0x9
+	.4byte	.LASF29
+	.byte	0x8
+	.byte	0x2f
+	.4byte	0x1f0
+	.uleb128 0x6
+	.4byte	.LASF30
+	.byte	0x30
+	.byte	0x9
+	.4byte	0x56
+	.byte	0
+	.uleb128 0x6
+	.4byte	.LASF31
+	.byte	0x31
+	.byte	0x12
+	.4byte	0x1f0
+	.byte	0x4
+	.byte	0
+	.uleb128 0x8
+	.4byte	0x1cc
+	.uleb128 0x2
+	.4byte	.LASF32
+	.byte	0x33
+	.byte	0xd
+	.4byte	0x1cc
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalNode
+	.uleb128 0x3
+	.4byte	0x94
+	.4byte	0x216
+	.uleb128 0x4
+	.4byte	0x5d
+	.byte	0x2
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF33
+	.byte	0x36
+	.byte	0xc
+	.4byte	0x206
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalColors
+	.uleb128 0x3
+	.4byte	0x11e
+	.4byte	0x237
+	.uleb128 0x4
+	.4byte	0x5d
+	.byte	0x1
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF34
+	.byte	0x39
+	.byte	0xc
+	.4byte	0x227
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalDataArray
+	.uleb128 0x3
+	.4byte	0xfc
+	.4byte	0x258
+	.uleb128 0x4
+	.4byte	0x5d
+	.byte	0x2
+	.byte	0
+	.uleb128 0x2
+	.4byte	.LASF35
+	.byte	0x3f
+	.byte	0x6
+	.4byte	0x248
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	globalPointerArray
+	.byte	0
+	.section	.debug_abbrev,"",%progbits
+.Ldebug_abbrev0:
+	.uleb128 0x1
+	.uleb128 0x24
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0xe
+	.byte	0
+	.byte	0
+	.uleb128 0x2
+	.uleb128 0x34
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x3f
+	.uleb128 0x19
+	.uleb128 0x2
+	.uleb128 0x18
+	.byte	0
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0x1
+	.byte	0x1
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x4
+	.uleb128 0x21
+	.byte	0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2f
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.uleb128 0x5
+	.uleb128 0xd
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x6
+	.uleb128 0xd
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.uleb128 0x7
+	.uleb128 0x28
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x1c
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.uleb128 0x8
+	.uleb128 0xf
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0x21
+	.sleb128 4
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x9
+	.uleb128 0x13
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0x21
+	.sleb128 8
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0xa
+	.uleb128 0x11
+	.byte	0x1
+	.uleb128 0x25
+	.uleb128 0xe
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x1b
+	.uleb128 0xe
+	.uleb128 0x10
+	.uleb128 0x17
+	.byte	0
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0x24
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0x8
+	.byte	0
+	.byte	0
+	.uleb128 0xc
+	.uleb128 0x4
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0xd
+	.uleb128 0x28
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x1c
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.uleb128 0xe
+	.uleb128 0x26
+	.byte	0
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0xf
+	.uleb128 0x17
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x10
+	.uleb128 0xd
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0x8
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.byte	0
+	.section	.debug_aranges,"",%progbits
+	.4byte	0x14
+	.2byte	0x2
+	.4byte	.Ldebug_info0
+	.byte	0x4
+	.byte	0
+	.2byte	0
+	.2byte	0
+	.4byte	0
+	.4byte	0
+	.section	.debug_line,"",%progbits
+.Ldebug_line0:
+	.section	.debug_str,"MS",%progbits,1
+.LASF21:
+	.ascii	"floatVal\000"
+.LASF12:
+	.ascii	"globalChar\000"
+.LASF29:
+	.ascii	"Node\000"
+.LASF31:
+	.ascii	"next\000"
+.LASF30:
+	.ascii	"value\000"
+.LASF33:
+	.ascii	"globalColors\000"
+.LASF17:
+	.ascii	"globalPointer\000"
+.LASF23:
+	.ascii	"float\000"
+.LASF32:
+	.ascii	"globalNode\000"
+.LASF1:
+	.ascii	"unsigned char\000"
+.LASF34:
+	.ascii	"globalDataArray\000"
+.LASF5:
+	.ascii	"long unsigned int\000"
+.LASF27:
+	.ascii	"globalPeople\000"
+.LASF3:
+	.ascii	"short unsigned int\000"
+.LASF16:
+	.ascii	"globalArray\000"
+.LASF19:
+	.ascii	"double\000"
+.LASF22:
+	.ascii	"charVal\000"
+.LASF40:
+	.ascii	"Data\000"
+.LASF2:
+	.ascii	"short int\000"
+.LASF13:
+	.ascii	"GREEN\000"
+.LASF15:
+	.ascii	"globalColor\000"
+.LASF37:
+	.ascii	"dw5-map-complex.c\000"
+.LASF11:
+	.ascii	"globalInt\000"
+.LASF8:
+	.ascii	"unsigned int\000"
+.LASF14:
+	.ascii	"BLUE\000"
+.LASF28:
+	.ascii	"Person\000"
+.LASF7:
+	.ascii	"long long unsigned int\000"
+.LASF20:
+	.ascii	"intVal\000"
+.LASF26:
+	.ascii	"globalPerson\000"
+.LASF24:
+	.ascii	"globalData\000"
+.LASF6:
+	.ascii	"long long int\000"
+.LASF39:
+	.ascii	"Color\000"
+.LASF25:
+	.ascii	"name\000"
+.LASF35:
+	.ascii	"globalPointerArray\000"
+.LASF38:
+	.ascii	"/home/vacherig/gcc-workdir/upstream/binutils-gdb\000"
+.LASF4:
+	.ascii	"long int\000"
+.LASF10:
+	.ascii	"char\000"
+.LASF9:
+	.ascii	"long double\000"
+.LASF18:
+	.ascii	"globalConstant\000"
+.LASF0:
+	.ascii	"signed char\000"
diff --git a/binutils/testsuite/binutils-all/dw5-map.S b/binutils/testsuite/binutils-all/dw5-map.S
new file mode 100644
index 00000000000..928ea87374e
--- /dev/null
+++ b/binutils/testsuite/binutils-all/dw5-map.S
@@ -0,0 +1,430 @@
+/* Copyright (C) 2017-2023 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/>.  */
+	.cpu cortex-m0
+	.arch armv6s-m
+	.fpu softvfp
+	.eabi_attribute 20, 1
+	.eabi_attribute 21, 1
+	.eabi_attribute 23, 3
+	.eabi_attribute 24, 1
+	.eabi_attribute 25, 1
+	.eabi_attribute 26, 1
+	.eabi_attribute 30, 6
+	.eabi_attribute 34, 0
+	.eabi_attribute 18, 4
+	.file	"dw5-map.c"
+	.text
+.Ltext0:
+	.cfi_sections	.debug_frame
+	.global	var_base
+	.bss
+	.align	2
+	.type	var_base, %object
+	.size	var_base, 4
+var_base:
+	.space	4
+	.global	var_arry
+	.data
+	.align	2
+	.type	var_arry, %object
+	.size	var_arry, 4
+var_arry:
+	.ascii	"abc\000"
+	.global	var_enum
+	.type	var_enum, %object
+	.size	var_enum, 1
+var_enum:
+	.byte	1
+	.global	var_struct
+	.align	2
+	.type	var_struct, %object
+	.size	var_struct, 12
+var_struct:
+	.word	0
+	.word	0
+	.byte	97
+	.space	3
+	.global	var_union
+	.bss
+	.align	2
+	.type	var_union, %object
+	.size	var_union, 4
+var_union:
+	.space	4
+	.text
+.Letext0:
+	.file 1 "dw5-map.c"
+	.section	.debug_info,"",%progbits
+.Ldebug_info0:
+	.4byte	0x111
+	.2byte	0x5
+	.byte	0x1
+	.byte	0x4
+	.4byte	.Ldebug_abbrev0
+	.uleb128 0x6
+	.4byte	.LASF13
+	.byte	0x1d
+	.4byte	.LASF14
+	.4byte	.LASF15
+	.4byte	.Ldebug_line0
+	.uleb128 0x7
+	.4byte	.LASF16
+	.byte	0x7
+	.byte	0x1
+	.4byte	0x3d
+	.byte	0x1
+	.byte	0x1
+	.byte	0x6
+	.4byte	0x3d
+	.uleb128 0x4
+	.4byte	.LASF0
+	.byte	0x1
+	.uleb128 0x4
+	.4byte	.LASF1
+	.byte	0x2
+	.byte	0
+	.uleb128 0x2
+	.byte	0x1
+	.byte	0x8
+	.4byte	.LASF5
+	.uleb128 0x8
+	.4byte	.LASF17
+	.byte	0xc
+	.byte	0x1
+	.byte	0x6
+	.byte	0x8
+	.4byte	0x76
+	.uleb128 0x3
+	.4byte	.LASF2
+	.byte	0x8
+	.byte	0x9
+	.4byte	0x76
+	.byte	0
+	.uleb128 0x3
+	.4byte	.LASF3
+	.byte	0x9
+	.byte	0x9
+	.4byte	0x76
+	.byte	0x4
+	.uleb128 0x3
+	.4byte	.LASF4
+	.byte	0xa
+	.byte	0xa
+	.4byte	0x7d
+	.byte	0x8
+	.byte	0
+	.uleb128 0x9
+	.byte	0x4
+	.byte	0x5
+	.ascii	"int\000"
+	.uleb128 0x2
+	.byte	0x1
+	.byte	0x8
+	.4byte	.LASF6
+	.uleb128 0xa
+	.4byte	.LASF18
+	.byte	0x4
+	.byte	0x1
+	.byte	0xd
+	.byte	0x7
+	.4byte	0xa8
+	.uleb128 0x5
+	.4byte	.LASF2
+	.byte	0xf
+	.byte	0x9
+	.4byte	0x76
+	.uleb128 0x5
+	.4byte	.LASF3
+	.byte	0x10
+	.byte	0xa
+	.4byte	0x7d
+	.byte	0
+	.uleb128 0x1
+	.4byte	.LASF8
+	.byte	0x13
+	.byte	0x5
+	.4byte	0x76
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	var_base
+	.uleb128 0xb
+	.4byte	0x7d
+	.4byte	0xc9
+	.uleb128 0xc
+	.4byte	0xc9
+	.byte	0x3
+	.byte	0
+	.uleb128 0x2
+	.byte	0x4
+	.byte	0x7
+	.4byte	.LASF7
+	.uleb128 0x1
+	.4byte	.LASF9
+	.byte	0x14
+	.byte	0x6
+	.4byte	0xb9
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	var_arry
+	.uleb128 0x1
+	.4byte	.LASF10
+	.byte	0x15
+	.byte	0xd
+	.4byte	0x1e
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	var_enum
+	.uleb128 0x1
+	.4byte	.LASF11
+	.byte	0x16
+	.byte	0x11
+	.4byte	0x44
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	var_struct
+	.uleb128 0x1
+	.4byte	.LASF12
+	.byte	0x17
+	.byte	0xf
+	.4byte	0x84
+	.uleb128 0x5
+	.byte	0x3
+	.4byte	var_union
+	.byte	0
+	.section	.debug_abbrev,"",%progbits
+.Ldebug_abbrev0:
+	.uleb128 0x1
+	.uleb128 0x34
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x3f
+	.uleb128 0x19
+	.uleb128 0x2
+	.uleb128 0x18
+	.byte	0
+	.byte	0
+	.uleb128 0x2
+	.uleb128 0x24
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0xe
+	.byte	0
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xd
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x38
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.uleb128 0x4
+	.uleb128 0x28
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x1c
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.uleb128 0x5
+	.uleb128 0xd
+	.byte	0
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3a
+	.uleb128 0x21
+	.sleb128 1
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x6
+	.uleb128 0x11
+	.byte	0x1
+	.uleb128 0x25
+	.uleb128 0xe
+	.uleb128 0x13
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x1b
+	.uleb128 0xe
+	.uleb128 0x10
+	.uleb128 0x17
+	.byte	0
+	.byte	0
+	.uleb128 0x7
+	.uleb128 0x4
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x8
+	.uleb128 0x13
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0x9
+	.uleb128 0x24
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3e
+	.uleb128 0xb
+	.uleb128 0x3
+	.uleb128 0x8
+	.byte	0
+	.byte	0
+	.uleb128 0xa
+	.uleb128 0x17
+	.byte	0x1
+	.uleb128 0x3
+	.uleb128 0xe
+	.uleb128 0xb
+	.uleb128 0xb
+	.uleb128 0x3a
+	.uleb128 0xb
+	.uleb128 0x3b
+	.uleb128 0xb
+	.uleb128 0x39
+	.uleb128 0xb
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0xb
+	.uleb128 0x1
+	.byte	0x1
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x1
+	.uleb128 0x13
+	.byte	0
+	.byte	0
+	.uleb128 0xc
+	.uleb128 0x21
+	.byte	0
+	.uleb128 0x49
+	.uleb128 0x13
+	.uleb128 0x2f
+	.uleb128 0xb
+	.byte	0
+	.byte	0
+	.byte	0
+	.section	.debug_aranges,"",%progbits
+	.4byte	0x14
+	.2byte	0x2
+	.4byte	.Ldebug_info0
+	.byte	0x4
+	.byte	0
+	.2byte	0
+	.2byte	0
+	.4byte	0
+	.4byte	0
+	.section	.debug_line,"",%progbits
+.Ldebug_line0:
+	.section	.debug_str,"MS",%progbits,1
+.LASF3:
+	.ascii	"member2\000"
+.LASF4:
+	.ascii	"member3\000"
+.LASF7:
+	.ascii	"unsigned int\000"
+.LASF9:
+	.ascii	"var_arry\000"
+.LASF11:
+	.ascii	"var_struct\000"
+.LASF12:
+	.ascii	"var_union\000"
+.LASF10:
+	.ascii	"var_enum\000"
+.LASF18:
+	.ascii	"union_t\000"
+.LASF15:
+	.ascii	"gnu-tools-for-stm32\000"
+.LASF0:
+	.ascii	"ENUM_VAL1\000"
+.LASF14:
+	.ascii	"dw5-map.c\000"
+.LASF1:
+	.ascii	"ENUM_VAL2\000"
+.LASF5:
+	.ascii	"unsigned char\000"
+.LASF17:
+	.ascii	"struct_t\000"
+.LASF16:
+	.ascii	"enum_t\000"
+.LASF6:
+	.ascii	"char\000"
+.LASF8:
+	.ascii	"var_base\000"
+.LASF2:
+	.ascii	"member1\000"
diff --git a/binutils/testsuite/binutils-all/dw5.Y b/binutils/testsuite/binutils-all/dw5.Y
new file mode 100644
index 00000000000..623dd66038d
--- /dev/null
+++ b/binutils/testsuite/binutils-all/dw5.Y
@@ -0,0 +1,5 @@
+.*dw5.o:     file format .*
+
+(0x)?1234 (0x)?1238 pvar \(int\)
+(0x)?1234 (0x)?1238 yvar \(int\)
+(0x)?1234 (0x)?1238 xvar \(int\)
\ No newline at end of file
diff --git a/binutils/testsuite/binutils-all/objdump-complex.Y b/binutils/testsuite/binutils-all/objdump-complex.Y
new file mode 100644
index 00000000000..5fce1f1af87
--- /dev/null
+++ b/binutils/testsuite/binutils-all/objdump-complex.Y
@@ -0,0 +1,86 @@
+.*dw5-map-complex.o:     file format .*
+
+(0x)?118 (0x)?124 globalPointerArray \(int\)
+	(0x)?118 globalPointerArray\[0\]
+	(0x)?11c globalPointerArray\[1\]
+	(0x)?120 globalPointerArray\[2\]
+(0x)?110 (0x)?118 globalDataArray \(Data\)
+	(0x)?110 globalDataArray\[0\]
+	union type \{
+		(0x)?110 intVal
+		(0x)?110 floatVal
+		(0x)?110 charVal
+	\}
+	(0x)?114 globalDataArray\[1\]
+	union type \{
+		(0x)?114 intVal
+		(0x)?114 floatVal
+		(0x)?114 charVal
+	\}
+(0x)?10c (0x)?10f globalColors \(Color\)
+	(0x)?10c globalColors\[0\]
+	enumeration type \{
+		(0x)?10c BLUE 2
+		(0x)?10c GREEN 1
+		(0x)?10c RED 0
+	\}
+	(0x)?10d globalColors\[1\]
+	enumeration type \{
+		(0x)?10d BLUE 2
+		(0x)?10d GREEN 1
+		(0x)?10d RED 0
+	\}
+	(0x)?10e globalColors\[2\]
+	enumeration type \{
+		(0x)?10e BLUE 2
+		(0x)?10e GREEN 1
+		(0x)?10e RED 0
+	\}
+(0x)?104 (0x)?10c globalNode \(Node\)
+	Node \{
+		(0x)?104 Node\.value
+		(0x)?108 Node\.next
+	\}
+(0x)?5c (0x)?104 globalPeople \(Person\)
+	(0x)?5c globalPeople\[0\]
+	Person \{
+		(0x)?5c Person\.name
+		(0x)?90 Person\.age
+	\}
+	(0x)?94 globalPeople\[1\]
+	Person \{
+		(0x)?94 Person\.name
+		(0x)?c8 Person\.age
+	\}
+	(0x)?cc globalPeople\[2\]
+	Person \{
+		(0x)?cc Person\.name
+		(0x)?100 Person\.age
+	\}
+(0x)?24 (0x)?5c globalPerson \(Person\)
+	Person \{
+		(0x)?24 Person\.name
+		(0x)?58 Person\.age
+	\}
+(0x)?20 (0x)?24 globalData \(Data\)
+	union type \{
+		(0x)?20 intVal
+		(0x)?20 floatVal
+		(0x)?20 charVal
+	\}
+(0x)?0 (0x)?8 globalConstant \(double\)
+(0x)?1c (0x)?20 globalPointer \(int\)
+(0x)?8 (0x)?1c globalArray \(int\)
+	(0x)?8 globalArray\[0\]
+	(0x)?c globalArray\[1\]
+	(0x)?10 globalArray\[2\]
+	(0x)?14 globalArray\[3\]
+	(0x)?18 globalArray\[4\]
+(0x)?5 (0x)?6 globalColor \(Color\)
+	enumeration type \{
+		(0x)?5 BLUE 2
+		(0x)?5 GREEN 1
+		(0x)?5 RED 0
+	\}
+(0x)?4 (0x)?5 globalChar \(char\)
+(0x)?0 (0x)?4 globalInt \(int\)
diff --git a/binutils/testsuite/binutils-all/objdump.Y b/binutils/testsuite/binutils-all/objdump.Y
new file mode 100644
index 00000000000..84853e7d1d1
--- /dev/null
+++ b/binutils/testsuite/binutils-all/objdump.Y
@@ -0,0 +1,25 @@
+
+.*dw5-map.o:     file format .*
+
+(0x)?4 (0x)?8 var_union \(union_t\)
+	union type \{
+		(0x)?4 member1
+		(0x)?4 member2
+	\}
+(0x)?8 (0x)?14 var_struct \(struct_t\)
+	struct_t \{
+		(0x)?8 struct_t\.member1
+		(0x)?c struct_t\.member2
+		(0x)?10 struct_t\.member3
+	\}
+(0x)?4 (0x)?5 var_enum \(enum_t\)
+	enumeration type \{
+		(0x)?4 ENUM_VAL2 2
+		(0x)?4 ENUM_VAL1 1
+	\}
+(0x)?0 (0x)?4 var_arry \(char\)
+	(0x)?0 var_arry\[0\]
+	(0x)?1 var_arry\[1\]
+	(0x)?2 var_arry\[2\]
+	(0x)?3 var_arry\[3\]
+(0x)?0 (0x)?4 var_base \(int\)
diff --git a/binutils/testsuite/binutils-all/objdump.exp b/binutils/testsuite/binutils-all/objdump.exp
index f3142b10442..721fcd79903 100644
--- a/binutils/testsuite/binutils-all/objdump.exp
+++ b/binutils/testsuite/binutils-all/objdump.exp
@@ -545,6 +545,74 @@ if { ![is_elf_format]
     }
 }
 
+# Test objdump -Y on file containing debug_info
+
+if { ![is_elf_format] } then {
+    unsupported "objdump map-file test"
+} elseif { ![binutils_assemble $srcdir/$subdir/dw5.S tmpdir/dw5.${obj}] } then {
+    fail "objdump map file"
+} else {
+    if [is_remote host] {
+	set map_testfile [remote_download host tmpdir/dw5.${obj}]
+    } else {
+	set map_testfile tmpdir/dw5.${obj}
+    }
+
+    set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -Y $map_testfile" "" "/dev/null" "objdump.out"]
+
+    if { [regexp_diff objdump.out $srcdir/$subdir/dw5.Y] } then {
+	fail "objdump -Y dw5.o"
+    } else {
+	pass "objdump -Y dw5.o"
+    }
+}
+
+# Test objdump -Y on file containing debug_info
+
+if { ![is_elf_format] } then {
+    unsupported "objdump map-file test"
+} elseif { ![binutils_assemble $srcdir/$subdir/dw5-map.S tmpdir/dw5-map.${obj}] } then {
+    fail "objdump map file"
+} else {
+    set result [binutils_assemble $srcdir/$subdir/dw5-map.S tmpdir/dw5-map.${obj}]
+    if [is_remote host] {
+	set map_testfile [remote_download host tmpdir/dw5-map.${obj}]
+    } else {
+	set map_testfile tmpdir/dw5-map.${obj}
+    }
+
+    set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -Y $map_testfile" "" "/dev/null" "objdump.out"]
+
+    if { [regexp_diff objdump.out $srcdir/$subdir/objdump.Y] } then {
+	fail "objdump -Y dw5-map.o"
+    } else {
+	pass "objdump -Y dw5-map.o"
+    }
+}
+
+# Test objdump -Y on file containing debug_info
+
+if { ![is_elf_format] } then {
+    unsupported "objdump map-file test"
+} elseif { ![binutils_assemble $srcdir/$subdir/dw5-map-complex.S tmpdir/dw5-map-complex.${obj}] } then {
+    fail "objdump map file"
+} else {
+    set result [binutils_assemble $srcdir/$subdir/dw5-map-complex.S tmpdir/dw5-map-complex.${obj}]
+    if [is_remote host] {
+	set map_testfile [remote_download host tmpdir/dw5-map-complex.${obj}]
+    } else {
+	set map_testfile tmpdir/dw5-map-complex.${obj}
+    }
+
+    set got [remote_exec host "$OBJDUMP $OBJDUMPFLAGS -Y $map_testfile" "" "/dev/null" "objdump.out"]
+
+    if { [regexp_diff objdump.out $srcdir/$subdir/objdump-complex.Y] } then {
+	fail "objdump -Y dw5-map-complex.o"
+    } else {
+	pass "objdump -Y dw5-map-complex.o"
+    }
+}
+
 # Test objdump -W on a file containing debug_ranges information.
 
 if { ![is_elf_format] } then {
-- 
2.25.1



More information about the Binutils mailing list