1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

building ports with gcc46 under 8-STABLE (for the fun)

Discussion in 'Installation and Maintenance of Ports or Packages' started by tobe, Aug 13, 2011.

  1. tobe

    tobe New Member

    Messages:
    92
    Thanks Received:
    8
    Hello,

    I have to stay home today just in case my employer calls me for assistance, so i decided to mess around with FreeBSD ports on my laptop :)

    I've installed gcc46 (as described in the handbook, but for gcc44) and tried to recompile all ports.

    I known this is not a good idea, but remember i'm just playing with my computer to kill time and probably most of the softwares i've installed so far.

    I got some problems with the stack protector flag (now enabled by default), lots of ports failed to build with the following error :

    Code:
    undefined reference to `__stack_chk_fail_local'


    So i decided to remove it (...) by adding the line "SSP_CFLAGS=" in /etc/make.conf, only for ports.

    Seems like it's building fine now, but i have a couple of questions :

    Is this a known problem ?
    Is SSP_CFLAGS= the "right way", if any, to disable stack protection ?
    Or, is there any way to keep stack protection and build with gcc46 ?
     
  2. poh-poh

    poh-poh New Member

    Messages:
    39
    Thanks Received:
    17
    Try to place gcc46 libs before basegcc libs in rtld(1) hints which also affect ld(1) that's likely link against wrong libssp (another example is PR ports/148196), e.g.
    Code:
    Index: etc/rc.d/ldconfig
    ===================================================================
    --- etc/rc.d/ldconfig	(revision 224789)
    +++ etc/rc.d/ldconfig	(working copy)
    @@ -22,7 +22,7 @@
     	ldconfig=${ldconfig_command}
     	checkyesno ldconfig_insecure && _ins="-i"
     	if [ -x "${ldconfig_command}" ]; then
    -		_LDC="/lib /usr/lib"
    +		_LDC="/usr/local/lib/gcc46 /lib /usr/lib"
     		for i in ${ldconfig_local_dirs}; do
     			if [ -d "${i}" ]; then
     				_files=`find ${i} -type f`
    
     
    tobe thanks for this.
  3. tobe

    tobe New Member

    Messages:
    92
    Thanks Received:
    8
    Thanks for the suggestion, and for pointing me the PR, but i'd prefer something i could configure conditionally like it's done in /etc/make.conf.

    I'll take a look at the -rpath option later, i'm now rebuilding all ports and i don't want to stop it right now :)