Changes imported from Abseil "staging" branch:
- 5923451fb3b082e8bedb800cb676378b0f52d651 Remove internal-only deprecated APIs. by Daniel Katz <katzdm@google.com> - c715bf6e5533a9a5d827e806ccd6e8ee68ad2a53 Small fix for comment in span.h by Abseil Team <absl-team@google.com> - ef89cc8dac0631b4ad3499d1f0883670b43567df Rename an internal detail to de-conflict with a badly-nam... by Abseil Team <absl-team@google.com> - b53761a945ffdab39d5340904ca822571672f11a Remove base/internal/log_severity.cc, which is omitted fr... by Abseil Team <absl-team@google.com> - 56685b1852840d3838e24d83849d56644949e9b7 Reimplementing MallocHook such that the C API wraps the C... by Abseil Team <absl-team@google.com> GitOrigin-RevId: 5923451fb3b082e8bedb800cb676378b0f52d651 Change-Id: I9b854d46b57990c9a10971391d762b280488bcee
This commit is contained in:
		
							parent
							
								
									17cde19a0f
								
							
						
					
					
						commit
						eb5bbdda6c
					
				
					 11 changed files with 106 additions and 360 deletions
				
			
		|  | @ -74,24 +74,16 @@ class MallocHook { | |||
|   // Object pointer and size are passed in.
 | ||||
|   // It may be passed null pointer if the allocator returned null.
 | ||||
|   typedef MallocHook_NewHook NewHook; | ||||
|   inline static bool AddNewHook(NewHook hook) { | ||||
|     return MallocHook_AddNewHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveNewHook(NewHook hook) { | ||||
|     return MallocHook_RemoveNewHook(hook); | ||||
|   } | ||||
|   static bool AddNewHook(NewHook hook); | ||||
|   static bool RemoveNewHook(NewHook hook); | ||||
|   inline static void InvokeNewHook(const void* ptr, size_t size); | ||||
| 
 | ||||
|   // The DeleteHook is invoked whenever an object is being deallocated.
 | ||||
|   // Object pointer is passed in.
 | ||||
|   // It may be passed null pointer if the caller is trying to delete null.
 | ||||
|   typedef MallocHook_DeleteHook DeleteHook; | ||||
|   inline static bool AddDeleteHook(DeleteHook hook) { | ||||
|     return MallocHook_AddDeleteHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveDeleteHook(DeleteHook hook) { | ||||
|     return MallocHook_RemoveDeleteHook(hook); | ||||
|   } | ||||
|   static bool AddDeleteHook(DeleteHook hook); | ||||
|   static bool RemoveDeleteHook(DeleteHook hook); | ||||
|   inline static void InvokeDeleteHook(const void* ptr); | ||||
| 
 | ||||
|   // The SampledNewHook is invoked for some subset of object allocations
 | ||||
|  | @ -107,12 +99,8 @@ class MallocHook { | |||
|   // call InvokeSampledDeleteHook() with that value.
 | ||||
|   typedef MallocHook_SampledNewHook SampledNewHook; | ||||
|   typedef MallocHook_SampledAlloc SampledAlloc; | ||||
|   inline static bool AddSampledNewHook(SampledNewHook hook) { | ||||
|     return MallocHook_AddSampledNewHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveSampledNewHook(SampledNewHook hook) { | ||||
|     return MallocHook_RemoveSampledNewHook(hook); | ||||
|   } | ||||
|   static bool AddSampledNewHook(SampledNewHook hook); | ||||
|   static bool RemoveSampledNewHook(SampledNewHook hook); | ||||
|   inline static void InvokeSampledNewHook(const SampledAlloc* sampled_alloc); | ||||
| 
 | ||||
|   // The SampledDeleteHook is invoked whenever an object previously chosen
 | ||||
|  | @ -121,12 +109,8 @@ class MallocHook { | |||
|   // InvokeSampledNewHook()-- is passed in.
 | ||||
|   typedef MallocHook_SampledDeleteHook SampledDeleteHook; | ||||
|   typedef MallocHook_AllocHandle AllocHandle; | ||||
|   inline static bool AddSampledDeleteHook(SampledDeleteHook hook) { | ||||
|     return MallocHook_AddSampledDeleteHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveSampledDeleteHook(SampledDeleteHook hook) { | ||||
|     return MallocHook_RemoveSampledDeleteHook(hook); | ||||
|   } | ||||
|   static bool AddSampledDeleteHook(SampledDeleteHook hook); | ||||
|   static bool RemoveSampledDeleteHook(SampledDeleteHook hook); | ||||
|   inline static void InvokeSampledDeleteHook(AllocHandle handle); | ||||
| 
 | ||||
|   // The PreMmapHook is invoked with mmap's or mmap64's arguments just
 | ||||
|  | @ -134,12 +118,8 @@ class MallocHook { | |||
|   // in memory limited contexts, to catch allocations that will exceed
 | ||||
|   // a memory limit, and take outside actions to increase that limit.
 | ||||
|   typedef MallocHook_PreMmapHook PreMmapHook; | ||||
|   inline static bool AddPreMmapHook(PreMmapHook hook) { | ||||
|     return MallocHook_AddPreMmapHook(hook); | ||||
|   } | ||||
|   inline static bool RemovePreMmapHook(PreMmapHook hook) { | ||||
|     return MallocHook_RemovePreMmapHook(hook); | ||||
|   } | ||||
|   static bool AddPreMmapHook(PreMmapHook hook); | ||||
|   static bool RemovePreMmapHook(PreMmapHook hook); | ||||
|   inline static void InvokePreMmapHook(const void* start, | ||||
|                                        size_t size, | ||||
|                                        int protection, | ||||
|  | @ -159,12 +139,8 @@ class MallocHook { | |||
|   // you must call RemoveMmapReplacement before calling SetMmapReplacement
 | ||||
|   // again.
 | ||||
|   typedef MallocHook_MmapReplacement MmapReplacement; | ||||
|   inline static bool SetMmapReplacement(MmapReplacement hook) { | ||||
|     return MallocHook_SetMmapReplacement(hook); | ||||
|   } | ||||
|   inline static bool RemoveMmapReplacement(MmapReplacement hook) { | ||||
|     return MallocHook_RemoveMmapReplacement(hook); | ||||
|   } | ||||
|   static bool SetMmapReplacement(MmapReplacement hook); | ||||
|   static bool RemoveMmapReplacement(MmapReplacement hook); | ||||
|   inline static bool InvokeMmapReplacement(const void* start, | ||||
|                                            size_t size, | ||||
|                                            int protection, | ||||
|  | @ -178,12 +154,8 @@ class MallocHook { | |||
|   // a region of memory has been just mapped.
 | ||||
|   // It may be passed MAP_FAILED if the mmap failed.
 | ||||
|   typedef MallocHook_MmapHook MmapHook; | ||||
|   inline static bool AddMmapHook(MmapHook hook) { | ||||
|     return MallocHook_AddMmapHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveMmapHook(MmapHook hook) { | ||||
|     return MallocHook_RemoveMmapHook(hook); | ||||
|   } | ||||
|   static bool AddMmapHook(MmapHook hook); | ||||
|   static bool RemoveMmapHook(MmapHook hook); | ||||
|   inline static void InvokeMmapHook(const void* result, | ||||
|                                     const void* start, | ||||
|                                     size_t size, | ||||
|  | @ -202,12 +174,8 @@ class MallocHook { | |||
|   // MunmapReplacement you must call RemoveMunmapReplacement before
 | ||||
|   // calling SetMunmapReplacement again.
 | ||||
|   typedef MallocHook_MunmapReplacement MunmapReplacement; | ||||
|   inline static bool SetMunmapReplacement(MunmapReplacement hook) { | ||||
|     return MallocHook_SetMunmapReplacement(hook); | ||||
|   } | ||||
|   inline static bool RemoveMunmapReplacement(MunmapReplacement hook) { | ||||
|     return MallocHook_RemoveMunmapReplacement(hook); | ||||
|   } | ||||
|   static bool SetMunmapReplacement(MunmapReplacement hook); | ||||
|   static bool RemoveMunmapReplacement(MunmapReplacement hook); | ||||
|   inline static bool InvokeMunmapReplacement(const void* start, | ||||
|                                              size_t size, | ||||
|                                              int* result); | ||||
|  | @ -217,23 +185,15 @@ class MallocHook { | |||
|   // TODO(maxim): Rename this to PreMunmapHook for consistency with PreMmapHook
 | ||||
|   // and PreSbrkHook.
 | ||||
|   typedef MallocHook_MunmapHook MunmapHook; | ||||
|   inline static bool AddMunmapHook(MunmapHook hook) { | ||||
|     return MallocHook_AddMunmapHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveMunmapHook(MunmapHook hook) { | ||||
|     return MallocHook_RemoveMunmapHook(hook); | ||||
|   } | ||||
|   static bool AddMunmapHook(MunmapHook hook); | ||||
|   static bool RemoveMunmapHook(MunmapHook hook); | ||||
|   inline static void InvokeMunmapHook(const void* start, size_t size); | ||||
| 
 | ||||
|   // The MremapHook is invoked with mremap's return value and arguments
 | ||||
|   // whenever a region of memory has been just remapped.
 | ||||
|   typedef MallocHook_MremapHook MremapHook; | ||||
|   inline static bool AddMremapHook(MremapHook hook) { | ||||
|     return MallocHook_AddMremapHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveMremapHook(MremapHook hook) { | ||||
|     return MallocHook_RemoveMremapHook(hook); | ||||
|   } | ||||
|   static bool AddMremapHook(MremapHook hook); | ||||
|   static bool RemoveMremapHook(MremapHook hook); | ||||
|   inline static void InvokeMremapHook(const void* result, | ||||
|                                       const void* old_addr, | ||||
|                                       size_t old_size, | ||||
|  | @ -248,12 +208,8 @@ class MallocHook { | |||
|   // to catch allocations that will exceed the limit and take outside
 | ||||
|   // actions to increase such a limit.
 | ||||
|   typedef MallocHook_PreSbrkHook PreSbrkHook; | ||||
|   inline static bool AddPreSbrkHook(PreSbrkHook hook) { | ||||
|     return MallocHook_AddPreSbrkHook(hook); | ||||
|   } | ||||
|   inline static bool RemovePreSbrkHook(PreSbrkHook hook) { | ||||
|     return MallocHook_RemovePreSbrkHook(hook); | ||||
|   } | ||||
|   static bool AddPreSbrkHook(PreSbrkHook hook); | ||||
|   static bool RemovePreSbrkHook(PreSbrkHook hook); | ||||
|   inline static void InvokePreSbrkHook(ptrdiff_t increment); | ||||
| 
 | ||||
|   // The SbrkHook is invoked with sbrk's result and argument whenever sbrk
 | ||||
|  | @ -261,12 +217,8 @@ class MallocHook { | |||
|   // This is because sbrk(0) is often called to get the top of the memory stack,
 | ||||
|   // and is not actually a memory-allocation call.
 | ||||
|   typedef MallocHook_SbrkHook SbrkHook; | ||||
|   inline static bool AddSbrkHook(SbrkHook hook) { | ||||
|     return MallocHook_AddSbrkHook(hook); | ||||
|   } | ||||
|   inline static bool RemoveSbrkHook(SbrkHook hook) { | ||||
|     return MallocHook_RemoveSbrkHook(hook); | ||||
|   } | ||||
|   static bool AddSbrkHook(SbrkHook hook); | ||||
|   static bool RemoveSbrkHook(SbrkHook hook); | ||||
|   inline static void InvokeSbrkHook(const void* result, ptrdiff_t increment); | ||||
| 
 | ||||
|   // Pointer to a absl::GetStackTrace implementation, following the API in
 | ||||
|  | @ -280,12 +232,8 @@ class MallocHook { | |||
|   // is not available.
 | ||||
|   // Stack trace is filled into *result up to the size of max_depth.
 | ||||
|   // The actual number of stack frames filled is returned.
 | ||||
|   inline static int GetCallerStackTrace(void** result, int max_depth, | ||||
|                                         int skip_count, | ||||
|                                         GetStackTraceFn get_stack_trace_fn) { | ||||
|     return MallocHook_GetCallerStackTrace(result, max_depth, skip_count, | ||||
|                                           get_stack_trace_fn); | ||||
|   } | ||||
|   static int GetCallerStackTrace(void** result, int max_depth, int skip_count, | ||||
|                                  GetStackTraceFn get_stack_trace_fn); | ||||
| 
 | ||||
| #if ABSL_HAVE_MMAP | ||||
|   // Unhooked versions of mmap() and munmap().   These should be used
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue