[rtems commit] validation: Fix for 64-bit targets

Sebastian Huber sebh at rtems.org
Thu Mar 4 08:08:17 UTC 2021


Module:    rtems
Branch:    master
Commit:    8fe59be236e7f2047adb6e393639bbf56bbd996d
Changeset: http://git.rtems.org/rtems/commit/?id=8fe59be236e7f2047adb6e393639bbf56bbd996d

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Mar  3 10:27:52 2021 +0100

validation: Fix for 64-bit targets

Closes #4179.

---

 spec/build/bsps/aarch64/a53/tsta53.yml              |  3 ---
 spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml   |  3 ---
 testsuites/validation/tc-message-construct-errors.c | 13 ++++++++++++-
 3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/spec/build/bsps/aarch64/a53/tsta53.yml b/spec/build/bsps/aarch64/a53/tsta53.yml
index 9135fac..4ecef03 100644
--- a/spec/build/bsps/aarch64/a53/tsta53.yml
+++ b/spec/build/bsps/aarch64/a53/tsta53.yml
@@ -4,9 +4,6 @@ actions:
     # expected to fail, don't compile these
     minimum: exclude
 
-    # test broken under 64bit due to SIZE_MAX differences
-    validation-0: exclude
-
     # don't compile due to toolchain issues
     spconfig01: exclude
     spmisc01: exclude
diff --git a/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml b/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml
index d0efba6..45fdc50 100644
--- a/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml
+++ b/spec/build/bsps/aarch64/xilinx-zynqmp/tstqemu.yml
@@ -4,9 +4,6 @@ actions:
     # expected to fail
     minimum: exclude
 
-    # test broken under 64bit due to SIZE_MAX differences
-    validation-0: expected-fail
-
     # don't compile due to toolchain issues
     spconfig01: exclude
     spmisc01: exclude
diff --git a/testsuites/validation/tc-message-construct-errors.c b/testsuites/validation/tc-message-construct-errors.c
index e1b3609..0a98a52 100644
--- a/testsuites/validation/tc-message-construct-errors.c
+++ b/testsuites/validation/tc-message-construct-errors.c
@@ -358,7 +358,18 @@ static void RtemsMessageReqConstructErrors_Pre_MaxSize_Prepare(
        * The maximum message size of the message queue configuration shall be
        * valid.
        */
-      ctx->config.maximum_message_size = MAX_MESSAGE_SIZE;
+      if ( ctx->config.maximum_pending_messages == UINT32_MAX ) {
+        /*
+         * At least on 64-bit systems we need a bit of help to ensure that we
+         * meet the Big state of the MaxPending pre-condition.  The following
+         * message size is valid with respect to calculations involving only
+         * the message size.
+         */
+        ctx->config.maximum_message_size = SIZE_MAX - sizeof( uintptr_t ) +
+          1 - sizeof( CORE_message_queue_Buffer );
+      } else {
+        ctx->config.maximum_message_size = MAX_MESSAGE_SIZE;
+      }
       break;
     }
 



More information about the vc mailing list