diff options
Diffstat (limited to 'src/model/reladd.c')
-rw-r--r-- | src/model/reladd.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/model/reladd.c b/src/model/reladd.c index 41d7cfb..ae7bf52 100644 --- a/src/model/reladd.c +++ b/src/model/reladd.c @@ -6,6 +6,7 @@ typedef enum Destsegment { DS_UNKNOWN, + DS_OTHER, DS_TEXT, DS_DATA, } Destsegment; @@ -14,10 +15,8 @@ typedef enum Destsegment { static Destsegment destsegment(ElfuScn *ms) { if (!(ms->shdr.sh_flags & SHF_ALLOC)) { - return DS_UNKNOWN; - } - - if (!(ms->shdr.sh_flags & SHF_WRITE) + return DS_OTHER; + } else if (!(ms->shdr.sh_flags & SHF_WRITE) && (ms->shdr.sh_flags & SHF_EXECINSTR)) { return DS_TEXT; } else if ((ms->shdr.sh_flags & SHF_WRITE) @@ -150,8 +149,7 @@ static ElfuScn* insertSection(ElfuElf *me, ElfuElf *mrel, ElfuScn *ms) newscn->shdr.sh_offset = injOffset; /* Inject name */ - // TODO - newscn->shdr.sh_name = 0; + newscn->shdr.sh_name = elfu_mInsertScnName(me, "RELADD", elfu_mScnName(mrel, ms)); // TODO: Relocate |