37 lines
		
	
	
		
			999 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			999 B
		
	
	
	
		
			C++
		
	
	
	
//===-- scudo_utils.h -------------------------------------------*- C++ -*-===//
 | 
						|
//
 | 
						|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 | 
						|
// See https://llvm.org/LICENSE.txt for license information.
 | 
						|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 | 
						|
//
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
///
 | 
						|
/// Header for scudo_utils.cpp.
 | 
						|
///
 | 
						|
//===----------------------------------------------------------------------===//
 | 
						|
 | 
						|
#ifndef SCUDO_UTILS_H_
 | 
						|
#define SCUDO_UTILS_H_
 | 
						|
 | 
						|
#include "sanitizer_common/sanitizer_common.h"
 | 
						|
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
namespace __scudo {
 | 
						|
 | 
						|
template <class Dest, class Source>
 | 
						|
inline Dest bit_cast(const Source& source) {
 | 
						|
  static_assert(sizeof(Dest) == sizeof(Source), "Sizes are not equal!");
 | 
						|
  Dest dest;
 | 
						|
  memcpy(&dest, &source, sizeof(dest));
 | 
						|
  return dest;
 | 
						|
}
 | 
						|
 | 
						|
void dieWithMessage(const char *Format, ...) NORETURN FORMAT(1, 2);
 | 
						|
 | 
						|
bool hasHardwareCRC32();
 | 
						|
 | 
						|
}  // namespace __scudo
 | 
						|
 | 
						|
#endif  // SCUDO_UTILS_H_
 |