Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix single-threaded apps for IAR v8 builds #10020

Merged
merged 1 commit into from Apr 8, 2019

Conversation

Projects
None yet
5 participants
@TacoGrandeTX
Copy link
Contributor

commented Mar 8, 2019

For single-threaded apps __iar_Initlocks() is not required and must not be called because the proper IAR library is brought in only if --threaded_lib is defined in the linker command.

Description

If one doesn't link with --threaded_lib then an IAR run-time library is brought in which doesn't include __iar_Initlocks() and a linker error is generated when building:

Error[Li005]: no definition for "__iar_Initlocks" [referenced from C:\_nrf\ble_
          project\BUILD\NRF52840_DK\IAR-TOOLCHAINS_PROFILE\mbed-os\r
          tos\TARGET_CORTEX\TOOLCHAIN_IAR\mbed_boot_iar.o]

So calls to __iar_Initlocks() now need to be protected by "MBED_RTOS_SINGLE_THREAD".

Pull request type

[x] Fix
[ ] Refactor
[ ] Target update
[ ] Functionality change
[ ] Docs update
[ ] Test update
[ ] Breaking change

Reviewers

Release Notes

This was discovered on an internal BLE project which used the following toolchains_profile.json:

"IAR": {
    "common": [
        "--no_wrap_diagnostics", "-e",
        "--diag_suppress=Pa050,Pa084,Pa093,Pa082", "-Ohz", "-DMBED_RTOS_SINGLE_THREAD", "--enable_restrict"],
    "asm": [],
    "c": ["--vla"],
    "cxx": ["--guard_calls", "--no_static_destruction", 
            "--no_exceptions", "--no_rtti", "--no_static_destruction"],
    "ld": ["--skip_dynamic_initialization", "--inline", "--merge_duplicate_sections", "--no_exceptions", "--basic_heap"]
}
Fix single-threaded apps for IAR v8 builds
For single-threaded apps __iar_Initlocks() is not required and must
not be called because the proper IAR library is brought in only if
"--threaded_lib" is defined in the linker command.

@TacoGrandeTX TacoGrandeTX requested a review from SenRamakri Mar 8, 2019

@TacoGrandeTX

This comment has been minimized.

Copy link
Contributor Author

commented Mar 8, 2019

@paul-szczepanek-arm This will fix the build issue you experienced.

@ciarmcom ciarmcom requested review from ARMmbed/mbed-os-maintainers Mar 9, 2019

@ciarmcom

This comment has been minimized.

Copy link
Member

commented Mar 9, 2019

@TacoGrandeTX, thank you for your changes.
@ARMmbed/mbed-os-core @ARMmbed/mbed-os-maintainers please review.

@0xc0170
Copy link
Member

left a comment

Good catch !

@cmonr

cmonr approved these changes Mar 27, 2019

@cmonr

This comment has been minimized.

Copy link
Contributor

commented Mar 27, 2019

@SenRamakri Mind taking a quick look?

@0xc0170

This comment has been minimized.

Copy link
Member

commented Apr 5, 2019

CI started

@mbed-ci

This comment has been minimized.

Copy link

commented Apr 5, 2019

Test run: SUCCESS

Summary: 13 of 13 test jobs passed
Build number : 1
Build artifacts

@0xc0170 0xc0170 merged commit 43cbc10 into ARMmbed:master Apr 8, 2019

28 checks passed

continuous-integration/jenkins/pr-head This commit looks good
Details
continuous-integration/travis-ci/pr The Travis CI build passed
Details
jenkins-ci/build-ARMC5 Success
Details
jenkins-ci/build-ARMC6 Success
Details
jenkins-ci/build-GCC_ARM Success
Details
jenkins-ci/build-IAR8 Success
Details
jenkins-ci/cloud-client-test Success
Details
jenkins-ci/dynamic-memory-usage RTOS ROM(+0 bytes) RAM(+0 bytes)
Details
jenkins-ci/exporter Success
Details
jenkins-ci/greentea-test Success
Details
jenkins-ci/mbed2-build-ARMC5 Success
Details
jenkins-ci/mbed2-build-ARMC6 Success
Details
jenkins-ci/mbed2-build-GCC_ARM Success
Details
jenkins-ci/mbed2-build-IAR8 Success
Details
jenkins-ci/unittests Success
Details
travis-ci/astyle Local astyle testing has passed
Details
travis-ci/docs Local docs testing has passed
Details
travis-ci/doxy-spellcheck Local doxy-spellcheck testing has passed
Details
travis-ci/events Passed, runtime is 10371 cycles (+1347 cycles)
Details
travis-ci/gitattributestest Local gitattributestest testing has passed
Details
travis-ci/include_check Local include_check testing has passed
Details
travis-ci/licence_check Local licence_check testing has passed
Details
travis-ci/littlefs Passed, code size is 8408B (+0.00%)
Details
travis-ci/psa-autogen Local psa-autogen testing has passed
Details
travis-ci/tools-py2.7 Local tools-py2.7 testing has passed
Details
travis-ci/tools-py3.5 Local tools-py3.5 testing has passed
Details
travis-ci/tools-py3.6 Local tools-py3.6 testing has passed
Details
travis-ci/tools-py3.7 Local tools-py3.7 testing has passed
Details

@cmonr cmonr removed the ready for merge label Apr 9, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.