From: Rui Ueyama Date: Wed, 31 Jul 2013 05:10:20 +0000 (+0000) Subject: [PECOFF] Add a comment on the idata section fragments. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=87b9703ec4de43bae430d269f3617e6617784894;p=platform%2Fupstream%2Fllvm.git [PECOFF] Add a comment on the idata section fragments. llvm-svn: 187484 --- diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp index 480cae4..e529964 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp @@ -90,6 +90,25 @@ /// data has to be accessed through dllimport'ed symbols or explicit _imp__ /// prefix. /// +/// Idata Sections in the Pseudo Object File +/// ======================================== +/// +/// The object file created by cl.exe has several sections whose name starts +/// with ".idata$" followed by a number. The contents of the sections seem the +/// fragments of a complete ".idata" section. These sections has relocations for +/// the data referenced from the idata secton. Generally, the linker discards +/// "$" and all characters that follow from the section name and merges their +/// contents to one section. So, it looks like if everything would work fine, +/// the idata section would naturally be constructed without having any special +/// code for doing that. +/// +/// However, the LLD linker cannot do that. An idata section constructed in that +/// way was never be in valid format. We don't know the reason yet. Our +/// assumption on the idata fragment could simply be wrong, or the LLD linker is +/// not powerful enough to do the job. Meanwhile, we construct the idata section +/// ourselves. All the "idata$" sections in the pseudo object file are currently +/// ignored. +/// /// Creating Atoms for the Import Address Table /// =========================================== ///