Commit 660da0947abff3bc98bb0baa37a6db5050ff46d6

Authored by Daniel Schwierzeck
Committed by Shinya Kuribayashi
1 parent 7aa1f198c8
Exists in master and in 57 other branches 8qm-imx_v2020.04_5.4.70_2.3.0, emb_lf-6.6.52-2.2.0, emb_lf_v2022.04, emb_lf_v2023.04, emb_lf_v2024.04, imx_v2015.04_4.1.15_1.0.0_ga, pitx_8mp_lf_v2020.04, smarc-8m-android-10.0.0_2.6.0, smarc-8m-android-11.0.0_2.0.0, smarc-8mp-android-11.0.0_2.0.0, smarc-emmc-imx_v2014.04_3.10.53_1.1.0_ga, smarc-emmc-imx_v2014.04_3.14.28_1.0.0_ga, smarc-imx-l5.0.0_1.0.0-ga, smarc-imx6_v2018.03_4.14.98_2.0.0_ga, smarc-imx7_v2017.03_4.9.11_1.0.0_ga, smarc-imx7_v2018.03_4.14.98_2.0.0_ga, smarc-imx_v2014.04_3.14.28_1.0.0_ga, smarc-imx_v2015.04_4.1.15_1.0.0_ga, smarc-imx_v2017.03_4.9.11_1.0.0_ga, smarc-imx_v2017.03_4.9.88_2.0.0_ga, smarc-imx_v2017.03_o8.1.0_1.3.0_8m, smarc-imx_v2018.03_4.14.78_1.0.0_ga, smarc-m6.0.1_2.1.0-ga, smarc-n7.1.2_2.0.0-ga, smarc-rel_imx_4.1.15_2.0.0_ga, smarc_8m-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8m-imx_v2019.04_4.19.35_1.1.0, smarc_8m_00d0-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8mm-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8mm-imx_v2019.04_4.19.35_1.1.0, smarc_8mm-imx_v2020.04_5.4.24_2.1.0, smarc_8mp_lf_v2020.04, smarc_8mq-imx_v2020.04_5.4.24_2.1.0, smarc_8mq_lf_v2020.04, ti-u-boot-2015.07, u-boot-2013.01.y, v2013.10, v2013.10-smarct33, v2013.10-smartmen, v2014.01, v2014.04, v2014.04-smarct33, v2014.04-smarct33-emmc, v2014.04-smartmen, v2014.07, v2014.07-smarct33, v2014.07-smartmen, v2015.07-smarct33, v2015.07-smarct33-emmc, v2015.07-smarct4x, v2016.05-dlt, v2016.05-smarct3x, v2016.05-smarct3x-emmc, v2016.05-smarct4x, v2017.01-smarct3x, v2017.01-smarct3x-emmc, v2017.01-smarct4x

MIPS: Introduce --gc-sections for MIPS

All architectures but MIPS are using --gc-sections on final linking.
This patch introduces that feature for MIPS to reduce the memory and
flash footprint.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@googlemail.com>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Stefan Roese <sr@denx.de>
Cc: Thomas Lange <thomas@corelatus.se>
Cc: Vlad Lungu <vlad.lungu@windriver.com>
Signed-off-by: Shinya Kuribayashi <skuribay@pobox.com>

Showing 9 changed files with 42 additions and 40 deletions Side-by-side Diff

... ... @@ -50,4 +50,6 @@
50 50 PLATFORM_CPPFLAGS += -G 0 -mabicalls -fpic
51 51 PLATFORM_CPPFLAGS += -msoft-float
52 52 PLATFORM_LDFLAGS += -G 0 -static -n -nostdlib
  53 +PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
  54 +LDFLAGS_FINAL += --gc-sections
board/dbau1x00/u-boot.lds
... ... @@ -34,14 +34,14 @@
34 34 . = ALIGN(4);
35 35 .text :
36 36 {
37   - *(.text)
  37 + *(.text*)
38 38 }
39 39  
40 40 . = ALIGN(4);
41 41 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
42 42  
43 43 . = ALIGN(4);
44   - .data : { *(.data) }
  44 + .data : { *(.data*) }
45 45  
46 46 . = .;
47 47 _gp = ALIGN(16) + 0x7ff0;
... ... @@ -52,7 +52,7 @@
52 52 __got_end = .;
53 53 }
54 54  
55   - .sdata : { *(.sdata) }
  55 + .sdata : { *(.sdata*) }
56 56  
57 57 .u_boot_cmd : {
58 58 __u_boot_cmd_start = .;
... ... @@ -64,8 +64,8 @@
64 64 num_got_entries = (__got_end - __got_start) >> 2;
65 65  
66 66 . = ALIGN(4);
67   - .sbss (NOLOAD) : { *(.sbss) }
68   - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
  67 + .sbss (NOLOAD) : { *(.sbss*) }
  68 + .bss (NOLOAD) : { *(.bss*) . = ALIGN(4); }
69 69 uboot_end = .;
70 70 }
board/gth2/u-boot.lds
... ... @@ -34,14 +34,14 @@
34 34 . = ALIGN(4);
35 35 .text :
36 36 {
37   - *(.text)
  37 + *(.text*)
38 38 }
39 39  
40 40 . = ALIGN(4);
41 41 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
42 42  
43 43 . = ALIGN(4);
44   - .data : { *(.data) }
  44 + .data : { *(.data*) }
45 45  
46 46 . = .;
47 47 _gp = ALIGN(16) + 0x7ff0;
... ... @@ -52,7 +52,7 @@
52 52 __got_end = .;
53 53 }
54 54  
55   - .sdata : { *(.sdata) }
  55 + .sdata : { *(.sdata*) }
56 56  
57 57 .u_boot_cmd : {
58 58 __u_boot_cmd_start = .;
... ... @@ -64,8 +64,8 @@
64 64 num_got_entries = (__got_end - __got_start) >> 2;
65 65  
66 66 . = ALIGN(4);
67   - .sbss (NOLOAD) : { *(.sbss) }
68   - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
  67 + .sbss (NOLOAD) : { *(.sbss*) }
  68 + .bss (NOLOAD) : { *(.bss*) . = ALIGN(4); }
69 69 uboot_end = .;
70 70 }
board/incaip/u-boot.lds
... ... @@ -34,14 +34,14 @@
34 34 . = ALIGN(4);
35 35 .text :
36 36 {
37   - *(.text)
  37 + *(.text*)
38 38 }
39 39  
40 40 . = ALIGN(4);
41 41 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
42 42  
43 43 . = ALIGN(4);
44   - .data : { *(.data) }
  44 + .data : { *(.data*) }
45 45  
46 46 . = .;
47 47 _gp = ALIGN(16) + 0x7ff0;
... ... @@ -52,7 +52,7 @@
52 52 __got_end = .;
53 53 }
54 54  
55   - .sdata : { *(.sdata) }
  55 + .sdata : { *(.sdata*) }
56 56  
57 57 .u_boot_cmd : {
58 58 __u_boot_cmd_start = .;
... ... @@ -64,8 +64,8 @@
64 64 num_got_entries = (__got_end - __got_start) >> 2;
65 65  
66 66 . = ALIGN(4);
67   - .sbss (NOLOAD) : { *(.sbss) }
68   - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
  67 + .sbss (NOLOAD) : { *(.sbss*) }
  68 + .bss (NOLOAD) : { *(.bss*) . = ALIGN(4); }
69 69 uboot_end = .;
70 70 }
board/micronas/vct/u-boot.lds
... ... @@ -31,14 +31,14 @@
31 31 . = ALIGN(4);
32 32 .text :
33 33 {
34   - *(.text)
  34 + *(.text*)
35 35 }
36 36  
37 37 . = ALIGN(4);
38 38 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
39 39  
40 40 . = ALIGN(4);
41   - .data : { *(.data) }
  41 + .data : { *(.data*) }
42 42  
43 43 . = .;
44 44 _gp = ALIGN(16) + 0x7ff0;
... ... @@ -50,7 +50,7 @@
50 50 }
51 51  
52 52 . = ALIGN(4);
53   - .sdata : { *(.sdata) }
  53 + .sdata : { *(.sdata*) }
54 54  
55 55 . = ALIGN(4);
56 56 .u_boot_cmd : {
57 57  
... ... @@ -64,9 +64,9 @@
64 64 num_got_entries = (__got_end - __got_start) >> 2;
65 65  
66 66 . = ALIGN(4);
67   - .sbss (NOLOAD) : { *(.sbss) }
  67 + .sbss (NOLOAD) : { *(.sbss*) }
68 68 . = ALIGN(4);
69   - .bss (NOLOAD) : { *(.bss) }
  69 + .bss (NOLOAD) : { *(.bss*) }
70 70 uboot_end = .;
71 71 }
board/pb1x00/u-boot.lds
... ... @@ -34,14 +34,14 @@
34 34 . = ALIGN(4);
35 35 .text :
36 36 {
37   - *(.text)
  37 + *(.text*)
38 38 }
39 39  
40 40 . = ALIGN(4);
41 41 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
42 42  
43 43 . = ALIGN(4);
44   - .data : { *(.data) }
  44 + .data : { *(.data*) }
45 45  
46 46 . = .;
47 47 _gp = ALIGN(16) + 0x7ff0;
... ... @@ -52,7 +52,7 @@
52 52 __got_end = .;
53 53 }
54 54  
55   - .sdata : { *(.sdata) }
  55 + .sdata : { *(.sdata*) }
56 56  
57 57 .u_boot_cmd : {
58 58 __u_boot_cmd_start = .;
... ... @@ -64,8 +64,8 @@
64 64 num_got_entries = (__got_end - __got_start) >> 2;
65 65  
66 66 . = ALIGN(4);
67   - .sbss (NOLOAD) : { *(.sbss) }
68   - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
  67 + .sbss (NOLOAD) : { *(.sbss*) }
  68 + .bss (NOLOAD) : { *(.bss*) . = ALIGN(4); }
69 69 uboot_end = .;
70 70 }
board/qemu-mips/u-boot.lds
... ... @@ -34,14 +34,14 @@
34 34 . = ALIGN(4);
35 35 .text :
36 36 {
37   - *(.text)
  37 + *(.text*)
38 38 }
39 39  
40 40 . = ALIGN(4);
41 41 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
42 42  
43 43 . = ALIGN(4);
44   - .data : { *(.data) }
  44 + .data : { *(.data*) }
45 45  
46 46 . = .;
47 47 _gp = ALIGN(16) +0x7ff0;
... ... @@ -53,7 +53,7 @@
53 53 }
54 54  
55 55 . = ALIGN(4);
56   - .sdata : { *(.sdata) }
  56 + .sdata : { *(.sdata*) }
57 57  
58 58 . = .;
59 59 .u_boot_cmd : {
... ... @@ -66,8 +66,8 @@
66 66 num_got_entries = (__got_end - __got_start) >> 2;
67 67  
68 68 . = ALIGN(4);
69   - .sbss : { *(.sbss) }
70   - .bss : { *(.bss) . = ALIGN(4); }
  69 + .sbss : { *(.sbss*) }
  70 + .bss : { *(.bss*) . = ALIGN(4); }
71 71 uboot_end = .;
72 72 }
board/tb0229/u-boot.lds
... ... @@ -34,14 +34,14 @@
34 34 . = ALIGN(4);
35 35 .text :
36 36 {
37   - *(.text)
  37 + *(.text*)
38 38 }
39 39  
40 40 . = ALIGN(4);
41 41 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
42 42  
43 43 . = ALIGN(4);
44   - .data : { *(.data) }
  44 + .data : { *(.data*) }
45 45  
46 46 . = .;
47 47 _gp = ALIGN(16) + 0x7ff0;
... ... @@ -52,7 +52,7 @@
52 52 __got_end = .;
53 53 }
54 54  
55   - .sdata : { *(.sdata) }
  55 + .sdata : { *(.sdata*) }
56 56  
57 57 .u_boot_cmd : {
58 58 __u_boot_cmd_start = .;
... ... @@ -64,8 +64,8 @@
64 64 num_got_entries = (__got_end - __got_start) >> 2;
65 65  
66 66 . = ALIGN(4);
67   - .sbss (NOLOAD) : { *(.sbss) }
68   - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
  67 + .sbss (NOLOAD) : { *(.sbss*) }
  68 + .bss (NOLOAD) : { *(.bss*) . = ALIGN(4); }
69 69 uboot_end = .;
70 70 }
examples/standalone/mips.lds
... ... @@ -30,14 +30,14 @@
30 30 {
31 31 .text :
32 32 {
33   - *(.text)
  33 + *(.text*)
34 34 }
35 35  
36 36 . = ALIGN(4);
37 37 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
38 38  
39 39 . = ALIGN(4);
40   - .data : { *(.data) }
  40 + .data : { *(.data*) }
41 41  
42 42 . = .;
43 43 _gp = ALIGN(16) + 0x7ff0;
44 44  
... ... @@ -48,12 +48,12 @@
48 48 __got_end = .;
49 49 }
50 50  
51   - .sdata : { *(.sdata) }
  51 + .sdata : { *(.sdata*) }
52 52  
53 53 . = ALIGN(4);
54 54 __bss_start = .;
55   - .sbss (NOLOAD) : { *(.sbss) }
56   - .bss (NOLOAD) : { *(.bss) . = ALIGN(4); }
  55 + .sbss (NOLOAD) : { *(.sbss*) }
  56 + .bss (NOLOAD) : { *(.bss*) . = ALIGN(4); }
57 57  
58 58 _end = .;
59 59 }