[llvm-dev] *** SPAM *** Re: Help: Windows: lli crashes on 32 arch but not on 64 arch
Francis ANDRE via llvm-dev
llvm-dev at lists.llvm.org
Wed Mar 10 05:58:59 PST 2021
I found something, a real difference between the log in 32 arch and the
log in 64 arch by running
1. lli.exe -debug hw-m32.ll > lli-hw-m32.log 2>&1
2. lli.exe -debug hw-m64.ll > lli-hw-m64.log 2>&1
In the 32 case, there is a undefined symbol: ErrorStr "Symbol not
found: ___acrt_iob_func" std::string, and in fact, the symbol
'___acrt_iob_func' (with 3 '_' before) does not exist in the
C:\WINDOWS\SYSTEM32\ucrtbased.dll, but there is a '__acrt_iob_func' (2
'_' before) symbol exported.
The other strange thing is that in the lli-hw-m64.log, there is never a
'___acrt_iob_func' but only '__acrt_iob_func' references and the lli 64
execution is working fine. And the assert below
uint8_t *getAddressWithOffset(unsigned OffsetBytes) const {
assert(OffsetBytes <= AllocationSize && "Offset out of bounds!");
return Address + OffsetBytes;
}
is failing around solving a relocation of '___acrt_iob_func' in the
section 4. Thus, I am suggesting that solving the undefined issue on
'___acrt_iob_func' should solve the issue
The llvm::RuntimeDynldCOOF is too much complex for me to jump into. To
whom, I could submit those informations for a fix?
Le 09/03/2021 à 21:22, Chris Tetreault via llvm-dev a écrit :
>
> You should be able to directly debug in visual studio. Build and run
> lli with your hw-m32.ll added to the debug args. Make sure you do a
> debug build. The assert should cause the visual studio debugger to
> break and you can examine the call stack and figure out relevant
> breakpoints to set.
>
> *From:* llvm-dev <llvm-dev-bounces at lists.llvm.org
> <mailto:llvm-dev-bounces at lists.llvm.org>> *On Behalf Of *Francis ANDRE
> via llvm-dev
> *Sent:* Tuesday, March 9, 2021 10:34 AM
> *To:* LLVM Developers' List <llvm-dev at lists.llvm.org
> <mailto:llvm-dev at lists.llvm.org>>
> *Subject:* [EXT] [llvm-dev] Help: Windows: lli crashes on 32 arch but
> not on 64 arch
>
> Hello LLVM list
>
> I am running with lli, a simple HelloWorld program twice, once
> targeted to 32 bits arch, the other targeted to 64 bit arch. While it
> is working fine with the 64 arch, it craches with the 32 arch. Below
> are the steps
>
> clang.cmd -v -g -m64 -emit-llvm -S hw.c -o hw-m64.ll
>
> clang.cmd -v -g -m32 -emit-llvm -S hw.c -o hw-m32.ll
>
> C:\Program Files (x86)\LLVM\11.0\bin"\clang -v -g -m32 -emit-llvm
> -S e.c -o e-m32.ll
> clang version 11.0.0
> Target: i686-pc-windows-msvc
> Thread model: posix
> InstalledDir: C:\Program Files (x86)\LLVM\11.0\bin
> (in-process)
> "C:\\Program Files (x86)\\LLVM\\11.0\\bin\\clang.exe
> <file://LLVM/11.0/bin/clang.exe>" -cc1 -triple
> i686-pc-windows-msvc19.28.29335 -emit-llvm -disable-free
> -disable-llvm-verifier -discard-value-names -main-file-name e.c
> -mrelocation-model static -mframe-pointer=all -fmath-errno
> -fno-rounding-math -mconstructor-aliases -target-cpu pentium4
> -gno-column-info -gcodeview -debug-info-kind=limited -v
> -resource-dir "C:\\Program Files
> (x86)\\LLVM\\11.0\\lib\\clang\\11.0.0
> <file://LLVM/11.0/lib/clang/11.0.0>" -internal-isystem
> "C:\\Program Files (x86)\\LLVM\\11.0\\lib\\clang\\11.0.0\\include
> <file://LLVM/11.0/lib/clang/11.0.0/include>" -internal-isystem
> "C:\\Program Files (x86)\\Microsoft <file://Microsoft> Visual
> Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29333\\include"
> -internal-isystem "C:\\Program Files (x86)\\Microsoft
> <file://Microsoft> Visual
> Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.28.29333\\atlmfc\\include"
> -internal-isystem "C:\\Program Files (x86)\\Windows
> <file://Windows> Kits\\10\\Include\\10.0.18362.0\\ucrt"
> -internal-isystem "C:\\Program Files (x86)\\Windows
> <file://Windows> Kits\\10\\include\\10.0.18362.0\\shared"
> -internal-isystem "C:\\Program Files (x86)\\Windows
> <file://Windows> Kits\\10\\include\\10.0.18362.0\\um"
> -internal-isystem "C:\\Program Files (x86)\\Windows
> <file://Windows> Kits\\10\\include\\10.0.18362.0\\winrt"
> -fdebug-compilation-dir "D:\\projects\\as400\\rpg\\clang"
> -ferror-limit 19 -fmessage-length=194 -fno-use-cxa-atexit
> -fms-extensions -fms-compatibility
> -fms-compatibility-version=19.28.29335 -fdelayed-template-parsing
> -fcolor-diagnostics -faddrsig -o e-m32.ll -x c e.c
> clang -cc1 version 11.0.0 based upon LLVM 11.0.0 default target
> i686-pc-windows-msvc
> #include "..." search starts here:
> #include <...> search starts here:
> C:\Program Files (x86)\LLVM\11.0\lib\clang\11.0.0\include
> C:\Program Files (x86)\Microsoft Visual
> Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include
> C:\Program Files (x86)\Microsoft Visual
> Studio\2019\Community\VC\Tools\MSVC\14.28.29333\atlmfc\include
> C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt
> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\shared
> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\um
> C:\Program Files (x86)\Windows Kits\10\include\10.0.18362.0\winrt
> End of search list.
>
> lli hw-m64.ll
>
> Hello World!
>
> lli hw-m32.ll
>
> PLEASE submit a bug report to https://bugs.llvm.org/
> <https://bugs.llvm.org/> and include the crash backtrace.
> Stack dump:
> 0. Program arguments:
> D:\\llvm-project\\build32\\Debug\\bin\\lli hw-m32.ll
> #0 0x04b8eacc
> #1 0x03ff017b
> #2 0x03ff032b
> #3 0x0153ca18 llvm::MCJIT::runFunction(class llvm::Function *,
> class llvm::ArrayRef<struct llvm::GenericValue>)
> D:\llvm-project\llvm\lib\ExecutionEngine\MCJIT\MCJIT.cpp:587:0
> #4 0x01459673 llvm::ExecutionEngine::runFunctionAsMain(class
> llvm::Function *, class std::vector<class std::basic_string<char,
> struct std::char_traits<char>, class std::allocator<char>>, class
> std::allocator<class std::basic_string<char, struct
> std::char_traits<char>, class std::allocator<char>>>> const &,
> char const *const *)
> D:\llvm-project\llvm\lib\ExecutionEngine\ExecutionEngine.cpp:467:0
> #5 0x007e08c5 main D:\llvm-project\llvm\tools\lli\lli.cpp:643:0
> #6 0x02e12013 invoke_main
> d:\agent\_work\57\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78:0
> #7 0x02e11e97 _scrt_common_main_seh
> d:\agent\_work\57\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288:0
> #8 0x02e11d2d _scrt_common_main
> d:\agent\_work\57\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:331:0
> #9 0x02e12098 mainCRTStartup
> d:\agent\_work\57\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:17:0
> #10 0x75336359 (C:\WINDOWS\System32\KERNEL32.DLL+0x16359)
> #11 0x774c8944 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x68944)
> #12 0x774c8914 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x68914)
>
> What is the best way to debug the 32 bit arch lli.exe under VS2019?
>
> D:\projects\clang>type hw.c
> #include <stdio.h>
> int main() {
> printf("Hello World!\n");
> return 0;
> }
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210310/3fa40214/attachment.html>
More information about the llvm-dev
mailing list