From 8c86d97fa8d92b3db574b73efad177b54fccb292 Mon Sep 17 00:00:00 2001 From: lukemartinlogan Date: Tue, 18 Oct 2022 12:55:55 -0500 Subject: [PATCH] Ensure that all intercepted C functions and types are encapsulated in extern C --- adapter/adapter_generator/mpiio.py | 5 +- adapter/adapter_generator/stdio.py | 5 +- adapter/mpiio/real_api.h | 460 ++++++++--------------------- adapter/stdio/real_api.h | 206 +++---------- 4 files changed, 170 insertions(+), 506 deletions(-) diff --git a/adapter/adapter_generator/mpiio.py b/adapter/adapter_generator/mpiio.py index 8bbaa02b2..39df5e39d 100644 --- a/adapter/adapter_generator/mpiio.py +++ b/adapter/adapter_generator/mpiio.py @@ -33,7 +33,10 @@ includes = [ "", - "" + "", + "\"interceptor.h\"", + "\"filesystem/filesystem.h\"", + "\"filesystem/metadata_manager.h\"" ] ApiClass("mpiio", apis, includes) \ No newline at end of file diff --git a/adapter/adapter_generator/stdio.py b/adapter/adapter_generator/stdio.py index cc4413fa8..b8de6ba05 100644 --- a/adapter/adapter_generator/stdio.py +++ b/adapter/adapter_generator/stdio.py @@ -32,7 +32,10 @@ ] includes = [ - "\"cstdio.h\"" + "", + "\"interceptor.h\"", + "\"filesystem/filesystem.h\"", + "\"filesystem/metadata_manager.h\"" ] ApiClass("stdio", apis, includes) \ No newline at end of file diff --git a/adapter/mpiio/real_api.h b/adapter/mpiio/real_api.h index d95bfe2c8..58e21a15a 100644 --- a/adapter/mpiio/real_api.h +++ b/adapter/mpiio/real_api.h @@ -18,451 +18,221 @@ #include #include #include +#include "interceptor.h" +#include "filesystem/filesystem.h" +#include "filesystem/metadata_manager.h" + +#define REQUIRE_API(api_name) \ + if (real_api->api_name == nullptr) { \ + LOG(FATAL) << "HERMES Adapter failed to map symbol: " \ + #api_name << std::endl; \ + exit(1); + +extern "C" { +typedef int (*MPI_Init_t)(int * argc, char *** argv); +typedef int (*MPI_Finalize_t)( void); +typedef int (*MPI_Wait_t)(MPI_Request * req, MPI_Status * status); +typedef int (*MPI_Waitall_t)(int count, MPI_Request * req, MPI_Status * status); +typedef int (*MPI_File_open_t)(MPI_Comm comm, const char * filename, int amode, MPI_Info info, MPI_File * fh); +typedef int (*MPI_File_close_t)(MPI_File * fh); +typedef int (*MPI_File_seek_shared_t)(MPI_File fh, MPI_Offset offset, int whence); +typedef int (*MPI_File_seek_t)(MPI_File fh, MPI_Offset offset, int whence); +typedef int (*MPI_File_get_position_t)(MPI_File fh, MPI_Offset * offset); +typedef int (*MPI_File_read_all_t)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_read_at_all_t)(MPI_File fh, MPI_Offset offset, void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_read_at_t)(MPI_File fh, MPI_Offset offset, void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_read_t)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_read_ordered_t)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_read_shared_t)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_write_all_t)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_write_at_all_t)(MPI_File fh, MPI_Offset offset, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_write_at_t)(MPI_File fh, MPI_Offset offset, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_write_t)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_write_ordered_t)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_write_shared_t)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status); +typedef int (*MPI_File_iread_at_t)(MPI_File fh, MPI_Offset offset, void * buf, int count, MPI_Datatype datatype, MPI_Request * request); +typedef int (*MPI_File_iread_t)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Request * request); +typedef int (*MPI_File_iread_shared_t)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Request * request); +typedef int (*MPI_File_iwrite_at_t)(MPI_File fh, MPI_Offset offset, const void * buf, int count, MPI_Datatype datatype, MPI_Request * request); +typedef int (*MPI_File_iwrite_t)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Request * request); +typedef int (*MPI_File_iwrite_shared_t)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Request * request); +typedef int (*MPI_File_sync_t)(MPI_File fh); +} namespace hermes::adapter::mpiio { class API { public: - typedef int (*MPI_Init_t)(int * argc, char *** argv); int (*MPI_Init)(int * argc, char *** argv) = nullptr; - typedef int (*MPI_Finalize_t)( void); int (*MPI_Finalize)( void) = nullptr; - typedef int (*MPI_Wait_t)(MPI_Request * req, MPI_Status * status); int (*MPI_Wait)(MPI_Request * req, MPI_Status * status) = nullptr; - typedef int (*MPI_Waitall_t)(int count, MPI_Request * req, - MPI_Status * status); - int (*MPI_Waitall)(int count, MPI_Request * req, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_open_t)(MPI_Comm comm, const char * filename, - int amode, MPI_Info info, MPI_File * fh); - int (*MPI_File_open)(MPI_Comm comm, const char * filename, int amode, - MPI_Info info, MPI_File * fh) = nullptr; - typedef int (*MPI_File_close_t)(MPI_File * fh); + int (*MPI_Waitall)(int count, MPI_Request * req, MPI_Status * status) = nullptr; + int (*MPI_File_open)(MPI_Comm comm, const char * filename, int amode, MPI_Info info, MPI_File * fh) = nullptr; int (*MPI_File_close)(MPI_File * fh) = nullptr; - typedef int (*MPI_File_seek_shared_t)(MPI_File fh, - MPI_Offset offset, int whence); - int (*MPI_File_seek_shared)(MPI_File fh, MPI_Offset offset, - int whence) = nullptr; - typedef int (*MPI_File_seek_t)(MPI_File fh, MPI_Offset offset, int whence); + int (*MPI_File_seek_shared)(MPI_File fh, MPI_Offset offset, int whence) = nullptr; int (*MPI_File_seek)(MPI_File fh, MPI_Offset offset, int whence) = nullptr; - typedef int (*MPI_File_get_position_t)(MPI_File fh, MPI_Offset * offset); int (*MPI_File_get_position)(MPI_File fh, MPI_Offset * offset) = nullptr; - typedef int (*MPI_File_read_all_t)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_read_all)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_read_at_all_t)(MPI_File fh, MPI_Offset offset, - void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_read_at_all)(MPI_File fh, MPI_Offset offset, void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_read_at_t)(MPI_File fh, MPI_Offset offset, - void * buf, int count, - MPI_Datatype datatype, MPI_Status * status); - int (*MPI_File_read_at)(MPI_File fh, MPI_Offset offset, - void * buf, int count, MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_read_t)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, MPI_Status * status); - int (*MPI_File_read)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, MPI_Status * status) = nullptr; - typedef int (*MPI_File_read_ordered_t)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_read_ordered)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_read_shared_t)(MPI_File fh, void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_read_shared)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_write_all_t)(MPI_File fh, const void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_write_all)(MPI_File fh, const void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_write_at_all_t)(MPI_File fh, MPI_Offset offset, - const void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_write_at_all)(MPI_File fh, MPI_Offset offset, - const void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_write_at_t)(MPI_File fh, MPI_Offset offset, - const void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_write_at)(MPI_File fh, MPI_Offset offset, const void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_write_t)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, MPI_Status * status); - int (*MPI_File_write)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, MPI_Status * status) = nullptr; - typedef int (*MPI_File_write_ordered_t)(MPI_File fh, const void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_write_ordered)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_write_shared_t)(MPI_File fh, const void * buf, - int count, MPI_Datatype datatype, - MPI_Status * status); - int (*MPI_File_write_shared)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, - MPI_Status * status) = nullptr; - typedef int (*MPI_File_iread_at_t)(MPI_File fh, MPI_Offset offset, - void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request); - int (*MPI_File_iread_at)(MPI_File fh, MPI_Offset offset, void * buf, - int count, MPI_Datatype datatype, - MPI_Request * request) = nullptr; - typedef int (*MPI_File_iread_t)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, MPI_Request * request); - int (*MPI_File_iread)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, MPI_Request * request) = nullptr; - typedef int (*MPI_File_iread_shared_t)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request); - int (*MPI_File_iread_shared)(MPI_File fh, void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request) = nullptr; - typedef int (*MPI_File_iwrite_at_t)(MPI_File fh, MPI_Offset offset, - const void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request); - int (*MPI_File_iwrite_at)(MPI_File fh, MPI_Offset offset, const void * buf, - int count, MPI_Datatype datatype, - MPI_Request * request) = nullptr; - typedef int (*MPI_File_iwrite_t)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request); - int (*MPI_File_iwrite)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request) = nullptr; - typedef int (*MPI_File_iwrite_shared_t)(MPI_File fh, const void * buf, - int count, MPI_Datatype datatype, - MPI_Request * request); - int (*MPI_File_iwrite_shared)(MPI_File fh, const void * buf, int count, - MPI_Datatype datatype, - MPI_Request * request) = nullptr; - typedef int (*MPI_File_sync_t)(MPI_File fh); + int (*MPI_File_read_all)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_read_at_all)(MPI_File fh, MPI_Offset offset, void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_read_at)(MPI_File fh, MPI_Offset offset, void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_read)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_read_ordered)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_read_shared)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_write_all)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_write_at_all)(MPI_File fh, MPI_Offset offset, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_write_at)(MPI_File fh, MPI_Offset offset, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_write)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_write_ordered)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_write_shared)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Status * status) = nullptr; + int (*MPI_File_iread_at)(MPI_File fh, MPI_Offset offset, void * buf, int count, MPI_Datatype datatype, MPI_Request * request) = nullptr; + int (*MPI_File_iread)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Request * request) = nullptr; + int (*MPI_File_iread_shared)(MPI_File fh, void * buf, int count, MPI_Datatype datatype, MPI_Request * request) = nullptr; + int (*MPI_File_iwrite_at)(MPI_File fh, MPI_Offset offset, const void * buf, int count, MPI_Datatype datatype, MPI_Request * request) = nullptr; + int (*MPI_File_iwrite)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Request * request) = nullptr; + int (*MPI_File_iwrite_shared)(MPI_File fh, const void * buf, int count, MPI_Datatype datatype, MPI_Request * request) = nullptr; int (*MPI_File_sync)(MPI_File fh) = nullptr; + API() { - void *is_intercepted = (void*)dlsym(RTLD_DEFAULT, - "mpiio_intercepted"); + void *is_intercepted = (void*)dlsym(RTLD_DEFAULT, "mpiio_intercepted"); if (is_intercepted) { MPI_Init = (MPI_Init_t)dlsym(RTLD_NEXT, "MPI_Init"); } else { MPI_Init = (MPI_Init_t)dlsym(RTLD_DEFAULT, "MPI_Init"); } - if (MPI_Init == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_Init" << std::endl; - } if (is_intercepted) { - MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_NEXT, - "MPI_Finalize"); + MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_NEXT, "MPI_Finalize"); } else { - MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_DEFAULT, - "MPI_Finalize"); - } - if (MPI_Finalize == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_Finalize" << std::endl; + MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_DEFAULT, "MPI_Finalize"); } if (is_intercepted) { MPI_Wait = (MPI_Wait_t)dlsym(RTLD_NEXT, "MPI_Wait"); } else { MPI_Wait = (MPI_Wait_t)dlsym(RTLD_DEFAULT, "MPI_Wait"); } - if (MPI_Wait == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_Wait" << std::endl; - } if (is_intercepted) { - MPI_Waitall = (MPI_Waitall_t)dlsym(RTLD_NEXT, - "MPI_Waitall"); + MPI_Waitall = (MPI_Waitall_t)dlsym(RTLD_NEXT, "MPI_Waitall"); } else { - MPI_Waitall = (MPI_Waitall_t)dlsym(RTLD_DEFAULT, - "MPI_Waitall"); - } - if (MPI_Waitall == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_Waitall" << std::endl; + MPI_Waitall = (MPI_Waitall_t)dlsym(RTLD_DEFAULT, "MPI_Waitall"); } if (is_intercepted) { - MPI_File_open = (MPI_File_open_t)dlsym(RTLD_NEXT, - "MPI_File_open"); + MPI_File_open = (MPI_File_open_t)dlsym(RTLD_NEXT, "MPI_File_open"); } else { - MPI_File_open = (MPI_File_open_t)dlsym(RTLD_DEFAULT, - "MPI_File_open"); - } - if (MPI_File_open == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_open" << std::endl; + MPI_File_open = (MPI_File_open_t)dlsym(RTLD_DEFAULT, "MPI_File_open"); } if (is_intercepted) { - MPI_File_close = (MPI_File_close_t)dlsym(RTLD_NEXT, - "MPI_File_close"); + MPI_File_close = (MPI_File_close_t)dlsym(RTLD_NEXT, "MPI_File_close"); } else { - MPI_File_close = (MPI_File_close_t)dlsym(RTLD_DEFAULT, - "MPI_File_close"); - } - if (MPI_File_close == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_close" << std::endl; + MPI_File_close = (MPI_File_close_t)dlsym(RTLD_DEFAULT, "MPI_File_close"); } if (is_intercepted) { - MPI_File_seek_shared = (MPI_File_seek_shared_t) - dlsym(RTLD_NEXT, "MPI_File_seek_shared"); + MPI_File_seek_shared = (MPI_File_seek_shared_t)dlsym(RTLD_NEXT, "MPI_File_seek_shared"); } else { - MPI_File_seek_shared = (MPI_File_seek_shared_t) - dlsym(RTLD_DEFAULT, "MPI_File_seek_shared"); - } - if (MPI_File_seek_shared == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_seek_shared" << std::endl; + MPI_File_seek_shared = (MPI_File_seek_shared_t)dlsym(RTLD_DEFAULT, "MPI_File_seek_shared"); } if (is_intercepted) { - MPI_File_seek = (MPI_File_seek_t) - dlsym(RTLD_NEXT, "MPI_File_seek"); + MPI_File_seek = (MPI_File_seek_t)dlsym(RTLD_NEXT, "MPI_File_seek"); } else { - MPI_File_seek = (MPI_File_seek_t) - dlsym(RTLD_DEFAULT, "MPI_File_seek"); - } - if (MPI_File_seek == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_seek" << std::endl; + MPI_File_seek = (MPI_File_seek_t)dlsym(RTLD_DEFAULT, "MPI_File_seek"); } if (is_intercepted) { - MPI_File_get_position = (MPI_File_get_position_t) - dlsym(RTLD_NEXT, "MPI_File_get_position"); + MPI_File_get_position = (MPI_File_get_position_t)dlsym(RTLD_NEXT, "MPI_File_get_position"); } else { - MPI_File_get_position = (MPI_File_get_position_t) - dlsym(RTLD_DEFAULT, "MPI_File_get_position"); - } - if (MPI_File_get_position == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_get_position" << std::endl; + MPI_File_get_position = (MPI_File_get_position_t)dlsym(RTLD_DEFAULT, "MPI_File_get_position"); } if (is_intercepted) { - MPI_File_read_all = (MPI_File_read_all_t) - dlsym(RTLD_NEXT, "MPI_File_read_all"); + MPI_File_read_all = (MPI_File_read_all_t)dlsym(RTLD_NEXT, "MPI_File_read_all"); } else { - MPI_File_read_all = (MPI_File_read_all_t) - dlsym(RTLD_DEFAULT, "MPI_File_read_all"); - } - if (MPI_File_read_all == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_read_all" << std::endl; + MPI_File_read_all = (MPI_File_read_all_t)dlsym(RTLD_DEFAULT, "MPI_File_read_all"); } if (is_intercepted) { - MPI_File_read_at_all = (MPI_File_read_at_all_t) - dlsym(RTLD_NEXT, "MPI_File_read_at_all"); + MPI_File_read_at_all = (MPI_File_read_at_all_t)dlsym(RTLD_NEXT, "MPI_File_read_at_all"); } else { - MPI_File_read_at_all = (MPI_File_read_at_all_t) - dlsym(RTLD_DEFAULT, "MPI_File_read_at_all"); - } - if (MPI_File_read_at_all == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_read_at_all" << std::endl; + MPI_File_read_at_all = (MPI_File_read_at_all_t)dlsym(RTLD_DEFAULT, "MPI_File_read_at_all"); } if (is_intercepted) { - MPI_File_read_at = (MPI_File_read_at_t) - dlsym(RTLD_NEXT, "MPI_File_read_at"); + MPI_File_read_at = (MPI_File_read_at_t)dlsym(RTLD_NEXT, "MPI_File_read_at"); } else { - MPI_File_read_at = (MPI_File_read_at_t) - dlsym(RTLD_DEFAULT, "MPI_File_read_at"); - } - if (MPI_File_read_at == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_read_at" << std::endl; + MPI_File_read_at = (MPI_File_read_at_t)dlsym(RTLD_DEFAULT, "MPI_File_read_at"); } if (is_intercepted) { - MPI_File_read = (MPI_File_read_t) - dlsym(RTLD_NEXT, "MPI_File_read"); + MPI_File_read = (MPI_File_read_t)dlsym(RTLD_NEXT, "MPI_File_read"); } else { - MPI_File_read = (MPI_File_read_t) - dlsym(RTLD_DEFAULT, "MPI_File_read"); - } - if (MPI_File_read == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_read" << std::endl; + MPI_File_read = (MPI_File_read_t)dlsym(RTLD_DEFAULT, "MPI_File_read"); } if (is_intercepted) { - MPI_File_read_ordered = (MPI_File_read_ordered_t) - dlsym(RTLD_NEXT, "MPI_File_read_ordered"); + MPI_File_read_ordered = (MPI_File_read_ordered_t)dlsym(RTLD_NEXT, "MPI_File_read_ordered"); } else { - MPI_File_read_ordered = (MPI_File_read_ordered_t) - dlsym(RTLD_DEFAULT, "MPI_File_read_ordered"); - } - if (MPI_File_read_ordered == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_read_ordered" << std::endl; + MPI_File_read_ordered = (MPI_File_read_ordered_t)dlsym(RTLD_DEFAULT, "MPI_File_read_ordered"); } if (is_intercepted) { - MPI_File_read_shared = (MPI_File_read_shared_t) - dlsym(RTLD_NEXT, "MPI_File_read_shared"); + MPI_File_read_shared = (MPI_File_read_shared_t)dlsym(RTLD_NEXT, "MPI_File_read_shared"); } else { - MPI_File_read_shared = (MPI_File_read_shared_t) - dlsym(RTLD_DEFAULT, "MPI_File_read_shared"); - } - if (MPI_File_read_shared == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_read_shared" << std::endl; + MPI_File_read_shared = (MPI_File_read_shared_t)dlsym(RTLD_DEFAULT, "MPI_File_read_shared"); } if (is_intercepted) { - MPI_File_write_all = (MPI_File_write_all_t) - dlsym(RTLD_NEXT, "MPI_File_write_all"); + MPI_File_write_all = (MPI_File_write_all_t)dlsym(RTLD_NEXT, "MPI_File_write_all"); } else { - MPI_File_write_all = (MPI_File_write_all_t) - dlsym(RTLD_DEFAULT, "MPI_File_write_all"); - } - if (MPI_File_write_all == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_write_all" << std::endl; + MPI_File_write_all = (MPI_File_write_all_t)dlsym(RTLD_DEFAULT, "MPI_File_write_all"); } if (is_intercepted) { - MPI_File_write_at_all = (MPI_File_write_at_all_t) - dlsym(RTLD_NEXT, "MPI_File_write_at_all"); + MPI_File_write_at_all = (MPI_File_write_at_all_t)dlsym(RTLD_NEXT, "MPI_File_write_at_all"); } else { - MPI_File_write_at_all = (MPI_File_write_at_all_t) - dlsym(RTLD_DEFAULT, "MPI_File_write_at_all"); - } - if (MPI_File_write_at_all == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_write_at_all" << std::endl; + MPI_File_write_at_all = (MPI_File_write_at_all_t)dlsym(RTLD_DEFAULT, "MPI_File_write_at_all"); } if (is_intercepted) { - MPI_File_write_at = (MPI_File_write_at_t) - dlsym(RTLD_NEXT, "MPI_File_write_at"); + MPI_File_write_at = (MPI_File_write_at_t)dlsym(RTLD_NEXT, "MPI_File_write_at"); } else { - MPI_File_write_at = (MPI_File_write_at_t) - dlsym(RTLD_DEFAULT, "MPI_File_write_at"); - } - if (MPI_File_write_at == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_write_at" << std::endl; + MPI_File_write_at = (MPI_File_write_at_t)dlsym(RTLD_DEFAULT, "MPI_File_write_at"); } if (is_intercepted) { - MPI_File_write = (MPI_File_write_t) - dlsym(RTLD_NEXT, "MPI_File_write"); + MPI_File_write = (MPI_File_write_t)dlsym(RTLD_NEXT, "MPI_File_write"); } else { - MPI_File_write = (MPI_File_write_t) - dlsym(RTLD_DEFAULT, "MPI_File_write"); - } - if (MPI_File_write == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_write" << std::endl; + MPI_File_write = (MPI_File_write_t)dlsym(RTLD_DEFAULT, "MPI_File_write"); } if (is_intercepted) { - MPI_File_write_ordered = (MPI_File_write_ordered_t) - dlsym(RTLD_NEXT, "MPI_File_write_ordered"); + MPI_File_write_ordered = (MPI_File_write_ordered_t)dlsym(RTLD_NEXT, "MPI_File_write_ordered"); } else { - MPI_File_write_ordered = (MPI_File_write_ordered_t) - dlsym(RTLD_DEFAULT, "MPI_File_write_ordered"); - } - if (MPI_File_write_ordered == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_write_ordered" << std::endl; + MPI_File_write_ordered = (MPI_File_write_ordered_t)dlsym(RTLD_DEFAULT, "MPI_File_write_ordered"); } if (is_intercepted) { - MPI_File_write_shared = (MPI_File_write_shared_t) - dlsym(RTLD_NEXT, "MPI_File_write_shared"); + MPI_File_write_shared = (MPI_File_write_shared_t)dlsym(RTLD_NEXT, "MPI_File_write_shared"); } else { - MPI_File_write_shared = (MPI_File_write_shared_t) - dlsym(RTLD_DEFAULT, "MPI_File_write_shared"); - } - if (MPI_File_write_shared == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_write_shared" << std::endl; + MPI_File_write_shared = (MPI_File_write_shared_t)dlsym(RTLD_DEFAULT, "MPI_File_write_shared"); } if (is_intercepted) { - MPI_File_iread_at = (MPI_File_iread_at_t) - dlsym(RTLD_NEXT, "MPI_File_iread_at"); + MPI_File_iread_at = (MPI_File_iread_at_t)dlsym(RTLD_NEXT, "MPI_File_iread_at"); } else { - MPI_File_iread_at = (MPI_File_iread_at_t) - dlsym(RTLD_DEFAULT, "MPI_File_iread_at"); - } - if (MPI_File_iread_at == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_iread_at" << std::endl; + MPI_File_iread_at = (MPI_File_iread_at_t)dlsym(RTLD_DEFAULT, "MPI_File_iread_at"); } if (is_intercepted) { - MPI_File_iread = (MPI_File_iread_t) - dlsym(RTLD_NEXT, "MPI_File_iread"); + MPI_File_iread = (MPI_File_iread_t)dlsym(RTLD_NEXT, "MPI_File_iread"); } else { - MPI_File_iread = (MPI_File_iread_t) - dlsym(RTLD_DEFAULT, "MPI_File_iread"); - } - if (MPI_File_iread == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_iread" << std::endl; + MPI_File_iread = (MPI_File_iread_t)dlsym(RTLD_DEFAULT, "MPI_File_iread"); } if (is_intercepted) { - MPI_File_iread_shared = (MPI_File_iread_shared_t) - dlsym(RTLD_NEXT, "MPI_File_iread_shared"); + MPI_File_iread_shared = (MPI_File_iread_shared_t)dlsym(RTLD_NEXT, "MPI_File_iread_shared"); } else { - MPI_File_iread_shared = (MPI_File_iread_shared_t) - dlsym(RTLD_DEFAULT, "MPI_File_iread_shared"); - } - if (MPI_File_iread_shared == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_iread_shared" << std::endl; + MPI_File_iread_shared = (MPI_File_iread_shared_t)dlsym(RTLD_DEFAULT, "MPI_File_iread_shared"); } if (is_intercepted) { - MPI_File_iwrite_at = (MPI_File_iwrite_at_t) - dlsym(RTLD_NEXT, "MPI_File_iwrite_at"); + MPI_File_iwrite_at = (MPI_File_iwrite_at_t)dlsym(RTLD_NEXT, "MPI_File_iwrite_at"); } else { - MPI_File_iwrite_at = (MPI_File_iwrite_at_t) - dlsym(RTLD_DEFAULT, "MPI_File_iwrite_at"); - } - if (MPI_File_iwrite_at == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_iwrite_at" << std::endl; + MPI_File_iwrite_at = (MPI_File_iwrite_at_t)dlsym(RTLD_DEFAULT, "MPI_File_iwrite_at"); } if (is_intercepted) { - MPI_File_iwrite = (MPI_File_iwrite_t) - dlsym(RTLD_NEXT, "MPI_File_iwrite"); + MPI_File_iwrite = (MPI_File_iwrite_t)dlsym(RTLD_NEXT, "MPI_File_iwrite"); } else { - MPI_File_iwrite = (MPI_File_iwrite_t) - dlsym(RTLD_DEFAULT, "MPI_File_iwrite"); - } - if (MPI_File_iwrite == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_iwrite" << std::endl; + MPI_File_iwrite = (MPI_File_iwrite_t)dlsym(RTLD_DEFAULT, "MPI_File_iwrite"); } if (is_intercepted) { - MPI_File_iwrite_shared = (MPI_File_iwrite_shared_t) - dlsym(RTLD_NEXT, "MPI_File_iwrite_shared"); + MPI_File_iwrite_shared = (MPI_File_iwrite_shared_t)dlsym(RTLD_NEXT, "MPI_File_iwrite_shared"); } else { - MPI_File_iwrite_shared = (MPI_File_iwrite_shared_t) - dlsym(RTLD_DEFAULT, "MPI_File_iwrite_shared"); - } - if (MPI_File_iwrite_shared == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_iwrite_shared" << std::endl; + MPI_File_iwrite_shared = (MPI_File_iwrite_shared_t)dlsym(RTLD_DEFAULT, "MPI_File_iwrite_shared"); } if (is_intercepted) { - MPI_File_sync = (MPI_File_sync_t) - dlsym(RTLD_NEXT, "MPI_File_sync"); + MPI_File_sync = (MPI_File_sync_t)dlsym(RTLD_NEXT, "MPI_File_sync"); } else { - MPI_File_sync = (MPI_File_sync_t) - dlsym(RTLD_DEFAULT, "MPI_File_sync"); - } - if (MPI_File_sync == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_File_sync" << std::endl; + MPI_File_sync = (MPI_File_sync_t)dlsym(RTLD_DEFAULT, "MPI_File_sync"); } } }; diff --git a/adapter/stdio/real_api.h b/adapter/stdio/real_api.h index c4d702452..4ff3ae343 100644 --- a/adapter/stdio/real_api.h +++ b/adapter/stdio/real_api.h @@ -16,335 +16,223 @@ #include #include #include +#include #include "interceptor.h" #include "filesystem/filesystem.h" -#include +#include "filesystem/metadata_manager.h" + +#define REQUIRE_API(api_name) \ + if (real_api->api_name == nullptr) { \ + LOG(FATAL) << "HERMES Adapter failed to map symbol: " \ + #api_name << std::endl; \ + exit(1); + +extern "C" { +typedef int (*MPI_Init_t)(int * argc, char *** argv); +typedef int (*MPI_Finalize_t)( void); +typedef FILE * (*fopen_t)(const char * path, const char * mode); +typedef FILE * (*fopen64_t)(const char * path, const char * mode); +typedef FILE * (*fdopen_t)(int fd, const char * mode); +typedef FILE * (*freopen_t)(const char * path, const char * mode, FILE * stream); +typedef FILE * (*freopen64_t)(const char * path, const char * mode, FILE * stream); +typedef int (*fflush_t)(FILE * fp); +typedef int (*fclose_t)(FILE * fp); +typedef size_t (*fwrite_t)(const void * ptr, size_t size, size_t nmemb, FILE * fp); +typedef int (*fputc_t)(int c, FILE * fp); +typedef int (*fgetpos_t)(FILE * fp, fpos_t * pos); +typedef int (*fgetpos64_t)(FILE * fp, fpos64_t * pos); +typedef int (*putc_t)(int c, FILE * fp); +typedef int (*putw_t)(int w, FILE * fp); +typedef int (*fputs_t)(const char * s, FILE * stream); +typedef size_t (*fread_t)(void * ptr, size_t size, size_t nmemb, FILE * stream); +typedef int (*fgetc_t)(FILE * stream); +typedef int (*getc_t)(FILE * stream); +typedef int (*getw_t)(FILE * stream); +typedef char * (*fgets_t)(char * s, int size, FILE * stream); +typedef void (*rewind_t)(FILE * stream); +typedef int (*fseek_t)(FILE * stream, long offset, int whence); +typedef int (*fseeko_t)(FILE * stream, off_t offset, int whence); +typedef int (*fseeko64_t)(FILE * stream, off64_t offset, int whence); +typedef int (*fsetpos_t)(FILE * stream, const fpos_t * pos); +typedef int (*fsetpos64_t)(FILE * stream, const fpos64_t * pos); +typedef long int (*ftell_t)(FILE * fp); +} namespace hermes::adapter::stdio { class API { public: - typedef int (*MPI_Init_t)(int * argc, char *** argv); int (*MPI_Init)(int * argc, char *** argv) = nullptr; - typedef int (*MPI_Finalize_t)( void); int (*MPI_Finalize)( void) = nullptr; - typedef FILE * (*fopen_t)(const char * path, const char * mode); FILE * (*fopen)(const char * path, const char * mode) = nullptr; - typedef FILE * (*fopen64_t)(const char * path, const char * mode); FILE * (*fopen64)(const char * path, const char * mode) = nullptr; - typedef FILE * (*fdopen_t)(int fd, const char * mode); FILE * (*fdopen)(int fd, const char * mode) = nullptr; - typedef FILE * (*freopen_t)(const char * path, - const char * mode, FILE * stream); - FILE * (*freopen)(const char * path, - const char * mode, FILE * stream) = nullptr; - typedef FILE * (*freopen64_t)(const char * path, - const char * mode, FILE * stream); - FILE * (*freopen64)(const char * path, - const char * mode, FILE * stream) = nullptr; - typedef int (*fflush_t)(FILE * fp); + FILE * (*freopen)(const char * path, const char * mode, FILE * stream) = nullptr; + FILE * (*freopen64)(const char * path, const char * mode, FILE * stream) = nullptr; int (*fflush)(FILE * fp) = nullptr; - typedef int (*fclose_t)(FILE * fp); int (*fclose)(FILE * fp) = nullptr; - typedef size_t (*fwrite_t)(const void * ptr, size_t size, - size_t nmemb, FILE * fp); - size_t (*fwrite)(const void * ptr, size_t size, - size_t nmemb, FILE * fp) = nullptr; - typedef int (*fputc_t)(int c, FILE * fp); + size_t (*fwrite)(const void * ptr, size_t size, size_t nmemb, FILE * fp) = nullptr; int (*fputc)(int c, FILE * fp) = nullptr; - typedef int (*fgetpos_t)(FILE * fp, fpos_t * pos); int (*fgetpos)(FILE * fp, fpos_t * pos) = nullptr; - typedef int (*fgetpos64_t)(FILE * fp, fpos64_t * pos); int (*fgetpos64)(FILE * fp, fpos64_t * pos) = nullptr; - typedef int (*putc_t)(int c, FILE * fp); int (*putc)(int c, FILE * fp) = nullptr; - typedef int (*putw_t)(int w, FILE * fp); int (*putw)(int w, FILE * fp) = nullptr; - typedef int (*fputs_t)(const char * s, FILE * stream); int (*fputs)(const char * s, FILE * stream) = nullptr; - typedef size_t (*fread_t)(void * ptr, size_t size, - size_t nmemb, FILE * stream); - size_t (*fread)(void * ptr, size_t size, - size_t nmemb, FILE * stream) = nullptr; - typedef int (*fgetc_t)(FILE * stream); + size_t (*fread)(void * ptr, size_t size, size_t nmemb, FILE * stream) = nullptr; int (*fgetc)(FILE * stream) = nullptr; - typedef int (*getc_t)(FILE * stream); int (*getc)(FILE * stream) = nullptr; - typedef int (*getw_t)(FILE * stream); int (*getw)(FILE * stream) = nullptr; - typedef char * (*fgets_t)(char * s, int size, FILE * stream); char * (*fgets)(char * s, int size, FILE * stream) = nullptr; - typedef void (*rewind_t)(FILE * stream); void (*rewind)(FILE * stream) = nullptr; - typedef int (*fseek_t)(FILE * stream, long offset, int whence); int (*fseek)(FILE * stream, long offset, int whence) = nullptr; - typedef int (*fseeko_t)(FILE * stream, off_t offset, int whence); int (*fseeko)(FILE * stream, off_t offset, int whence) = nullptr; - typedef int (*fseeko64_t)(FILE * stream, off64_t offset, int whence); int (*fseeko64)(FILE * stream, off64_t offset, int whence) = nullptr; - typedef int (*fsetpos_t)(FILE * stream, const fpos_t * pos); int (*fsetpos)(FILE * stream, const fpos_t * pos) = nullptr; - typedef int (*fsetpos64_t)(FILE * stream, const fpos64_t * pos); int (*fsetpos64)(FILE * stream, const fpos64_t * pos) = nullptr; - typedef long int (*ftell_t)(FILE * fp); long int (*ftell)(FILE * fp) = nullptr; + API() { - void *is_intercepted = (void*)dlsym(RTLD_DEFAULT, - "stdio_intercepted"); + void *is_intercepted = (void*)dlsym(RTLD_DEFAULT, "stdio_intercepted"); if (is_intercepted) { MPI_Init = (MPI_Init_t)dlsym(RTLD_NEXT, "MPI_Init"); } else { MPI_Init = (MPI_Init_t)dlsym(RTLD_DEFAULT, "MPI_Init"); } - if (MPI_Init == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_Init" << std::endl; - } if (is_intercepted) { - MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_NEXT, - "MPI_Finalize"); + MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_NEXT, "MPI_Finalize"); } else { - MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_DEFAULT, - "MPI_Finalize"); - } - if (MPI_Finalize == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "MPI_Finalize" << std::endl; + MPI_Finalize = (MPI_Finalize_t)dlsym(RTLD_DEFAULT, "MPI_Finalize"); } if (is_intercepted) { fopen = (fopen_t)dlsym(RTLD_NEXT, "fopen"); } else { fopen = (fopen_t)dlsym(RTLD_DEFAULT, "fopen"); } - if (fopen == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fopen" << std::endl; - } if (is_intercepted) { fopen64 = (fopen64_t)dlsym(RTLD_NEXT, "fopen64"); } else { fopen64 = (fopen64_t)dlsym(RTLD_DEFAULT, "fopen64"); } - if (fopen64 == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fopen64" << std::endl; - } if (is_intercepted) { fdopen = (fdopen_t)dlsym(RTLD_NEXT, "fdopen"); } else { fdopen = (fdopen_t)dlsym(RTLD_DEFAULT, "fdopen"); } - if (fdopen == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fdopen" << std::endl; - } if (is_intercepted) { freopen = (freopen_t)dlsym(RTLD_NEXT, "freopen"); } else { freopen = (freopen_t)dlsym(RTLD_DEFAULT, "freopen"); } - if (freopen == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "freopen" << std::endl; - } if (is_intercepted) { freopen64 = (freopen64_t)dlsym(RTLD_NEXT, "freopen64"); } else { freopen64 = (freopen64_t)dlsym(RTLD_DEFAULT, "freopen64"); } - if (freopen64 == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "freopen64" << std::endl; - } if (is_intercepted) { fflush = (fflush_t)dlsym(RTLD_NEXT, "fflush"); } else { fflush = (fflush_t)dlsym(RTLD_DEFAULT, "fflush"); } - if (fflush == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fflush" << std::endl; - } if (is_intercepted) { fclose = (fclose_t)dlsym(RTLD_NEXT, "fclose"); } else { fclose = (fclose_t)dlsym(RTLD_DEFAULT, "fclose"); } - if (fclose == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fclose" << std::endl; - } if (is_intercepted) { fwrite = (fwrite_t)dlsym(RTLD_NEXT, "fwrite"); } else { fwrite = (fwrite_t)dlsym(RTLD_DEFAULT, "fwrite"); } - if (fwrite == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fwrite" << std::endl; - } if (is_intercepted) { fputc = (fputc_t)dlsym(RTLD_NEXT, "fputc"); } else { fputc = (fputc_t)dlsym(RTLD_DEFAULT, "fputc"); } - if (fputc == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fputc" << std::endl; - } if (is_intercepted) { fgetpos = (fgetpos_t)dlsym(RTLD_NEXT, "fgetpos"); } else { fgetpos = (fgetpos_t)dlsym(RTLD_DEFAULT, "fgetpos"); } - if (fgetpos == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fgetpos" << std::endl; - } if (is_intercepted) { fgetpos64 = (fgetpos64_t)dlsym(RTLD_NEXT, "fgetpos64"); } else { fgetpos64 = (fgetpos64_t)dlsym(RTLD_DEFAULT, "fgetpos64"); } - if (fgetpos64 == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fgetpos64" << std::endl; - } if (is_intercepted) { putc = (putc_t)dlsym(RTLD_NEXT, "putc"); } else { putc = (putc_t)dlsym(RTLD_DEFAULT, "putc"); } - if (putc == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "putc" << std::endl; - } if (is_intercepted) { putw = (putw_t)dlsym(RTLD_NEXT, "putw"); } else { putw = (putw_t)dlsym(RTLD_DEFAULT, "putw"); } - if (putw == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "putw" << std::endl; - } if (is_intercepted) { fputs = (fputs_t)dlsym(RTLD_NEXT, "fputs"); } else { fputs = (fputs_t)dlsym(RTLD_DEFAULT, "fputs"); } - if (fputs == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fputs" << std::endl; - } if (is_intercepted) { fread = (fread_t)dlsym(RTLD_NEXT, "fread"); } else { fread = (fread_t)dlsym(RTLD_DEFAULT, "fread"); } - if (fread == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fread" << std::endl; - } if (is_intercepted) { fgetc = (fgetc_t)dlsym(RTLD_NEXT, "fgetc"); } else { fgetc = (fgetc_t)dlsym(RTLD_DEFAULT, "fgetc"); } - if (fgetc == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fgetc" << std::endl; - } if (is_intercepted) { getc = (getc_t)dlsym(RTLD_NEXT, "getc"); } else { getc = (getc_t)dlsym(RTLD_DEFAULT, "getc"); } - if (getc == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "getc" << std::endl; - } if (is_intercepted) { getw = (getw_t)dlsym(RTLD_NEXT, "getw"); } else { getw = (getw_t)dlsym(RTLD_DEFAULT, "getw"); } - if (getw == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "getw" << std::endl; - } if (is_intercepted) { fgets = (fgets_t)dlsym(RTLD_NEXT, "fgets"); } else { fgets = (fgets_t)dlsym(RTLD_DEFAULT, "fgets"); } - if (fgets == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fgets" << std::endl; - } if (is_intercepted) { rewind = (rewind_t)dlsym(RTLD_NEXT, "rewind"); } else { rewind = (rewind_t)dlsym(RTLD_DEFAULT, "rewind"); } - if (rewind == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "rewind" << std::endl; - } if (is_intercepted) { fseek = (fseek_t)dlsym(RTLD_NEXT, "fseek"); } else { fseek = (fseek_t)dlsym(RTLD_DEFAULT, "fseek"); } - if (fseek == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fseek" << std::endl; - } if (is_intercepted) { fseeko = (fseeko_t)dlsym(RTLD_NEXT, "fseeko"); } else { fseeko = (fseeko_t)dlsym(RTLD_DEFAULT, "fseeko"); } - if (fseeko == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fseeko" << std::endl; - } if (is_intercepted) { fseeko64 = (fseeko64_t)dlsym(RTLD_NEXT, "fseeko64"); } else { fseeko64 = (fseeko64_t)dlsym(RTLD_DEFAULT, "fseeko64"); } - if (fseeko64 == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fseeko64" << std::endl; - } if (is_intercepted) { fsetpos = (fsetpos_t)dlsym(RTLD_NEXT, "fsetpos"); } else { fsetpos = (fsetpos_t)dlsym(RTLD_DEFAULT, "fsetpos"); } - if (fsetpos == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fsetpos" << std::endl; - } if (is_intercepted) { fsetpos64 = (fsetpos64_t)dlsym(RTLD_NEXT, "fsetpos64"); } else { fsetpos64 = (fsetpos64_t)dlsym(RTLD_DEFAULT, "fsetpos64"); } - if (fsetpos64 == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "fsetpos64" << std::endl; - } if (is_intercepted) { ftell = (ftell_t)dlsym(RTLD_NEXT, "ftell"); } else { ftell = (ftell_t)dlsym(RTLD_DEFAULT, "ftell"); } - if (ftell == nullptr) { - LOG(FATAL) << "HERMES Adapter failed to map symbol: " - "ftell" << std::endl; - } } }; } // namespace hermes::adapter::stdio