1// Copyright (c) 2008, Google Inc. 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions are 6// met: 7// 8// * Redistributions of source code must retain the above copyright 9// notice, this list of conditions and the following disclaimer. 10// * Redistributions in binary form must reproduce the above 11// copyright notice, this list of conditions and the following disclaimer 12// in the documentation and/or other materials provided with the 13// distribution. 14// * Neither the name of Google Inc. nor the names of its 15// contributors may be used to endorse or promote products derived from 16// this software without specific prior written permission. 17// 18// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29// 30// --- 31// Author: Craig Silverstein (opensource@google.com) 32 33// When you are porting perftools to a new compiler or architecture 34// (win64 vs win32) for instance, you'll need to change the mangled 35// symbol names for operator new and friends at the top of 36// patch_functions.cc. This file helps you do that. 37// 38// It does this by defining these functions with the proper signature. 39// All you need to do is compile this file and the run dumpbin on it. 40// (See http://msdn.microsoft.com/en-us/library/5x49w699.aspx for more 41// on dumpbin). To do this in MSVC, use the MSVC commandline shell: 42// http://msdn.microsoft.com/en-us/library/ms235639(VS.80).aspx) 43// 44// The run: 45// cl /c get_mangled_names.cc 46// dumpbin /symbols get_mangled_names.obj 47// 48// It will print out the mangled (and associated unmangled) names of 49// the 8 symbols you need to put at the top of patch_functions.cc 50 51#include <sys/types.h> // for size_t 52#include <new> // for nothrow_t 53 54static char m; // some dummy memory so new doesn't return NULL. 55 56void* operator new(size_t size) { return &m; } 57void operator delete(void* p) throw() { } 58void* operator new[](size_t size) { return &m; } 59void operator delete[](void* p) throw() { } 60 61void* operator new(size_t size, const std::nothrow_t&) throw() { return &m; } 62void operator delete(void* p, const std::nothrow_t&) throw() { } 63void* operator new[](size_t size, const std::nothrow_t&) throw() { return &m; } 64void operator delete[](void* p, const std::nothrow_t&) throw() { } 65