Merge pull request #1019 from scchan/lazy_binding

minor workaround for lazy binding

[ROCm/clr commit: 22660bed74]
This commit is contained in:
Maneesh Gupta
2019-04-16 08:36:10 +05:30
committed by GitHub
2 changed files with 6 additions and 11 deletions
@@ -89,9 +89,10 @@ struct Bundled_code {
std::vector<char> blob;
};
#define magic_string_ "__CLANG_OFFLOAD_BUNDLE__"
class Bundled_code_header {
// DATA - STATICS
static constexpr const char magic_string_[] = "__CLANG_OFFLOAD_BUNDLE__";
static constexpr auto magic_string_sz_ = sizeof(magic_string_) - 1;
// DATA
@@ -143,12 +144,12 @@ class Bundled_code_header {
std::vector<char>{std::istreambuf_iterator<char>{is}, std::istreambuf_iterator<char>{}},
x);
}
// FRIENDS - ACCESSORS
friend inline bool valid(const Bundled_code_header& x) {
return std::equal(magic_string_, magic_string_ + magic_string_sz_,
x.header_.bundler_magic_string_);
const std::string ms = {magic_string_};
return std::equal(ms.begin(), ms.end(), x.header_.bundler_magic_string_);
}
friend inline const std::vector<Bundled_code>& bundles(const Bundled_code_header& x) {
return x.bundles_;
}
@@ -10,9 +10,6 @@
using namespace std;
// DATA - STATICS
constexpr const char hip_impl::Bundled_code_header::magic_string_[];
// CREATORS
hip_impl::Bundled_code_header::Bundled_code_header(const vector<char>& x)
: Bundled_code_header{x.cbegin(), x.cend()} {}
@@ -22,12 +19,9 @@ hip_impl::Bundled_code_header::Bundled_code_header(
// hipLoadModuleData is so poorly specified (for no fault of its own).
if (!p) return;
if (!valid(*static_cast<const Bundled_code_header*>(p))) return;
auto ph = static_cast<const Header_*>(p);
if (!equal(magic_string_, magic_string_ + magic_string_sz_, ph->bundler_magic_string_)) {
return;
}
size_t sz = sizeof(Header_) + ph->bundle_cnt_ * sizeof(Bundled_code::Header);
auto pb = static_cast<const char*>(p) + sizeof(Header_);
auto n = ph->bundle_cnt_;