summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2012-06-05 08:48:10 +0000
committerAlexey Samsonov <samsonov@google.com>2012-06-05 08:48:10 +0000
commit1b12eda7ecd3b39bb15f05876fa740f92604eb53 (patch)
tree052259f1fca07ca9e984bda9546652474df6b402
parent03c8b846c45ad9f2c56aa7fced3a2b2441b3978e (diff)
downloadbcm5719-llvm-1b12eda7ecd3b39bb15f05876fa740f92604eb53.tar.gz
bcm5719-llvm-1b12eda7ecd3b39bb15f05876fa740f92604eb53.zip
[ASan] use internal_{close,read,write} in ASan runtime.
llvm-svn: 157991
-rw-r--r--compiler-rt/lib/asan/asan_internal.h4
-rw-r--r--compiler-rt/lib/asan/asan_linux.cc14
-rw-r--r--compiler-rt/lib/asan/asan_mac.cc12
-rw-r--r--compiler-rt/lib/asan/asan_posix.cc5
-rw-r--r--compiler-rt/lib/asan/asan_printf.cc4
-rw-r--r--compiler-rt/lib/asan/asan_rtl.cc4
-rw-r--r--compiler-rt/lib/asan/asan_win.cc24
7 files changed, 9 insertions, 58 deletions
diff --git a/compiler-rt/lib/asan/asan_internal.h b/compiler-rt/lib/asan/asan_internal.h
index 50c0013ff11..cd01f2c23f6 100644
--- a/compiler-rt/lib/asan/asan_internal.h
+++ b/compiler-rt/lib/asan/asan_internal.h
@@ -169,10 +169,6 @@ void AsanUnmapOrDie(void *ptr, uptr size);
void AsanDisableCoreDumper();
void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp);
-uptr AsanRead(int fd, void *buf, uptr count);
-uptr AsanWrite(int fd, const void *buf, uptr count);
-int AsanClose(int fd);
-
bool AsanInterceptsSignal(int signum);
void SetAlternateSignalStack();
void UnsetAlternateSignalStack();
diff --git a/compiler-rt/lib/asan/asan_linux.cc b/compiler-rt/lib/asan/asan_linux.cc
index f91310307f8..908138c5883 100644
--- a/compiler-rt/lib/asan/asan_linux.cc
+++ b/compiler-rt/lib/asan/asan_linux.cc
@@ -110,10 +110,6 @@ void AsanUnmapOrDie(void *addr, uptr size) {
}
}
-uptr AsanWrite(int fd, const void *buf, uptr count) {
- return (uptr)syscall(__NR_write, fd, buf, count);
-}
-
// Like getenv, but reads env directly from /proc and does not use libc.
// This function should be called first inside __asan_init.
const char* AsanGetEnv(const char* name) {
@@ -142,20 +138,12 @@ const char* AsanGetEnv(const char* name) {
return 0; // Not found.
}
-uptr AsanRead(int fd, void *buf, uptr count) {
- return (uptr)syscall(__NR_read, fd, buf, count);
-}
-
-int AsanClose(int fd) {
- return syscall(__NR_close, fd);
-}
-
AsanProcMaps::AsanProcMaps() {
proc_self_maps_buff_len_ =
ReadFileToBuffer("/proc/self/maps", &proc_self_maps_buff_,
&proc_self_maps_buff_mmaped_size_, 1 << 26);
CHECK(proc_self_maps_buff_len_ > 0);
- // AsanWrite(2, proc_self_maps_buff_, proc_self_maps_buff_len_);
+ // internal_write(2, proc_self_maps_buff_, proc_self_maps_buff_len_);
Reset();
}
diff --git a/compiler-rt/lib/asan/asan_mac.cc b/compiler-rt/lib/asan/asan_mac.cc
index 31cee3eb952..1aee600256a 100644
--- a/compiler-rt/lib/asan/asan_mac.cc
+++ b/compiler-rt/lib/asan/asan_mac.cc
@@ -100,10 +100,6 @@ bool AsanInterceptsSignal(int signum) {
return (signum == SIGSEGV || signum == SIGBUS) && FLAG_handle_segv;
}
-size_t AsanWrite(int fd, const void *buf, size_t count) {
- return write(fd, buf, count);
-}
-
void *AsanMmapSomewhereOrDie(size_t size, const char *mem_type) {
size = RoundUpTo(size, kPageSize);
void *res = internal_mmap(0, size,
@@ -158,14 +154,6 @@ const char *AsanGetEnv(const char *name) {
return 0;
}
-size_t AsanRead(int fd, void *buf, size_t count) {
- return read(fd, buf, count);
-}
-
-int AsanClose(int fd) {
- return close(fd);
-}
-
AsanProcMaps::AsanProcMaps() {
Reset();
}
diff --git a/compiler-rt/lib/asan/asan_posix.cc b/compiler-rt/lib/asan/asan_posix.cc
index b5e81072277..14f172df1ec 100644
--- a/compiler-rt/lib/asan/asan_posix.cc
+++ b/compiler-rt/lib/asan/asan_posix.cc
@@ -19,6 +19,7 @@
#include "asan_procmaps.h"
#include "asan_stack.h"
#include "asan_thread_registry.h"
+#include "sanitizer_common/sanitizer_libc.h"
#include <pthread.h>
#include <signal.h>
@@ -35,6 +36,8 @@
// since most of the stuff here is inlinable.
#include <algorithm>
+using namespace __sanitizer;
+
static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough.
namespace __asan {
@@ -82,7 +85,7 @@ static void MaybeInstallSigaction(int signum,
static void ASAN_OnSIGSEGV(int, siginfo_t *siginfo, void *context) {
uptr addr = (uptr)siginfo->si_addr;
// Write the first message using the bullet-proof write.
- if (13 != AsanWrite(2, "ASAN:SIGSEGV\n", 13)) AsanDie();
+ if (13 != internal_write(2, "ASAN:SIGSEGV\n", 13)) AsanDie();
uptr pc, sp, bp;
GetPcSpBp(context, &pc, &sp, &bp);
Report("ERROR: AddressSanitizer crashed on unknown address %p"
diff --git a/compiler-rt/lib/asan/asan_printf.cc b/compiler-rt/lib/asan/asan_printf.cc
index f29d552dee1..19ed5bf7dc9 100644
--- a/compiler-rt/lib/asan/asan_printf.cc
+++ b/compiler-rt/lib/asan/asan_printf.cc
@@ -31,8 +31,8 @@ extern uptr error_message_buffer_pos, error_message_buffer_size;
void RawWrite(const char *buffer) {
static const char *kRawWriteError = "RawWrite can't output requested buffer!";
uptr length = (uptr)internal_strlen(buffer);
- if (length != AsanWrite(2, buffer, length)) {
- AsanWrite(2, kRawWriteError, internal_strlen(kRawWriteError));
+ if (length != internal_write(2, buffer, length)) {
+ internal_write(2, kRawWriteError, internal_strlen(kRawWriteError));
AsanDie();
}
if (error_message_buffer) {
diff --git a/compiler-rt/lib/asan/asan_rtl.cc b/compiler-rt/lib/asan/asan_rtl.cc
index b9603a40e31..c668bec3440 100644
--- a/compiler-rt/lib/asan/asan_rtl.cc
+++ b/compiler-rt/lib/asan/asan_rtl.cc
@@ -96,14 +96,14 @@ uptr ReadFileToBuffer(const char *file_name, char **buff,
read_len = 0;
bool reached_eof = false;
while (read_len + kPageSize <= size) {
- uptr just_read = AsanRead(fd, *buff + read_len, kPageSize);
+ uptr just_read = internal_read(fd, *buff + read_len, kPageSize);
if (just_read == 0) {
reached_eof = true;
break;
}
read_len += just_read;
}
- AsanClose(fd);
+ internal_close(fd);
if (reached_eof) // We've read the whole file.
break;
}
diff --git a/compiler-rt/lib/asan/asan_win.cc b/compiler-rt/lib/asan/asan_win.cc
index eadb48092d1..001f4719d3a 100644
--- a/compiler-rt/lib/asan/asan_win.cc
+++ b/compiler-rt/lib/asan/asan_win.cc
@@ -53,30 +53,6 @@ void AsanUnmapOrDie(void *addr, uptr size) {
CHECK(VirtualFree(addr, size, MEM_DECOMMIT));
}
-// ---------------------- IO ---------------- {{{1
-uptr AsanWrite(int fd, const void *buf, uptr count) {
- if (fd != 2)
- UNIMPLEMENTED();
-
- HANDLE err = GetStdHandle(STD_ERROR_HANDLE);
- if (err == 0)
- return 0; // FIXME: this might not work on some apps.
- DWORD ret;
- if (!WriteFile(err, buf, count, &ret, 0))
- return 0;
- return ret;
-}
-
-// FIXME: Looks like these functions are not needed and are linked in by the
-// code unreachable on Windows. We should clean this up.
-uptr AsanRead(int fd, void *buf, uptr count) {
- UNIMPLEMENTED();
-}
-
-int AsanClose(int fd) {
- UNIMPLEMENTED();
-}
-
// ---------------------- Stacktraces, symbols, etc. ---------------- {{{1
static AsanLock dbghelp_lock(LINKER_INITIALIZED);
static bool dbghelp_initialized = false;
OpenPOWER on IntegriCloud