aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2025-02-06 10:56:54 -0700
committerTom Tromey <tromey@adacore.com>2025-03-18 12:40:58 -0600
commitdfcc760bcc714eb22110aa6fa2380053ccc688c5 (patch)
treefb86776b6b00e81bad0f2acf5c7d5b85772685f0
parent75de4e21025b01f8167f3acd1e9a010f75ffd631 (diff)
downloadbinutils-dfcc760bcc714eb22110aa6fa2380053ccc688c5.zip
binutils-dfcc760bcc714eb22110aa6fa2380053ccc688c5.tar.gz
binutils-dfcc760bcc714eb22110aa6fa2380053ccc688c5.tar.bz2
Assume DW_AT_alignment is unsigned
This changes get_alignment to assume that DW_AT_alignment refers to an unsigned value. Approved-By: Simon Marchi <simon.marchi@efficios.com>
-rw-r--r--gdb/dwarf2/read.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index e5744eb..6d173a5 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -11131,16 +11131,11 @@ get_alignment (struct dwarf2_cu *cu, struct die_info *die)
return 0;
}
- LONGEST val = attr->constant_value (0);
- if (val < 0)
- {
- complaint (_("DW_AT_alignment value must not be negative"
- " - DIE at %s [in module %s]"),
- sect_offset_str (die->sect_off),
- objfile_name (cu->per_objfile->objfile));
- return 0;
- }
- ULONGEST align = val;
+ std::optional<ULONGEST> val = attr->unsigned_constant ();
+ if (!val.has_value ())
+ return 0;
+
+ ULONGEST align = *val;
if (align == 0)
{