Page MenuHomePhabricator

michaeleisel (Michael Eisel)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 1 2022, 5:48 AM (10 w, 1 d)

Recent Activity

Jun 8 2022

michaeleisel added a comment to D126800: Write output sections in parallel.

@thakis any action items for me? It sounds like you're going to do the append_range change. Also, we can remove the #include I added, since it looks like it's already present further down. And lastly, I tested with the following patch as you specified and tests pass:

diff --git a/lld/test/MachO/invalid/range-check.s b/lld/test/MachO/invalid/range-check.s
index 2f087e38c266..1ad719cfa31d 100644
--- a/lld/test/MachO/invalid/range-check.s
+++ b/lld/test/MachO/invalid/range-check.s
@@ -6,11 +6,11 @@
 # RUN: %lld -dylib %t/bar.o -o %t/libbar.dylib
 # RUN: not %lld -lSystem -o /dev/null %t/libbar.dylib %t/test.o 2>&1 | FileCheck %s
Jun 8 2022, 12:51 PM · Restricted Project, Restricted Project, Restricted Project
michaeleisel added a comment to D126800: Write output sections in parallel.

@thakis how would #1 look exactly? For example, in StubsSection::writeTo, it appears to end up in inline void writeStub(uint8_t *buf8, const uint32_t stubCode[3], const macho::Symbol &sym), which calls encodePage21, which calls checkInt. Would we make a separate version of encodePage21 and duplicate the logic, where this new version takes a mutex and a vector along with the usual arguments, and instead of calling normal checkInt, it calls our own version that would insert into the vector? Do we duplicate the logic of reportRangeError? And would our vector also store the type of message reported, whether it was a warning, error, etc.? What about for fatals, if we happen to find any of those, should we in that case terminate early, and if so, how would that work? With these questions in mind (assuming you don't have some other idea in mind of how to do this), I'm curious what your objections to #2 would be. Also, it seems like #2 would be helpful in any future cases where we want deterministic logging from concurrent tasks, such as if file loading is parallelized.

Jun 8 2022, 7:49 AM · Restricted Project, Restricted Project, Restricted Project

Jun 6 2022

michaeleisel added a comment to D126800: Write output sections in parallel.

@thakis so it seems like we have some options:

  • collect the diagnostics emitted in all of those writeTo() functions into a mutexed vector (does this mean making new versions of helper functions that they call, like checkInt? it seems like a lot of work potentially)
  • have an override in the error handler to buffer output temporarily
  • in the test code, sort the actual output, and compare it to the expected output sorted
Jun 6 2022, 12:36 PM · Restricted Project, Restricted Project, Restricted Project

Jun 1 2022

michaeleisel updated the diff for D126800: Write output sections in parallel.

Use range-based insertion for output sections

Jun 1 2022, 2:07 PM · Restricted Project, Restricted Project, Restricted Project
michaeleisel added a comment to D126800: Write output sections in parallel.

@int3 the binary is 1.7GB, __TEXT segment 508MB. I'm on an M1 macbook pro with 10 cores. I've run clang-format and no changes were needed. I'll be running it on future revisions from now on.

Jun 1 2022, 2:03 PM · Restricted Project, Restricted Project, Restricted Project
michaeleisel added a comment to D126800: Write output sections in parallel.

@int3 it's about 4,000,000 symbols IIRC, if that helps (this is a debug build of the main Uber app). Were there other numbers you wanted?

Jun 1 2022, 12:00 PM · Restricted Project, Restricted Project, Restricted Project
michaeleisel added a comment to D126785: Cache file IDs of symbols in emitStabs for faster sorting.

@thakis oops, will do in the future!

Jun 1 2022, 11:58 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel updated the summary of D126800: Write output sections in parallel.
Jun 1 2022, 11:55 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel requested review of D126800: Write output sections in parallel.
Jun 1 2022, 11:52 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel added a comment to D126785: Cache file IDs of symbols in emitStabs for faster sorting.

@thakis I don't have commit permissions, if you could land it that'd be great. My preferred name is "Michael Eisel", and preferred email is "michael.eisel@gmail.com". Thanks!

Jun 1 2022, 10:21 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel updated the diff for D126785: Cache file IDs of symbols in emitStabs for faster sorting.

Rename to symbolsNeedingStabs

Jun 1 2022, 10:20 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel added inline comments to D126785: Cache file IDs of symbols in emitStabs for faster sorting.
Jun 1 2022, 8:14 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel updated the summary of D126785: Cache file IDs of symbols in emitStabs for faster sorting.
Jun 1 2022, 8:13 AM · Restricted Project, Restricted Project, Restricted Project
michaeleisel requested review of D126785: Cache file IDs of symbols in emitStabs for faster sorting.
Jun 1 2022, 8:10 AM · Restricted Project, Restricted Project, Restricted Project