VirtualBox

Changeset 92801 in vbox


Ignore:
Timestamp:
Dec 8, 2021 2:01:03 AM (3 years ago)
Author:
vboxsync
Message:

/Config.kmk: Use -ffunction-sections, -fdata-sections and -Wl,--gc-sections on staticially linked modules (mostly GAs and ValKit) on ELF platforms. Should save a bit of space. [fix for solaris build vm with old ld w/o --gc-sections]

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Config.kmk

    r92800 r92801  
    31193119        $(QUIET)$(APPEND) '$@' 'VBOX_LD_as_needed              ?= $(call VBOX_GCC_CHECK_LD,--as-needed,)'
    31203120        $(QUIET)$(APPEND) '$@' 'VBOX_LD_hash_style_sysv        ?= $(call VBOX_GCC_CHECK_LD,--hash-style=sysv,)'
     3121        $(QUIET)$(APPEND) '$@' 'VBOX_LD_gc_sections            ?= $(call VBOX_GCC_CHECK_LD,--gc-sections,)'
    31213122# Set default attribute for ELF and MACH-O symbols to ``hidden'' to reduce the number
    31223123# of relocation entries and PLT indirections in shared libraries. Don't allow for gcc version < 4.
     
    58955896  TEMPLATE_VBOXR3STATIC_LDFLAGS         = $(filter-out '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RUNPATH)' '$(VBOX_GCC_RPATH_OPT)$(VBOX_WITH_RELATIVE_RUNPATH)',$(TEMPLATE_VBOXR3EXE_LDFLAGS))
    58965897 endif
    5897  ifn1of ($(KBUILD_TARGET), darwin os2) # ELF only. Present in gcc 3.2.3 & binutils 2.15, possibly earlier.
    5898   ifndef TEMPLATE_VBOXR3STATIC_CXXFLAGS
    5899    TEMPLATE_VBOXR3STATIC_CXXFLAGS       = $(TEMPLATE_VBOXR3EXE_CXXFLAGS)
    5900    TEMPLATE_VBOXR3STATIC_CFLAGS         = $(TEMPLATE_VBOXR3EXE_CFLAGS)
    5901   endif
    5902   TEMPLATE_VBOXR3STATIC_CXXFLAGS       += -ffunction-sections -fdata-sections
    5903   TEMPLATE_VBOXR3STATIC_CFLAGS         += -ffunction-sections -fdata-sections
    5904   TEMPLATE_VBOXR3STATIC_LDFLAGS        += -Wl,--gc-sections
     5898 ifn1of ($(KBUILD_TARGET), darwin os2)  # ELF only. Present in gcc 3.2.3 & binutils 2.15, possibly earlier.
     5899  ifdef VBOX_LD_gc_sections             # Older solaris linker versions doesn't grok --gc-sections (e.g. add build box).
     5900   ifndef TEMPLATE_VBOXR3STATIC_CXXFLAGS
     5901    TEMPLATE_VBOXR3STATIC_CXXFLAGS       = $(TEMPLATE_VBOXR3EXE_CXXFLAGS)
     5902    TEMPLATE_VBOXR3STATIC_CFLAGS         = $(TEMPLATE_VBOXR3EXE_CFLAGS)
     5903   endif
     5904   TEMPLATE_VBOXR3STATIC_CXXFLAGS       += -ffunction-sections -fdata-sections
     5905   TEMPLATE_VBOXR3STATIC_CFLAGS         += -ffunction-sections -fdata-sections
     5906   TEMPLATE_VBOXR3STATIC_LDFLAGS        += $(VBOX_LD_gc_sections)
     5907  endif
    59055908 endif
    59065909endif
     
    77927795 TEMPLATE_VBOXGUESTR3EXE_LDFLAGS.debug = $(NO_SUCH_VARIABLE)
    77937796 TEMPLATE_VBOXGUESTR3EXE_LDFLAGS  = $(filter-out '$(VBOX_GCC_RPATH_OPT)%,$(TEMPLATE_VBOXR3EXE_LDFLAGS))
    7794  ifn1of ($(KBUILD_TARGET), darwin os2) # ELF only. Present in gcc 3.2.3 & binutils 2.15, possibly earlier.
    7795   TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS += -ffunction-sections -fdata-sections
    7796   TEMPLATE_VBOXGUESTR3EXE_CFLAGS   += -ffunction-sections -fdata-sections
    7797   TEMPLATE_VBOXGUESTR3EXE_LDFLAGS  += -Wl,--gc-sections
     7797 ifn1of ($(KBUILD_TARGET), darwin os2)  # ELF only. Present in gcc 3.2.3 & binutils 2.15, possibly earlier.
     7798  ifdef VBOX_LD_gc_sections             # Older solaris linker versions doesn't grok --gc-sections (e.g. add build box).
     7799   TEMPLATE_VBOXGUESTR3EXE_CXXFLAGS += -ffunction-sections -fdata-sections
     7800   TEMPLATE_VBOXGUESTR3EXE_CFLAGS   += -ffunction-sections -fdata-sections
     7801   TEMPLATE_VBOXGUESTR3EXE_LDFLAGS  += $(VBOX_LD_gc_sections)
     7802  endif
    77987803 endif
    77997804endif
     
    80648069TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TARGET) = $(NO_SUCH_VARIABLE)
    80658070# The GNU_HASH ELF tag is not supported by older glibc dynamic linkers.
    8066 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.linux = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
     8071TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.linux            = $(subst -Wl$(COMMA),,$(VBOX_LD_hash_style_sysv))
    80678072TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.$(KBUILD_TYPE)   = $(NO_SUCH_VARIABLE)
    8068 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS          = -r
     8073TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS                  = -r
    80698074if1of ($(KBUILD_TARGET), dragonfly freebsd linux netbsd openbsd) # the gnu ld guys.
    8070  TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.release = -S
    8071  TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.x86     = -m elf_i386
    8072  TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.amd64   = -m elf_x86_64
     8075 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.release         = -S
     8076 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.x86             = -m elf_i386
     8077 TEMPLATE_VBOXGUESTR3XF86MOD_LDFLAGS.amd64           = -m elf_x86_64
    80738078endif
    80748079TEMPLATE_VBOXGUESTR3XF86MOD_CFLAGS  = $(filter-out $(VBOX_GCC_SANITIZER_FLAGS),$(TEMPLATE_VBOXGUESTR3EXE_CFLAGS)) \
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette