From: Toni Wilen Date: Sun, 24 Mar 2019 16:11:55 +0000 (+0200) Subject: Fix elf executable relocated as rom. X-Git-Tag: 4200~12 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=177e4565a9c2a61563286e7d95ab96ce651988e5;p=francis%2Fwinuae.git Fix elf executable relocated as rom. --- diff --git a/debugmem.cpp b/debugmem.cpp index f00e8106..70a4af3f 100644 --- a/debugmem.cpp +++ b/debugmem.cpp @@ -2453,23 +2453,6 @@ static uae_u8 *loadelffile(uae_u8 *file, int filelen, uae_u8 *dbgfile, int debug int symtab_num = 0; bool debuglink = false; - for (int i = 0; i < shnum; i++) { - struct sheader *shp = (struct sheader*)(file + i * sizeof(sheader) + eh->shoff); - struct sheader sh; - swap_header(&sh, shp); - uae_char *name = (uae_char*)(strtabsym + sh.name); - if (!strcmp(name, ".gnu_debuglink")) { - debuglink = true; - } - } - - if (debuglink) { - ; - } else { - dbgfile = NULL; - debugfilelen = 0; - } - for (int i = 0; i < shnum; i++) { struct sheader *shp = (struct sheader*)(file + i * sizeof(sheader) + eh->shoff); struct sheader sh; @@ -2491,6 +2474,23 @@ static uae_u8 *loadelffile(uae_u8 *file, int filelen, uae_u8 *dbgfile, int debug } } } + + for (int i = 0; i < shnum; i++) { + struct sheader *shp = (struct sheader*)(file + i * sizeof(sheader) + eh->shoff); + struct sheader sh; + swap_header(&sh, shp); + uae_char *name = (uae_char*)(strtabsym + sh.name); + if (strtabsym && !strcmp(name, ".gnu_debuglink")) { + debuglink = true; + } + } + if (debuglink) { + ; + } else { + dbgfile = NULL; + debugfilelen = 0; + } + for (int i = 0; i < shnum; i++) { struct sheader *shp = (struct sheader*)(file + i * sizeof(sheader) + eh->shoff); struct sheader sh; diff --git a/memory.cpp b/memory.cpp index 86362f2a..f87382e0 100644 --- a/memory.cpp +++ b/memory.cpp @@ -2810,7 +2810,7 @@ void memory_reset (void) } if (currprefs.cs_ksmirror_a8) { if (extendedkickmem2_bank.allocated_size) { - map_banks_set(&extendedkickmem2_bank, 0xa8, 16, 0); + map_banks_set(&extendedkickmem2_bank, extendedkickmem2_bank.start >> 16, extendedkickmem2_bank.allocated_size >> 16, 0); } else { struct romdata *rd = getromdatabypath (currprefs.cartfile); if (!rd || rd->id != 63) { @@ -2821,6 +2821,8 @@ void memory_reset (void) map_banks(&kickmem_bank, 0xa8, 8, 0); } } + } else if (extendedkickmem2_bank.allocated_size && extendedkickmem2_bank.baseaddr) { + map_banks_set(&extendedkickmem2_bank, extendedkickmem2_bank.start >> 16, extendedkickmem2_bank.allocated_size >> 16, 0); } #ifdef ARCADIA