From: Koine Yuusuke(koinec) Date: Sun, 22 Nov 2015 13:04:16 +0000 (+0900) Subject: * WorkBackup: 2015/11/22(Sun) 22:03 (Fixed can't reading Not-default Section) X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6fa0a9e5ea1120b19d3db5c0dfe45f76b9401c1e;p=drdeamon64%2Fdrdeamon64.git * WorkBackup: 2015/11/22(Sun) 22:03 (Fixed can't reading Not-default Section) --- diff --git a/libgoblin/drd64_libgoblin_debug_addrinfo.c b/libgoblin/drd64_libgoblin_debug_addrinfo.c index e09715a..cfbdfac 100644 --- a/libgoblin/drd64_libgoblin_debug_addrinfo.c +++ b/libgoblin/drd64_libgoblin_debug_addrinfo.c @@ -89,7 +89,13 @@ int } // pstr_name - printf( "%30s ", p_addr->pstr_name ); + if( STT_SECTION == w_type ) { + printf("%30s ", + LibGoblin_Section_GetSectionName( p_binfo, p_addr->w_secid )); + } + else { + printf( "%30s ", p_addr->pstr_name ); + } // dw_srcid // w_secid @@ -98,10 +104,10 @@ int else if( SHN_XINDEX == p_addr->w_secid ) { printf("(XIndex)"); } else if( SHN_UNDEF == p_addr->w_secid ) { printf("(UNDEF)"); } else if( LIBGOBLIN_SECTION_ID_MAX > p_addr->w_secid ) { - printf("(Section: %s)", + printf("(%s)", LibGoblin_Section_GetSectionName( p_binfo, p_addr->w_secid )); } - else { printf("(NO SHNDX)"); } + else { printf("(NO SHNDX)%d", p_addr->w_secid); } // dw_next printf("\n"); } diff --git a/libgoblin/drd64_libgoblin_debug_elf.c b/libgoblin/drd64_libgoblin_debug_elf.c index 1907d92..0a292d8 100644 --- a/libgoblin/drd64_libgoblin_debug_elf.c +++ b/libgoblin/drd64_libgoblin_debug_elf.c @@ -79,11 +79,11 @@ int if( 0x00 < b_level ) { if( 0 < ptr_start ) { - printf(" %08lx - %08lx (%8ld): %20s (FID:%d)\n", + printf(" %02d: %08lx - %08lx (%8ld): %20s (FID:%d)\n", b_cnt, ptr_start, ptr_start + p_secinfo->qw_size, p_secinfo->qw_size, p_secinfo->pstr_secname, p_secinfo->i_fid ); } else { - printf(" - (%8ld): %20s (FID:%d)\n", + printf(" %02d: - (%8ld): %20s (FID:%d)\n", b_cnt, p_secinfo->qw_size, p_secinfo->pstr_secname, p_secinfo->i_fid ); } } diff --git a/libgoblin/drd64_libgoblin_elf64.c b/libgoblin/drd64_libgoblin_elf64.c index a8b5bf0..42d5047 100644 --- a/libgoblin/drd64_libgoblin_elf64.c +++ b/libgoblin/drd64_libgoblin_elf64.c @@ -99,7 +99,7 @@ int } if( LIBGOBLIN_SECTION_ID_DEFAULT_MAX == i_index ) { - p_sectbl = &(p_bfile->t_section[i_index]); + p_sectbl = &(p_bfile->t_section[i_user_section]); p_sectbl->pb_sechdr = (Byte *)p_sechdr; p_sectbl->pb_data = (Byte *)(pb_data + p_sechdr->sh_offset); diff --git a/libgoblin/drd64_libgoblin_section.c b/libgoblin/drd64_libgoblin_section.c index cc91fa5..7b7c4e6 100644 --- a/libgoblin/drd64_libgoblin_section.c +++ b/libgoblin/drd64_libgoblin_section.c @@ -114,7 +114,7 @@ Word assert( NULL != p_binfo ); // Through out input value when w_secnumber is not Section Index Value. - if( LIBGOBLIN_SECTION_ID_DEFAULT_MAX <= w_secnumber ) { + if( LIBGOBLIN_SECTION_ID_MAX <= w_secnumber ) { return w_secnumber; } @@ -123,10 +123,7 @@ Word for( b_secid = 0; b_secid < LIBGOBLIN_SECTION_ID_MAX; b_secid++ ) { p_secinfo = &(p_bfile->t_section[ b_secid ]); - if( NULL == p_secinfo->pb_sechdr ) { - w_result = LIBGOBLIN_SECTION_ID_INVALID; - break; - } + if( NULL == p_secinfo->pb_sechdr ) { continue; } if( p_secinfo->i_fid == (int)w_secnumber ) { w_result = (Word)b_secid; diff --git a/libgoblin/drd64_libgoblin_section.h b/libgoblin/drd64_libgoblin_section.h index f581773..bf18d46 100644 --- a/libgoblin/drd64_libgoblin_section.h +++ b/libgoblin/drd64_libgoblin_section.h @@ -48,6 +48,7 @@ Comment: #ifdef DRD64_SRC_LIBGOBLIN_SECTION char *gstr_section_name[LIBGOBLIN_SECTION_ID_MAX] = { + LIBGOBLIN_SECTION_STR_NULL, LIBGOBLIN_SECTION_STR_TEXT, LIBGOBLIN_SECTION_STR_TEXT_INIT, LIBGOBLIN_SECTION_STR_TEXT_FINI, diff --git a/libgoblin/drd64_libgoblin_section_defs.h b/libgoblin/drd64_libgoblin_section_defs.h index 3ba4783..24d9f9f 100644 --- a/libgoblin/drd64_libgoblin_section_defs.h +++ b/libgoblin/drd64_libgoblin_section_defs.h @@ -37,46 +37,48 @@ Comment: #ifndef DRD64_HEADER_LIBGOBLIN_SECTION_DEFS #define DRD64_HEADER_LIBGOBLIN_SECTION_DEFS -#define LIBGOBLIN_SECTION_ID_DEFAULT_MAX 0x22 +#define LIBGOBLIN_SECTION_ID_DEFAULT_MAX 0x24 #define LIBGOBLIN_SECTION_ID_MAX 0x3f #define LIBGOBLIN_SECTION_ID_INVALID 0xff -#define LIBGOBLIN_SECTION_ID_TEXT 0x00 -#define LIBGOBLIN_SECTION_ID_TEXT_INIT 0x01 -#define LIBGOBLIN_SECTION_ID_TEXT_FINI 0x02 -#define LIBGOBLIN_SECTION_ID_DATA 0x03 -#define LIBGOBLIN_SECTION_ID_BSS 0x04 -#define LIBGOBLIN_SECTION_ID_GOT 0x05 -#define LIBGOBLIN_SECTION_ID_GOT_PLT 0x06 -#define LIBGOBLIN_SECTION_ID_PLT 0x07 -#define LIBGOBLIN_SECTION_ID_REL_PLT 0x08 -#define LIBGOBLIN_SECTION_ID_RELA_PLT 0x09 -#define LIBGOBLIN_SECTION_ID_SHSTRTAB 0x0a -#define LIBGOBLIN_SECTION_ID_STRTAB 0x0b -#define LIBGOBLIN_SECTION_ID_SYMTAB 0x0c -#define LIBGOBLIN_SECTION_ID_DTORS 0x0d -#define LIBGOBLIN_SECTION_ID_CTORS 0x0e -#define LIBGOBLIN_SECTION_ID_DYNAMIC 0x0f -#define LIBGOBLIN_SECTION_ID_DYNSTR 0x10 -#define LIBGOBLIN_SECTION_ID_DYNSYM 0x11 -#define LIBGOBLIN_SECTION_ID_EH_FRAME 0x12 -#define LIBGOBLIN_SECTION_ID_EH_FRAME_HDR 0x13 -#define LIBGOBLIN_SECTION_ID_COMMENT 0x14 -#define LIBGOBLIN_SECTION_ID_GNU_VERSION 0x15 -#define LIBGOBLIN_SECTION_ID_GNU_VERSION_R 0x16 -#define LIBGOBLIN_SECTION_ID_RODATA 0x17 -#define LIBGOBLIN_SECTION_ID_NOTE_ABI_TAG 0x18 -#define LIBGOBLIN_SECTION_ID_HASH 0x19 -#define LIBGOBLIN_SECTION_ID_INTERP 0x1a -#define LIBGOBLIN_SECTION_ID_JCR 0x1b -#define LIBGOBLIN_SECTION_ID_DEBUG_ABBREV 0x1c -#define LIBGOBLIN_SECTION_ID_DEBUG_INFO 0x1d -#define LIBGOBLIN_SECTION_ID_DEBUG_LINE 0x1e -#define LIBGOBLIN_SECTION_ID_DEBUG_ARANGES 0x1f -#define LIBGOBLIN_SECTION_ID_DEBUG_FRAME 0x20 -#define LIBGOBLIN_SECTION_ID_DEBUG_LOC 0x21 -#define LIBGOBLIN_SECTION_ID_DEBUG_PUBNAMES 0x22 +#define LIBGOBLIN_SECTION_ID_NULL 0x00 +#define LIBGOBLIN_SECTION_ID_TEXT 0x01 +#define LIBGOBLIN_SECTION_ID_TEXT_INIT 0x02 +#define LIBGOBLIN_SECTION_ID_TEXT_FINI 0x03 +#define LIBGOBLIN_SECTION_ID_DATA 0x04 +#define LIBGOBLIN_SECTION_ID_BSS 0x05 +#define LIBGOBLIN_SECTION_ID_GOT 0x06 +#define LIBGOBLIN_SECTION_ID_GOT_PLT 0x07 +#define LIBGOBLIN_SECTION_ID_PLT 0x08 +#define LIBGOBLIN_SECTION_ID_REL_PLT 0x09 +#define LIBGOBLIN_SECTION_ID_RELA_PLT 0x0a +#define LIBGOBLIN_SECTION_ID_SHSTRTAB 0x0b +#define LIBGOBLIN_SECTION_ID_STRTAB 0x0c +#define LIBGOBLIN_SECTION_ID_SYMTAB 0x0d +#define LIBGOBLIN_SECTION_ID_DTORS 0x0e +#define LIBGOBLIN_SECTION_ID_CTORS 0x0f +#define LIBGOBLIN_SECTION_ID_DYNAMIC 0x10 +#define LIBGOBLIN_SECTION_ID_DYNSTR 0x11 +#define LIBGOBLIN_SECTION_ID_DYNSYM 0x12 +#define LIBGOBLIN_SECTION_ID_EH_FRAME 0x13 +#define LIBGOBLIN_SECTION_ID_EH_FRAME_HDR 0x14 +#define LIBGOBLIN_SECTION_ID_COMMENT 0x15 +#define LIBGOBLIN_SECTION_ID_GNU_VERSION 0x16 +#define LIBGOBLIN_SECTION_ID_GNU_VERSION_R 0x17 +#define LIBGOBLIN_SECTION_ID_RODATA 0x18 +#define LIBGOBLIN_SECTION_ID_NOTE_ABI_TAG 0x19 +#define LIBGOBLIN_SECTION_ID_HASH 0x1a +#define LIBGOBLIN_SECTION_ID_INTERP 0x1b +#define LIBGOBLIN_SECTION_ID_JCR 0x1c +#define LIBGOBLIN_SECTION_ID_DEBUG_ABBREV 0x1d +#define LIBGOBLIN_SECTION_ID_DEBUG_INFO 0x1e +#define LIBGOBLIN_SECTION_ID_DEBUG_LINE 0x1f +#define LIBGOBLIN_SECTION_ID_DEBUG_ARANGES 0x20 +#define LIBGOBLIN_SECTION_ID_DEBUG_FRAME 0x21 +#define LIBGOBLIN_SECTION_ID_DEBUG_LOC 0x22 +#define LIBGOBLIN_SECTION_ID_DEBUG_PUBNAMES 0x23 +#define LIBGOBLIN_SECTION_STR_NULL "" #define LIBGOBLIN_SECTION_STR_TEXT ".text" #define LIBGOBLIN_SECTION_STR_TEXT_INIT ".init" #define LIBGOBLIN_SECTION_STR_TEXT_FINI ".fini"