Print this page
9420 need GCC options to disable function cloning


 315 CCCREGSYM=              -Qoption cg -Qiselect-regsym=0
 316 
 317 # Prevent the removal of static symbols by the SPARC code generator (cg).
 318 # The x86 code generator (ube) does not remove such symbols and as such
 319 # using this workaround is not applicable for x86.
 320 #
 321 CCSTATICSYM=            -Wc,-Qassembler-ounrefsym=0
 322 #
 323 # generate 32-bit addresses in the v9 kernel. Saves memory.
 324 CCABS32=                -Wc,-xcode=abs32
 325 #
 326 # generate v9 code which tolerates callers using the v7 ABI, for the sake of
 327 # system calls.
 328 CC32BITCALLERS=         -_gcc=-massume-32bit-callers
 329 
 330 # GCC, especially, is increasingly beginning to auto-inline functions and
 331 # sadly does so separately not under the general -fno-inline-functions
 332 # Additionally, we wish to prevent optimisations which cause GCC to clone
 333 # functions -- in particular, these may cause unhelpful symbols to be
 334 # emitted instead of function names
 335 CCNOAUTOINLINE= -_gcc=-fno-inline-small-functions \

 336         -_gcc=-fno-inline-functions-called-once \
 337         -_gcc=-fno-ipa-cp






 338 
 339 # One optimization the compiler might perform is to turn this:
 340 #       #pragma weak foo
 341 #       extern int foo;
 342 #       if (&foo)
 343 #               foo = 5;
 344 # into
 345 #       foo = 5;
 346 # Since we do some of this (foo might be referenced in common kernel code
 347 # but provided only for some cpu modules or platforms), we disable this
 348 # optimization.
 349 #
 350 sparc_CCUNBOUND = -Wd,-xsafe=unboundsym
 351 i386_CCUNBOUND  =
 352 CCUNBOUND       = $($(MACH)_CCUNBOUND)
 353 
 354 #
 355 # compiler '-xarch' flag. This is here to centralize it and make it
 356 # overridable for testing.
 357 sparc_XARCH=    -m32




 315 CCCREGSYM=              -Qoption cg -Qiselect-regsym=0
 316 
 317 # Prevent the removal of static symbols by the SPARC code generator (cg).
 318 # The x86 code generator (ube) does not remove such symbols and as such
 319 # using this workaround is not applicable for x86.
 320 #
 321 CCSTATICSYM=            -Wc,-Qassembler-ounrefsym=0
 322 #
 323 # generate 32-bit addresses in the v9 kernel. Saves memory.
 324 CCABS32=                -Wc,-xcode=abs32
 325 #
 326 # generate v9 code which tolerates callers using the v7 ABI, for the sake of
 327 # system calls.
 328 CC32BITCALLERS=         -_gcc=-massume-32bit-callers
 329 
 330 # GCC, especially, is increasingly beginning to auto-inline functions and
 331 # sadly does so separately not under the general -fno-inline-functions
 332 # Additionally, we wish to prevent optimisations which cause GCC to clone
 333 # functions -- in particular, these may cause unhelpful symbols to be
 334 # emitted instead of function names
 335 CCNOAUTOINLINE= \
 336         -_gcc=-fno-inline-small-functions \
 337         -_gcc=-fno-inline-functions-called-once \
 338         -_gcc=-fno-ipa-cp \
 339         -_gcc6=-fno-ipa-icf \
 340         -_gcc7=-fno-ipa-icf \
 341         -_gcc8=-fno-ipa-icf \
 342         -_gcc6=-fno-clone-functions \
 343         -_gcc7=-fno-clone-functions \
 344         -_gcc8=-fno-clone-functions
 345 
 346 # One optimization the compiler might perform is to turn this:
 347 #       #pragma weak foo
 348 #       extern int foo;
 349 #       if (&foo)
 350 #               foo = 5;
 351 # into
 352 #       foo = 5;
 353 # Since we do some of this (foo might be referenced in common kernel code
 354 # but provided only for some cpu modules or platforms), we disable this
 355 # optimization.
 356 #
 357 sparc_CCUNBOUND = -Wd,-xsafe=unboundsym
 358 i386_CCUNBOUND  =
 359 CCUNBOUND       = $($(MACH)_CCUNBOUND)
 360 
 361 #
 362 # compiler '-xarch' flag. This is here to centralize it and make it
 363 # overridable for testing.
 364 sparc_XARCH=    -m32