• Christophe Leroy's avatar
    common: env_embedded: allow fine placement of environment object · 23ac79ff
    Christophe Leroy authored
    Commit 7653942b ("common/env_embedded.c: drop support for
    CONFIG_SYS_USE_PPCENV") dropped the .ppcenv section which was
    used in linking scripts to allow fine placement of embedded
    environment sections.
    
    This implies that GCC randomly places objects from env/embedded.o
    and environment is not guaranteed to be located at the correct address:
    
    04003df8 g     F .text  00000038 mii_init
    04004000 g     O .text  00000004 env_size
    04004004 g     O .text  00002000 environment
    04006004 g     F .text  00000040 .hidden __lshrdi3
    
    This patch restores this capability by allocating each object marked
    with __UBOOT_ENV_SECTION__ into a different section. Hence
    'environment' will be alone in .text.environment, allowing a
    fine placement in u-boot.lds with:
    
    		. = DEFINED(env_offset) ? env_offset : .;
    		env/embedded.o			(.text.environment)
    
    Fixes: 7653942b
    
     ("common/env_embedded.c: drop support for CONFIG_SYS_USE_PPCENV")
    Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
    23ac79ff