This is the mail archive of the
binutils@sourceware.cygnus.com
mailing list for the binutils project.
linker problem with WinCE exe's (2)
- To: egcs binutils <binutils@sourceware.cygnus.com>
- Subject: linker problem with WinCE exe's (2)
- From: "Richard Wisenöcker" <richard.wisenoecker@gmx.at>
- Date: Fri, 04 Jun 1999 23:15:19 +0200
Hello again !
Second mail about "linker problem with WinCE exe's", please have a look to the newsgroup
histrory.
First I would like to thank Ian and DJ Delorie for the quik answer.
1) symbol->value:
Is also 0, it seems that idata$x is not like a symbol (look to the linker output at the
end of the mail).
2) symbol->section->output_section->vma:
Is always 0x14000, independent if it is idata$2, idata$3 or any other
3) symbol->section->output_offset:
Is in all cases (idata$2, idata$3,...) equal to 0 too.
4) about _bfd_coff_generic_relocate_section:
I had just a short look, but I will study it in more detail. But in my case I try to
generate MIPS code for WinCE.
I am very thankful if you have some ideas again !
Richard
Here you can see what the linker tells me with the -M option:
=============================================
Memory Configuration
Name Origin Length
*default* 0x00000000 0xffffffff
Linker script and memory map
:
:
*(.gcc_except_table)
.bss 0x00012000 0x8
0x00012000 __bss_start__=.
*(.bss)
*(COMMON)
COMMON 0x00012000 0x8
/usr/src/packages/cegcc/lib/libc.lib(crtw32/startup/obj_mips_h/crt0dat.obj)
0x00012000 _onexitbegin
0x00012004 _onexitend
0x00012008 __bss_end__=.
.data 0x00013000 0x200
0x00013000 __data_start__=.
*(.data)
.data 0x00013000 0x48 mshello.obj
.data 0x00013048 0x8
/usr/src/packages/cegcc/lib/libc.lib(crtw32/startup/obj_mips_h/crt0dat.obj)
0x0001304c C_Termination_Done
0x00013048 exitflag
*(.data2)
0x00013050 __data_end__=.
*(.data$)
.rdata
*(.rdata)
*(.eh_frame)
*(.rdata$)
.edata
*(.edata)
/DISCARD/
*(.debug$S)
*(.debug$T)
*(.debug$F)
*(.drectve)
.idata 0x00014000 0x200
*(.idata$2)
.idata$2 0x00014000 0x14 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
0x00014000 _IMPORT_DESCRIPTOR_COREDLL
>>>>> The next 3 lines are totally confusing for me. I think it should not happen that
there is no length and that there is always the same address.
0x00014000 idata$2
0x00014000 idata$5
0x00014000 idata$4
*(.idata$3)
.idata$3 0x00014014 0x14 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
0x00014014 _NULL_IMPORT_DESCRIPTOR
*(.idata$4)
.idata$4 0x00014028 0x4 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
.idata$4 0x0001402c 0x4 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
.idata$4 0x00014030 0x4 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
*(.idata$5)
.idata$5 0x00014034 0x4 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
0x00014034 _imp_MessageBoxW
.idata$5 0x00014038 0x4 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
0x00014038 _imp_ExitThread
.idata$5 0x0001403c 0x4 /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
0x0001403c COREDLL_NULL_THUNK_DATA
*(.idata$6)
.idata$6 0x00014040 0xe /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
.idata$6 0x0001404e 0xe /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
.idata$6 0x0001405c 0xc /usr/src/packages/cegcc/lib/coredll.lib(COREDLL.dll)
*(.idata$7)
.CRT 0x00015000 0x200
*(.CRT$)
.CRT$XCA 0x00015000 0x4
/usr/src/packages/cegcc/lib/libc.lib(crtw32/startup/obj_mips_h/crt0init.obj)
0x00015000 _xc_a