Conversation
….2.Rel1 Released: December 22, 2022, https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads).+
There was a problem hiding this comment.
There are some references to the specific toolchain version in some of the docs, and those might want updating/generalising. As far as I know, those are: .vscode/launch.json, doc/MemoryAnalysis.md, doc/buildAndProgram.md and doc/buildWithVScode.md.
I also remember there being some new warnings in the compiler output using 11.3.Rel1 and 12.2.MPACBTI-Bet1. Have these been fixed in the 12.2.Rel1 release?
… and buildWithVScode.md.
…s GCC to avoid code duplication.
|
Thanks for your prompt review, @FintasticMan ! I updated the mentions to the toolchain in
Yes, the compiler issues a few new warnings. Since most of them come from 3rd party code, they should be fix with #1501. |
|
Oh... It's strange, those error are not displayed when I build in CLion, but I get them when building with docker. |
|
My understanding is that we link with My searches show that many people noticed that these warning appeared as of GCC 11.3 (I tried with gcc11.2 : no warning). I checked the .map files from GCC10 and GCC12 and I couldn't find relevant differences regarding the symbols However, I don't know how to prove this. I could silence those warnings by adding this in main.cpp : extern "C" {
__attribute__((weak)) int _isatty(int fd) {
errno = EBADF;
return 0;
}
__attribute__((weak)) int _close(int fd) {
errno = EBADF;
return -1;
}
__attribute__((weak)) int _lseek(int fd, int ptr, int dir) {
(void) fd;
(void) ptr;
(void) dir;
errno = EBADF;
return -1;
}
__attribute__((weak)) int _fstat(int fd, struct stat* st) {
errno = EBADF;
return 0;
}
__attribute__((weak)) int _read(int file, char* ptr, int len) {
(void) file;
return 0;
}
__attribute__((unused)) __attribute__((weak)) int _write(int file, char* ptr, int len) {
(void) file;
return 0;
}
__attribute__((unused)) __attribute__((weak)) int _getpid(void) {
return -1;
}
__attribute__((weak)) void _kill(int pid, int sig) {
return;
}
}It simply provide an empty implementation for those functions required by newlib.
Does that mean that the "default" implementation is 48B bigger than mine ? I don't know... So the question is : do we need to worry about those warning, or can we simply silence them by implementing the missing functions needed by newlib? |
|
Neither seems like a good idea to me. Hopefully this issue gets resolved before we need to update. Just noticed that there's a new comment in the linked thread, which says changing |
|
I saw that too, but it seems we are already using |
|
With the new 13.3 toolchain, the message has changed! Specifically: |
|
FYI, I built version 1.14.1 with GCC 13.3.1, "make pinetime-a[[" ends with:
I had to shrink the heap by 620 bytes (in |

Update the documentation and Dockerfile to use GCC12. A newer version of GCC is needed to use features from C++20 like
concepts. Needed by #1387.