Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions clang/lib/Driver/ToolChain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1644,6 +1644,8 @@ SanitizerMask ToolChain::getSupportedSanitizers() const {
Res |= SanitizerKind::ShadowCallStack;
if (getTriple().isAArch64(64))
Res |= SanitizerKind::MemTag;
if (getTriple().isAMDGPU())
Res |= SanitizerKind::Address;
return Res;
}

Expand Down
10 changes: 6 additions & 4 deletions clang/lib/Driver/ToolChains/Gnu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -437,10 +437,12 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
}

// Make sure openmp finds it libomp.so before all others.
if (Args.hasArg(options::OPT_fopenmp) ||
JA.isHostOffloading(Action::OFK_OpenMP)) {
addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH");
CmdArgs.push_back(Args.MakeArgString("-L" + D.Dir + "/../lib"));
if (!Args.hasArg(options::OPT_fsanitize_EQ)) {
if (Args.hasArg(options::OPT_fopenmp) ||
JA.isHostOffloading(Action::OFK_OpenMP)) {
addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH");
CmdArgs.push_back(Args.MakeArgString("-L" + D.Dir + "/../lib"));
}
}

Args.addAllArgs(CmdArgs, {options::OPT_L, options::OPT_u});
Expand Down
2 changes: 2 additions & 0 deletions offload/libomptarget/exports
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ VERS1.0 {
__ockl_dm_alloc;
__ockl_dm_dealloc;
__ockl_devmem_request;
__asan_malloc_impl;
__asan_free_impl;
llvm_omp_target_alloc_host;
llvm_omp_target_alloc_shared;
llvm_omp_target_alloc_device;
Expand Down
2 changes: 2 additions & 0 deletions offload/plugins-nextgen/common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ if(OFFLOAD_ENABLE_EMISSARY_APIS)
src/Emissary.cpp
src/EmissaryFortrt.cpp
src/EmissaryPrint.cpp
src/EmissarySanitizer.cpp
)
endif()

Expand Down Expand Up @@ -89,6 +90,7 @@ target_include_directories(PluginCommon PUBLIC
${LIBOMPTARGET_LLVM_INCLUDE_DIRS}
${LIBOMPTARGET_BINARY_INCLUDE_DIR}
${LIBOMPTARGET_INCLUDE_DIR}
/home/ampandey/aomp-toolchain/rocm/aomp/include/hsa
)

set_target_properties(PluginCommon PROPERTIES POSITION_INDEPENDENT_CODE ON)
9 changes: 7 additions & 2 deletions offload/plugins-nextgen/common/include/Emissary.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,23 @@
#define OFFLOAD_EMISSARY_H

#include "../../../../openmp/device/include/EmissaryIds.h"

#include <cstdint>
extern "C" {

/// Called by rpc after receiving emissary argument buffer
emis_return_t Emissary(char *data);
emis_return_t Emissary(char *data, int NumLanes, int DeviceID);

/// Called by Emissary for all Fortrt emissary functions
emis_return_t EmissaryFortrt(char *data, emisArgBuf_t *ab);

/// Called by Emissary for all misc print functions
emis_return_t EmissaryPrint(char *data, emisArgBuf_t *ab);

/// Called by Emissary for all Sanitizer categories for reporting illegal
/// access.
emis_return_t EmissarySanitizer(emisArgBuf_t *ab, emis_argptr_t *arg[MAXVARGS],
int NumLanes, int DeviceID);

/// Called by Emissary for all MPI emissary API functions
__attribute((weak)) emis_return_t EmissaryMPI(char *data, emisArgBuf_t *ab,
emis_argptr_t *arg[MAXVARGS]);
Expand Down
9 changes: 8 additions & 1 deletion offload/plugins-nextgen/common/src/Emissary.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

#include "Emissary.h"

extern "C" emis_return_t Emissary(char *data) {
extern "C" emis_return_t Emissary(char *data, int NumLanes, int DeviceID) {
emisArgBuf_t ab;
emisExtractArgBuf(data, &ab);
emis_return_t result = 0;
Expand Down Expand Up @@ -59,6 +59,13 @@ extern "C" emis_return_t Emissary(char *data) {
result = EmissaryReserve(data, &ab, args);
break;
}
case EMIS_ID_SANITIZER: {
if (EmissaryBuildVargs(ab.NumArgs, ab.keyptr, ab.argptr, ab.strptr,
&ab.data_not_used, &args[0]) != _RC_SUCCESS)
return (emis_return_t)0;
result = EmissarySanitizer(&ab, args, NumLanes, DeviceID);
break;
}
default:
fprintf(stderr, "EMIS_ID:%d fnid:%d not supported\n", ab.emisid,
ab.emisfnid);
Expand Down
6 changes: 0 additions & 6 deletions offload/plugins-nextgen/common/src/EmissaryPrint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,6 @@ extern "C" emis_return_t EmissaryPrint(char *data, emisArgBuf_t *ab) {
rc = emissary_fprintf(&return_value, ab);
break;
}
case _ockl_asan_report_idx: {
fprintf(stderr, " asan_report not yet implemented\n");
return_value = 0;
rc = _RC_STATUS_ERROR;
break;
}
case _print_INVALID:
default: {
fprintf(stderr, " INVALID emissary function id (%d) for PRINT API \n",
Expand Down
Loading