Changeset 6339 in niluje


Ignore:
Timestamp:
Jun 2, 2010, 2:27:44 AM (10 years ago)
Author:
NiLuJe
Message:

HLSDK & Cie:

  • Let's try to break everything with PIC builds!
Location:
Bash/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Bash/trunk/dist_comp

    r6132 r6339  
    9292                OPT_TYPE="cool"
    9393        ;;
     94        "pic" )
     95                OPT_TYPE="pic"
     96        ;;
    9497        "normal" )
    9598                OPT_TYPE="normal"
  • Bash/trunk/hlsdk_build

    r6131 r6339  
    479479                TYPE_2="cool"
    480480                OPT_FLAGS="$CFLAGS_CLASSIC"
     481        ;;
     482        "pic" )
     483                cecho "Utilisation des CFLAGS${bleu} O2${rouge} Classiques + PIC${rouge} . . ."
     484                TYPE_2="pic"
     485                OPT_FLAGS="$CFLAGS_PIC"
    481486        ;;
    482487        * )
  • Bash/trunk/hlsdk_depsbuild

    r6226 r6339  
    162162configure()
    163163{
     164        # We're building static libs, ditch PIC
     165        strip_flag "-fPIC"
     166
    164167        # Setting des Flags
    165168        if [[ "$WANT_DEBUG" ]] ; then
     
    274277                        --with-charset=latin1                                   \
    275278                        --with-collation=latin1_swedish_ci                      \
    276                         --with-pic                                              \
    277279                        --with-unix-socket-path=${MYCNF_SOCKET}
    278280
     
    294296                        ## Sed !
    295297                        sed -i 's|\<test "`\([^"]*\) 2>&1`" = ""|\1 2>/dev/null|' configure || die "zlib sed part I"
    296 
    297                         ## -fPIC ?
    298                         ## relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
    299                         #OLDCF="${CFLAGS}"
    300                         #export CFLAGS="${CFLAGS} -fPIC"
    301298
    302299                        ./configure                                             \
     
    369366                        --without-debug                                         \
    370367                        --without-gpm                                           \
    371                         --without-trace                                         \
    372                         --with-pic
     368                        --without-trace
    373369                ;;
    374370                "boost" )
     
    401397                ;;
    402398        esac
     399
     400        # Restore flags
     401        restore_flag
    403402}
    404403
  • Bash/trunk/hlsdk_helpers

    r6323 r6339  
    388388        fi
    389389        [[ "$TARGET" != "" ]] && mv ${TARGET}.ori $TARGET
     390}
     391
     392##
     393### Helpers relatifs à la gestion des CFLAGS
     394#
     395
     396# Dégage un flag spécifique
     397strip_flag()
     398{
     399        # On se souvient des flags originaux pour restore_flag
     400        OLD_OPT_FLAGS="${OPT_FLAGS}"
     401        OLD_DEBUG_FLAGS="${DEBUG_FLAGS}"
     402
     403        if [[ "$1" ]] ; then
     404                FLAG2STRIP="$1"
     405        else
     406                return
     407        fi
     408
     409        export OPT_FLAGS="${OPT_FLAGS//${FLAG2STRIP}/}"
     410        export DEBUG_FLAGS="${DEBUG_FLAGS//${FLAG2STRIP}/}"
     411}
     412
     413# Restaure les flags
     414restore_flag()
     415{
     416        export OPT_FLAGS="${OLD_OPT_FLAGS}"
     417        export DEBUG_FLAGS="${OLD_DEBUG_FLAGS}"
    390418}
    391419
     
    694722fi
    695723
    696 ## NOTE / FIXME: Bench the impact of building eveything as PIC, without forgetting the libs from deps (-fPIC). The binaries would truly be shared (so, mem & cache gain in mutualized hosting), and smaller, but there _may_ be a runtime perf hit.
    697 ## Also, Orpheu's asm isn't PIC safe. (function.cpp:417: erreur: PIC register 'ebx' clobbered in 'asm')
     724## NOTE: Bench the impact of building eveything as PIC. The binaries would truly be shared (so, mem & cache gain in mutualized hosting), and smaller, but there _may_ be a runtime perf hit.
    698725## While we're at it, try building amxmodx without an executable stack.
    699726## Cf. http://www.gentoo.org/proj/en/hardened/pic-internals.xml & http://www.gentoo.org/proj/en/hardened/gnu-stack.xml
     
    707734## Cflags classiques
    708735CFLAGS_CLASSIC="-march=${MARCH} ${GCC_FPMATH} ${GCC_ARCH_SPE} ${BITS_FLAG} -O3 -pipe -fomit-frame-pointer -fweb -fgcse-after-reload -s"
     736## Cflags classiques + PIC
     737CFLAGS_PIC="-march=${MARCH} ${GCC_FPMATH} ${GCC_ARCH_SPE} ${BITS_FLAG} -O3 -pipe -fomit-frame-pointer -fweb -fgcse-after-reload -fPIC -s"
    709738## GCC 4.3 (TESTING)
    710739CFLAGS_GCC43="-march=${MARCH} ${GCC_FPMATH} ${GCC_ARCH_SPE} ${BITS_FLAG} -O2 -pipe -fomit-frame-pointer ${GCC43_TEST} -s"
  • Bash/trunk/hlsdk_patterns

    r6294 r6339  
    497497                fi
    498498        }
     499
     500        # AMXx - Oprheu
     501        Pre_AMXx_Orpheu()
     502        {
     503                ## Some of the inlined asm in function.cpp isn't PIC safe
     504                # function.cpp:417: erreur: PIC register 'ebx' clobbered in 'asm'
     505
     506                strip_flag "-fPIC"
     507        }
     508
     509        Post_AMXx_Orpheu()
     510        {
     511                restore_flag
     512        }
    499513fi
    500514
     
    526540                mkdir -p zlib
    527541                mv libz.a zlib.lib zconf.h zlib.h zlib
     542
     543                ## It's a binary, don't make it PIC
     544                strip_flag "-fPIC"
    528545        }
    529546
     
    532549                mv zlib/* .
    533550                rm -rf zlib
     551
     552                restore_flag
    534553        }
    535554fi
Note: See TracChangeset for help on using the changeset viewer.