Page MenuHomePhabricator

jgalenson (Joel Galenson)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 18 2017, 11:07 AM (117 w, 5 d)

Recent Activity

Sep 3 2019

jgalenson committed rL370765: Request commit access for jgalenson.
Request commit access for jgalenson
Sep 3 2019, 8:12 AM

Jul 19 2019

jgalenson added a comment to D63847: [MC] Add MCInstrAnalysis::evaluateMemoryOperandAddress.

Sorry, but I'm not familiar with x86.

Jul 19 2019, 10:46 AM · Restricted Project

Aug 24 2018

jgalenson added a comment to D51230: Use unique_ptr.

Thanks.

Aug 24 2018, 2:05 PM
jgalenson closed D51230: Use unique_ptr.
Aug 24 2018, 12:42 PM
jgalenson added an edge to rL340642: Use unique_ptr.: D51230: Use unique_ptr.
Aug 24 2018, 12:42 PM
jgalenson added 1 commit(s) for D51230: Use unique_ptr: rL340642: Use unique_ptr..
Aug 24 2018, 12:42 PM
jgalenson committed rL340642: Use unique_ptr..
Use unique_ptr.
Aug 24 2018, 12:41 PM
jgalenson added a comment to D51230: Use unique_ptr.
In D51230#1212854, @pcc wrote:

LGTM

I think this is the way that you are supposed to do it. It's the way that we're doing it elsewhere.
http://llvm-cs.pcc.me.uk/?q=createMCInstrAnalysis

Aug 24 2018, 12:38 PM
jgalenson added a comment to D50204: [llvm-objdump] Label calls to the PLT.

I uploaded https://reviews.llvm.org/D51230 to try to address that. Could you take a look at it?

Aug 24 2018, 12:34 PM
jgalenson created D51230: Use unique_ptr.
Aug 24 2018, 12:08 PM
jgalenson committed rLLD340616: Modify tests to show PLT entry labels.
Modify tests to show PLT entry labels
Aug 24 2018, 9:24 AM
jgalenson committed rL340616: Modify tests to show PLT entry labels.
Modify tests to show PLT entry labels
Aug 24 2018, 9:23 AM
jgalenson committed rL340615: Add missing override keyword (NFC).
Add missing override keyword (NFC)
Aug 24 2018, 9:16 AM
jgalenson committed rL340612: [cfi-verify] Support cross-DSO.
[cfi-verify] Support cross-DSO
Aug 24 2018, 8:23 AM
jgalenson closed D49383: [cfi-verify] Support cross-DSO.
Aug 24 2018, 8:23 AM
jgalenson committed rL340611: [llvm-objdump] Label calls to the PLT..
[llvm-objdump] Label calls to the PLT.
Aug 24 2018, 8:23 AM
jgalenson closed D50204: [llvm-objdump] Label calls to the PLT.
Aug 24 2018, 8:23 AM
jgalenson committed rL340610: Find PLT entries for x86, x86_64, and AArch64..
Find PLT entries for x86, x86_64, and AArch64.
Aug 24 2018, 8:22 AM
jgalenson closed D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 24 2018, 8:22 AM

Aug 23 2018

jgalenson added a comment to D50204: [llvm-objdump] Label calls to the PLT.

Friendly ping.

Aug 23 2018, 8:16 AM

Aug 17 2018

jgalenson added a comment to D50204: [llvm-objdump] Label calls to the PLT.

Friendly ping. Are there any more comments?

Aug 17 2018, 2:42 PM
jgalenson added a comment to D49383: [cfi-verify] Support cross-DSO.

Any other comments?

Aug 17 2018, 8:31 AM

Aug 16 2018

jgalenson added inline comments to D49383: [cfi-verify] Support cross-DSO.
Aug 16 2018, 1:42 PM
jgalenson added inline comments to D50204: [llvm-objdump] Label calls to the PLT.
Aug 16 2018, 1:37 PM
jgalenson updated the diff for D50204: [llvm-objdump] Label calls to the PLT.
Aug 16 2018, 1:37 PM
jgalenson added a comment to D49383: [cfi-verify] Support cross-DSO.

Friendly ping.

Aug 16 2018, 8:54 AM

Aug 15 2018

jgalenson updated the diff for D50204: [llvm-objdump] Label calls to the PLT.
Aug 15 2018, 9:37 AM
jgalenson updated the diff for D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 15 2018, 9:35 AM

Aug 14 2018

jgalenson added inline comments to D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 14 2018, 8:30 AM
jgalenson updated the diff for D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 14 2018, 8:30 AM

Aug 13 2018

jgalenson added a comment to D50203: Find PLT entries for x86, x86_64, and AArch64.

Friendly ping.

Aug 13 2018, 8:01 AM

Aug 9 2018

jgalenson updated the diff for D50204: [llvm-objdump] Label calls to the PLT.

Added newline to end of tests.

Aug 9 2018, 8:31 AM

Aug 8 2018

jgalenson added inline comments to D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 8 2018, 8:35 AM

Aug 7 2018

jgalenson updated the diff for D49383: [cfi-verify] Support cross-DSO.

Added __cfi_slowpath_diag to the list of functions that trap on CFI violations.

Aug 7 2018, 1:07 PM

Aug 3 2018

jgalenson abandoned D49675: [cfi-verify] Detect more protected calls using cross-DSO..

I've rolled this into https://reviews.llvm.org/D49383.

Aug 3 2018, 2:53 PM
jgalenson updated the diff for D50204: [llvm-objdump] Label calls to the PLT.

Updated to use StringSaver. I'm still waiting on the discussion about whether or not to use dynamicEntries().

Aug 3 2018, 1:11 PM
jgalenson added inline comments to D50204: [llvm-objdump] Label calls to the PLT.
Aug 3 2018, 10:34 AM
jgalenson added a comment to rL337830: Use SCEV to avoid inserting some bounds checks..

That bug should be fixed by https://reviews.llvm.org/rL338902.

Aug 3 2018, 10:13 AM
jgalenson added a comment to D49946: Fix crash in bounds checking.

No problem, and thanks for the review!

Aug 3 2018, 10:13 AM
jgalenson committed rL338902: Fix crash in bounds checking..
Fix crash in bounds checking.
Aug 3 2018, 10:13 AM
jgalenson closed D49946: Fix crash in bounds checking.
Aug 3 2018, 10:13 AM
jgalenson added a comment to D49946: Fix crash in bounds checking.

Friendly ping. This also fixes https://bugs.llvm.org/show_bug.cgi?id=38438.

Aug 3 2018, 8:30 AM
jgalenson added a comment to rL337830: Use SCEV to avoid inserting some bounds checks..

That bug is fixed by https://reviews.llvm.org/D49946, which is awaiting review.

Aug 3 2018, 8:29 AM

Aug 2 2018

jgalenson added a child revision for D50203: Find PLT entries for x86, x86_64, and AArch64: D49383: [cfi-verify] Support cross-DSO.
Aug 2 2018, 3:41 PM
jgalenson added a parent revision for D49383: [cfi-verify] Support cross-DSO: D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 2 2018, 3:41 PM
jgalenson added a parent revision for D50204: [llvm-objdump] Label calls to the PLT: D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 2 2018, 3:41 PM
jgalenson added a child revision for D50203: Find PLT entries for x86, x86_64, and AArch64: D50204: [llvm-objdump] Label calls to the PLT.
Aug 2 2018, 3:41 PM
jgalenson added a comment to D50204: [llvm-objdump] Label calls to the PLT.

Is there a better way to handle appending "@plt" to the name? I had to add a vector to keep the original string around so that the StringRefs are still good, but that's a bit ugly.

Aug 2 2018, 3:40 PM
jgalenson added a comment to D50203: Find PLT entries for x86, x86_64, and AArch64.

I'm not at all familiar with ELF or parsing x86 and ARM, so I'd appreciate feedback on how this works and if there's a way to do it more cleanly (especially the parsing).

Aug 2 2018, 3:40 PM
jgalenson updated the diff for D49383: [cfi-verify] Support cross-DSO.

Updated to use the new scheme suggested by pcc and eugenis, which lets other parts of LVLM (e.g., objdump) use the PLT information.

Aug 2 2018, 3:40 PM
jgalenson created D50204: [llvm-objdump] Label calls to the PLT.
Aug 2 2018, 3:40 PM
jgalenson created D50203: Find PLT entries for x86, x86_64, and AArch64.
Aug 2 2018, 3:40 PM

Jul 31 2018

jgalenson added a comment to D49675: [cfi-verify] Detect more protected calls using cross-DSO..

Remind me, was there a reason why you wanted to use binary test inputs instead of assembling them?

Jul 31 2018, 1:15 PM

Jul 30 2018

jgalenson added inline comments to D49946: Fix crash in bounds checking.
Jul 30 2018, 1:20 PM
jgalenson updated the diff for D49946: Fix crash in bounds checking.
Jul 30 2018, 1:20 PM
jgalenson added inline comments to D49946: Fix crash in bounds checking.
Jul 30 2018, 8:48 AM
jgalenson updated the diff for D49946: Fix crash in bounds checking.

I found another reproducer for the problem. This one is slightly different where a different assert blow, but I guess its only a different symptom for the same fault. As this one is slightly smaller you might want to use this one as a testcase instead (or use both)?

Jul 30 2018, 8:48 AM
jgalenson committed rL338254: [doc] Fix Getting Started typo..
[doc] Fix Getting Started typo.
Jul 30 2018, 8:14 AM
jgalenson closed D49201: [doc] Fix Getting Started typo..
Jul 30 2018, 8:14 AM
jgalenson added a comment to D49201: [doc] Fix Getting Started typo..

I can commit it.

Jul 30 2018, 8:11 AM

Jul 27 2018

jgalenson created D49946: Fix crash in bounds checking.
Jul 27 2018, 3:54 PM
jgalenson added a comment to D49383: [cfi-verify] Support cross-DSO.

Thanks for the explanations! pcc, that example API was very helpful. I have the core part of it working, including integration with cfi-verify and objdump. I'll finish it up and put the patches up for review at some point.

Jul 27 2018, 1:53 PM

Jul 25 2018

jgalenson added a comment to D49383: [cfi-verify] Support cross-DSO.

On AArch64, searching for adrp/ldr pairs is still a heuristic; is there not a more principled way of doing it? What about x86? And how do we get the name of the function this way?

Jul 25 2018, 3:13 PM
jgalenson added a comment to D49383: [cfi-verify] Support cross-DSO.
In D49383#1175738, @pcc wrote:

I agree with eugenis that the PLT symbolization should live in lib/Object. That would also help us implement PLT symbolization in llvm-objdump. I was imagining that there would be a function that would take an object file and return a list of (PLT entry address, symbol) pairs. That would seem to be sufficient for llvm-objdump as well as for this code.

I was discussing PLT symbolization offline with eugenis and did a little more investigation. It turns out that it shouldn't be that hard to symbolize the PLT, at least not on aarch64. All of bfd/gold/lld start their PLT entries with a straightforward ADRP/LDR sequence, which you can pretty straighforwardly map onto a GOT entry and then onto a symbol.

Jul 25 2018, 2:39 PM
jgalenson updated the diff for D49675: [cfi-verify] Detect more protected calls using cross-DSO..

Note that this could be combined with its parent patch, as that is now about supporting cross-DSO.

Jul 25 2018, 9:57 AM
jgalenson updated the diff for D49383: [cfi-verify] Support cross-DSO.

I replaced the command-line flag to specify functions with a hardcoded list of __cfi_slowpath, abort, and their @plt variants. Does that seem reasonable?

Jul 25 2018, 9:54 AM

Jul 24 2018

jgalenson added a comment to D49383: [cfi-verify] Support cross-DSO.

Thanks for the comments!

Jul 24 2018, 5:13 PM
jgalenson added a reviewer for D49383: [cfi-verify] Support cross-DSO: eugenis.
Jul 24 2018, 8:24 AM
jgalenson abandoned D49492: Run bounds checking sanitizer earlier to make it easier to optimize away its checks..

I just committed https://reviews.llvm.org/rL337830, which solves this problem the way eugenis suggested.

Jul 24 2018, 8:24 AM
jgalenson committed rL337830: Use SCEV to avoid inserting some bounds checks..
Use SCEV to avoid inserting some bounds checks.
Jul 24 2018, 8:22 AM
jgalenson closed D49602: Use SCEV to avoid inserting some bounds checks..
Jul 24 2018, 8:22 AM

Jul 23 2018

jgalenson added a parent revision for D49675: [cfi-verify] Detect more protected calls using cross-DSO.: D49383: [cfi-verify] Support cross-DSO.
Jul 23 2018, 9:40 AM
jgalenson added a child revision for D49383: [cfi-verify] Support cross-DSO: D49675: [cfi-verify] Detect more protected calls using cross-DSO..
Jul 23 2018, 9:40 AM
jgalenson created D49675: [cfi-verify] Detect more protected calls using cross-DSO..
Jul 23 2018, 9:39 AM

Jul 20 2018

jgalenson updated the diff for D49602: Use SCEV to avoid inserting some bounds checks..
Jul 20 2018, 1:16 PM
jgalenson updated the diff for D49602: Use SCEV to avoid inserting some bounds checks..

Added a testcase that goes one off the end of the loop counting up (and the previous update added one that counts down one off the end).

Jul 20 2018, 11:18 AM
jgalenson added a comment to D49602: Use SCEV to avoid inserting some bounds checks..

Do the tests cover cases where only one or two of the checks can be omitted, but not all of them? Does not look that way.

Consider a loop where offset is always inbounds, but offset + access size may be not. Bounds checks is still needed, but it should be cheaper, because Size <= Offset will be constant false.

Jul 20 2018, 11:07 AM
jgalenson added a comment to D49602: Use SCEV to avoid inserting some bounds checks..

Out of general curiosity, why is this needed?
The optimization passes won't be able to/are not allowed to drop the extra unneeded checks?

Jul 20 2018, 10:47 AM
jgalenson added a comment to D49602: Use SCEV to avoid inserting some bounds checks..

Do the tests cover cases where only one or two of the checks can be omitted, but not all of them? Does not look that way.

Jul 20 2018, 10:32 AM
jgalenson updated the diff for D49602: Use SCEV to avoid inserting some bounds checks..
Jul 20 2018, 10:32 AM
jgalenson added a comment to D49602: Use SCEV to avoid inserting some bounds checks..

I'm not very familiar with SCEV, so I'm not sure if I'm making the correct signed vs. unsigned ranges and comparisons here. What is the proper way to do that?

Jul 20 2018, 8:25 AM
jgalenson created D49602: Use SCEV to avoid inserting some bounds checks..
Jul 20 2018, 8:23 AM

Jul 18 2018

jgalenson added a comment to D49492: Run bounds checking sanitizer earlier to make it easier to optimize away its checks..

Good call; I had figured that running it earlier might just impede other optimizations, but I forgot that it would also hide size information.

Jul 18 2018, 3:34 PM
jgalenson added a comment to D49492: Run bounds checking sanitizer earlier to make it easier to optimize away its checks..

Are you sure this will actually do what you want, in general? I suspect it will end up missing bounds checks in some cases because it's running it too early (before mem2reg/inlining/etc).

Jul 18 2018, 2:19 PM
jgalenson created D49492: Run bounds checking sanitizer earlier to make it easier to optimize away its checks..
Jul 18 2018, 9:13 AM

Jul 16 2018

jgalenson created D49383: [cfi-verify] Support cross-DSO.
Jul 16 2018, 9:31 AM
jgalenson committed rL337181: [cfi-verify] Abort on unsupported targets.
[cfi-verify] Abort on unsupported targets
Jul 16 2018, 8:32 AM
jgalenson closed D49304: [cfi-verify] Abort on unsupported targets.
Jul 16 2018, 8:32 AM

Jul 13 2018

jgalenson closed D49301: [cfi-verify] Only run AArch64 tests when it is a supported target.

Thanks!

Jul 13 2018, 12:41 PM
jgalenson created D49304: [cfi-verify] Abort on unsupported targets.
Jul 13 2018, 9:59 AM
jgalenson added a comment to D49301: [cfi-verify] Only run AArch64 tests when it is a supported target.

I committed this fix to fix the failing tests.

Jul 13 2018, 9:18 AM
jgalenson added an edge to rL337012: [cfi-verify] Only run AArch64 tests when it is a supported target: D49301: [cfi-verify] Only run AArch64 tests when it is a supported target.
Jul 13 2018, 9:15 AM
jgalenson added 1 commit(s) for D49301: [cfi-verify] Only run AArch64 tests when it is a supported target: rL337012: [cfi-verify] Only run AArch64 tests when it is a supported target.
Jul 13 2018, 9:15 AM
jgalenson committed rL337012: [cfi-verify] Only run AArch64 tests when it is a supported target.
[cfi-verify] Only run AArch64 tests when it is a supported target
Jul 13 2018, 9:14 AM
jgalenson created D49301: [cfi-verify] Only run AArch64 tests when it is a supported target.
Jul 13 2018, 9:04 AM
jgalenson committed rL337007: [cfi-verify] Support AArch64..
[cfi-verify] Support AArch64.
Jul 13 2018, 8:24 AM
jgalenson closed D48836: [cfi-verify] Support AArch64..
Jul 13 2018, 8:24 AM

Jul 12 2018

jgalenson added inline comments to D48836: [cfi-verify] Support AArch64..
Jul 12 2018, 12:33 PM

Jul 11 2018

jgalenson created D49201: [doc] Fix Getting Started typo..
Jul 11 2018, 12:55 PM

Jul 10 2018

jgalenson updated the diff for D48836: [cfi-verify] Support AArch64..

Updated a comment.

Jul 10 2018, 8:42 AM