[binutils-gdb] sim: profile: fix bucketing with 64-bit targets

Michael Frysinger vapier@sourceware.org
Sat Jan 30 06:15:32 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=18d4b488f4538f11cfdc618ddfb26eaf2c955fb7

commit 18d4b488f4538f11cfdc618ddfb26eaf2c955fb7
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Tue Jan 12 05:39:16 2021 -0500

    sim: profile: fix bucketing with 64-bit targets
    
    When the target's PC is 64-bits, this shift expands into a range of
    8 * 8 - 1 which doesn't work with 32-bit constants.  Force it to be
    a 64-bit value all the time and let the compiler truncate it.

Diff:
---
 sim/common/ChangeLog     | 4 ++++
 sim/common/sim-profile.c | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index cafb4b20432..dbf030d502f 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,3 +1,7 @@
+2021-01-30  Mike Frysinger  <vapier@gentoo.org>
+
+	* sim-profile.c (profile_pc_init): Change 1 in shifts to 1ULL.
+
 2021-01-30  Mike Frysinger  <vapier@gentoo.org>
 
 	* sim-hw.c (merge_device_file): Replace fgets with getline.
diff --git a/sim/common/sim-profile.c b/sim/common/sim-profile.c
index f4ce89f0428..5508f0f516d 100644
--- a/sim/common/sim-profile.c
+++ b/sim/common/sim-profile.c
@@ -554,7 +554,7 @@ profile_pc_init (SIM_DESC sd)
 		    {
 		      /* nr_buckets = (full-address-range / 2) / (bucket_size / 2) */
 		      PROFILE_PC_NR_BUCKETS (data) =
-			((1 << sizeof (sim_cia) * (8 - 1))
+			((1ULL << sizeof (sim_cia) * (8 - 1))
 			 / (PROFILE_PC_BUCKET_SIZE (data) / 2));
 		    }
 		  else
@@ -573,7 +573,7 @@ profile_pc_init (SIM_DESC sd)
 	    {
 	      if (PROFILE_PC_END (data) == 0)
 		/* bucket_size = (full-address-range / 2) / (nr_buckets / 2) */
-		bucket_size = ((1 << ((sizeof (sim_cia) * 8) - 1))
+		bucket_size = ((1ULL << ((sizeof (sim_cia) * 8) - 1))
 			       / (PROFILE_PC_NR_BUCKETS (data) / 2));
 	      else
 		bucket_size = ((PROFILE_PC_END (data)


More information about the Gdb-cvs mailing list