On Aug 13, 2013, at 11:45 AM, Michael Sartain <[email protected]> wrote:
> When I build a simple hello world sample on i386 and x64 on Linux with Clang > 3.3, the x64 version has .init_array / .fini_array and the i386 binary has > .ctors / .dtors. > > i386: > [18] .ctors PROGBITS > [19] .dtors PROGBITS > > x64: > [18] .init_array INIT_ARRAY > [19] .fini_array FINI_ARRAY > > There is code in ObjectFileELF.cpp which specifically looks for sections > named ".ctors" and ".dtors" and sets the symbol type to eSymbolTypeCode if it > not already set. There is no check for init_array there. That means the x64 > version lists these symbols as Invalid currently. > > (lldb) target modules dump symtab hello_world > > i386: > [ 17] Code __init_array_end > [ 18] Code __init_array_start > > x64: > [ 17] Invalid __init_array_end > [ 18] Invalid __init_array_start > > I believe the fix is to add a check for init_array + fini_array and mark > those sections as code. If anyone has any knowledge / comments on this, > please fire away, otherwise I'll post a patch in the next couple days. >From a brief web search it seems that these sections contain one or more >function pointers. These functions get called in the order in which they are >in the table in order to do global construction/destruction. I am not sure I >would classify this as code, more as data since we would never set breakpoints >in this code. So I would say to classify these sections as >“eSectionTypeDataPointers”. > There are also some sections in both i386 and x64 that are being marked as > undefined. I assume this is ok? > > [ 24] 55 Undefined 0x0000000000000000 > 0x0000000000000000 0x00000020 __gmon_start__ > [ 25] 56 Undefined 0x0000000000000000 > 0x0000000000000000 0x00000020 _Jv_RegisterClasses > [ 28] 59 X Undefined 0x0000000000000000 > 0x0000000000000000 0x00000012 __libc_start_main@@GLIBC_2.0 > In general when classifying sections, I would try and see what the program headers say about the address itself. If the address is in executable code, then I would classify this as code. > Thanks. > -Mike > _______________________________________________ > lldb-dev mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev _______________________________________________ lldb-dev mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
