From e8d30392d0b1c36bcec471ca99539346d48df711 Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Mon, 23 Nov 2020 22:44:31 +0100 Subject: [PATCH] Add LTO --- 01_wait_forever/Cargo.toml | 3 +++ 02_runtime_init/Cargo.toml | 3 +++ 03_hacky_hello_world/Cargo.toml | 3 +++ 04_zero_overhead_abstraction/Cargo.toml | 3 +++ 04_zero_overhead_abstraction/README.md | 2 +- 05_safe_globals/Cargo.toml | 3 +++ 06_drivers_gpio_uart/Cargo.toml | 3 +++ 06_drivers_gpio_uart/README.md | 4 ++-- 07_uart_chainloader/Cargo.toml | 3 +++ 08_timestamps/Cargo.toml | 3 +++ 09_hw_debug_JTAG/Cargo.toml | 3 +++ 10_privilege_level/Cargo.toml | 3 +++ .../Cargo.toml | 3 +++ 12_exceptions_part1_groundwork/Cargo.toml | 3 +++ 13_integrated_testing/Cargo.toml | 3 +++ 13_integrated_testing/README.md | 2 +- .../Cargo.toml | 3 +++ 15_virtual_mem_part2_mmio_remap/Cargo.toml | 3 +++ X1_JTAG_boot/Cargo.toml | 3 +++ X1_JTAG_boot/jtag_boot_rpi3.img | Bin 8992 -> 8400 bytes X1_JTAG_boot/jtag_boot_rpi4.img | Bin 7384 -> 7088 bytes 21 files changed, 52 insertions(+), 4 deletions(-) diff --git a/01_wait_forever/Cargo.toml b/01_wait_forever/Cargo.toml index 0595aa57..0f798fcb 100644 --- a/01_wait_forever/Cargo.toml +++ b/01_wait_forever/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/02_runtime_init/Cargo.toml b/02_runtime_init/Cargo.toml index 0595aa57..0f798fcb 100644 --- a/02_runtime_init/Cargo.toml +++ b/02_runtime_init/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/03_hacky_hello_world/Cargo.toml b/03_hacky_hello_world/Cargo.toml index 0595aa57..0f798fcb 100644 --- a/03_hacky_hello_world/Cargo.toml +++ b/03_hacky_hello_world/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/04_zero_overhead_abstraction/Cargo.toml b/04_zero_overhead_abstraction/Cargo.toml index b0b0e9fb..51745543 100644 --- a/04_zero_overhead_abstraction/Cargo.toml +++ b/04_zero_overhead_abstraction/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/04_zero_overhead_abstraction/README.md b/04_zero_overhead_abstraction/README.md index 2721ea34..c7ff8a5f 100644 --- a/04_zero_overhead_abstraction/README.md +++ b/04_zero_overhead_abstraction/README.md @@ -13,7 +13,7 @@ diff -uNr 03_hacky_hello_world/Cargo.toml 04_zero_overhead_abstraction/Cargo.toml --- 03_hacky_hello_world/Cargo.toml +++ 04_zero_overhead_abstraction/Cargo.toml -@@ -15,3 +15,8 @@ +@@ -18,3 +18,8 @@ ##-------------------------------------------------------------------------------------------------- [dependencies] diff --git a/05_safe_globals/Cargo.toml b/05_safe_globals/Cargo.toml index b0b0e9fb..51745543 100644 --- a/05_safe_globals/Cargo.toml +++ b/05_safe_globals/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/06_drivers_gpio_uart/Cargo.toml b/06_drivers_gpio_uart/Cargo.toml index afa9688b..b8906da1 100644 --- a/06_drivers_gpio_uart/Cargo.toml +++ b/06_drivers_gpio_uart/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/06_drivers_gpio_uart/README.md b/06_drivers_gpio_uart/README.md index 11601304..1bd8b26a 100644 --- a/06_drivers_gpio_uart/README.md +++ b/06_drivers_gpio_uart/README.md @@ -105,7 +105,7 @@ Miniterm 1.0 diff -uNr 05_safe_globals/Cargo.toml 06_drivers_gpio_uart/Cargo.toml --- 05_safe_globals/Cargo.toml +++ 06_drivers_gpio_uart/Cargo.toml -@@ -7,8 +7,8 @@ +@@ -10,8 +10,8 @@ # The features section is used to select the target board. [features] default = [] @@ -116,7 +116,7 @@ diff -uNr 05_safe_globals/Cargo.toml 06_drivers_gpio_uart/Cargo.toml ##-------------------------------------------------------------------------------------------------- ## Dependencies -@@ -16,6 +16,9 @@ +@@ -19,6 +19,9 @@ [dependencies] diff --git a/07_uart_chainloader/Cargo.toml b/07_uart_chainloader/Cargo.toml index afa9688b..b8906da1 100644 --- a/07_uart_chainloader/Cargo.toml +++ b/07_uart_chainloader/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/08_timestamps/Cargo.toml b/08_timestamps/Cargo.toml index afa9688b..b8906da1 100644 --- a/08_timestamps/Cargo.toml +++ b/08_timestamps/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/09_hw_debug_JTAG/Cargo.toml b/09_hw_debug_JTAG/Cargo.toml index afa9688b..b8906da1 100644 --- a/09_hw_debug_JTAG/Cargo.toml +++ b/09_hw_debug_JTAG/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/10_privilege_level/Cargo.toml b/10_privilege_level/Cargo.toml index afa9688b..b8906da1 100644 --- a/10_privilege_level/Cargo.toml +++ b/10_privilege_level/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/11_virtual_mem_part1_identity_mapping/Cargo.toml b/11_virtual_mem_part1_identity_mapping/Cargo.toml index afa9688b..b8906da1 100644 --- a/11_virtual_mem_part1_identity_mapping/Cargo.toml +++ b/11_virtual_mem_part1_identity_mapping/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/12_exceptions_part1_groundwork/Cargo.toml b/12_exceptions_part1_groundwork/Cargo.toml index afa9688b..b8906da1 100644 --- a/12_exceptions_part1_groundwork/Cargo.toml +++ b/12_exceptions_part1_groundwork/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/13_integrated_testing/Cargo.toml b/13_integrated_testing/Cargo.toml index cd196bd9..5d57cf35 100644 --- a/13_integrated_testing/Cargo.toml +++ b/13_integrated_testing/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/13_integrated_testing/README.md b/13_integrated_testing/README.md index 69114d1e..ed84d533 100644 --- a/13_integrated_testing/README.md +++ b/13_integrated_testing/README.md @@ -797,7 +797,7 @@ diff -uNr 12_exceptions_part1_groundwork/.cargo/config.toml 13_integrated_testin diff -uNr 12_exceptions_part1_groundwork/Cargo.toml 13_integrated_testing/Cargo.toml --- 12_exceptions_part1_groundwork/Cargo.toml +++ 13_integrated_testing/Cargo.toml -@@ -15,11 +15,38 @@ +@@ -18,11 +18,38 @@ ##-------------------------------------------------------------------------------------------------- [dependencies] diff --git a/14_exceptions_part2_peripheral_IRQs/Cargo.toml b/14_exceptions_part2_peripheral_IRQs/Cargo.toml index cd196bd9..5d57cf35 100644 --- a/14_exceptions_part2_peripheral_IRQs/Cargo.toml +++ b/14_exceptions_part2_peripheral_IRQs/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/15_virtual_mem_part2_mmio_remap/Cargo.toml b/15_virtual_mem_part2_mmio_remap/Cargo.toml index cd196bd9..5d57cf35 100644 --- a/15_virtual_mem_part2_mmio_remap/Cargo.toml +++ b/15_virtual_mem_part2_mmio_remap/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/X1_JTAG_boot/Cargo.toml b/X1_JTAG_boot/Cargo.toml index 33dbda85..8a1a364e 100644 --- a/X1_JTAG_boot/Cargo.toml +++ b/X1_JTAG_boot/Cargo.toml @@ -4,6 +4,9 @@ version = "0.1.0" authors = ["Andre Richter "] edition = "2018" +[profile.release] +lto = true + # The features section is used to select the target board. [features] default = [] diff --git a/X1_JTAG_boot/jtag_boot_rpi3.img b/X1_JTAG_boot/jtag_boot_rpi3.img index 38fba536b424417758029dbb7a7501dccb1a1589..064b41a451738e818b8ee9fe4b4aed8939d8088f 100755 GIT binary patch delta 4425 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 delta 4938 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 diff --git a/X1_JTAG_boot/jtag_boot_rpi4.img b/X1_JTAG_boot/jtag_boot_rpi4.img index 242b815921a9fddd8f18ab19c44e2dd051e11b4f..44e2fb7942454363644d51bf123834042de58a42 100755 GIT binary patch delta 3286 zcmb7Ge{2)i9sj;NJ3gBjNNnRI4zW$3$t6I;0!b(vxj1wqDKub(g0@LXio%jm0x__b zZjs%MZUaY~kH=I*CJ~r4aRxRfU~8DR($Y#GG&JNEt=gp7siqkRXrrVM7n0le-Cah; zwm z6wPp{55QRuzP^CG(QCiX!=)W;Lz4PV$@?qKRt_$0lTX&pZ?eM0Of|?RI*oGc*K za&{|m(aofkIO%>;CfHDPl=oK9(`18r^r2ew9?g={B}sIJ0G#(n+;Z|0kVklsf5pMk zX%D)^6Zs0?c6$+R;7Umq?c`ce*(LmT(2u!NO=X6u6!H?+U^l)HKz4^^Jcf4=DqQHJM@XJ6ZD7nyznINiMJE)?Md8EAbG0Zf0n=)cb>#)rty!fFbIZstX!l%?Jvol@F9no` zIVex%x!&+kkqaTMpvHOtBYPbq`w7z1^GYTsT8J`^DXf>)^-W+J5#rVeLMY@J9s$(& z(36Q4gxC_8WDq+DTx2{cM2zi^APx*>cFv$>x60rrlNVObTgtWGL6)x~OkH1ukFamN zh4C}!gPg99G4l(8%fEC74(`sv&6GmCbU@o5K zgebk3x6-UBqxbU496g3=>>2U1sQMmnqv5=T;hnDN@pJ!DVH@o>RKz)3^bF^SZg5F; z18DYyVKz)`qaCW+8pYxeiQ`5&5u(i9Fc#|_K3c@?xM-G+?CfyMX94E#>h7)^u-c;! zF_Z`vFsq6Tew#2{+f;)sAz(SUu`FJqf6R~07X%3}Ai-1$@z1AKH?6WB;1Y8$oUtw; zImccGdG8{6+xAROK_h+!C^x5VZE~T^qcRQ+2OYg(hN%P>{u%gyjw!uf>?ae;0K?iaF{9y(*%N)W$C1^I6S8RuMMrGKIh`6T2b-r zR#b!bX15~xnNS=qA#jwnYyCDj>oAEmIf4*s^cu)cv=?8!kx2yP@8Jy_M?GNdM@ei?gLthvKWy{6*j zF@Mr4ClThu>&=u;9<3zGrRSVThI)? zzf^aoeVN>WdLBK}ZCGn&nBRm+CV~4h@;%B8y&Ae#=GI*tgSHqzf4`u%bYxvHG;}d?>U#gkK(Ge}S?8G~ayV9Q&m<4&$#K=ibovXLogU z_bw0ZrS}&U;hzxj73wB*$N)+W8at9Uo_1+*A-(MW4c+9f3&%XV=xc_^F@qj5=>LWP zfJ>MAnX%6B6&NPYlC)#j%Z|A*eU4StpG~xN2CL?Ww_8;GiMl!LjuDo&9B8!*FR^!bXrTDsNWW3o~MmS9X`aRbiLgX$8BP0-*HJtR2b;)*IJI#27QPwVpj=>Zdpf;rf1n}?@m&8Ybl;7#71YA#%K~XLrXOhDa zGf3bOZzZMeIl4#~%`r%$2sI8ZReLgVY?L-(n8v+CQbLS0hS0~ntfaaY$rK`0AS~8H zts(=juoK`kgAWbA!Xm=85al9kZ~O4sBvveRhFU*9;olm6E_m-D2)@p^-pNlvNWdNM z3(3M{IY_yd8)qzYn}>XzH+y|^TZVGa#yM3)AKHY8yC5t;*;}MY)A1}4Ci01NFQ1WG zzUcM0G@K8jjc6EA-(O*ntesu{F(*VVsN?gvgt$&Q)VqByIMjjyWBEpj>%7p*&Fvks zbjIUmdvP1I|EE3Ej5gwy!Jb~49ZuYjKC~2zO*L(uH++WH21P|Ng zAJE;`lI0axTx;N$2nOumfKaw-C}8aJzpD$<%yPJBd3j?r&&Usi4PE}06njyg5e7J% zvw-Zkd<6qkE+)$biUidw?8^x^VIfefZnz{*2a_)Z(9SRPJ)X)Iz6rBb;d4c)-K!|? zJUu6$lEL{Rh#p6UJ|kSF5kRFL-}Oaeg1yOrjK~#_*fWzfR{sX$fr+Coi0AEXq5kT# zIl`zJqT@NNM4jP=a|9)XgbEp-MbV3A0ksZNQ2$a^setRVwFtSF>JiFOWoUpfyeg3} z@-k=Or3lN(6AU2J`DhIuKUKdkS0H3pm!C!k&xt&Y4}Eu`5DM7UsQv2H-`tnpf6y2H z>_K1B_ybkeJRs4iP)B{lA>euLkH=@c3WR-w8A3N%Ccc{BtMlq0fa9Z74-fDl$`9cKk46}@^goren1JXF27(}Q#5HWwO?d3&z4I9Od^7FBh$b>`?5) zs4T!W4(<7lF2fUeRf?DiIu62iJy}W>CJH${U1N}nc2r8kEXZ`7F?IO^ES#prCc-9T z9PF|Y_n)p=FR6v6N-I2S-DopNk6$%Pvvnrv(QdP7we4kgx<2Z#WfN1!Vod8R;;$Dh zHPLdBUM2o{L0t$6X_o9N&+7}((PVkO4ro5XG5e&Apg{%=vS`qNMad{lvqt$_)*wG( zS$PHn^ALd&239o{@&nD7-8`nxZzcSx5P|j|k`s<*VhXx58pQ#(@UC1_%f}8 z<%>0@tWcEAlP87k7;(Hka)>4+9H-e7d#Rwe6)M2G5E<<`n*o?gCnhhA)^%&tQ zjC7^+q^&}lH*cJ!l&oJ&X^+STvL8_ZPt4E2pVh$6=-_GODfnCjf5HsHaiwCYY_4L+VFcmFW|)fLMN5GNiur-q z{lhEf;?J;bB8Y+K9WKHBA~WWa?>fVwBlO;K%a@S${Yd-!$Y4r+ z1zAi@#^`_Rspi1PD76`@Pc?V!BcD-dBcC;`*QH@_%8o9UJyRK+82Dl#>v&4f9b8pFN8WK zX~O@x%~`Py7J7d6L9gdY<51xZ@dLv;u|9E0+*_#DJ=ZvNQWD=vY}tY(tY-f{~ zZ6-Iiu8%9Lwz+p~U0G1z-c{kR6`kph4U?&wXsT)mz>ubm5x?3xf(;`^<+cW^Lw% z-pAz9b^Vz94pw`s*ZV7(+W26))?d@d@9N`*Kx=E`9(TRJvE#MYLuioSqnSZn`bDR7{tx(&cH-;}f@~F?gV{)qRlac;etoT`oa9>qu*wjg53IvqRfGwkyr<4|Z&>q4?_p z!G@+40s33KYQ>@E{f)5%0<6^aGITpDvB&H9X%i!k46(rJ6%RTWhX5|<;#s=DX6*4> z1o9vU)lw#Cfoj`@^@&FK`T07WUxM=+g2A?+_;aWC E-