mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
fix makelst
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@206 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
84b2da973c
commit
4e994e11e9
@ -8,9 +8,10 @@
|
||||
#include "stdlib.h"
|
||||
|
||||
static int endian;
|
||||
static BOOL load_strndx_done = FALSE;
|
||||
//static BOOL load_strndx_done = FALSE;
|
||||
|
||||
|
||||
#if 0
|
||||
/*---------------------------------------------------------
|
||||
バイトデータを読み出す
|
||||
--------------------------------------------------------*/
|
||||
@ -24,6 +25,7 @@ static u8 *load_elf32_byte(u8 *dest, u8 *org, int lsb)
|
||||
|
||||
return temp_ptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------
|
||||
ハーフワードデータを読み出す
|
||||
@ -48,6 +50,7 @@ static u8 *load_elf32_half(Elf32_Half *dest, u8 *org, int lsb)
|
||||
return (void *)temp_ptr;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*---------------------------------------------------------
|
||||
ワードデータを読み出す
|
||||
--------------------------------------------------------*/
|
||||
@ -108,6 +111,7 @@ static u8 *load_elf32_word(Elf32_Word *dest, u8 *org, int lsb)
|
||||
}
|
||||
return (void *)temp_ptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------
|
||||
ELFヘッダを読み出す
|
||||
@ -249,6 +253,7 @@ void *ELF_LoadELFHeader(const void *buf, Elf32_Ehdr *ehdr)
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/*---------------------------------------------------------
|
||||
Relocation Entry Load
|
||||
--------------------------------------------------------*/
|
||||
@ -336,6 +341,6 @@ static void *ELF_LoadSectionHeader(const void *buf,Elf32_Shdr *shdr)
|
||||
|
||||
return file_ptr;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: CTR - ELF Loader
|
||||
Project: TWL - ELF Loader
|
||||
File: elf_loader.c
|
||||
|
||||
Copyright 2006,2007 Nintendo. All rights reserved.
|
||||
@ -25,13 +25,15 @@ ELAdrEntry* ELAdrEntStart = NULL;
|
||||
ELUnresolvedEntry* ELUnrEntStart = NULL;
|
||||
|
||||
extern u16 dbg_print_flag;
|
||||
extern u32 unresolved_table_block_flag;
|
||||
extern u16 unresolved_table_block_flag;
|
||||
|
||||
#define MAKELST_DS_API " elAddAdrEntry" //DS上でアドレステーブルに追加するAPI関数名
|
||||
|
||||
extern char c_source_line_str[256];
|
||||
extern FILE* CSourceFilep;
|
||||
|
||||
extern void file_write( char* c_str, FILE* Fp);
|
||||
|
||||
|
||||
/*------------------------------------------------------
|
||||
ローカル関数の宣言
|
||||
@ -522,7 +524,7 @@ u16 EL_ResolveAllLibrary( void)
|
||||
/*------------------------------------------------------
|
||||
マーキングされたシンボルを公開用ファイルに構造体として書き出す
|
||||
-----------------------------------------------------*/
|
||||
u16 EL_ExtractStaticSym1( void)
|
||||
void EL_ExtractStaticSym1( void)
|
||||
{
|
||||
// ELAdrEntry* AdrEnt;
|
||||
// ELUnresolvedEntry* RemoveUnrEnt;
|
||||
@ -608,7 +610,7 @@ u16 EL_ExtractStaticSym1( void)
|
||||
/*------------------------------------------------------
|
||||
マーキングされたシンボルを公開用ファイルにAPIとして書き出す
|
||||
-----------------------------------------------------*/
|
||||
u16 EL_ExtractStaticSym2( void)
|
||||
void EL_ExtractStaticSym2( void)
|
||||
{
|
||||
// ELAdrEntry* AdrEnt;
|
||||
// ELUnresolvedEntry* RemoveUnrEnt;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: CTR - ELF Loader
|
||||
Project: TWL - ELF Loader
|
||||
File: elf_loader.h
|
||||
|
||||
Copyright 2006 Nintendo. All rights reserved.
|
||||
Copyright 2006,2007 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
@ -151,11 +151,11 @@ u16 EL_ResolveAllLibrary( void);
|
||||
/*------------------------------------------------------
|
||||
マーキングされたシンボルを公開用ファイルに構造体として書き出す
|
||||
-----------------------------------------------------*/
|
||||
u16 EL_ExtractStaticSym1( void);
|
||||
void EL_ExtractStaticSym1( void);
|
||||
/*------------------------------------------------------
|
||||
マーキングされたシンボルを公開用ファイルにAPIとして書き出す
|
||||
-----------------------------------------------------*/
|
||||
u16 EL_ExtractStaticSym2( void);
|
||||
void EL_ExtractStaticSym2( void);
|
||||
|
||||
|
||||
/*------------------------------------------------------
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: CTR - ELF Loader
|
||||
Project: TWL - ELF Loader
|
||||
File: loader_subset.c
|
||||
|
||||
Copyright 2006,2007 Nintendo. All rights reserved.
|
||||
@ -485,9 +485,15 @@ void ELi_DiscriminateGlobalSym( ELHandle* ElfHandle, u32 symsh_index)
|
||||
//MI_CpuCopy8( sym_str, ExportAdrEntry->name, copy_size);
|
||||
memcpy( ExportAdrEntry->name, sym_str, copy_size);
|
||||
|
||||
CurrentShdrEx = ELi_GetShdrExfromList( ElfHandle->ShdrEx, CurrentSymEx->Sym.st_shndx);
|
||||
//Sym.st_valueは偶数/奇数でARM/Thumbを判別できるように調整されている場合があるので、その調整を削除して正味の値を出す
|
||||
ExportAdrEntry->adr = (void*)(CurrentShdrEx->loaded_adr + ((CurrentSymEx->Sym.st_value)&0xFFFFFFFE));
|
||||
if( (CurrentSymEx->Sym.st_shndx) < SHN_LORESERVE) { //関連セクションがある場合
|
||||
if( (CurrentSymEx->Sym.st_shndx == SHN_ABS)) {
|
||||
//Sym.st_valueは偶数/奇数でARM/Thumbを判別できるように調整されている場合があるので、その調整を削除して正味の値を出す
|
||||
ExportAdrEntry->adr = (void*)((CurrentSymEx->Sym.st_value)&0xFFFFFFFE);
|
||||
}else{
|
||||
CurrentShdrEx = ELi_GetShdrExfromList( ElfHandle->ShdrEx, CurrentSymEx->Sym.st_shndx);
|
||||
//Sym.st_valueは偶数/奇数でARM/Thumbを判別できるように調整されている場合があるので、その調整を削除して正味の値を出す
|
||||
ExportAdrEntry->adr = (void*)(CurrentShdrEx->loaded_adr + ((CurrentSymEx->Sym.st_value)&0xFFFFFFFE));
|
||||
}
|
||||
ExportAdrEntry->func_flag = (u16)(ELF32_ST_TYPE( CurrentSymEx->Sym.st_info));
|
||||
ExportAdrEntry->thumb_flag = CurrentSymEx->thumb_flag;
|
||||
|
||||
@ -501,6 +507,7 @@ void ELi_DiscriminateGlobalSym( ELHandle* ElfHandle, u32 symsh_index)
|
||||
}
|
||||
EL_AddAdrEntry( ExportAdrEntry); //登録
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/*----------------------------------------------------------------*/
|
||||
@ -582,13 +589,13 @@ u32 ELi_DoRelocate( ELUnresolvedEntry* UnresolvedInfo)
|
||||
signed_val = (( (s32)(_S_) + _A_) | (s32)(_T_)) - (s32)(_P_);
|
||||
signed_val >>= 1;
|
||||
if( _T_) { /*BL命令でThumbからThumbに飛ぶ*/
|
||||
relocation_val = (*(vu16*)relocation_adr & 0xF800) | ((signed_val>>11) & 0x07FF) +
|
||||
relocation_val = ((*(vu16*)relocation_adr & 0xF800) | ((signed_val>>11) & 0x07FF)) +
|
||||
((((*((vu16*)(relocation_adr)+1)) & 0xF800) | (signed_val & 0x07FF)) << 16);
|
||||
}else{ /*BLX命令でThumbからARMに飛ぶ(v5未満だとBL→ベニアでBXという仕組みが必要)*/
|
||||
if( (signed_val & 0x1)) { //_P_が4バイトアラインされていないとここに来る
|
||||
signed_val += 1;
|
||||
}
|
||||
relocation_val = (*(vu16*)relocation_adr & 0xF800) | ((signed_val>>11) & 0x07FF) +
|
||||
relocation_val = ((*(vu16*)relocation_adr & 0xF800) | ((signed_val>>11) & 0x07FF)) +
|
||||
((((*((vu16*)(relocation_adr)+1)) & 0xE800) | (signed_val & 0x07FF)) << 16);
|
||||
}
|
||||
*(vu16*)relocation_adr = (vu16)relocation_val;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
/*---------------------------------------------------------------------------*
|
||||
Project: CTR - ELF Loader
|
||||
Project: TWL - ELF Loader
|
||||
File: loader_subset.h
|
||||
|
||||
Copyright 2006 Nintendo. All rights reserved.
|
||||
Copyright 2006,2007 Nintendo. All rights reserved.
|
||||
|
||||
These coded instructions, statements, and computer programs contain
|
||||
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||
|
||||
Loading…
Reference in New Issue
Block a user