aleksandr.urakov (Aleksandr Urakov)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 4 2018, 3:35 AM (19 w, 6 d)

Recent Activity

Fri, Oct 19

aleksandr.urakov created D53435: [x86] Fix issues with a realigned stack in MSVC compiled applications.
Fri, Oct 19, 7:10 AM · Restricted Project

Thu, Oct 18

aleksandr.urakov added a comment to D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.

The thing that's not clear to me is: are you specifically interested in unwinding from these kinds of functions without debug info? Because it sounds to me like the info Zachary provided is enough to unwind from these functions, assuming debug info is present. And in this case there shouldn't be any need for instruction emulation.

Thu, Oct 18, 2:15 AM · Restricted Project
aleksandr.urakov committed rLLDB344729: [Windows] Fix threads comparison on Windows.
[Windows] Fix threads comparison on Windows
Thu, Oct 18, 12:56 AM
aleksandr.urakov committed rL344729: [Windows] Fix threads comparison on Windows.
[Windows] Fix threads comparison on Windows
Thu, Oct 18, 12:56 AM
aleksandr.urakov closed D53357: [Windows] Fix threads comparison on Windows.
Thu, Oct 18, 12:56 AM · Restricted Project
aleksandr.urakov added a comment to D53357: [Windows] Fix threads comparison on Windows.

Thank you!

Thu, Oct 18, 12:54 AM · Restricted Project

Wed, Oct 17

aleksandr.urakov created D53375: [PDB] Improve performance of the PDB DIA plugin.
Wed, Oct 17, 8:05 AM · Restricted Project
aleksandr.urakov created D53368: [Symbol] Search symbols with name and type in a symbol file.
Wed, Oct 17, 5:11 AM · Restricted Project
aleksandr.urakov created D53361: [API] Extend the `SBThreadPlan` interface.
Wed, Oct 17, 2:46 AM · Restricted Project
aleksandr.urakov created D53357: [Windows] Fix threads comparison on Windows.
Wed, Oct 17, 1:42 AM · Restricted Project

Tue, Oct 16

aleksandr.urakov added a comment to D52461: [PDB] Introduce `PDBNameParser`.

Yes, it's simpler to move it to the CPlusPlusLanguage::MethodName (or CPlusPlusNameParser?) I think. The only question left is how to differentiate MSVC demangled names from others? May be it would be ok to treat name as an MSVC name if it contains a grave accent? Because we probably already can parse MSVC names without grave accents with CPlusPlusLanguage::MethodName.

Tue, Oct 16, 8:00 AM · Restricted Project
aleksandr.urakov created D53324: [PDB] Extend IPDBSession's interface to retrieve frame data.
Tue, Oct 16, 7:03 AM
aleksandr.urakov added a comment to D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.

Yes, I mean exactly the same case. For sequences like you've written yes, the unwind should work, but there must be some problems with saved registers. x86AssemblyInspectionEngine doesn't handle instructions like and %-8, %esp, so the register save would work only if this instruction hadn't changed the esp value (e.g. esp was already aligned). Otherwise, if esp was changed, the offset to CFA in RegisterLocation of some register will be invalid, because it will not take the alignment into account.

Tue, Oct 16, 4:30 AM · Restricted Project
aleksandr.urakov added a comment to D52461: [PDB] Introduce `PDBNameParser`.

Just handle the anonymous namespace' thing specially before passing to CPlusPlusNameParser`.

Tue, Oct 16, 3:20 AM · Restricted Project

Mon, Oct 15

aleksandr.urakov updated subscribers of D52461: [PDB] Introduce `PDBNameParser`.

I just have tried to patch CPlusPlusNameParser in the way to support MSVC demangled names, but there is a problem. CPlusPlusNameParser splits an incoming name in tokens with clang::Lexer. I've lexed the next name:

`anonymous namespace'::foo

The lexer treats the first character (a grave accent) as an unknown token, and it's ok for our purposes. Then it sees an identifier (anonymous), a keyword (namespace), and it's ok too. But the problem is with the last part of the string. The lexer sees an apostrophe and supposes that it's a character constant, it looks for a closing apostrophe, don't find it and treats all the line ending ('::foo) as a single unknown token.

Mon, Oct 15, 6:17 AM · Restricted Project

Fri, Oct 12

aleksandr.urakov added a comment to D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.

Do we have access to the current instruction pointer? That's what you need to find the correct FPO record.

Fri, Oct 12, 1:04 AM · Restricted Project

Thu, Oct 11

aleksandr.urakov accepted D53096: [lldb-test] Add a lit test for dependent modules in PECOFF.

LGTM after D53094 will be done!

Thu, Oct 11, 6:29 AM
aleksandr.urakov added inline comments to D53094: [pecoff] Implement ObjectFilePECOFF::GetDependedModules().
Thu, Oct 11, 6:26 AM
aleksandr.urakov added a comment to D53092: [lldb] Add support in Status::AsCString to retrieve win32 system error strings.

Otherwise LGTM!

Thu, Oct 11, 5:08 AM
aleksandr.urakov updated subscribers of D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.

As for aligned stack cross-platform problems, I mean also problems with stack unwinding. They seem to appear on non-Windows too. It's because x86AssemblyInspectionEngine doesn't support stack alignment now. I've made some changes locally to fix it, but they are still raw to publish. The main idea is to save one more frame address (along with CFA) for every row of an unwind plan (I've called this AFA - aligned frame address), and add an analysis for and esp, ... etc. to x86AssemblyInspectionEngine. What do you think about a such approach?

Thu, Oct 11, 3:34 AM · Restricted Project
aleksandr.urakov updated the diff for D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.
Thu, Oct 11, 3:19 AM · Restricted Project
aleksandr.urakov added a comment to D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.

Thanks a lot for so detailed answer, it helps!

Thu, Oct 11, 3:19 AM · Restricted Project

Wed, Oct 10

aleksandr.urakov created D53086: [PDB] Fix flaky `variables-locations.test` after PR38857.
Wed, Oct 10, 8:25 AM · Restricted Project
aleksandr.urakov accepted D53002: Create a new symbol file plugin for cross-platform PDB symbolization.

Thank you!

Wed, Oct 10, 6:28 AM

Tue, Oct 9

aleksandr.urakov added inline comments to D53002: Create a new symbol file plugin for cross-platform PDB symbolization.
Tue, Oct 9, 10:24 AM
aleksandr.urakov added inline comments to D53002: Create a new symbol file plugin for cross-platform PDB symbolization.
Tue, Oct 9, 10:18 AM
aleksandr.urakov added a comment to D53002: Create a new symbol file plugin for cross-platform PDB symbolization.

It's great! Especially thanks for comments!

Tue, Oct 9, 8:00 AM
aleksandr.urakov committed rL344027: [ADT] Force the alignment of the `data` field of `IntervalMap`.
[ADT] Force the alignment of the `data` field of `IntervalMap`
Tue, Oct 9, 1:52 AM
aleksandr.urakov committed rL344020: Revert "[ADT] Change the `IntervalMap` alignment assert for x86 MSVC".
Revert "[ADT] Change the `IntervalMap` alignment assert for x86 MSVC"
Tue, Oct 9, 12:46 AM
aleksandr.urakov committed rL344018: [ADT] Change the `IntervalMap` alignment assert for x86 MSVC.
[ADT] Change the `IntervalMap` alignment assert for x86 MSVC
Tue, Oct 9, 12:35 AM
aleksandr.urakov closed D52613: [ADT] Change the `IntervalMap` alignment assert for x86 MSVC.
Tue, Oct 9, 12:35 AM
aleksandr.urakov added a comment to D52613: [ADT] Change the `IntervalMap` alignment assert for x86 MSVC.

Thank you!

Tue, Oct 9, 12:35 AM

Mon, Oct 8

aleksandr.urakov added a comment to D45653: [X86] Enable sibling-call optimization for functions returning structs.

Unfortunately, I'm not looking at this exactly now due to some work with a higher priority. But I'm keeping it in mind.

Mon, Oct 8, 4:51 AM
aleksandr.urakov updated the diff for D52613: [ADT] Change the `IntervalMap` alignment assert for x86 MSVC.

Yes, you are right, it's more simple! I've updated the patch.

Mon, Oct 8, 1:35 AM

Sun, Sep 30

aleksandr.urakov added a comment to D52461: [PDB] Introduce `PDBNameParser`.

I've tried to parse with it a name like

N0::`unnamed namespase'::Name

and it can't parse it correctly. May be it just can't parse MSVC demangled names?

Sun, Sep 30, 11:24 PM · Restricted Project
aleksandr.urakov added a comment to D52461: [PDB] Introduce `PDBNameParser`.

Ok, I'll look at this, thank you!

Sun, Sep 30, 10:20 AM · Restricted Project

Fri, Sep 28

aleksandr.urakov added a reviewer for D52461: [PDB] Introduce `PDBNameParser`: clayborg.

Try to use and extend CPlusPlusLanguage::MethodName as needed. I believe it was recently backed by a new clang parser that knows how to chop up C++ demangled names

Fri, Sep 28, 9:08 AM · Restricted Project
aleksandr.urakov updated the diff for D52613: [ADT] Change the `IntervalMap` alignment assert for x86 MSVC.

Yes, you are right, both clang and MinGW align both S0 and S1 (x86 MinGW aligns the stack on 16 byte in the main function, so foo0 and foo1 become identical). I've updated the diff, thanks.

Fri, Sep 28, 5:46 AM
aleksandr.urakov added a comment to D52618: [Windows] A basic implementation of memory allocations in a debuggee process.

Thanks for explanations!

Fri, Sep 28, 4:44 AM · Restricted Project
aleksandr.urakov committed rLLDB343298: [PDB] Handle `char` as a builtin type.
[PDB] Handle `char` as a builtin type
Fri, Sep 28, 1:01 AM
aleksandr.urakov committed rL343298: [PDB] Handle `char` as a builtin type.
[PDB] Handle `char` as a builtin type
Fri, Sep 28, 1:01 AM
aleksandr.urakov closed D52468: [PDB] Treat `char`, `signed char` and `unsigned char` as three different types.
Fri, Sep 28, 1:01 AM · Restricted Project
aleksandr.urakov added a comment to D52468: [PDB] Treat `char`, `signed char` and `unsigned char` as three different types.

Yes, sure! Thanks all!

Fri, Sep 28, 12:59 AM · Restricted Project

Thu, Sep 27

aleksandr.urakov added a reviewer for D52618: [Windows] A basic implementation of memory allocations in a debuggee process: clayborg.
Thu, Sep 27, 11:40 AM · Restricted Project
aleksandr.urakov added a comment to D52618: [Windows] A basic implementation of memory allocations in a debuggee process.

I didn't know about such a priority, thanks... But in this case lldb-server also must be able to allocate, read and write in a debuggee. Doesn't it use the process plugin for that? Or somehow duplicates this functionality?

Thu, Sep 27, 11:36 AM · Restricted Project
aleksandr.urakov updated the diff for D52618: [Windows] A basic implementation of memory allocations in a debuggee process.

Clang-format patch.

Thu, Sep 27, 9:05 AM · Restricted Project
aleksandr.urakov created D52618: [Windows] A basic implementation of memory allocations in a debuggee process.
Thu, Sep 27, 8:58 AM · Restricted Project
aleksandr.urakov created D52613: [ADT] Change the `IntervalMap` alignment assert for x86 MSVC.
Thu, Sep 27, 7:47 AM

Wed, Sep 26

aleksandr.urakov committed rLLDB343084: [PDB] Restore the calling convention from PDB.
[PDB] Restore the calling convention from PDB
Wed, Sep 26, 2:05 AM
aleksandr.urakov committed rL343084: [PDB] Restore the calling convention from PDB.
[PDB] Restore the calling convention from PDB
Wed, Sep 26, 2:05 AM
aleksandr.urakov closed D52501: [PDB] Restore the calling convention from PDB.
Wed, Sep 26, 2:05 AM · Restricted Project
aleksandr.urakov updated the diff for D52501: [PDB] Restore the calling convention from PDB.

I just have extracted the test cases in a separate test and have specified -m32 key, so the test can run also on 64-bit machines.

Wed, Sep 26, 1:56 AM · Restricted Project

Tue, Sep 25

aleksandr.urakov created D52501: [PDB] Restore the calling convention from PDB.
Tue, Sep 25, 8:34 AM · Restricted Project
aleksandr.urakov added a comment to D52461: [PDB] Introduce `PDBNameParser`.

Ok, I'll look into that, thanks!

Tue, Sep 25, 7:35 AM · Restricted Project
aleksandr.urakov created D52468: [PDB] Treat `char`, `signed char` and `unsigned char` as three different types.
Tue, Sep 25, 6:57 AM · Restricted Project
aleksandr.urakov created D52461: [PDB] Introduce `PDBNameParser`.
Tue, Sep 25, 5:47 AM · Restricted Project

Sep 14 2018

aleksandr.urakov committed rLLDB342208: [PDB] Use the raw PDB symbol interface more accurately.
[PDB] Use the raw PDB symbol interface more accurately
Sep 14 2018, 12:48 AM
aleksandr.urakov committed rL342208: [PDB] Use the raw PDB symbol interface more accurately.
[PDB] Use the raw PDB symbol interface more accurately
Sep 14 2018, 12:47 AM
aleksandr.urakov closed D51967: [PDB] Use the raw PDB symbol interface more accurately.
Sep 14 2018, 12:47 AM · Restricted Project
aleksandr.urakov added a comment to D51967: [PDB] Use the raw PDB symbol interface more accurately.

That would be great, thank you!

Sep 14 2018, 12:45 AM · Restricted Project

Sep 13 2018

aleksandr.urakov added a comment to D51967: [PDB] Use the raw PDB symbol interface more accurately.

I've been experimenting with DIA locally and after some investigation I'm not sure this is going to be reliable. Let's say we have a class, we want the decl context containing the class. For example, on line 366. So we call GetDeclContextContainingSymbol. Despite what the MSDN documentation states, I'm pretty sure this is going to return a PDBSymbolExe.

Sep 13 2018, 4:21 AM · Restricted Project
aleksandr.urakov updated the diff for D51967: [PDB] Use the raw PDB symbol interface more accurately.

Apply recommended fixes.

Sep 13 2018, 2:45 AM · Restricted Project

Sep 12 2018

aleksandr.urakov created D51967: [PDB] Use the raw PDB symbol interface more accurately.
Sep 12 2018, 1:34 AM · Restricted Project

Sep 11 2018

aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

@stella.stamenova @ted Fixed with rL341942, thanks again!
@zturner I'll rewrite GetClassOrFunctionParent and will create a different review for that, ok?

Sep 11 2018, 7:09 AM · Restricted Project
aleksandr.urakov committed rL341942: [PDB] Fix problems after rL341782.
[PDB] Fix problems after rL341782
Sep 11 2018, 7:04 AM
aleksandr.urakov committed rLLDB341942: [PDB] Fix problems after rL341782.
[PDB] Fix problems after rL341782
Sep 11 2018, 7:04 AM
aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

This change is causing three of the symbol file PDB tests to fail:

lldb-Unit :: SymbolFile/PDB/release/SymbolFilePDBTests.exe/SymbolFilePDBTests.TestClassInNamespace
lldb-Unit :: SymbolFile/PDB/release/SymbolFilePDBTests.exe/SymbolFilePDBTests.TestNestedClassTypes
lldb-Unit :: SymbolFile/PDB/release/SymbolFilePDBTests.exe/SymbolFilePDBTests.TestSimpleClassTypes

For example:

Sep 11 2018, 5:37 AM · Restricted Project
aleksandr.urakov added inline comments to D51162: [PDB] Restore AST from PDB symbols.
Sep 11 2018, 4:28 AM · Restricted Project
aleksandr.urakov added inline comments to D51162: [PDB] Restore AST from PDB symbols.
Sep 11 2018, 3:12 AM · Restricted Project
aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.
In D51162#1229616, @ted wrote:

The "auto from = 0" should be "size_t from = 0", since auto can't determine the correct type.

Sep 11 2018, 12:24 AM · Restricted Project

Sep 10 2018

aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

Sorry, I've missed this. I'll fix it tomorrow. Thank you!

Sep 10 2018, 10:21 AM · Restricted Project
aleksandr.urakov committed rLLDB341782: [PDB] Restore AST from PDB symbols.
[PDB] Restore AST from PDB symbols
Sep 10 2018, 1:11 AM
aleksandr.urakov committed rL341782: [PDB] Restore AST from PDB symbols.
[PDB] Restore AST from PDB symbols
Sep 10 2018, 1:10 AM
aleksandr.urakov closed D51162: [PDB] Restore AST from PDB symbols.
Sep 10 2018, 1:10 AM · Restricted Project
aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

Thanks all!

Sep 10 2018, 12:55 AM · Restricted Project

Sep 7 2018

aleksandr.urakov updated subscribers of D45653: [X86] Enable sibling-call optimization for functions returning structs.

If I understand correctly, you have shown the case that is not relating to this patch? This patch is about returning structures, not about passing them by value. I think that it would be better to create separate patch for fixing that?

Sep 7 2018, 12:01 AM

Sep 5 2018

aleksandr.urakov updated the diff for D51162: [PDB] Restore AST from PDB symbols.

Code cleanup

Sep 5 2018, 6:43 AM · Restricted Project
aleksandr.urakov updated the diff for D51162: [PDB] Restore AST from PDB symbols.
  • Fix a typo bug in AddRecordMethods (use continue instead of break);
  • Do not search function declarations by name during getting of a declaration for a symbol, it may lead to ambiguity.
Sep 5 2018, 6:42 AM · Restricted Project

Sep 3 2018

aleksandr.urakov updated the diff for D51162: [PDB] Restore AST from PDB symbols.

Added the dumping AST ability to lldb-test; adding a corresponding test for the patch.

Sep 3 2018, 6:22 AM · Restricted Project
aleksandr.urakov committed rLLDB341296: [DWARF] Fix dwarf5-index-is-used.cpp.
[DWARF] Fix dwarf5-index-is-used.cpp
Sep 3 2018, 12:19 AM
aleksandr.urakov committed rL341296: [DWARF] Fix dwarf5-index-is-used.cpp.
[DWARF] Fix dwarf5-index-is-used.cpp
Sep 3 2018, 12:18 AM
aleksandr.urakov closed D51208: [DWARF] Fix dwarf5-index-is-used.cpp.
Sep 3 2018, 12:18 AM · Restricted Project
aleksandr.urakov added a comment to D51208: [DWARF] Fix dwarf5-index-is-used.cpp.

Ok, thanks!

Sep 3 2018, 12:05 AM · Restricted Project

Aug 31 2018

aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

Yes, I'll try to implement that, thanks for the idea!

Aug 31 2018, 8:36 AM · Restricted Project
aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

Thanks :) Let's also wait for what Aaron will say? Because the patch is big enough.

Aug 31 2018, 8:23 AM · Restricted Project
aleksandr.urakov updated the diff for D51162: [PDB] Restore AST from PDB symbols.

Drop a scope part of a class member function name.

Aug 31 2018, 7:20 AM · Restricted Project

Aug 30 2018

aleksandr.urakov added a comment to D51162: [PDB] Restore AST from PDB symbols.

Can you review this, please?

Aug 30 2018, 4:51 AM · Restricted Project

Aug 29 2018

aleksandr.urakov committed rLLDB340901: [PDB] Resolve a symbol context block info correctly.
[PDB] Resolve a symbol context block info correctly
Aug 29 2018, 12:27 AM
aleksandr.urakov committed rL340901: [PDB] Resolve a symbol context block info correctly.
[PDB] Resolve a symbol context block info correctly
Aug 29 2018, 12:27 AM
aleksandr.urakov closed D51104: [PDB] Resolve a symbol context block info correctly.
Aug 29 2018, 12:27 AM · Restricted Project
aleksandr.urakov added a comment to D51104: [PDB] Resolve a symbol context block info correctly.

Thanks!

Aug 29 2018, 12:20 AM · Restricted Project

Aug 28 2018

aleksandr.urakov added a comment to D45653: [X86] Enable sibling-call optimization for functions returning structs.

I would rather not mess with this... mixing win64 and non-win64 calling conventions is going to be extremely rare in practice, and I don't really want to spend time combing through the ABI documents trying to figure out if anything can go wrong.

Aug 28 2018, 12:32 PM
aleksandr.urakov added a comment to D45653: [X86] Enable sibling-call optimization for functions returning structs.

Yes, I meant 32-bit of course.

Aug 28 2018, 2:04 AM

Aug 27 2018

aleksandr.urakov added a comment to D45653: [X86] Enable sibling-call optimization for functions returning structs.

If I understand right, the fail becomes not because of the sret argument is not the same, but because in the C calling convention sret argument is cleaned up by a callee, while a non-sret pointer to a struct is cleaned up by a caller. Or maybe I am missing something?..

Aug 27 2018, 5:32 AM
aleksandr.urakov abandoned D45653: [X86] Enable sibling-call optimization for functions returning structs.

This patch fails in the @t22_non_sret_to_sret X86 case (as we can see, a stack becomes corrupted after the patch in this case). Thanks to @efriedma for pointing that. So I just abandon the revision. Thanks all for your help!

Aug 27 2018, 5:10 AM
aleksandr.urakov updated the diff for D45653: [X86] Enable sibling-call optimization for functions returning structs.
Aug 27 2018, 5:04 AM
aleksandr.urakov committed rL340737: [X86] Adding the test pointing to the fail case of D45653.
[X86] Adding the test pointing to the fail case of D45653
Aug 27 2018, 4:58 AM
aleksandr.urakov added a comment to D45653: [X86] Enable sibling-call optimization for functions returning structs.

Fixed with rL340735, thanks!

Aug 27 2018, 4:28 AM
aleksandr.urakov committed rL340735: [NFC][X86] Fix `sibcall.ll` formatting.
[NFC][X86] Fix `sibcall.ll` formatting
Aug 27 2018, 4:27 AM

Aug 24 2018

aleksandr.urakov updated subscribers of D51104: [PDB] Resolve a symbol context block info correctly.
Aug 24 2018, 2:59 AM · Restricted Project