Linux/PA-RISC: Link with --unique=.text.* to help binutils
There is a binutils bug that leads to errors like this: /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot reach 00001d28__ZNSspLEPKc@@GLIBCXX_3.4+0, recompile with -ffunction-sections /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: libCMakeLib.a(cmTarget.cxx.o)(.text+0x12084): cannot handle R_PARISC_PCREL17F for std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator+=(char const*)@@GLIBCXX_3.4 /usr/lib/gcc/hppa2.0-unknown-linux-gnu/4.6.3/../../../../hppa2.0-unknown-linux-gnu/bin/ld: final link failed: Bad value Until someone finds out what needs to be fixed in binutils this allows anyone to compile a working CMake even in debug mode.
This commit is contained in:
parent
abe4edfad3
commit
e496c54021
|
@ -62,3 +62,9 @@ endif ()
|
||||||
if (CMAKE_ANSI_CFLAGS)
|
if (CMAKE_ANSI_CFLAGS)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_ANSI_CFLAGS}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# avoid binutils problem with large binaries, e.g. when building CMake in debug mode
|
||||||
|
# See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50230
|
||||||
|
if (CMAKE_SYSTEM_NAME STREQUAL Linux AND CMAKE_SYSTEM_PROCESSOR STREQUAL parisc)
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--unique=.text.*")
|
||||||
|
endif ()
|
||||||
|
|
21
bootstrap
21
bootstrap
|
@ -93,6 +93,19 @@ else
|
||||||
cmake_system_openvms=false
|
cmake_system_openvms=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Determine whether this is Linux
|
||||||
|
if echo "${cmake_system}" | grep Linux >/dev/null 2>&1; then
|
||||||
|
cmake_system_linux=true
|
||||||
|
# find out if it is a HP PA-RISC machine
|
||||||
|
if uname -m | grep parisc >/dev/null 2>&1; then
|
||||||
|
cmake_machine_parisc=true
|
||||||
|
else
|
||||||
|
cmake_machine_parisc=false
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
cmake_system_linux=false
|
||||||
|
fi
|
||||||
|
|
||||||
# Choose the generator to use for bootstrapping.
|
# Choose the generator to use for bootstrapping.
|
||||||
if ${cmake_system_mingw}; then
|
if ${cmake_system_mingw}; then
|
||||||
# Bootstrapping from an MSYS prompt.
|
# Bootstrapping from an MSYS prompt.
|
||||||
|
@ -678,6 +691,14 @@ if ${cmake_system_haiku}; then
|
||||||
cmake_ld_flags="${LDFLAGS} -lroot -lbe"
|
cmake_ld_flags="${LDFLAGS} -lroot -lbe"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ${cmake_system_linux}; then
|
||||||
|
# avoid binutils problem with large binaries, e.g. when building CMake in debug mode
|
||||||
|
# See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50230
|
||||||
|
if ${cmake_machine_parisc}; then
|
||||||
|
cmake_ld_flags="${LDFLAGS} -Wl,--unique=.text.*"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Detect known toolchains on some platforms.
|
# Detect known toolchains on some platforms.
|
||||||
cmake_toolchains=''
|
cmake_toolchains=''
|
||||||
|
|
Loading…
Reference in New Issue