Ard Biesheuvel 78d706e235 StdLib/LibC: avoid LTO code for compiler intrinsics
The softfloat routines and some other routines supplied by LibC
will satisfy references to compiler intrinsics that are emitted
by the compiler backend, which under LTO means that the link-time
code generation may emit references to symbols that have been
optimized away already.

Work around this by building the ARM and AARCH64 versions of LibC
and the softfloat library without LTO.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Michael Zimmermann <sigmaepsilon92@gmail.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
2016-08-09 10:08:35 +02:00

124 lines
3.3 KiB
INI

## @file
# Standard C library: Miscelaneous implementations.
#
# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = LibC
FILE_GUID = 695bec93-82ae-4c17-bdad-7f184f4e651d
MODULE_TYPE = UEFI_APPLICATION
VERSION_STRING = 1.0
LIBRARY_CLASS = LibC
#
# VALID_ARCHITECTURES = IA32 X64 IPF
#
[Sources]
Main/errno.c
Main/assert.c
Main/isinfd_ieee754.c
Main/isinff_ieee754.c
Main/isnand_ieee754.c
Main/isnanf_ieee754.c
Main/infinityf_ieee754.c
Main/Main.c
Main/HtoNtoH.c
Main/ByteSwap.c
Main/longjmp.c
[Sources.IA32]
Main/x86flt_rounds.c
Main/Ia32/fpu_rmode.asm | MSFT
Main/Ia32/fpu_rmode.asm | INTEL
Main/Ia32/fpu_rmode.S | GCC
Main/Ia32/isinfl.c
Main/Ia32/isnanl.c
# Compiler helper (C RunTime) functions
CRT/Ia32/llmul.c | MSFT # __allmul
CRT/Ia32/llshl.c | MSFT # __allshl
CRT/Ia32/llshr.c | MSFT # __allshr
CRT/Ia32/ulldiv.c | MSFT # __aulldiv
CRT/Ia32/ullrem.c | MSFT # __aullrem
CRT/Ia32/ullshr.c | MSFT # __aullshr
CRT/Ia32/lldiv.c | MSFT # __alldiv
CRT/Ia32/llrem.c | MSFT # __allrem
CRT/Ia32/lldvrm.c | MSFT # __alldvrm
CRT/Ia32/ulldvrm.c | MSFT # __aulldvrm
CRT/Ia32/llmul.c | INTEL
CRT/Ia32/llshl.c | INTEL
CRT/Ia32/llshr.c | INTEL
CRT/Ia32/ulldiv.c | INTEL
CRT/Ia32/ullrem.c | INTEL
CRT/Ia32/ullshr.c | INTEL
CRT/Ia32/lldiv.c | INTEL
CRT/Ia32/llrem.c | INTEL
CRT/Ia32/lldvrm.c | INTEL
CRT/Ia32/ulldvrm.c | INTEL
CRT/Gcc.c | GCC
[Sources.X64]
Main/x86flt_rounds.c
Main/X64/fpu_rmode.asm | MSFT
Main/X64/fpu_rmode.asm | INTEL
Main/X64/fpu_rmode.S | GCC
Main/X64/isinfl.c
Main/X64/isnanl.c
[Sources.IPF]
Main/x86flt_rounds.c
Main/Ipf/FpuRmode.s
[Sources.ARM]
Main/Arm/fixunsdfsi.c
Main/Arm/floatunsidf.c
Main/Arm/flt_rounds.c
[Sources.AARCH64]
Main/Arm/flt_rounds.c
[Binaries.IA32]
LIB|Main/Ia32/ftol2.obj|*|MSFT
[Packages]
StdLib/StdLib.dec
StdLibPrivateInternalFiles/DoNotUse.dec
MdePkg/MdePkg.dec
ShellPkg/ShellPkg.dec
[LibraryClasses]
ShellCEntryLib
UefiLib
BaseLib
BaseMemoryLib
MemoryAllocationLib
LibStdLib
LibStdio
LibString
DevConsole
################################################################
#
# The Build Options, below, are only used when building the C library.
# DO NOT use them when building your application!
# Nasty things could happen if you do.
#
[BuildOptions]
MSFT:*_*_IA32_CC_FLAGS = /GL-
GCC:*_*_ARM_CC_FLAGS = -fno-lto