From 9f3d57ed32aa860327e4917d7c73c90c16b1ab43 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 6 May 2008 06:04:58 +0000 Subject: [PATCH] gcc binary backwards-compatibility stub --- stepmania/src/Makefile.am | 1 + stepmania/src/archutils/Unix/StackCheck.cpp | 33 +++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 stepmania/src/archutils/Unix/StackCheck.cpp diff --git a/stepmania/src/Makefile.am b/stepmania/src/Makefile.am index 9882cbe22f..32e1e583a6 100644 --- a/stepmania/src/Makefile.am +++ b/stepmania/src/Makefile.am @@ -271,6 +271,7 @@ ArchUtils += archutils/Unix/AssertionHandler.cpp archutils/Unix/AssertionHand archutils/Unix/LinuxThreadHelpers.cpp archutils/Unix/LinuxThreadHelpers.h \ archutils/Unix/RunningUnderValgrind.cpp archutils/Unix/RunningUnderValgrind.h \ archutils/Unix/EmergencyShutdown.cpp archutils/Unix/EmergencyShutdown.h \ + archutils/Unix/StackCheck.cpp \ archutils/Common/gcc_byte_swaps.h if USE_CRASH_HANDLER diff --git a/stepmania/src/archutils/Unix/StackCheck.cpp b/stepmania/src/archutils/Unix/StackCheck.cpp new file mode 100644 index 0000000000..ea0bbf839b --- /dev/null +++ b/stepmania/src/archutils/Unix/StackCheck.cpp @@ -0,0 +1,33 @@ +#include "global.h" + +/* Newer g++ versions (around 4.2) output __stack_chk_fail calls. This is grossly + * backwards-incompatible. It can be disabled, but you'd have to disable it in any + * statically linked libraries: all Ubuntu static libraries have this enabled. Work + * around it by declaring the symbol manually. */ +extern "C" void __stack_chk_fail (void) __attribute__ ((__weak__)) __attribute__ ((__noreturn__)); +extern "C" void __stack_chk_fail (void) { abort(); } + +/* + * (c) 2008 Glenn Maynard + * All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, provided that the above + * copyright notice(s) and this permission notice appear in all copies of + * the Software and that both the above copyright notice(s) and this + * permission notice appear in supporting documentation. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + * THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS + * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT + * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS + * OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */