Replace private libelf with elfio

Change-Id: I59ae33f7cc55e73f6519af14be91dd9863b03af3
Цей коміт міститься в:
Tao Sang
2020-08-11 12:49:50 -04:00
зафіксовано Tao Sang
джерело 280d300320
коміт 4e1344de0f
6 змінених файлів з 19 додано та 44 видалено
-4
Переглянути файл
@@ -96,8 +96,6 @@ find_package(amd_comgr REQUIRED CONFIG
message(STATUS "Code Object Manager found at ${amd_comgr_DIR}.")
add_definitions(-DBSD_LIBELF)
add_library(hip64 OBJECT
hip_context.cpp
hip_code_object.cpp
@@ -129,10 +127,8 @@ target_include_directories(hip64
${PROJECT_SOURCE_DIR}/include
${PROJECT_BINARY_DIR}/include
PRIVATE
${CMAKE_SOURCE_DIR}/elfio
${PROJECT_SOURCE_DIR}
${PROJECT_SOURCE_DIR}/amdocl
${PROJECT_SOURCE_DIR}/include/hip/hcc_detail/elfio
${ROCR_INCLUDES}
$<TARGET_PROPERTY:amdrocclr_static,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:amd_comgr,INTERFACE_INCLUDE_DIRECTORIES>)
+2 -17
Переглянути файл
@@ -6,27 +6,12 @@
#include "hip/hip_runtime.h"
#include "hip_internal.hpp"
#include "platform/program.hpp"
#include <elf/elf.hpp>
namespace hip {
uint64_t CodeObject::ElfSize(const void *emi) {
const Elf64_Ehdr *ehdr = (const Elf64_Ehdr*)emi;
const Elf64_Shdr *shdr = (const Elf64_Shdr*)((char*)emi + ehdr->e_shoff);
uint64_t max_offset = ehdr->e_shoff;
uint64_t total_size = max_offset + ehdr->e_shentsize * ehdr->e_shnum;
for (uint16_t i=0; i < ehdr->e_shnum; ++i){
uint64_t cur_offset = static_cast<uint64_t>(shdr[i].sh_offset);
if (max_offset < cur_offset) {
max_offset = cur_offset;
total_size = max_offset;
if(SHT_NOBITS != shdr[i].sh_type) {
total_size += static_cast<uint64_t>(shdr[i].sh_size);
}
}
}
return total_size;
return amd::Elf::getElfSize(emi);
}
bool CodeObject::isCompatibleCodeObject(const std::string& codeobj_target_id,
+2 -18
Переглянути файл
@@ -19,7 +19,7 @@
THE SOFTWARE. */
#include <hip/hip_runtime.h>
#include <libelf.h>
#include <elf/elf.hpp>
#include <fstream>
#include "hip_internal.hpp"
@@ -45,23 +45,7 @@ const std::string& FunctionName(const hipFunction_t f) {
static uint64_t ElfSize(const void *emi)
{
const Elf64_Ehdr *ehdr = (const Elf64_Ehdr*)emi;
const Elf64_Shdr *shdr = (const Elf64_Shdr*)((char*)emi + ehdr->e_shoff);
uint64_t max_offset = ehdr->e_shoff;
uint64_t total_size = max_offset + ehdr->e_shentsize * ehdr->e_shnum;
for (uint16_t i=0; i < ehdr->e_shnum; ++i){
uint64_t cur_offset = static_cast<uint64_t>(shdr[i].sh_offset);
if (max_offset < cur_offset) {
max_offset = cur_offset;
total_size = max_offset;
if(SHT_NOBITS != shdr[i].sh_type) {
total_size += static_cast<uint64_t>(shdr[i].sh_size);
}
}
}
return total_size;
return amd::Elf::getElfSize(emi);
}
hipError_t hipModuleUnload(hipModule_t hmod) {
-1
Переглянути файл
@@ -26,7 +26,6 @@
#include "platform/runtime.hpp"
#include <unordered_map>
#include "elfio.hpp"
constexpr unsigned __hipFatMAGIC2 = 0x48495046; // "HIPF"