Changeset c89ae25 in mainline


Ignore:
Timestamp:
2023-10-27T17:24:14Z (13 months ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Branches:
master, topic/msim-upgrade, topic/simplify-dev-export
Children:
34120f10, b169619
Parents:
0373af9
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-10-27 17:03:39)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2023-10-27 17:24:14)
Message:

Fix and enable —gc-sections in /kernel and /boot

Files:
23 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/arm32/_link.ld.in

    r0373af9 rc89ae25  
    77        .text : {
    88                loader_start = .;
    9                 *(BOOTSTRAP);
    10                 *(.text);
     9                KEEP(*(BOOTSTRAP));
     10                *(.text .text.*);
    1111        }
    1212        . = BOOT_BASE + 0x8000;
     
    1414                *(BOOTPT);      /* bootstrap page table */
    1515                *(BOOTSTACK);   /* bootstrap stack */
    16                 *(.data);       /* initialized data */
    17                 *(.rodata);
    18                 *(.rodata.*);
    19                 *(.sdata);
    20                 *(.reginfo);
    21                 *(.sbss);
    22                 *(.scommon);
    23                 *(.bss);        /* uninitialized static variables */
     16                *(.data .data.*);       /* initialized data */
     17                *(.rodata .rodata.*);
     18                *(.sdata .sdata.*);
     19                *(.sbss .sbss.*);
     20                *(.scommon .scommon.*);
     21                *(.bss .bss.*);        /* uninitialized static variables */
    2422                *(COMMON);      /* global variables */
    2523                loader_end = .;
    2624                payload_start = .;
    27                 *(.payload);
     25                KEEP(*(.payload));
    2826                payload_end = .;
    2927        }
  • boot/arch/arm64/_link.ld.in

    r0373af9 rc89ae25  
    77        .text : {
    88                HIDDEN(loader_start = .);
    9                 *(BOOTSTRAP);
    10                 *(.text);
     9                KEEP(*(BOOTSTRAP));
     10                *(.text .text.*);
    1111        }
    1212        .dynamic : { *(.dynamic); }
     
    1717        . = 0x8000;
    1818        .data : {
    19                 *(.data*);      /* initialized data */
    20                 *(.rodata*);
    21                 *(.bss);        /* uninitialized static variables */
     19                *(.data .data.*);      /* initialized data */
     20                *(.rodata .rodata.*);
     21                *(.bss .bss.*);        /* uninitialized static variables */
    2222                *(COMMON);      /* global variables */
    23                 *(.got .got.plt);
     23                *(.got .got.*);
    2424                HIDDEN(loader_end = .);
    2525                HIDDEN(payload_start = .);
    26                 *(.payload);
     26                KEEP(*(.payload));
    2727                HIDDEN(payload_end = .);
    2828        }
  • boot/arch/ia64/_link.ld.in

    r0373af9 rc89ae25  
    55        .boot 0x4400000: AT (0x4400000) {
    66                loader_start = .;
    7                 *(BOOTSTRAP);
    8                 *(.text);
    9                 *(.text.*);
    10                 *(.sdata);
    11                 *(.sdata2);
    12                 *(.sbss);
    13                 *(.rodata);
    14                 *(.rodata.*);
     7                KEEP(*(BOOTSTRAP));
     8                *(.text .text.*);
     9                *(.sdata .sdata.*);
     10                *(.sdata2 .sdata2.*);
     11                *(.sbss .sbss.*);
     12                *(.rodata .rodata.*);
    1513                *(.data .data.*);       /* initialized data */
    1614                __gp = . ;
    1715                *(.got .got.*);
    18                 *(.bss);                /* uninitialized static variables */
     16                *(.bss .bss.*);                /* uninitialized static variables */
    1917                *(COMMON);
    2018                loader_end = .;
    2119                payload_start = .;
    22                 *(.payload);
     20                KEEP(*(.payload));
    2321                payload_end = .;
    2422        }
  • boot/arch/mips32/_link.ld.in

    r0373af9 rc89ae25  
    99        .text : {
    1010                loader_start = .;
    11                 *(BOOTSTRAP);
    12                 *(.text);
     11                KEEP(*(BOOTSTRAP));
     12                *(.text .text.*);
    1313        }
    1414        .data : {
    15                 *(.data);       /* initialized data */
    16                 *(.rodata);
    17                 *(.rodata.*);
    18                 *(.sdata);
     15                *(.data .data.*);       /* initialized data */
     16                *(.rodata .rodata.*);
     17                *(.sdata .sdata.*);
    1918                *(.reginfo);
    20                 *(.sbss);
    21                 *(.scommon);
    22                 *(.bss);        /* uninitialized static variables */
     19                *(.sbss .sbss.*);
     20                *(.scommon .scommon.*);
     21                *(.bss .bss.*);        /* uninitialized static variables */
    2322                *(COMMON);      /* global variables */
    2423                loader_end = .;
    2524                payload_start = .;
    26                 *(.payload);
     25                KEEP(*(.payload));
    2726                payload_end = .;
    2827        }
  • boot/arch/ppc32/_link.ld.in

    r0373af9 rc89ae25  
    55        .text : {
    66                loader_start = .;
    7                 *(BOOTSTRAP);
    8                 *(.text);
    9                 *(.text.*);
     7                KEEP(*(BOOTSTRAP));
     8                *(.text .text.*);
    109        }
    1110        .data : {
    12                 *(.data);       /* initialized data */
    13                 *(.rodata);
    14                 *(.rodata.*);
    15                 *(.sdata);
    16                 *(.reginfo);
    17                 *(.sbss);
    18                 *(.scommon);
    19                 *(.bss);        /* uninitialized static variables */
     11                *(.data .data.*);       /* initialized data */
     12                *(.rodata .rodata.*);
     13                *(.sdata .sdata.*);
     14                *(.sbss .sbss.*);
     15                *(.scommon .scommon.*);
     16                *(.bss .bss.*);        /* uninitialized static variables */
    2017                *(COMMON);      /* global variables */
    2118                loader_end = .;
    2219                payload_start = .;
    23                 *(.payload);
     20                KEEP(*(.payload));
    2421                payload_end = .;
    2522        }
  • boot/arch/riscv64/_link.ld.in

    r0373af9 rc89ae25  
    88        .text : {
    99                loader_start = .;
    10                 *(BOOTSTRAP);
    11                 *(.text);
     10                KEEP(*(BOOTSTRAP));
     11                *(.text .text.*);
    1212        }
    1313
     
    2727
    2828        .data : {
    29                 *(.data);       /* initialized data */
    30                 *(.rodata);
    31                 *(.rodata.*);
    32                 *(.sdata);
    33                 *(.reginfo);
    34                 *(.sbss);
    35                 *(.scommon);
    36                 *(.bss);        /* uninitialized static variables */
     29                *(.data .data.*);       /* initialized data */
     30                *(.rodata .rodata.*);
     31                *(.sdata .sdata.*);
     32                *(.sbss .sbss.*);
     33                *(.scommon .scommon.*);
     34                *(.bss .bss.*);        /* uninitialized static variables */
    3735                *(COMMON);      /* global variables */
    3836                loader_end = .;
    3937                payload_start = .;
    40                 *(.payload);
     38                KEEP(*(.payload));
    4139                payload_end = .;
    4240        }
  • boot/arch/sparc64/_link.ld.in

    r0373af9 rc89ae25  
    55        .boot : {
    66                loader_start = .;
    7                 *(BOOTSTRAP);
    8                 *(.text.*);
     7                KEEP(*(BOOTSTRAP));
     8                *(.text .text.*);
    99
    10                 *(.data);       /* initialized data */
    11                 *(.rodata);
    12                 *(.rodata.*);
    13                 *(.sdata);
    14                 *(.reginfo);
    15                 *(.sbss);
    16                 *(.bss);        /* uninitialized static variables */
     10                *(.data .data.*);       /* initialized data */
     11                *(.rodata .rodata.*);
     12                *(.sdata .sdata.*);
     13                *(.sbss .sbss.*);
     14                *(.bss .bss.*);        /* uninitialized static variables */
    1715                *(COMMON);      /* global variables */
    1816                loader_end = .;
    1917                payload_start = .;
    20                 *(.payload);
     18                KEEP(*(.payload));
    2119                payload_end = .;
    2220        }
  • boot/meson.build

    r0373af9 rc89ae25  
    9898                '-Wl,--nmagic',
    9999                '-T', meson.current_build_dir()/'_link.ld',
    100                 '-Wl,--no-gc-sections',
    101100        ]
    102101
  • kernel/arch/abs32le/_link.ld.in

    r0373af9 rc89ae25  
    33                kernel_load_address = .;
    44                ktext_start = .;
    5                 *(.text);
     5                *(.text .text.*);
    66                ktext_end = .;
    77        }
    88        .data : {
    99                kdata_start = .;
    10                 *(.data);                       /* initialized data */
    11                 *(.bss);                        /* uninitialized static variables */
     10                *(.data .data.*);                       /* initialized data */
     11                *(.bss .bss.*);                        /* uninitialized static variables */
    1212                *(COMMON);                      /* global variables */
    1313
     
    1515                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
    1616                *(.eh_frame_hdr .eh_frame_hdr.*);
    17                 *(.sdata);
    18                 *(.reginfo);
     17                *(.sdata .sdata.*);
    1918        }
    2019        .sbss : {
    21                 *(.sbss);
    22                 *(.scommon);
     20                *(.sbss .sbss.*);
     21                *(.scommon .scommon.*);
    2322        }
    2423
  • kernel/arch/amd64/_link.ld.in

    r0373af9 rc89ae25  
    1717        .unmapped (BOOT_OFFSET + SIZEOF_HEADERS): AT (BOOT_OFFSET + SIZEOF_HEADERS) {
    1818                unmapped_start = .;
    19                 *(K_TEXT_START);
    20                 *(K_DATA_START);
    21                 *(K_INI_PTLS);
     19                KEEP(*(K_TEXT_START));
     20                KEEP(*(K_DATA_START));
     21                KEEP(*(K_INI_PTLS));
    2222                unmapped_end = .;
    2323        }
     
    2929
    3030                kdata_start = .;
    31                 *(.data);              /* initialized data */
     31                *(.data .data.*);              /* initialized data */
    3232                *(.rodata .rodata.*);
    33                 *(.eh_frame .eh_frame.*);       /* stack unwinding data */
     33                *(.eh_frame .eh_frame.*);      /* stack unwinding data */
    3434                *(.eh_frame_hdr .eh_frame_hdr.*);
    3535                *(COMMON);      /* global variables */
    3636
    3737                /* bss can't be omitted from the ELF image. */
    38                 *(.bss);        /* uninitialized static variables */
     38                *(.bss .bss.*);        /* uninitialized static variables */
    3939                kdata_end = .;
    4040        }
  • kernel/arch/arm32/_link.ld.in

    r0373af9 rc89ae25  
    2828        .text : {
    2929                ktext_start = .;
    30                 *(.text);
     30                *(.text .text.*);
    3131                ktext_end = .;
    3232        }
    3333        .data : {
    3434                kdata_start = .;
    35                 *(.data);                       /* initialized data */
    36                 *(.bss);                        /* uninitialized static variables */
     35                *(.data .data.*);                       /* initialized data */
     36                *(.bss .bss.*);                        /* uninitialized static variables */
    3737                *(COMMON);                      /* global variables */
    3838
     
    4040                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
    4141                *(.eh_frame_hdr .eh_frame_hdr.*);
    42                 *(.sdata);
    43                 *(.reginfo);
     42                *(.sdata .sdata.*);
    4443        }
    4544        .sbss : {
    46                 *(.sbss);
    47                 *(.scommon);
     45                *(.sbss .sbss.*);
     46                *(.scommon .scommon.*);
    4847        }
    4948
  • kernel/arch/arm64/_link.ld.in

    r0373af9 rc89ae25  
    2222                . = ALIGN(16);
    2323                ktext_start = .;
    24                 *(K_TEXT_START)
     24                KEEP(*(K_TEXT_START))
    2525                *(.text .text.*);
    2626                ktext_end = .;
    2727
    2828                kdata_start = .;
    29                 *(K_DATA_START)
    30                 *(.data);                       /* initialized data */
    31                 *(.bss);                        /* uninitialized static variables */
     29                KEEP(*(K_DATA_START))
     30                *(.data .data.*);                       /* initialized data */
     31                *(.bss .bss.*);                        /* uninitialized static variables */
    3232                *(COMMON);                      /* global variables */
    3333
  • kernel/arch/ia32/_link.ld.in

    r0373af9 rc89ae25  
    1717        .unmapped (BOOT_OFFSET + SIZEOF_HEADERS): AT (BOOT_OFFSET + SIZEOF_HEADERS) {
    1818                unmapped_start = .;
    19                 *(K_TEXT_START);
    20                 *(K_DATA_START);
     19                KEEP(*(K_TEXT_START));
     20                KEEP(*(K_DATA_START));
    2121                unmapped_end = .;
    2222        }
     
    2828
    2929                kdata_start = .;
    30                 *(.data);               /* initialized data */
     30                *(.data .data.*);               /* initialized data */
    3131                *(.rodata .rodata.*);
    3232                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
     
    3535
    3636                /* bss can't be omitted from the ELF image. */
    37                 *(.bss);                /* uninitialized static variables */
     37                *(.bss .bss.*);                /* uninitialized static variables */
    3838                kdata_end = .;
    3939        }
  • kernel/arch/ia64/_link.ld.in

    r0373af9 rc89ae25  
    1818                . = ALIGN(16);
    1919                ktext_start = .;
    20                 *(K_TEXT_START);
     20                KEEP(*(K_TEXT_START));
    2121                *(.text .text.*)
    2222                ktext_end = .;
    2323
    2424                kdata_start = .;
    25                 *(K_DATA_START)
     25                KEEP(*(K_DATA_START));
    2626                *(.rodata .rodata.*);
    2727                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
     
    3131                __gp = .;
    3232                *(.got .got.*)
    33                 *(.sdata)
    34                 *(.sbss)
    35                 *(.scommon)
    36                 *(.bss)
     33                *(.sdata .sdata.*)
     34                *(.sbss .sbss.*)
     35                *(.scommon .scommon.*)
     36                *(.bss .bss.*)
    3737                *(COMMON);
    3838                kdata_end = .;
  • kernel/arch/mips32/_link.ld.in

    r0373af9 rc89ae25  
    2828        .text : {
    2929                ktext_start = .;
     30                /* FIXME: for some reason, mixing .text with .text.* produces a crash on malta-be */
    3031                *(.text);
     32                *(.text.*);
    3133                ktext_end = .;
    3234        }
    3335        .data : {
    3436                kdata_start = .;
    35                 *(.data);                       /* initialized data */
     37                *(.data .data.*);                       /* initialized data */
    3638                *(.rodata .rodata.*);
    3739                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
    3840                *(.eh_frame_hdr .eh_frame_hdr.*);
    39                 *(.sdata);
     41                *(.sdata .sdata.*);
    4042                *(.reginfo);
    41                 *(.sbss);
    42                 *(.scommon);
    43                 *(.bss);                        /* uninitialized static variables */
     43                *(.sbss .sbss.*);
     44                *(.scommon .scommon.*);
     45                *(.bss .bss.*);                        /* uninitialized static variables */
    4446                *(COMMON);                      /* global variables */
    4547        }
  • kernel/arch/ppc32/_link.ld.in

    r0373af9 rc89ae25  
    2222        .unmapped (SIZEOF_HEADERS): AT (SIZEOF_HEADERS) {
    2323                . = ALIGN(0x100);
    24                 *(K_UNMAPPED_TEXT_START);
     24                KEEP(*(K_UNMAPPED_TEXT_START));
    2525        }
    2626
    2727        .mapped PA2KA(BOOT_OFFSET): AT (BOOT_OFFSET) {
    2828                ktext_start = .;
    29                 *(K_TEXT_START);
    30                 *(.text);
     29                KEEP(*(K_TEXT_START));
     30                *(.text .text.*);
    3131                ktext_end = .;
    3232
    3333                kdata_start = .;
    34                 *(K_DATA_START);
     34                KEEP(*(K_DATA_START));
    3535                *(.rodata .rodata.*);
    3636                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
    3737                *(.eh_frame_hdr .eh_frame_hdr.*);
    38                 *(.data);       /* initialized data */
    39                 *(.sdata);
    40                 *(.sdata2);
    41                 *(.sbss);
    42                 *(.bss);        /* uninitialized static variables */
     38                *(.data .data.*);       /* initialized data */
     39                *(.sdata .sdata.*);
     40                *(.sdata2 .sdata2.*);
     41                *(.sbss .sbss.*);
     42                *(.bss .bss.*);        /* uninitialized static variables */
    4343                *(COMMON);      /* global variables */
    4444                kdata_end = .;
  • kernel/arch/riscv64/_link.ld.in

    r0373af9 rc89ae25  
    1818        .image (PA2KA(BOOT_OFFSET) + SIZEOF_HEADERS) : AT (BOOT_OFFSET + SIZEOF_HEADERS) {
    1919                ktext_start = .;
    20                 *(K_TEXT_START);
    21                 *(.text);
     20                KEEP(*(K_TEXT_START));
     21                *(.text .text.*);
    2222                ktext_end = .;
    2323
    2424                kdata_start = .;
    25                 *(.data);                       /* initialized data */
     25                *(.data .data.*);                       /* initialized data */
    2626                *(.rodata .rodata.*);
    2727                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
    2828                *(.eh_frame_hdr .eh_frame_hdr.*);
    29                 *(.sdata);
    30                 *(.reginfo);
    31                 *(.sbss);
    32                 *(.scommon);
    33                 *(.bss);                        /* uninitialized static variables */
     29                *(.sdata .sdata.*);
     30                *(.sbss .sbss.*);
     31                *(.scommon .scommon.*);
     32                *(.bss .bss.*);                        /* uninitialized static variables */
    3433                *(COMMON);                      /* global variables */
    3534                kdata_end = .;
  • kernel/arch/sparc64/_link.ld.in

    r0373af9 rc89ae25  
    1616        .image (VMA + SIZEOF_HEADERS): AT (LMA + SIZEOF_HEADERS) {
    1717                ktext_start = .;
    18                 *(K_TEXT_START)
     18                KEEP(*(K_TEXT_START));
    1919                *(.text .text.*);
    2020                ktext_end = .;
    2121
    2222                kdata_start = .;
    23                 *(K_DATA_START)
     23                KEEP(*(K_DATA_START));
    2424                *(.rodata .rodata.*);
    2525                *(.eh_frame .eh_frame.*);       /* stack unwinding data */
    2626                *(.eh_frame_hdr .eh_frame_hdr.*);
    27                 *(.data);                   /* initialized data */
    28                 *(.sdata);
    29                 *(.sdata2);
    30                 *(.sbss);
     27                *(.data .data.*);                   /* initialized data */
     28                *(.sdata .sdata.*);
     29                *(.sdata2 .sdata2.*);
     30                *(.sbss .sbss.*);
    3131                . = ALIGN(8);
    32                 *(.bss);                    /* uninitialized static variables */
     32                *(.bss .bss.*);                    /* uninitialized static variables */
    3333                *(COMMON);                  /* global variables */
    3434                kdata_end = .;
  • meson/arch/amd64/meson.build

    r0373af9 rc89ae25  
    4545endif
    4646
    47 
    48 # TODO: Enable --gc-sections
    49 arch_kernel_link_args = [ '-Wl,-z,max-page-size=0x1000', '-nostdlib', '-Wl,--no-gc-sections' ]
     47arch_kernel_link_args = [ '-Wl,-z,max-page-size=0x1000', '-nostdlib' ]
    5048arch_uspace_link_args = [ '-Wl,-z,max-page-size=0x1000', '-nostdlib', '-lgcc' ]
    5149
  • meson/arch/arm64/meson.build

    r0373af9 rc89ae25  
    4747# processor is in the execution mode that has unaligned access enabled. The
    4848# -mstrict-align option is therefore not needed.
    49 arch_boot_c_args = arch_uspace_c_args + [ '-fpic', '-fvisibility=hidden', '-fno-function-sections' ]
    50 arch_boot_link_args = [ '-Wl,-shared', '-Wl,--no-gc-sections' ] + ldflags_ignore_rwx_segments
     49arch_boot_c_args = arch_uspace_c_args + [ '-fpic', '-fvisibility=hidden' ]
     50arch_boot_link_args = [ '-Wl,-shared' ] + ldflags_ignore_rwx_segments
    5151
    5252if MACHINE == 'virt'
  • meson/arch/ia32/meson.build

    r0373af9 rc89ae25  
    5151]
    5252
    53 
    54 # TODO: Enable --gc-sections.
    55 arch_kernel_link_args = [ '-nostdlib', '-Wl,--no-gc-sections' ]
     53arch_kernel_link_args = [ '-nostdlib' ]
    5654arch_uspace_link_args = [ '-nostdlib', '-lgcc' ]
    5755
  • meson/arch/ppc32/meson.build

    r0373af9 rc89ae25  
    2828#
    2929
    30 # FIXME: enable --gc-sections
    31 
    3230_common_c_args = [ '-D__BE__', '-fno-omit-frame-pointer', '-m32', '-Wa,-a32', '-mcpu=powerpc' ]
    3331
    34 arch_kernel_c_args = _common_c_args + [ '-msoft-float', '-fno-function-sections' ]
     32arch_kernel_c_args = _common_c_args + [ '-msoft-float' ]
    3533arch_uspace_c_args = _common_c_args + [ CONFIG_FPU ? '-mhard-float' : '-msoft-float' ]
    3634arch_boot_c_args = arch_kernel_c_args
    37 arch_kernel_link_args = [ '-nostdlib', '-Wl,-z,max-page-size=0x1000', '-Wl,--no-check-sections', '-Wl,--no-gc-sections' ]
     35arch_kernel_link_args = [ '-nostdlib', '-Wl,-z,max-page-size=0x1000' ]
    3836arch_uspace_link_args = [ '-nostdlib', '-lgcc', '-Wl,-z,max-page-size=0x1000' ]
    3937arch_uspace_link_args += ldflags_ignore_rwx_segments
  • meson/part/compiler_args/meson.build

    r0373af9 rc89ae25  
    6868
    6969        '-ffunction-sections',
     70        '-fdata-sections',
    7071        '-fno-common',
    7172        '-fdebug-prefix-map=' + meson.source_root() + '/=',
Note: See TracChangeset for help on using the changeset viewer.