-
Notifications
You must be signed in to change notification settings - Fork 6
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
extern-types: Generate replacement types dynamically #27
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Remmirad
approved these changes
Mar 11, 2023
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.
Looks good, and works perfectly fine for the esp32c3. (should also for s2).
chrysn
added a commit
to chrysn-pull-requests/RIOT
that referenced
this pull request
Apr 24, 2023
This pulls in several fixes from these repositories: * riot-sys: * Add `random` module to `riot-headers` (RIOT-OS/rust-riot-sys#26) * README: fix 2 typos (RIOT-OS/rust-riot-sys#31) * bindgen: Use 0.64 (RIOT-OS/rust-riot-sys#30) * wolfSSL support added (RIOT-OS/rust-riot-sys#28) * extern-types: Generate replacement types dynamically (RIOT-OS/rust-riot-sys#27) * Extern types: Add netq_t, make them large (RIOT-OS/rust-riot-sys#25) * doc: Suppress warnings about things C2Rust does not uphold (RIOT-OS/rust-riot-sys#23) * export macro_DAC_LINE (RIOT-OS/rust-riot-sys#22) * Add BINDGEN_OUTPUT_FILE export (RIOT-OS/rust-riot-sys#21) * riot-wrappers: * DAC: Add wrapper around RIOTs DAC-interface (RIOT-OS/rust-riot-wrappers#36) * saul: Compatibly rename G* variants (RIOT-OS/rust-riot-wrappers#50) * tests: Add test for auto-init when auto-init debug is active (RIOT-OS/rust-riot-wrappers#48) * gcoap: Provide link encoder (RIOT-OS/rust-riot-wrappers#47) * Drop SUIT support in riot-wrappers (RIOT-OS/rust-riot-wrappers#44) * Add an auto init module (RIOT-OS/rust-riot-wrappers#45) * gcoap: Allow registration without scope for 'static listeners (RIOT-OS/rust-riot-wrappers#43) Through direct dependency changes (the bindgen update), the number of transitive dependencies could be reduced.
bors bot
added a commit
to RIOT-OS/RIOT
that referenced
this pull request
Apr 24, 2023
19495: Rust: Update dependencies r=maribu a=chrysn ### Contribution description This updates both the RIOT-specific and generic dependencies of Rust examples and modules. ### Testing procedure * Green CI should do ### Issues/PRs references Copying from one of the commits with some sed: * riot-sys: * RIOT-OS/rust-riot-sys#26 * RIOT-OS/rust-riot-sys#31 * RIOT-OS/rust-riot-sys#30 * RIOT-OS/rust-riot-sys#28 * RIOT-OS/rust-riot-sys#27 * RIOT-OS/rust-riot-sys#25 * RIOT-OS/rust-riot-sys#23 * RIOT-OS/rust-riot-sys#22 * RIOT-OS/rust-riot-sys#21 * riot-wrappers: * RIOT-OS/rust-riot-wrappers#36 * RIOT-OS/rust-riot-wrappers#50 * RIOT-OS/rust-riot-wrappers#48 * RIOT-OS/rust-riot-wrappers#47 * RIOT-OS/rust-riot-wrappers#44 * RIOT-OS/rust-riot-wrappers#45 * RIOT-OS/rust-riot-wrappers#43 ### How to do similar PRs Updating the RIOT-related dependencies (which here also updated bindgen because the dependency of riot-sys changed): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml --package riot-sys --package riot-wrappers; done ``` Updating everything (should never really be needed, b/c if something has a concrete dependency change it'd say so, but dependencies generally get better over time): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml; done ``` Creating the commit message: ``` $ git log --first-parent --format='%s (%b)' 9c29faf55d4c14d2d7f55f8df5059c52af4e5317..e4973a6ee88427f702dac41b3dce4fd6b6b9689e | sed 's/Merges: //' | sed 's/^/ * /' ``` git shortlog unfortunately doesn't show the merges the way I prefer linking them. The versions in the command line can be taken from `git diff --text` and looking for the riot-sys or riot-wrappers line, respectively. Co-authored-by: chrysn <chrysn@fsfe.org>
bors bot
added a commit
to RIOT-OS/RIOT
that referenced
this pull request
Apr 25, 2023
19495: Rust: Update dependencies r=chrysn a=chrysn ### Contribution description This updates both the RIOT-specific and generic dependencies of Rust examples and modules. It also follows a deprecation from the G unit renaming originally done in #19292. ### Testing procedure * Green CI should do ### Issues/PRs references Copying from one of the commits with some sed: * riot-sys: * RIOT-OS/rust-riot-sys#26 * RIOT-OS/rust-riot-sys#31 * RIOT-OS/rust-riot-sys#30 * RIOT-OS/rust-riot-sys#28 * RIOT-OS/rust-riot-sys#27 * RIOT-OS/rust-riot-sys#25 * RIOT-OS/rust-riot-sys#23 * RIOT-OS/rust-riot-sys#22 * RIOT-OS/rust-riot-sys#21 * riot-wrappers: * RIOT-OS/rust-riot-wrappers#36 * RIOT-OS/rust-riot-wrappers#50 * RIOT-OS/rust-riot-wrappers#48 * RIOT-OS/rust-riot-wrappers#47 * RIOT-OS/rust-riot-wrappers#44 * RIOT-OS/rust-riot-wrappers#45 * RIOT-OS/rust-riot-wrappers#43 * (later, when the mistake became apparent) RIOT-OS/rust-riot-wrappers#55 ### How to do similar PRs Updating the RIOT-related dependencies (which here also updated bindgen because the dependency of riot-sys changed): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml --package riot-sys --package riot-wrappers; done ``` Updating everything (should never really be needed, b/c if something has a concrete dependency change it'd say so, but dependencies generally get better over time): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml; done ``` Creating the commit message: ``` $ git log --first-parent --format='%s (%b)' 9c29faf55d4c14d2d7f55f8df5059c52af4e5317..e4973a6ee88427f702dac41b3dce4fd6b6b9689e | sed 's/Merges: //' | sed 's/^/ * /' ``` git shortlog unfortunately doesn't show the merges the way I prefer linking them. The versions in the command line can be taken from `git diff --text` and looking for the riot-sys or riot-wrappers line, respectively. Co-authored-by: chrysn <chrysn@fsfe.org>
maribu
pushed a commit
to maribu/RIOT
that referenced
this pull request
Apr 25, 2023
This pulls in several fixes from these repositories: * riot-sys: * Add `random` module to `riot-headers` (RIOT-OS/rust-riot-sys#26) * README: fix 2 typos (RIOT-OS/rust-riot-sys#31) * bindgen: Use 0.64 (RIOT-OS/rust-riot-sys#30) * wolfSSL support added (RIOT-OS/rust-riot-sys#28) * extern-types: Generate replacement types dynamically (RIOT-OS/rust-riot-sys#27) * Extern types: Add netq_t, make them large (RIOT-OS/rust-riot-sys#25) * doc: Suppress warnings about things C2Rust does not uphold (RIOT-OS/rust-riot-sys#23) * export macro_DAC_LINE (RIOT-OS/rust-riot-sys#22) * Add BINDGEN_OUTPUT_FILE export (RIOT-OS/rust-riot-sys#21) * riot-wrappers: * DAC: Add wrapper around RIOTs DAC-interface (RIOT-OS/rust-riot-wrappers#36) * saul: Compatibly rename G* variants (RIOT-OS/rust-riot-wrappers#50) * tests: Add test for auto-init when auto-init debug is active (RIOT-OS/rust-riot-wrappers#48) * gcoap: Provide link encoder (RIOT-OS/rust-riot-wrappers#47) * Drop SUIT support in riot-wrappers (RIOT-OS/rust-riot-wrappers#44) * Add an auto init module (RIOT-OS/rust-riot-wrappers#45) * gcoap: Allow registration without scope for 'static listeners (RIOT-OS/rust-riot-wrappers#43) Through direct dependency changes (the bindgen update), the number of transitive dependencies could be reduced. (cherry picked from commit de41031)
bors bot
added a commit
to RIOT-OS/RIOT
that referenced
this pull request
Apr 28, 2023
19505: Rust: Update dependencies [backport 2023.04] r=maribu a=maribu # Backport of #19495 ### Contribution description This updates both the RIOT-specific and generic dependencies of Rust examples and modules. It also follows a deprecation from the G unit renaming originally done in #19292. ### Testing procedure * Green CI should do ### Issues/PRs references Copying from one of the commits with some sed: * riot-sys: * RIOT-OS/rust-riot-sys#26 * RIOT-OS/rust-riot-sys#31 * RIOT-OS/rust-riot-sys#30 * RIOT-OS/rust-riot-sys#28 * RIOT-OS/rust-riot-sys#27 * RIOT-OS/rust-riot-sys#25 * RIOT-OS/rust-riot-sys#23 * RIOT-OS/rust-riot-sys#22 * RIOT-OS/rust-riot-sys#21 * riot-wrappers: * RIOT-OS/rust-riot-wrappers#36 * RIOT-OS/rust-riot-wrappers#50 * RIOT-OS/rust-riot-wrappers#48 * RIOT-OS/rust-riot-wrappers#47 * RIOT-OS/rust-riot-wrappers#44 * RIOT-OS/rust-riot-wrappers#45 * RIOT-OS/rust-riot-wrappers#43 * (later, when the mistake became apparent) RIOT-OS/rust-riot-wrappers#55 ### How to do similar PRs Updating the RIOT-related dependencies (which here also updated bindgen because the dependency of riot-sys changed): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml --package riot-sys --package riot-wrappers; done ``` Updating everything (should never really be needed, b/c if something has a concrete dependency change it'd say so, but dependencies generally get better over time): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml; done ``` Creating the commit message: ``` $ git log --first-parent --format='%s (%b)' 9c29faf55d4c14d2d7f55f8df5059c52af4e5317..e4973a6ee88427f702dac41b3dce4fd6b6b9689e | sed 's/Merges: //' | sed 's/^/ * /' ``` git shortlog unfortunately doesn't show the merges the way I prefer linking them. The versions in the command line can be taken from `git diff --text` and looking for the riot-sys or riot-wrappers line, respectively. Co-authored-by: chrysn <chrysn@fsfe.org>
bors bot
added a commit
to RIOT-OS/RIOT
that referenced
this pull request
Apr 28, 2023
19505: Rust: Update dependencies [backport 2023.04] r=maribu a=maribu # Backport of #19495 ### Contribution description This updates both the RIOT-specific and generic dependencies of Rust examples and modules. It also follows a deprecation from the G unit renaming originally done in #19292. ### Testing procedure * Green CI should do ### Issues/PRs references Copying from one of the commits with some sed: * riot-sys: * RIOT-OS/rust-riot-sys#26 * RIOT-OS/rust-riot-sys#31 * RIOT-OS/rust-riot-sys#30 * RIOT-OS/rust-riot-sys#28 * RIOT-OS/rust-riot-sys#27 * RIOT-OS/rust-riot-sys#25 * RIOT-OS/rust-riot-sys#23 * RIOT-OS/rust-riot-sys#22 * RIOT-OS/rust-riot-sys#21 * riot-wrappers: * RIOT-OS/rust-riot-wrappers#36 * RIOT-OS/rust-riot-wrappers#50 * RIOT-OS/rust-riot-wrappers#48 * RIOT-OS/rust-riot-wrappers#47 * RIOT-OS/rust-riot-wrappers#44 * RIOT-OS/rust-riot-wrappers#45 * RIOT-OS/rust-riot-wrappers#43 * (later, when the mistake became apparent) RIOT-OS/rust-riot-wrappers#55 ### How to do similar PRs Updating the RIOT-related dependencies (which here also updated bindgen because the dependency of riot-sys changed): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml --package riot-sys --package riot-wrappers; done ``` Updating everything (should never really be needed, b/c if something has a concrete dependency change it'd say so, but dependencies generally get better over time): ``` $ for x in **/Cargo.lock; do cargo update --manifest-path=${x%.lock}.toml; done ``` Creating the commit message: ``` $ git log --first-parent --format='%s (%b)' 9c29faf55d4c14d2d7f55f8df5059c52af4e5317..e4973a6ee88427f702dac41b3dce4fd6b6b9689e | sed 's/Merges: //' | sed 's/^/ * /' ``` git shortlog unfortunately doesn't show the merges the way I prefer linking them. The versions in the command line can be taken from `git diff --text` and looking for the riot-sys or riot-wrappers line, respectively. 19509: cpu/cc26xx_cc13xx: Fix bogus array-bound warning [backport 2023.04] r=maribu a=maribu # Backport of #19504 ### Contribution description GCC 12 create a bogus array out of bounds warning as it assumes that because there is special handling for `uart == 0` and `uart == 1`, `uart` can indeed be `1`. There is an `assert(uart < UART_NUMOF)` above that would blow up prior to any out of bounds access. In any case, optimizing out the special handling of `uart == 1` for when `UART_NUMOF == 1` likely improves the generated code and fixes the warning. /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:88:8: error: array subscript 1 is above array bounds of 'uart_isr_ctx_t[1]' [-Werror=array-bounds] 88 | ctx[uart].rx_cb = rx_cb; | ~~~^~~~~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:52:23: note: while referencing 'ctx' 52 | static uart_isr_ctx_t ctx[UART_NUMOF]; | ^~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:89:8: error: array subscript 1 is above array bounds of 'uart_isr_ctx_t[1]' [-Werror=array-bounds] 89 | ctx[uart].arg = arg; | ~~~^~~~~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:52:23: note: while referencing 'ctx' 52 | static uart_isr_ctx_t ctx[UART_NUMOF]; | ^~~ ### Testing procedure The actual change is a pretty obvious one-liner, so that code review and a green CI should be sufficient. If not, running any UART example app without regression should do. ### Issues/PRs references None 19510: tools/openocd: Fix handling of OPENOCD_CMD_RESET_HALT [backport 2023.04] r=maribu a=maribu # Backport of #19506 ### Contribution description The OPENOCD_CMD_RESET_HALT was not longer correctly passed to the script. This fixes the issue. ### Testing procedure Flashing of e.g. the `cc2650-launchpad` with upstream OpenOCD should work again. ### Issues/PRs references The change was added to #19050 after testing the PR and before merging. I'm not sure if the fix never worked because of this, or if behavior of `target-export-variables` or GNU Make changed. Co-authored-by: chrysn <chrysn@fsfe.org> Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
zhaolanhuang
pushed a commit
to zhaolanhuang/RIOT
that referenced
this pull request
Dec 6, 2023
This pulls in several fixes from these repositories: * riot-sys: * Add `random` module to `riot-headers` (RIOT-OS/rust-riot-sys#26) * README: fix 2 typos (RIOT-OS/rust-riot-sys#31) * bindgen: Use 0.64 (RIOT-OS/rust-riot-sys#30) * wolfSSL support added (RIOT-OS/rust-riot-sys#28) * extern-types: Generate replacement types dynamically (RIOT-OS/rust-riot-sys#27) * Extern types: Add netq_t, make them large (RIOT-OS/rust-riot-sys#25) * doc: Suppress warnings about things C2Rust does not uphold (RIOT-OS/rust-riot-sys#23) * export macro_DAC_LINE (RIOT-OS/rust-riot-sys#22) * Add BINDGEN_OUTPUT_FILE export (RIOT-OS/rust-riot-sys#21) * riot-wrappers: * DAC: Add wrapper around RIOTs DAC-interface (RIOT-OS/rust-riot-wrappers#36) * saul: Compatibly rename G* variants (RIOT-OS/rust-riot-wrappers#50) * tests: Add test for auto-init when auto-init debug is active (RIOT-OS/rust-riot-wrappers#48) * gcoap: Provide link encoder (RIOT-OS/rust-riot-wrappers#47) * Drop SUIT support in riot-wrappers (RIOT-OS/rust-riot-wrappers#44) * Add an auto init module (RIOT-OS/rust-riot-wrappers#45) * gcoap: Allow registration without scope for 'static listeners (RIOT-OS/rust-riot-wrappers#43) Through direct dependency changes (the bindgen update), the number of transitive dependencies could be reduced.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So far, we maintained a list of extern types that fall out of C2Rust compilation (typically deep in structs we never allocate, so we don't really need to know their properties). These types are already defined in such a way that we can't ever allocate them, but would only use them through pointers if at all.
This list was manually maintained and updated whenever something new popped up, typically through some libc.
This PR changes that to recognize extern types from the C2Rust output, and create replacement types on demand. In particular, this should fix an issue when types of the previously encoded names are not extern types on a particular platform, eg
__lock
in #20.@Remmirad, could you review this? Does your
__lock
issue in #20 go away when applying this (even if you disable the keep-extern-types workaround)?