For these options to be of any use, they must be passed to the
compiler when building object files and then the --gc-sections flag
must be passed to the linker.
Add -ffunction-sections -fdata-sections to CFLAGS and then add
-Wl,--gc-sections to LDFLAGS.
Signed-off-by: Keith Packard <keithpac@amazon.com>
Ensure that the handler2_address_const location will be correctly
aligned when compiled to a separate section.
Add the 'used' attribute to isr_vector to ensure it will not be elided
from the output.
Signed-off-by: Keith Packard <keithpac@amazon.com>
* Expand RV32E demo support, prevent 'ebreak' looping
The RegTest tests are modified in the Qemu and HiFive demos
to support RV32E and its limited set of registers.
'ebreak' call looping is removed in RegTest. This produces
a lot of noise when debugging.
* Correct whitespace
* Remove 'ebreak' instruction calls
The ebreak instruction sets and exception
which leads to jumping around the binary. This
can make debugging difficult.
* Fix whitespace formatting
Prior to this commit, CBMC would emit logging information in plain text
format, which does not contain information required for the CBMC VSCode
debugger. This commit makes CBMC use XML instead of plain text.
Co-authored-by: Mark Tuttle <tuttle@acm.org>
Update the unit test for the following functions to verify that equal priority task won't be preempted
* vTaskResume
* xTaskResumeFromISR
* vTaskPrioritySet
* xTaskResumeAll
4 test cases are added to verify this scenario
* test_xTaskResumeAll_success_2_tasks_eq_prio_running_no_yield
* test_vTaskPrioritySet_success_eq_curr_prio_curr_tcb
* test_vTaskResume_success_eq_curr_prio_not_yield
* test_xTaskResumeFromISR_success_eq_curr_prio_suspended_task
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
The tracelyzer code was declaring a local stack variable of type
`uint32_t` and passing it as output parameter to a function which
expected `uint64_t` on a 64-bit platform. This resulted in 4 byte memory
corruption. The problem was that the function signature uses
`TraceUnsignedBaseType_t` type for the output parameter which gets
defined to `uint32_t` on a 32-bit platform and to `uint64_t` on a 64-bit
platform, while the local stack variable was declared as `uint32_t`.
This commit changes the type of local stack variable to
`TraceUnsignedBaseType_t` to match the function parameter type.
Tracelyzer creates a task internally stack size of which is controlled
using TRC_CFG_CTRL_TASK_STACK_SIZE. It was earlier defined to 1024.
The POSIX port requires the stack size to be minimum PTHREAD_STACK_MIN.
The commit updates the TRC_CFG_CTRL_TASK_STACK_SIZE to
PTHREAD_STACK_MIN.
The demo directory contained one extra trcConfig.h and
trcKernelPortConfig.h. This commit deletes those files.
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Fix WIN32-MSVC demo in FreeRTOS/Demo.
* Add comments.
* Fix corechecks
* Re-work trace and keyboard input.
* Remove unneeded line from trcConfig.h
* Fix formatting in trcConfig.h
* Fix heap issues, add FreeRTOS task to simulate keyboard interrupts.
* Update comment on main_blinky.
* Fix spelling.
* Make keyboard input thread block on input.
* Set thread affinity of keyboard input thread to not run on the same core as FreeRTOS.
* Adjust heap regions and total heap size.
* Fix spelling.
Co-authored-by: Jason Carroll <czjaso@amazon.com>
Update Readme instructions and add troubleshooting
tips for issues seen on Ubuntu and include a description
of where to find various crosstools-ng flags.
Update SiFive IAR demo to support vectored interrupts. This is a near copy of https://github.com/FreeRTOS/FreeRTOS/pull/797.
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
* Add a unit test for tasks.c
This test simulates the scenario when a task with priority higher than
the currently executing task is unblocked as a result of the
xTaskIncrementTick call.
This is needed to fix the coverage drop in PR https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/568.
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Add description for the test
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Add doc for another test
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Undo syntax changes preventing VeriFast parsing
* Update proofs inline with source changes
Outstanding:
- xQueueGenericReset return code
- Not using prvIncrementQueueTxLock or prvIncrementQueueRxLock macros
* Remove git hash check
* Document new changes between proven code and implementation
* Update copyright header
* VeriFast proofs: turn off uncrustify checks
Uncrustify requires formatting of comments that is at odds with VeriFast's
proof annotations, which are contained within comments.
* Update ci.yml
Co-authored-by: Joseph Julicher <jjulicher@mac.com>
Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
The test simulates the scenario when a task with priority equal to the
currently executing task is unblocked as a result of the
xTaskIncrementTick call.
Related PR - https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/568
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Created a generic portmacro.h file in the CBMC include folder instead of using the default MSVC-MingW one. This allows each proof to define the portmacro constants it needs and cover all code in the Task Scheduler
* Removed the license text from the portmacro file
* Fix CI checks
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
* Fix spell check
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav Aggarwal <aggarg@amazon.com>
Co-authored-by: Gaurav-Aggarwal-AWS <33462878+aggarg@users.noreply.github.com>
* Add test for timer start delayed past expiration
This reverts commit 53af0ec62e, which
itself reverted 9c91199016.
* Add warning about vTimerDemoIncludeBacklogTests()
* uncrustify for CI check
* Remove unintentional changes to spacing in comments
* prvReceiverTask() in MessageBufferDemo.c declared a variable as a "MessageBufferHandle_t *" instead of just a "MessageBuffer_t". This came to light when updating the kernel submodule pointer as the underlying datatype changed in the kernel from a void *.
* Remove additional line that was preventing automated uncrustify tests from passing.
Co-authored-by: none <>
* Test: add multi config ability to build system
* Remove Tests that are not implemented yet from the makefile
* Fix header check
* Test: Unit Test tasks.c
* UnitTest: tasks.c Save progress
* saving some work 70% coverage
* coverage 77%
* tasks.c coverage 90%
* tasks.c coverage 95%
* Cleanup and common header
* Cover some extra branches, no_mutex +stack growth
* Fix Makefile not to use modified version of c-preprocessor
* Remove c-preprocessor errros
* Rebase and add some tests
* Fortify_source=1 and O0 are mutually exclusive
* Style: Uncrustify code
* Style: Fix indent
* Fix Header checks
* Add prototypes
* Build: use unifdef instead of the c-preprocessor to generate different configurations
* Build: fix makefile cflags
* Fix UT after upgrading kernel version
* Resolve conflicts and test failures
* Comment fix version number
* Fix build error
* Update FreeRTOS/Test/CMock/Makefile
Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
Co-authored-by: Aniruddha Kanhere <60444055+AniruddhaKanhere@users.noreply.github.com>
1. add INCLUDE_xTaskGetCurrentTaskHandle for stream_buffer use
2. LDFLAGS add arch and abi info for linker
for riscv64-unknown-elf multilib, if there is no arch and abi
info, will link to default lib and have below error
target emulation `elf32-littleriscv' does not match `elf64-littleriscv'
3. use CFLAGS to replace ASFLAGS when compile assembly code
because DEBUG flag is added in CFLAGS, if we use ASFLAGS to compile
assembly code, there is no debug info in assembly code objfile
Signed-off-by: Eric Chan <e14002270@gmail.com>