This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] [gold] Fix integer narrowing in switch
- From: "Roland McGrath via binutils" <binutils at sourceware dot org>
- To: Binutils <binutils at sourceware dot org>
- Date: Fri, 3 Aug 2018 14:44:44 -0700
- Subject: [PATCH] [gold] Fix integer narrowing in switch
- Reply-to: Roland McGrath <mcgrathr at google dot com>
Some of the enum constants in the switch are too large for signed int.
With recent Clang, this gets an error about C++11 integer narrowing rules.
Everywhere else uses unsigned int for pr_type, so Target should too.
OK for trunk and 2.31 branch?
Thanks,
Roland
gold/
2018-08-03 Roland McGrath <mcgrathr@google.com>
* target.h (Sized_target::record_gnu_property): Use unsigned int
for second argument.
* x86_64.cc (Target_x86_64<size>::record_gnu_property): Likewise.
diff --git a/gold/target.h b/gold/target.h
index bb312067b5f..00a1f988e7a 100644
--- a/gold/target.h
+++ b/gold/target.h
@@ -1147,7 +1147,8 @@ class Sized_target : public Target
// Record a target-specific program property in the .note.gnu.property
// section.
virtual void
- record_gnu_property(int, int, size_t, const unsigned char*, const Object*)
+ record_gnu_property(int, unsigned int, size_t, const unsigned char*,
+ const Object*)
{ }
// Merge the target-specific program properties from the current object.
diff --git a/gold/x86_64.cc b/gold/x86_64.cc
index 27f273d64b3..36c2c27f5b6 100644
--- a/gold/x86_64.cc
+++ b/gold/x86_64.cc
@@ -1307,7 +1307,8 @@ class Target_x86_64 : public Sized_target<size, false>
// Record a target-specific program property in the .note.gnu.property
// section.
void
- record_gnu_property(int, int, size_t, const unsigned char*, const Object*);
+ record_gnu_property(int, unsigned int, size_t, const unsigned char*,
+ const Object*);
// Merge the target-specific program properties from the current object.
void
@@ -1579,7 +1580,7 @@
Target_x86_64<size>::rela_irelative_section(Layout* layout)
template<int size>
void
Target_x86_64<size>::record_gnu_property(
- int, int pr_type,
+ int, unsigned int pr_type,
size_t pr_datasz, const unsigned char* pr_data,
const Object* object)
{