Skip to content
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

Fix Descriptor cluster when linking statically. #11453

Merged
merged 1 commit into from
Nov 5, 2021

Conversation

bzbarsky-apple
Copy link
Contributor

Specific changes:

  1. Stop using weak symbols for cluster init callbacks. The way things
    are, if a cluster has no commands its file might not get linked at
    all (because the weak symbols satisfy the linker), and hence its
    init callback would never be called. This was hitting the
    Descriptor cluster.

  2. Add a bunch of no-op cluster init callbacks so we can link successfully.
    Add some files to the all-clusters-app link that were missing.

Fixes #11344

This is a reprise of #11392 with the merge problem that caused compile failures corrected.

Specific changes:

1) Stop using weak symbols for cluster init callbacks.  The way things
   are, if a cluster has no commands its file might not get linked at
   all (because the weak symbols satisfy the linker), and hence its
   init callback would never be called.  This was hitting the
   Descriptor cluster.

2) Add a bunch of no-op cluster init callbacks so we can link successfully.
   Add some files to the all-clusters-app link that were missing.

Fixes project-chip#11344
@github-actions
Copy link

github-actions bot commented Nov 4, 2021

PR #11453: Size comparison from 50aae87 to 2e46286

Increases (20 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 50aae87 2e46286 change % change
efr32 lighting-app BRD4161A+rpc (read only) 732392 732408 16 0.0
.text 732384 732400 16 0.0
lock-app BRD4161A (read only) 724128 724144 16 0.0
.text 724120 724136 16 0.0
window-app BRD4161A (read only) 725024 725056 32 0.0
.text 725016 725048 32 0.0
esp32 all-clusters-app c3devkit (read only) 880814 882722 1908 0.2
(read/write) 1305592 1305896 304 0.0
.dram0.bss 57528 57576 48 0.1
.dram0.data 16464 16472 8 0.0
.flash.rodata 198360 198600 240 0.1
.flash.text 880814 882722 1908 0.2
.iram0.text 57554 57564 10 0.0
m5stack (read only) 912095 913599 1504 0.2
.dram0.bss 60032 60088 56 0.1
.dram0.data 32100 32108 8 0.0
.flash.text 912095 913599 1504 0.2
k32w lock-app k32w061+debug (read/write) 592044 592060 16 0.0
.text 516056 516072 16 0.0
shell k32w061+debug (read/write) 657536 657552 16 0.0
.text 570944 570960 16 0.0
linux bridge-app debug+rpc (read only) 1291093 1291109 16 0.0
.text 1084325 1084341 16 0.0
lighting-app debug+rpc (read only) 1552089 1552105 16 0.0
.text 1288994 1289010 16 0.0
tv-app debug (read only) 1815729 1815745 16 0.0
.text 1518306 1518322 16 0.0
mbed lighting-app CY8CPROTO_062_4343W+release (read/write) 2272992 2273056 64 0.0
.text 1235592 1235656 64 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 text 577624 577628 4 0.0
nrf52840dk_nrf52840+rpc text 551772 551776 4 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 786326 786342 16 0.0
text 507080 507084 4 0.0
lock-app nrf52840dk_nrf52840 (read/write) 838011 838027 16 0.0
text 559100 559112 12 0.0
nrf5340dk_nrf5340_cpuapp text 488648 488660 12 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 837863 837879 16 0.0
text 558836 558848 12 0.0
p6 lock-app default (read/write) 2212896 2212912 16 0.0
.text 1171160 1171176 16 0.0
qpg lock-app qpg6100+debug (read only) 466952 466968 16 0.0
.text 461632 461648 16 0.0
telink lighting-app tlsr9518adk80d text 458134 458138 4 0.0
Decreases (4 builds for esp32, mbed, nrfconnect, p6)
platform target config section 50aae87 2e46286 change % change
esp32 all-clusters-app m5stack (read/write) 425380 423212 -2168 -0.5
.flash.rodata 207084 204852 -2232 -1.1
mbed all-clusters-app CY8CPROTO_062_4343W+release (read/write) 2292960 2292896 -64 -0.0
.text 1255560 1255496 -64 -0.0
nrfconnect pump-app nrf52840dk_nrf52840 (read/write) 844119 844103 -16 -0.0
text 563280 563272 -8 -0.0
p6 all-clusters-app default (read/write) 2300280 2300200 -80 -0.0
.text 1258544 1258464 -80 -0.0
Full report (38 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 50aae87 2e46286 change % change
efr32 lighting-app BRD4161A (read only) 744860 744860 0 0.0
(read/write) 115696 115696 0 0.0
.bss 113924 113924 0 0.0
.data 1772 1772 0 0.0
.text 744852 744852 0 0.0
BRD4161A+rpc (read only) 732392 732408 16 0.0
(read/write) 132316 132316 0 0.0
.bss 130428 130428 0 0.0
.data 1888 1888 0 0.0
.text 732384 732400 16 0.0
lock-app BRD4161A (read only) 724128 724144 16 0.0
(read/write) 113516 113516 0 0.0
.bss 111780 111780 0 0.0
.data 1732 1732 0 0.0
.text 724120 724136 16 0.0
window-app BRD4161A (read only) 725024 725056 32 0.0
(read/write) 113836 113836 0 0.0
.bss 112100 112100 0 0.0
.data 1736 1736 0 0.0
.text 725016 725048 32 0.0
esp32 all-clusters-app c3devkit (read only) 880814 882722 1908 0.2
(read/write) 1305592 1305896 304 0.0
.dram0.bss 57528 57576 48 0.1
.dram0.data 16464 16472 8 0.0
.flash.rodata 198360 198600 240 0.1
.flash.text 880814 882722 1908 0.2
.iram0.text 57554 57564 10 0.0
m5stack (read only) 912095 913599 1504 0.2
(read/write) 425380 423212 -2168 -0.5
.dram0.bss 60032 60088 56 0.1
.dram0.data 32100 32108 8 0.0
.flash.rodata 207084 204852 -2232 -1.1
.flash.text 912095 913599 1504 0.2
.iram0.text 125115 125115 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 699240 699240 0 0.0
.bss 77784 77784 0 0.0
.data 1904 1904 0 0.0
.text 613752 613752 0 0.0
lock-app k32w061+debug (read/write) 592044 592060 16 0.0
.bss 68316 68316 0 0.0
.data 1872 1872 0 0.0
.text 516056 516072 16 0.0
shell k32w061+debug (read/write) 657536 657552 16 0.0
.bss 78952 78952 0 0.0
.data 1840 1840 0 0.0
.text 570944 570960 16 0.0
linux all-clusters-app debug (read only) 1703121 1703121 0 0.0
(read/write) 118656 118656 0 0.0
.bss 50000 50000 0 0.0
.data 1042 1042 0 0.0
.data.rel.ro 62336 62336 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 552 552 0 0.0
.rodata 139093 139093 0 0.0
.text 1430562 1430562 0 0.0
bridge-app debug+rpc (read only) 1291093 1291109 16 0.0
(read/write) 69232 69232 0 0.0
.bss 34928 34928 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 27768 27768 0 0.0
.dynamic 592 592 0 0.0
.got 3952 3952 0 0.0
.init 27 27 0 0.0
.init_array 408 408 0 0.0
.rodata 110852 110852 0 0.0
.text 1084325 1084341 16 0.0
chip-tool debug (read only) 4508773 4508773 0 0.0
(read/write) 125864 125864 0 0.0
.bss 18128 18128 0 0.0
.data 2224 2224 0 0.0
.data.rel.ro 100096 100096 0 0.0
.dynamic 592 592 0 0.0
.got 4368 4368 0 0.0
.init 27 27 0 0.0
.init_array 432 432 0 0.0
.rodata 231728 231728 0 0.0
.text 4008581 4008581 0 0.0
lighting-app debug+rpc (read only) 1552089 1552105 16 0.0
(read/write) 102200 102200 0 0.0
.bss 40568 40568 0 0.0
.data 1170 1170 0 0.0
.data.rel.ro 55168 55168 0 0.0
.dynamic 608 608 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 536 536 0 0.0
.rodata 129489 129489 0 0.0
.text 1288994 1289010 16 0.0
ota-provider-app debug (read only) 1250377 1250377 0 0.0
(read/write) 67400 67400 0 0.0
.bss 36992 36992 0 0.0
.data 752 752 0 0.0
.data.rel.ro 24568 24568 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 448 448 0 0.0
.rodata 112104 112104 0 0.0
.text 1042146 1042146 0 0.0
ota-requestor-app debug (read only) 1328705 1328705 0 0.0
(read/write) 76656 76656 0 0.0
.bss 45120 45120 0 0.0
.data 816 816 0 0.0
.data.rel.ro 25576 25576 0 0.0
.dynamic 592 592 0 0.0
.got 3992 3992 0 0.0
.init 27 27 0 0.0
.init_array 520 520 0 0.0
.rodata 124112 124112 0 0.0
.text 1106514 1106514 0 0.0
shell debug (read only) 786873 786873 0 0.0
(read/write) 57608 57608 0 0.0
.bss 16040 16040 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36816 36816 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 344 344 0 0.0
.rodata 77903 77903 0 0.0
.text 607458 607458 0 0.0
tv-app debug (read only) 1815729 1815745 16 0.0
(read/write) 289824 289824 0 0.0
.bss 222640 222640 0 0.0
.data 2704 2704 0 0.0
.data.rel.ro 58824 58824 0 0.0
.dynamic 592 592 0 0.0
.got 4408 4408 0 0.0
.init 27 27 0 0.0
.init_array 616 616 0 0.0
.rodata 155112 155112 0 0.0
.text 1518306 1518322 16 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2292960 2292896 -64 -0.0
.bss 178892 178892 0 0.0
.data 5224 5224 0 0.0
.heap 852328 852328 0 0.0
.text 1255560 1255496 -64 -0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2272992 2273056 64 0.0
.bss 171948 171948 0 0.0
.data 5568 5568 0 0.0
.heap 858928 858928 0 0.0
.text 1235592 1235656 64 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2250712 2250712 0 0.0
.bss 170844 170844 0 0.0
.data 5560 5560 0 0.0
.heap 860040 860040 0 0.0
.text 1213312 1213312 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139744 1139744 0 0.0
.bss 11752 11752 0 0.0
.data 4368 4368 0 0.0
.heap 1020328 1020328 0 0.0
.text 103128 103128 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2048400 2048400 0 0.0
.bss 156224 156224 0 0.0
.data 4960 4960 0 0.0
.heap 875264 875264 0 0.0
.text 1011000 1011000 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 861303 861303 0 0.0
bss 111248 111248 0 0.0
rodata 96808 96808 0 0.0
text 577624 577628 4 0.0
nrf52840dk_nrf52840+rpc (read/write) 823651 823651 0 0.0
bss 107600 107600 0 0.0
rodata 87988 87988 0 0.0
text 551772 551776 4 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 786326 786342 16 0.0
bss 112624 112624 0 0.0
rodata 92064 92064 0 0.0
text 507080 507084 4 0.0
lock-app nrf52840dk_nrf52840 (read/write) 838011 838027 16 0.0
bss 110284 110284 0 0.0
rodata 93180 93180 0 0.0
text 559100 559112 12 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 763306 763306 0 0.0
bss 111692 111692 0 0.0
rodata 88484 88484 0 0.0
text 488648 488660 12 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 497323 497323 0 0.0
bss 51824 51824 0 0.0
rodata 45776 45776 0 0.0
text 339436 339436 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 844119 844103 -16 -0.0
bss 110420 110420 0 0.0
rodata 94888 94888 0 0.0
text 563280 563272 -8 -0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 837863 837879 16 0.0
bss 110320 110320 0 0.0
rodata 93176 93176 0 0.0
text 558836 558848 12 0.0
shell nrf52840dk_nrf52840 (read/write) 775755 775755 0 0.0
bss 109072 109072 0 0.0
rodata 72432 72432 0 0.0
text 519664 519664 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 690794 690794 0 0.0
bss 110052 110052 0 0.0
rodata 67076 67076 0 0.0
text 440256 440256 0 0.0
p6 all-clusters-app default (read/write) 2300280 2300200 -80 -0.0
.bss 106840 106840 0 0.0
.data 2520 2520 0 0.0
.heap 923984 923984 0 0.0
.text 1258544 1258464 -80 -0.0
lock-app default (read/write) 2212896 2212912 16 0.0
.bss 95648 95648 0 0.0
.data 2392 2392 0 0.0
.heap 935304 935304 0 0.0
.text 1171160 1171176 16 0.0
qpg lighting-app qpg6100+debug (read only) 490628 490628 0 0.0
(read/write) 114140 114140 0 0.0
.bss 50944 50944 0 0.0
.data 1004 1004 0 0.0
.text 485308 485308 0 0.0
lock-app qpg6100+debug (read only) 466952 466968 16 0.0
(read/write) 114144 114144 0 0.0
.bss 49888 49888 0 0.0
.data 960 960 0 0.0
.text 461632 461648 16 0.0
persistent-storage-app qpg6100+debug (read only) 153212 153212 0 0.0
(read/write) 114140 114140 0 0.0
.bss 18912 18912 0 0.0
.data 356 356 0 0.0
.text 147892 147892 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 662982 662982 0 0.0
bss 69064 69064 0 0.0
noinit 33216 33216 0 0.0
text 458134 458138 4 0.0

@woody-apple
Copy link
Contributor

Fast tracking, given this is a fix of a revert.

@bzbarsky-apple bzbarsky-apple merged commit b18ecb9 into project-chip:master Nov 5, 2021
mspang pushed a commit to mspang/connectedhomeip that referenced this pull request Nov 17, 2021
Specific changes:

1) Stop using weak symbols for cluster init callbacks.  The way things
   are, if a cluster has no commands its file might not get linked at
   all (because the weak symbols satisfy the linker), and hence its
   init callback would never be called.  This was hitting the
   Descriptor cluster.

2) Add a bunch of no-op cluster init callbacks so we can link successfully.
   Add some files to the all-clusters-app link that were missing.

Fixes project-chip#11344

(cherry picked from commit b18ecb9)
andy31415 pushed a commit that referenced this pull request Nov 18, 2021
Specific changes:

1) Stop using weak symbols for cluster init callbacks.  The way things
   are, if a cluster has no commands its file might not get linked at
   all (because the weak symbols satisfy the linker), and hence its
   init callback would never be called.  This was hitting the
   Descriptor cluster.

2) Add a bunch of no-op cluster init callbacks so we can link successfully.
   Add some files to the all-clusters-app link that were missing.

Fixes #11344

(cherry picked from commit b18ecb9)
@bzbarsky-apple bzbarsky-apple deleted the fix-descriptor branch November 30, 2021 20:25
doru91 pushed a commit to doru91/connectedhomeip that referenced this pull request Dec 2, 2021
Specific changes:

1) Stop using weak symbols for cluster init callbacks.  The way things
   are, if a cluster has no commands its file might not get linked at
   all (because the weak symbols satisfy the linker), and hence its
   init callback would never be called.  This was hitting the
   Descriptor cluster.

2) Add a bunch of no-op cluster init callbacks so we can link successfully.
   Add some files to the all-clusters-app link that were missing.

Fixes project-chip#11344

(cherry picked from commit b18ecb9)
PSONALl pushed a commit to PSONALl/connectedhomeip that referenced this pull request Dec 3, 2021
Specific changes:

1) Stop using weak symbols for cluster init callbacks.  The way things
   are, if a cluster has no commands its file might not get linked at
   all (because the weak symbols satisfy the linker), and hence its
   init callback would never be called.  This was hitting the
   Descriptor cluster.

2) Add a bunch of no-op cluster init callbacks so we can link successfully.
   Add some files to the all-clusters-app link that were missing.

Fixes project-chip#11344
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Descriptor cluster broken on esp32 (and probably other platforms that use static linking)
2 participants