Page MenuHomePhabricator

dmikulin (Dmitry Mikulin)
User

Projects

User does not belong to any projects.

User Details

User Since
Oct 14 2016, 2:33 PM (157 w, 3 d)

Recent Activity

Wed, Oct 16

dmikulin committed rG15984457a673: Revert Tag CFI-generated data structures with "#pragma clang section"… (authored by dmikulin).
Revert Tag CFI-generated data structures with "#pragma clang section"…
Wed, Oct 16, 5:59 PM
dmikulin committed rL375069: Revert Tag CFI-generated data structures with "#pragma clang section"….
Revert Tag CFI-generated data structures with "#pragma clang section"…
Wed, Oct 16, 5:59 PM
dmikulin committed rGe2692b3bc032: Tag CFI-generated data structures with "#pragma clang section" attributes. (authored by dmikulin).
Tag CFI-generated data structures with "#pragma clang section" attributes.
Wed, Oct 16, 10:56 AM
dmikulin closed D68808: Tag CFI-generated data structures with "#pragma clang section" attributes..
Wed, Oct 16, 10:56 AM · Restricted Project
dmikulin committed rL375022: Tag CFI-generated data structures with "#pragma clang section" attributes..
Tag CFI-generated data structures with "#pragma clang section" attributes.
Wed, Oct 16, 10:56 AM

Tue, Oct 15

dmikulin updated the diff for D68808: Tag CFI-generated data structures with "#pragma clang section" attributes..

Updated after recent commits.

Tue, Oct 15, 2:05 PM · Restricted Project
dmikulin committed rGf14642f2f185: Added support for "#pragma clang section relro=<name>" (authored by dmikulin).
Added support for "#pragma clang section relro=<name>"
Tue, Oct 15, 11:36 AM
dmikulin committed rL374934: Added support for "#pragma clang section relro=<name>".
Added support for "#pragma clang section relro=<name>"
Tue, Oct 15, 11:36 AM
dmikulin closed D68806: Relro is missing from the original "#pragma clang section" implementation..
Tue, Oct 15, 11:36 AM · Restricted Project, Restricted Project
dmikulin committed rG034badb312be: CFI: wrong type passed to llvm.type.test with multiple inheritance… (authored by dmikulin).
CFI: wrong type passed to llvm.type.test with multiple inheritance…
Tue, Oct 15, 9:33 AM
dmikulin committed rL374909: CFI: wrong type passed to llvm.type.test with multiple inheritance….
CFI: wrong type passed to llvm.type.test with multiple inheritance…
Tue, Oct 15, 9:33 AM
dmikulin closed D67985: CFI: wrong type passed to llvm.type.test with multiple inheritance devirtualization.
Tue, Oct 15, 9:33 AM · Restricted Project, Restricted Project, Restricted Project

Fri, Oct 11

dmikulin added a comment to D67985: CFI: wrong type passed to llvm.type.test with multiple inheritance devirtualization.

@pcc : poke

Fri, Oct 11, 2:04 PM · Restricted Project, Restricted Project, Restricted Project

Thu, Oct 10

dmikulin created D68808: Tag CFI-generated data structures with "#pragma clang section" attributes..
Thu, Oct 10, 9:08 AM · Restricted Project
dmikulin created D68806: Relro is missing from the original "#pragma clang section" implementation..
Thu, Oct 10, 8:59 AM · Restricted Project, Restricted Project

Mon, Oct 7

dmikulin updated the diff for D67985: CFI: wrong type passed to llvm.type.test with multiple inheritance devirtualization.

Added a new CodeGetCXX test case

Mon, Oct 7, 11:51 AM · Restricted Project, Restricted Project, Restricted Project

Tue, Sep 24

dmikulin created D67985: CFI: wrong type passed to llvm.type.test with multiple inheritance devirtualization.
Tue, Sep 24, 2:12 PM · Restricted Project, Restricted Project, Restricted Project

Apr 23 2019

dmikulin committed rCRT359043: The error message for mismatched value sites is very cryptic..
The error message for mismatched value sites is very cryptic.
Apr 23 2019, 3:43 PM
dmikulin committed rG312b5f86b7b2: The error message for mismatched value sites is very cryptic. Make it more… (authored by dmikulin).
The error message for mismatched value sites is very cryptic. Make it more…
Apr 23 2019, 3:25 PM
dmikulin committed rL359043: The error message for mismatched value sites is very cryptic..
The error message for mismatched value sites is very cryptic.
Apr 23 2019, 3:25 PM
dmikulin closed D60896: Improve error reporting for mismatched value sites in IPGO.
Apr 23 2019, 3:25 PM · Restricted Project

Apr 18 2019

dmikulin added a reviewer for D60896: Improve error reporting for mismatched value sites in IPGO: probinson.
Apr 18 2019, 4:32 PM · Restricted Project
dmikulin created D60896: Improve error reporting for mismatched value sites in IPGO.
Apr 18 2019, 4:30 PM · Restricted Project

Jun 5 2018

dmikulin added a comment to D41474: Fix a crash in lazy loading of Metadata in ThinLTO.

Any chance this gets fixed soon? I'm hitting the same problem.

Jun 5 2018, 6:03 PM

Jun 4 2018

dmikulin committed rL333937: In thin and full LTO + CFI, direct function calls may go through jump table.
In thin and full LTO + CFI, direct function calls may go through jump table
Jun 4 2018, 11:22 AM
dmikulin closed D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.
Jun 4 2018, 11:22 AM

May 31 2018

dmikulin updated the diff for D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Changed the checks to look for dso_local instread of visibility.

May 31 2018, 1:37 PM

May 30 2018

dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Can you guys please give it a try with Chromium? Do you get any measurable performance improvements with this change?

May 30 2018, 4:30 PM

May 24 2018

dmikulin added inline comments to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.
May 24 2018, 2:33 PM
dmikulin updated the diff for D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Changed the code not to short circuit functions that can be overridden at run time and not to expose <func>.cfi names to the runtime.
Added a test point to check for that.

May 24 2018, 2:22 AM

May 21 2018

dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Oh, this must be with cross-DSO CFI. I see what the problem is. We need to skip symbols not resolved internally from replacing direct calls to calls to <name>.cfi. An extra test case wound't hurt, so if you have it please send it to me.

May 21 2018, 8:47 PM
dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Based on a quick look at a couple of stack traces it looks like some direct
calls now call symbols that are no longer overriden by their replacements
in chromium, e.g. calls to realloc() from a DSO previously resolved to the
tcmalloc implementation in chromium instead of realloc.cfi(), the locally
linked tcmalloc implementation in that library.

May 21 2018, 8:07 PM
dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Sorry, I'm traveling this week, didn't see this until now. I didn't get any bot failure notifications after the commit, so I assumed it was good. Do you have a test case I can use to reproduce it?

May 21 2018, 5:01 PM

May 17 2018

dmikulin committed rL332610: In thin and full LTO + CFI, direct function calls may go through jump table.
In thin and full LTO + CFI, direct function calls may go through jump table
May 17 2018, 7:33 AM
dmikulin closed D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.
May 17 2018, 7:33 AM

May 15 2018

dmikulin added inline comments to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.
May 15 2018, 3:42 PM

May 10 2018

dmikulin updated the diff for D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Fixed a few missed cases where direct calls were routed through jump tables.
Added more test points for thin and full LTO.

May 10 2018, 5:24 PM

May 8 2018

dmikulin added inline comments to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.
May 8 2018, 5:53 PM

May 7 2018

dmikulin committed rL331680: Remove explicit setting of the CFI jumptable section name, it does not appear.
Remove explicit setting of the CFI jumptable section name, it does not appear
May 7 2018, 2:33 PM
dmikulin closed D46537: Remove explicit setting of the CFI jumptable section name..
May 7 2018, 2:33 PM
dmikulin created D46537: Remove explicit setting of the CFI jumptable section name..
May 7 2018, 11:04 AM
dmikulin updated the diff for D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Added a test case.
Skip direct calls in addition to blockaddr uses when dealing with CFI.
Don't set linkage to internal for .cfi symbols as they may be needed by direct calls.

May 7 2018, 10:51 AM

May 4 2018

dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

ToT LTO and ThinLTO builds both work fine for me. Can you post the error you get? I'm not sure how ToT would produce a direct call to a function with a jumptable entry.

May 4 2018, 1:54 PM

May 3 2018

dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

$ clang++ -fuse-ld=lld -flto=thin -fsanitize=cfi-icall -fvisibility=hidden -o ex ex1.cpp ex2.cpp
lld: error: undefined symbol: void X<double>() (.cfi)

referenced by ex1.cpp

lto.tmp:(main)
May 3 2018, 1:24 PM
dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

No, that statement is doing the reverse of what you're doing. It's replacing directs calls to a function to calls to the jumptable entry. (F/FDecl have different meanings in the 2 other cases than how you're using them.)

Sounds like we need to skip direct calls in replaceUsesExceptBlockAddr(). Make it replaceUsesExceptBlockAddrOrDirectCalls()

May 3 2018, 11:31 AM
dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

No, that statement is doing the reverse of what you're doing. It's replacing directs calls to a function to calls to the jumptable entry. (F/FDecl have different meanings in the 2 other cases than how you're using them.)

May 3 2018, 8:49 AM

May 2 2018

dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Also adding a FDecl->replaceDirectCalls(F) in the else block after line 1016 seems like it would also correctly rewrite direct calls for the other two cases (external functions, and local functions declared in the current TU.)

May 2 2018, 10:25 AM

May 1 2018

dmikulin added a comment to D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.

Yeah, need a test case.

May 1 2018, 7:57 PM
dmikulin created D46327: Move LowerTypeTestsPass after inlining in ThinLTO pipeline.
May 1 2018, 11:39 AM
dmikulin created D46326: ThinLTO+CFI: short-circuit direct calls to jump table entries.
May 1 2018, 11:34 AM

Mar 5 2018

dmikulin committed rL326737: On Windows we need to be able to process response files with Windows-style.
On Windows we need to be able to process response files with Windows-style
Mar 5 2018, 11:37 AM
dmikulin closed D43988: Fix processing of path names in response files on Windows.
Mar 5 2018, 11:37 AM
dmikulin committed rL326734: On Windows expansion of regex file name patterns is the responsibility of each.
On Windows expansion of regex file name patterns is the responsibility of each
Mar 5 2018, 10:57 AM
dmikulin closed D43987: Fix ar command line expansion on Windows..
Mar 5 2018, 10:57 AM
dmikulin updated the diff for D43988: Fix processing of path names in response files on Windows.

Addressed review comments.

Mar 5 2018, 9:34 AM

Mar 2 2018

dmikulin committed rL326636: Implementation of MRI "delete" command..
Implementation of MRI "delete" command.
Mar 2 2018, 3:26 PM
dmikulin closed D43989: MRI delete command.
Mar 2 2018, 3:26 PM
dmikulin updated the diff for D43989: MRI delete command.

Changed deleteMember() to erase_if()

Mar 2 2018, 1:56 PM
dmikulin updated the diff for D43989: MRI delete command.

Changed the implementation to avoid writing the archive twice.

Mar 2 2018, 12:55 PM
dmikulin updated the diff for D43989: MRI delete command.

llvm-ar supports only a subset of MRI commands, that's why 'delete' as implemented here only works for a specific use case: deleting members added with 'addlib' or 'addmod' commands during archive creation.

Mar 2 2018, 10:01 AM

Mar 1 2018

dmikulin created D43989: MRI delete command.
Mar 1 2018, 5:06 PM
dmikulin created D43988: Fix processing of path names in response files on Windows.
Mar 1 2018, 4:52 PM
dmikulin added a reviewer for D43987: Fix ar command line expansion on Windows.: Bigcheese.
Mar 1 2018, 4:48 PM
dmikulin created D43987: Fix ar command line expansion on Windows..
Mar 1 2018, 4:48 PM
dmikulin created D43986: Allow MRI scripts as file input on cmd line.
Mar 1 2018, 4:44 PM

Feb 8 2018

dmikulin committed rL324670: Minor tweak to test case..
Minor tweak to test case.
Feb 8 2018, 3:12 PM
dmikulin committed rL324658: [ThinLTO] Skip BlockAddresses while replacing uses in function import..
[ThinLTO] Skip BlockAddresses while replacing uses in function import.
Feb 8 2018, 2:17 PM
dmikulin closed D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import.
Feb 8 2018, 2:16 PM
dmikulin updated the diff for D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import.

Fixed the test.

Feb 8 2018, 1:10 PM
dmikulin added inline comments to D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import.
Feb 8 2018, 1:10 PM
dmikulin added inline comments to D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import.
Feb 8 2018, 12:54 PM
dmikulin updated the diff for D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import.

Re-wrote the test.

Feb 8 2018, 11:40 AM

Feb 7 2018

dmikulin committed rL324559: Symbols defined in linker scripts should not have dso_local flag set in LTO….
Symbols defined in linker scripts should not have dso_local flag set in LTO…
Feb 7 2018, 8:27 PM
dmikulin committed rLLD324559: Symbols defined in linker scripts should not have dso_local flag set in LTO….
Symbols defined in linker scripts should not have dso_local flag set in LTO…
Feb 7 2018, 8:27 PM
dmikulin closed D43051: Symbols defined in linker scripts should not have dso_local flag set in LTO resolutions.
Feb 7 2018, 8:27 PM
dmikulin updated the diff for D43051: Symbols defined in linker scripts should not have dso_local flag set in LTO resolutions.

Changed the test to create linker script with "echo" instead.

Feb 7 2018, 5:59 PM
dmikulin created D43051: Symbols defined in linker scripts should not have dso_local flag set in LTO resolutions.
Feb 7 2018, 4:27 PM
dmikulin added reviewers for D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import: davide, tejohnson.
Feb 7 2018, 10:12 AM
dmikulin created D43027: [ThinLTO] Skip BlockAddresses while replacing uses in function import.
Feb 7 2018, 10:02 AM

Feb 6 2018

dmikulin committed rLLD324435: Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF.
Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF
Feb 6 2018, 4:52 PM
dmikulin committed rL324435: Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF.
Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF
Feb 6 2018, 4:51 PM
dmikulin closed D42977: Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF objects.
Feb 6 2018, 4:51 PM
dmikulin updated the diff for D42977: Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF objects.

Minor tweaks.

Feb 6 2018, 3:48 PM
dmikulin updated the diff for D42977: Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF objects.

Addressed review comments

Feb 6 2018, 3:04 PM
dmikulin created D42977: Don't set dso_local flag in LTO resolutions for absolute symbols defined in ELF objects.
Feb 6 2018, 11:02 AM

Nov 16 2017

dmikulin committed rL318477: Current implementation of Value::replaceUsesExceptBlockAddr() uses UseList.
Current implementation of Value::replaceUsesExceptBlockAddr() uses UseList
Nov 16 2017, 4:31 PM
dmikulin closed D39864: Fix for CFI type tests lowering assert. by committing rL318477: Current implementation of Value::replaceUsesExceptBlockAddr() uses UseList.
Nov 16 2017, 4:31 PM
dmikulin added a comment to D39864: Fix for CFI type tests lowering assert. .

And the set type is changed to SmallSetVector.

Nov 16 2017, 2:37 PM
dmikulin added inline comments to D39864: Fix for CFI type tests lowering assert. .
Nov 16 2017, 1:02 PM
dmikulin updated the diff for D39864: Fix for CFI type tests lowering assert. .

Changed the fix to save unique Constant users and process them separately outside of the UseList iterator.

Nov 16 2017, 12:34 PM
dmikulin added a comment to D39864: Fix for CFI type tests lowering assert. .

Nag... Can you guys please review this?

Nov 16 2017, 8:47 AM

Nov 10 2017

dmikulin added inline comments to D39864: Fix for CFI type tests lowering assert. .
Nov 10 2017, 12:52 PM

Nov 9 2017

dmikulin created D39864: Fix for CFI type tests lowering assert. .
Nov 9 2017, 12:45 PM

Sep 27 2017

dmikulin committed rL314365: ASan allocates a global data initialization array at the tail end of each.
ASan allocates a global data initialization array at the tail end of each
Sep 27 2017, 4:33 PM
dmikulin closed D38056: Partial fix for bug 34607: ASan misses global underflow in first symbol of data section by committing rL314365: ASan allocates a global data initialization array at the tail end of each.
Sep 27 2017, 4:33 PM

Sep 26 2017

dmikulin added a comment to D38056: Partial fix for bug 34607: ASan misses global underflow in first symbol of data section.

Can someone please click "Approve"? ;)

Sep 26 2017, 3:30 PM

Sep 25 2017

dmikulin updated the diff for D38056: Partial fix for bug 34607: ASan misses global underflow in first symbol of data section.

Updated diff.

Sep 25 2017, 5:02 AM

Sep 22 2017

dmikulin added a comment to D38056: Partial fix for bug 34607: ASan misses global underflow in first symbol of data section.

The compiler change from the previous patch is out, so there is no flag.

Sep 22 2017, 9:50 AM

Sep 21 2017

dmikulin updated the diff for D38056: Partial fix for bug 34607: ASan misses global underflow in first symbol of data section.

Updated the patch. Do it all in runtime.

Sep 21 2017, 7:55 PM
dmikulin added a comment to D38056: Partial fix for bug 34607: ASan misses global underflow in first symbol of data section.

I guess we can do it purely in the runtime code. Initially I thought of allocating another metadata record in the compiler to direct poisoning. But the following does the trick:

Sep 21 2017, 5:05 PM