am 934c8015: Merge "Expose android_set_abort_message()."
				
					
				
			* commit '934c8015d515f96c1f97255b48357da922cf626a': Expose android_set_abort_message().
This commit is contained in:
		@@ -29,6 +29,7 @@
 | 
				
			|||||||
#include "../private/libc_logging.h" // Relative path so we can #include this .cpp file for testing.
 | 
					#include "../private/libc_logging.h" // Relative path so we can #include this .cpp file for testing.
 | 
				
			||||||
#include "../private/ScopedPthreadMutexLocker.h"
 | 
					#include "../private/ScopedPthreadMutexLocker.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <android/set_abort_message.h>
 | 
				
			||||||
#include <assert.h>
 | 
					#include <assert.h>
 | 
				
			||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
#include <fcntl.h>
 | 
					#include <fcntl.h>
 | 
				
			||||||
@@ -629,7 +630,7 @@ static void __libc_fatal(const char* format, va_list args) {
 | 
				
			|||||||
  // Log to the log for the benefit of regular app developers (whose stdout and stderr are closed).
 | 
					  // Log to the log for the benefit of regular app developers (whose stdout and stderr are closed).
 | 
				
			||||||
  __libc_write_log(ANDROID_LOG_FATAL, "libc", msg);
 | 
					  __libc_write_log(ANDROID_LOG_FATAL, "libc", msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  __android_set_abort_message(msg);
 | 
					  android_set_abort_message(msg);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __libc_fatal_no_abort(const char* format, ...) {
 | 
					void __libc_fatal_no_abort(const char* format, ...) {
 | 
				
			||||||
@@ -647,7 +648,7 @@ void __libc_fatal(const char* format, ...) {
 | 
				
			|||||||
  abort();
 | 
					  abort();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __android_set_abort_message(const char* msg) {
 | 
					void android_set_abort_message(const char* msg) {
 | 
				
			||||||
  ScopedPthreadMutexLocker locker(&g_abort_msg_lock);
 | 
					  ScopedPthreadMutexLocker locker(&g_abort_msg_lock);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (__abort_message_ptr == NULL) {
 | 
					  if (__abort_message_ptr == NULL) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								libc/include/android/set_abort_message.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								libc/include/android/set_abort_message.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (C) 2014 The Android Open Source Project
 | 
				
			||||||
 | 
					 * All rights reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					 * modification, are permitted provided that the following conditions
 | 
				
			||||||
 | 
					 * are met:
 | 
				
			||||||
 | 
					 *  * Redistributions of source code must retain the above copyright
 | 
				
			||||||
 | 
					 *    notice, this list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					 *  * Redistributions in binary form must reproduce the above copyright
 | 
				
			||||||
 | 
					 *    notice, this list of conditions and the following disclaimer in
 | 
				
			||||||
 | 
					 *    the documentation and/or other materials provided with the
 | 
				
			||||||
 | 
					 *    distribution.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 | 
				
			||||||
 | 
					 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 | 
				
			||||||
 | 
					 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 | 
				
			||||||
 | 
					 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 | 
				
			||||||
 | 
					 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 | 
				
			||||||
 | 
					 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 | 
				
			||||||
 | 
					 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
 | 
				
			||||||
 | 
					 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
 | 
				
			||||||
 | 
					 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | 
				
			||||||
 | 
					 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 | 
				
			||||||
 | 
					 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
				
			||||||
 | 
					 * SUCH DAMAGE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef _SET_ABORT_MESSAGE_H
 | 
				
			||||||
 | 
					#define _SET_ABORT_MESSAGE_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__BEGIN_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void android_set_abort_message(const char* msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__END_DECLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // _SET_ABORT_MESSAGE_H
 | 
				
			||||||
@@ -69,8 +69,6 @@ struct abort_msg_t {
 | 
				
			|||||||
  char msg[0];
 | 
					  char msg[0];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __android_set_abort_message(const char* msg);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// Formats a message to the log (priority 'fatal'), then aborts.
 | 
					// Formats a message to the log (priority 'fatal'), then aborts.
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user