-
-
Notifications
You must be signed in to change notification settings - Fork 966
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
Update GCC (in doc and docker) to GCC12 #1512
base: main
Are you sure you want to change the base?
Conversation
….2.Rel1 Released: December 22, 2022, https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads).+
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.