mirror of
https://github.com/serge1/ELFIO.git
synced 2024-12-26 18:15:40 +00:00
Demonstrate addition of a new section to existing ELF file
This commit is contained in:
parent
d155588188
commit
85c937eba9
1
.vscode/c_cpp_properties.json
vendored
1
.vscode/c_cpp_properties.json
vendored
@ -3,6 +3,7 @@
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceFolder}",
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"defines": [],
|
||||
|
@ -3,6 +3,7 @@ cmake_minimum_required(VERSION 3.12.4)
|
||||
project(elfio)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
add_subdirectory(examples/add_section)
|
||||
add_subdirectory(examples/anonymizer)
|
||||
add_subdirectory(examples/elfdump)
|
||||
add_subdirectory(examples/tutorial)
|
||||
|
3
examples/add_section/CMakeLists.txt
Normal file
3
examples/add_section/CMakeLists.txt
Normal file
@ -0,0 +1,3 @@
|
||||
|
||||
add_executable(add_section add_section.cpp)
|
||||
include_directories(SYSTEM ${CMAKE_SOURCE_DIR})
|
31
examples/add_section/add_section.cpp
Normal file
31
examples/add_section/add_section.cpp
Normal file
@ -0,0 +1,31 @@
|
||||
#include <iostream>
|
||||
#include <elfio/elfio.hpp>
|
||||
|
||||
using namespace ELFIO;
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
if ( argc != 2 ) {
|
||||
std::cout << "Usage: add_section <elf_file>" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Create an elfio reader
|
||||
elfio reader;
|
||||
|
||||
// Load ELF data
|
||||
if ( !reader.load( argv[1] ) ) {
|
||||
std::cout << "Can't find or process ELF file " << argv[1] << std::endl;
|
||||
return 2;
|
||||
}
|
||||
|
||||
// Create additional section at the end of the file
|
||||
section* note_sec = reader.sections.add( ".note.ELFIO" );
|
||||
note_sec->set_type( SHT_NOTE );
|
||||
note_section_accessor note_writer( reader, note_sec );
|
||||
note_writer.add_note( 0x01, "Created by ELFIO", "My data", 8 );
|
||||
|
||||
reader.save( "./result.elf" );
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user