-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
Add extern declarations for gcc10 compat #3231
Conversation
as with the 8->9 switch, some boards seem to grow while others shrink. For example, trinket_m0 de_DE wasn't fitting at the ref of main where I based this PR, but started to fit. However, bast_pro_mini_m0 overflowed. There are also some build errors that are NOT just over-full flash, perhaps they weren't encountered while working on #3194 . arduino_nano_33_ble fails with linker messages about multiply defined symbols:
I didn't look at all the failures yet. |
Looks like the nrf and i.MX builds need to add a bunch of |
FYI -- I tried using gcc 10 to buil the grandcentral_m4_express -- it builds OK, but when I put the build on the board, it does not boot properly -- Staus neopixel starts off green then goes to yellow (possibly safe mode?) I can connect to the REPL briefly, but it eventually drops the connection -- no CIRCUITPY drive is mounted
rebuilding with gcc 9.2.1 works normally also note that I was able to build the CPX board with GCC10 and it appears to execute normally |
FYI -- confirmed the same failure as above on a feather_m4_express. also confirmed that the feather m0 express builds and appears to operate normally -- as did the CPX. |
@tannewt tried using gcc10 for pyportal build -- also fails -- yellow status LED here is the dmesg dump
|
FYI -- with this pr -- I can build the nrf52840 -- feather_bluefruit_sense --- seems to work OK -- at least I get to REPL and CIRCUITPY drive Still no luck with ATMEL SAMD51 |
and I can also now build and run the teensy41 with gcc10 using this PR..... Note -- PyPortal does confirm on the display that it is entering Safe Mode -- I cannot connect to the REPL to explore further. The Display briefly shows a normal boot message then reboots to safe mode. |
hmm -- I downloaded the "artifact" build from CI adafruit-circuitpython-grandcentral_m4_express-en_US-20200803-9da03a2.uf2 and it executes normally on my GCM4 uggh -- well it boots OK when connected to my Mac, but not when connected to my Raspberry Pi ... the plot thickens. Ha!! so does my local build -- so this issue is about USB on Linux vs Mac |
@tannewt IIRC we've seen something like this before -- where builds would work on Mac, but not on Linux - specifically the USB -- I think it happeded with the early esp32s2 builds. Do you recall what the issue was -- could there be something in the SAMD51 builds that is dependent on the gcc10 changes that is causing this. Have you been working on your Mac with the GCC10 builds? Have you ever tried one on a linux box? |
No, I don't remember.
Nope, I'm working on Arch Linux now. (It only has GCC10 so that's why I switched.) |
I'm relieved that the builds do work on the mac, at least. They go to Safe mode on both Ubuntu 20.04 and Raspberry Pi Buster ... similar dmesg trails when they fail. |
@tannewt What is the exact version of the gcc 10 compiler you have on arch? The ARM preview is:
|
Here is what I have now:
|
Interesting development -- I included PR #3232 which has a fix for a startup issue. I wish I know what it was telling me, but it is trying..... I will try to delve into this more tomorrow and see if I can create a clearer picture. It's pretty muddled right now. |
A few more observations go GCC10 behavior for SAMD51 - PyPortal With GCC9 everything works fine I tried just connecting Power -- no computer -- The Pyportal display looks normal. edited to add -- also I was relied to see taht I get the same results independent of where I build the file -- on the Pi or in the Mac -- ON the Pi I built gcc10 from source, on the Mac, I am using the distributed tarball from arm-developers. At least they are consistent |
I think the safe mode will take a gdb backtrace to debug. Maybe I can circle back to this once wifi is going on the S2. We'll also need to see why these three builds are bigger. |
I converted this to a draft pull request. Would be happy for someone else to take a look at it, but it's not on my short list right now. We can also close this up if it's not useful to leave it open. |
Would you mind removing the actual build and un-drafting this? It'd be nice to get the gcc10 fixes in this PR merged in. |
gcc has tightened the restrictions on forward declarations that lack "extern". Fix them up.
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.
Thank you!
FYI I just debugged a SAMD51 issue with GCC 10.2 and USB worked just fine. Full version:
|
hmm -- I don't see the gcc 10.2.0 toolchain on the arm developer site. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads |
While this PR originally switched to gcc10, it wasn't working out right now. However, we can safely add these extern declarations to help next time we take a bite at it.