-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Make unique sections for ICACHE_* variables #5116
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
Conversation
This will also change flash and IRAM usage, same as the PROGMEM change did. A blank sketch reports 246008-243644 bytes of flash (2364 bytes) saved. I can't quite figure out how to find the end of iram, so that still needs to be checked. If there were repeated constant strings then it may actually have grown since gcc couldn't coalesce them (assuming it did before). |
Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction unique to avoid issues with section conflicts. Fixes esp8266#5115
286c041
to
e9f587a
Compare
Closing this since #5117 fixes the bug found in the linker files. |
Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction unique to avoid issues with section conflicts. Also rename the generated LD linker script to avoid issue with older copies of the eagle.app.v6.common.ld which were generated by the build process in a global directory before being moved to the {build.path}. The linker would use the older, generated *.ld file instead of the generated one, which would lead to runtime failures on some systems and cause the VTABLE location to not correspond to the IDE menu selection. Fixes esp8266#5115, and is an update to esp8266#5117 and esp8266#5116.
* Move ICACHE_* to unique sections, local LD script Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction unique to avoid issues with section conflicts. Also rename the generated LD linker script to avoid issue with older copies of the eagle.app.v6.common.ld which were generated by the build process in a global directory before being moved to the {build.path}. The linker would use the older, generated *.ld file instead of the generated one, which would lead to runtime failures on some systems and cause the VTABLE location to not correspond to the IDE menu selection. Fixes #5115, and is an update to #5117 and #5116. * Update boards.txt.py and platform.io build
Fixes esp8266#5116 Fixes esp8266#2743 The Arduino WiFiClient object allows sending the same packet to all connected clients of a WiFiServer. In their implementation it may make sense, but on the 8266 with things like SSL it doesn't. Update the docs to note that WiFiServer::write() is a no-op, and that the app should use the WiFiCliebnt::write() on all connected clients as appropriate.
Fixes #5116 Fixes #2743 The Arduino WiFiClient object allows sending the same packet to all connected clients of a WiFiServer. In their implementation it may make sense, but on the 8266 with things like SSL it doesn't. Update the docs to note that WiFiServer::write() is a no-op, and that the app should use the WiFiCliebnt::write() on all connected clients as appropriate.
…flicts issue Thanks to esp8266/Arduino#5116
… section conflicts Thanks to esp8266/Arduino#5116 Commonly occurs when attempting to inline header methods, generally more of a problem with GCC 4.8.
… section conflicts Thanks to esp8266/Arduino#5116 Commonly occurs when attempting to inline header methods, generally more of a problem with GCC 4.8.
… section conflicts (#1829) Thanks to esp8266/Arduino#5116 Commonly occurs when attempting to inline header methods, generally more of a problem with GCC 4.8.
Similar to PROGMEM changes, make the name of each ICACHE_* variable/fuction
unique to avoid issues with section conflicts.
Fixes #5115