FYA: Please read the Notes prior to upgrading 6.0.0.13.
Notes:
======
In 6.0.0.13, we add a fix for bug LIN6-8628. The problem is GCC 4.8 now uses a more aggressive analysis to derive an upper bound for the number of iterations of loops using constraints imposed by language standards. This may cause non-conforming programs to no longer work as expected. For example:
#define SIZE 10
int main()
{
uint32_t numbers[2][SIZE];
uint32_t i = 0;
memset(&numbers, 0xff, sizeof(numbers));
while (numbers[0][i] != 0 && i < SIZE)
{
printf("Reading at [0][%u]: %u\n", i, numbers[0][i]);
i++;
}
return 0;
}
Executing the code gives the result as shown below, which is different from gcc 4.6.3 behavior. The expected result is to terminate the loop when i is equal to 10 but that is not happening.Reason is likely the new "aggressive loop optimization" behavior of gcc 4.8.1 resulting in that the condition "i < SIZE" is optimized away. Gcc likely determines that is does not need to check that "i < SIZE" since when i => SIZE then undefined behavior has already occurred (index out of range on the numbers array) so the condition "i < SIZE" always has to be true.
Reading at [0][0]: 4294967295
Reading at [0][1]: 4294967295
Reading at [0][2]: 4294967295
Reading at [0][3]: 4294967295
Reading at [0][4]: 4294967295
Reading at [0][5]: 4294967295
Reading at [0][6]: 4294967295
Reading at [0][7]: 4294967295
Reading at [0][8]: 4294967295
Reading at [0][9]: 4294967295
Reading at [0][10]: 4294967295
Reading at [0][11]: 4294967295
Reading at [0][12]: 4294967295
Reading at [0][13]: 4294967295
Reading at [0][14]: 4294967295
In order to avoid it happening, we add a fix in 6.0.0.13, that halts the build when it detects the situation to alert the application developer to fix the problem. The actual fix in application is:
- while (numbers[0][i] != 0 && i < SIZE)
+ while (i < SIZE && numbers[0][i] != 0)
But some other situations are considered as the same problem due to the loose detection. We have made a patch to fix this kind of problem in package crash, but the fix was missed the 6.0.0.13, so you need to apply the patch 0001-Fix-crash-build-failure-with-gcc-4-8-39.patch on 6.0.0.13.
How to apply the patch
1) Upgrading 6.0.0.13
2) Create a project
3) Apply the patch
$cd project/layers/wr-base
$git am 0001-Fix-crash-build-failure-with-gcc-4-8-39.patch
BTW, a LIN6-8628 is tracked this issue and we will merge the fix into 6.0.0.14
README & whatsnew60
====================
The README.txt on this OLS page contains instructions on how to use these features, general information on the RCPL and a complete list of defects fixed. Conversely, the defects listed in OLS page aren't complete due to the length limitation of characters. The README.txt should be reviewed prior to installation.
The whatsnew60 file on the OLS page contains what new features were added by each RCPL.
Verification prebuilt binaries:
================================
$cd Installdir/wrlinux-6/setup
$./prebuiltck.sh
prebuilt binaries checksum passed.
We also provide the checksum file on the OLS page in case someone changes your local file. Please download the prebuilt.tgz file, and then run:
$tar xzvf ~/Desktop/prebuilt.tgz
wrlinux-6/
wrlinux-6/setup/
wrlinux-6/setup/prebuiltck.sh
wrlinux-6/setup/prebuilts.md5.asc
wrlinux-6/setup/wrl_60.gpg
$cd Installdir/wrlinux-6/setup
$./prebuiltck.sh
prebuilt binaries checksum passed.
Requires Wind River Linux 6.0 to be installed
Wind River Linux 6.0.0.13 is now only available via Electronic Software Distribution (ESD) method accessible via the Wind River Installation Tool (wrInstaller) available within your product installation.
Step 1 - Prepare
Step 2 - Install
NOTE - 1) If you're having connectivity (firewall or network setup) issues, Wind River allows you to run the wrInstaller on a machine with Internet connectivity by downloading this update pack into a convenient location and then installing the content back onto the development machine. Follow these instructions:
2) On Windows hosts, you may notice some errors in the "setup.log" around "readlink" and "uninstall_mgr.sh". These messages can be ignored as they do not affect the running of the product. If though you should decide to un-install the product, there may be some error messages about changed files which the Installer will not remove. In this case, you can simply remove the remaining files and the installation directory manually.