jakehehrlich (Jake Ehrlich)
User

Projects

User does not belong to any projects.

User Details

User Since
May 16 2017, 11:34 AM (40 w, 4 d)

Recent Activity

Thu, Feb 22

jakehehrlich added a comment to D43475: [llvm-objcopy] Implement --only-keep-debug.

So in my cursory findings I have confirmed that prelinking is a known use case for this. Also the fact that debuggers emit warnings on this is reason enough to not accept this sort of change. It seems like there should in theory be ways to make something like this work but it would a) need debugger support and b) would need a design proposal. I'm happy to participate in new inventions but we can't just make --only-keep-debug do something which is known to behave differently from GNU objcopy in ways that are trivially visible.

Thu, Feb 22, 6:56 PM
jakehehrlich accepted D43661: [llvm-objcopy] Fix typo in setSymTab and make setters private..

Keep the changes coming! I'll be here to review them.

Thu, Feb 22, 6:36 PM
jakehehrlich added a comment to D42516: [llvm-objcopy] Add support for large indexes.

Thanks for this. It demonstrates some particularly poor behaviour in ELF Tool Chain's elfcopy (so, if anyone's comparing objcopy versions, there's not much value in including ELF Tool Chain right now).

Thu, Feb 22, 10:47 AM

Wed, Feb 21

jakehehrlich updated the diff for D42516: [llvm-objcopy] Add support for large indexes.

You can download the zip file that I'm using here: https://drive.google.com/file/d/1u6W1mUHkFBPsLzEV4u50M_BeiPKMyipM/view?usp=sharing

Wed, Feb 21, 6:29 PM
jakehehrlich added a comment to D42516: [llvm-objcopy] Add support for large indexes.

I spent some time today figuring out how to a) improve the time it takes the test to run and b) make the uploaded binary as small as possible. I'm uploading a binary so that not every test has to regenerate the same file (which dominates the running time of generating this file). I tried to make this binary as small and as compressible as possible. I got the compressed archive down to 147 kb which I think is acceptable. On my machine the total running time of decompressing, running llvm-objcopy, and then checking the data, is about 1.6 seconds which is acceptably fast in my opinion. This problem was much more solvable than when I implemented 64-bit symbol offsets for archives.

Wed, Feb 21, 6:15 PM
jakehehrlich added a comment to D42516: [llvm-objcopy] Add support for large indexes.

What error would you expect in this case? Why wouldn't it just work?

Wed, Feb 21, 6:05 PM
jakehehrlich added inline comments to D41102: Setup clang-doc frontend framework.
Wed, Feb 21, 4:14 PM · Restricted Project
jakehehrlich added a comment to D42516: [llvm-objcopy] Add support for large indexes.

One other point - it would be good to compare the performance of llvm-objcopy to GNU objcopy in this case, and if we're a lot worse, run a profiler at some point to identify what we're doing that makes things worse.

Wed, Feb 21, 2:12 PM
jakehehrlich added inline comments to D41102: Setup clang-doc frontend framework.
Wed, Feb 21, 1:53 PM · Restricted Project
jakehehrlich accepted D43545: [Driver] Make -fno-common default for Fuchsia.

LGTM

Wed, Feb 21, 1:50 PM

Tue, Feb 20

jakehehrlich updated the diff for D42516: [llvm-objcopy] Add support for large indexes.

Hey I'm back!

Tue, Feb 20, 8:55 PM
jakehehrlich added a comment to D43475: [llvm-objcopy] Implement --only-keep-debug.

I can ask some people about this stuff and get back to everyone on this. Like James I have no clue if this is valid or why the old tools converted allocated sections to NOBITS. As for --strip-debug, we should do some testing to see if .zdebug, .gdb_index, etc... are removed by it. Making --strip-debug more aggressive where possible is probably a good thing. Funny anecdote: my main use case for --strip-debug is to tell other people to use it so that they can send me large binaries via email and I can still see the symbol table and relocations.

Tue, Feb 20, 10:43 AM

Mon, Feb 19

jakehehrlich added a comment to D43475: [llvm-objcopy] Implement --only-keep-debug.

Hmmm, I don't know enough about how debuggers to know if this is ok. I spoke with Roland McGrath about this a while back and he seemed to think it was needed. This is coming from the guy who championed the --strip-sections feature which is a pretty aggressive form of stripping. If this is ok then it should be the right way for this to work but otherwise I'll have to reject this change unless it does the conversion to NOBITS. There might be a better way to do this now that we have the Writer setup.

Mon, Feb 19, 12:02 PM
jakehehrlich accepted D43474: [llvm-objcopy] Use the full filename in --add-gnu-debuglink.

I realized this a little while back but never got around to fixing it. Thanks!

Mon, Feb 19, 11:48 AM

Sat, Feb 17

jakehehrlich accepted D43404: [Fuchsia] Include libClang and clang-include-fixer in the toolchain.

LGTM

Sat, Feb 17, 2:29 PM

Fri, Feb 16

jakehehrlich added inline comments to D43392: [clang-tidy] Add Fuchsia checker for visibility attributes.
Fri, Feb 16, 2:09 PM · Restricted Project
jakehehrlich added a comment to D43392: [clang-tidy] Add Fuchsia checker for visibility attributes.

I'd like a test for #pragma GCC visibility push(hidden) which should cause each symbol to be treated as though it were explicitly hidden.

Fri, Feb 16, 12:17 PM · Restricted Project
jakehehrlich added a comment to D43392: [clang-tidy] Add Fuchsia checker for visibility attributes.

I'd like a test for #pragma GCC visibility push(hidden) which should cause each symbol to be treated as though it were explicitly hidden.

Fri, Feb 16, 12:11 PM · Restricted Project
jakehehrlich added a comment to D41102: Setup clang-doc frontend framework.

Can we add tests for a function at the top level and for a method?

Fri, Feb 16, 1:00 AM · Restricted Project

Wed, Feb 14

jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

Thanks for working on this!

Wed, Feb 14, 3:34 PM
jakehehrlich committed rL325189: [llvm-objcopy] Fix handling of zero-size segments in llvm-objcopy.
[llvm-objcopy] Fix handling of zero-size segments in llvm-objcopy
Wed, Feb 14, 3:33 PM
jakehehrlich closed D42872: Fix handling of zero-size segments in llvm-objcopy.
Wed, Feb 14, 3:33 PM
jakehehrlich accepted D42872: Fix handling of zero-size segments in llvm-objcopy.

I'll land this today.

Wed, Feb 14, 2:53 PM

Tue, Feb 13

jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

I've answered these questions very out of order, I'm not really sure what order to answer them in however so I just answered them as I got to them. Also sorry about not properly explaining the reasoning behind all of this. Feel free to ask anymore questions. I've tried to provide an explanation for any confusion that might linger.

Tue, Feb 13, 3:23 PM
jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

To clarify what I understood James to be proposing there should be two additional segments and they should not be added to Segments but instead OrderedSegments.

Tue, Feb 13, 12:50 PM

Fri, Feb 9

jakehehrlich added inline comments to D42873: [llvm-objcopy] Adjust --strip-dwo behavior.
Fri, Feb 9, 3:40 PM
jakehehrlich accepted D42873: [llvm-objcopy] Adjust --strip-dwo behavior.

One nit and then this LGTM

Fri, Feb 9, 3:27 PM
jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

That line from the gABI says the following

Fri, Feb 9, 11:49 AM

Thu, Feb 8

jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

treat the ELF header and program header table as pseudo-segments for layout purposes, with an OriginalOffset of 0 and sizeof(ElfHeader) respectively. If they end up nested inside another segment, that's fine, as the segment by definition must be already in the right place. If they end up with segments nested inside them, that is also fine for the same reasoning. Zero-sized segments at offset 0 will still be placed at offset 0, as desired, but the ELF header segment will "follow" (at offset 0) immediately after it, since it will be the first non-empty segment in the ordered list (or will be nested inside another segment that is similarly at offset 0).

How does this sound as an approach? It feels more robust and avoids any special casing, since everything should just naturally work with the existing layout scheme (the only thing we'd have to do is write these pseudo-segments differently).

Thu, Feb 8, 6:17 PM

Wed, Feb 7

jakehehrlich added a comment to D41102: Setup clang-doc frontend framework.

After the comments I just made are resolved, I'm fine with the low level details of the parts of this change that are here

Wed, Feb 7, 5:37 PM · Restricted Project
jakehehrlich added a comment to D42873: [llvm-objcopy] Adjust --strip-dwo behavior.

Yeah outputting to "-" was a mistake I made in literally the first patch that got this all started. In fact I inherited some starter code (file reading, error handeling, etc..) from Petr and that was from that. I believe Petr ripped it out of some other tool like yaml2obj (which outputs to standard out). This bug is probably the oldest remaining bug in the codebase. I feel a strange attachment to it now even though I just learned about it.

Wed, Feb 7, 4:10 PM
jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

Ignoring sections with virtual memory size 0 and file size 0 is perhaps safe, but I wonder if we need to rely on the heuristics. There are only a few segment types that are used for "markers". Namely, you can ignore just PT_GNU_STACK and PT_OPENBSD_WXNEEDED. It seems to me that it's easier to understand than checking the segment size.

Wed, Feb 7, 12:03 PM

Tue, Feb 6

jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

I added James Henderson as I seem to recall we had this issue some time ago and apparently I added the problem back again somewhere along the way. I seem to recall James had an opinion on what counted as a dummy segment. Knowing past me I probably conservatively said a dummy segment is a segment with MemSize zero. I think the less conservative answer of if FileSize is zero is better now though. Alternatively we could try and make a comprehensive list of every dummy PT_* type

Tue, Feb 6, 8:15 PM
jakehehrlich added a reviewer for D42872: Fix handling of zero-size segments in llvm-objcopy: jhenderson.
Tue, Feb 6, 8:11 PM
jakehehrlich added inline comments to D42872: Fix handling of zero-size segments in llvm-objcopy.
Tue, Feb 6, 8:10 PM
jakehehrlich added a comment to D42872: Fix handling of zero-size segments in llvm-objcopy.

What tells us that a segment is a marker segment? I think FileSize == 0 is probably a good choice but I want to make sure we don't later have to come back and fix this.

Tue, Feb 6, 8:10 PM
jakehehrlich accepted D42996: [Fuzzer] Use Zircon's public API on Fuchsia.

LGTM

Tue, Feb 6, 7:42 PM

Mon, Feb 5

jakehehrlich added a comment to D41102: Setup clang-doc frontend framework.

Additional note: This diff is a diff from your last commit not the full diff relative to origin/master which is what should be up here.

Mon, Feb 5, 12:36 PM · Restricted Project

Wed, Jan 31

jakehehrlich added inline comments to D41102: Setup clang-doc frontend framework.
Wed, Jan 31, 4:35 PM · Restricted Project

Tue, Jan 30

jakehehrlich added inline comments to D41102: Setup clang-doc frontend framework.
Tue, Jan 30, 11:59 PM · Restricted Project
jakehehrlich added inline comments to D41102: Setup clang-doc frontend framework.
Tue, Jan 30, 11:18 PM · Restricted Project
jakehehrlich added a comment to D41102: Setup clang-doc frontend framework.

If its possible to split VisitEnumDecl, and VisitRecordDecl into separate methods and the same is possible for VisitFunctionDecl and VisitCXXMethodDecl then I think all of your methods will look like the following VisitNamespaceDecl. That being the case you might want to factor this out somehow (which I think also would resolve my comment about isUnparsed being used the same way a lot).

Tue, Jan 30, 11:11 PM · Restricted Project

Mon, Jan 29

jakehehrlich updated the diff for D42516: [llvm-objcopy] Add support for large indexes.

Changed SectionIndexes to SectionIndexTable everywhere

Mon, Jan 29, 8:10 PM
jakehehrlich updated the diff for D42516: [llvm-objcopy] Add support for large indexes.
  1. Still no tests
  2. changed error message for clarity
  3. fixed typos
  4. populated the section index table with SHN_UNDEF for values < SHN_LORESERVE
  5. computed address of section index table data just once in initSymbolTable
  6. avoided Shndx use for section index table name
  7. I haven't updated "SectionIdexes" to "SectionIndexTable" because I ran out of time. I'll get back to that tomorrow.
Mon, Jan 29, 6:34 PM
jakehehrlich added inline comments to D42516: [llvm-objcopy] Add support for large indexes.
Mon, Jan 29, 6:34 PM

Jan 25 2018

jakehehrlich committed rL323494: Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects".
Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects"
Jan 25 2018, 6:03 PM
jakehehrlich committed rL323493: Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects".
Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects"
Jan 25 2018, 5:49 PM
jakehehrlich committed rL323489: Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects".
Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects"
Jan 25 2018, 5:20 PM
jakehehrlich committed rL323486: Revert "Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer….
Revert "Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer…
Jan 25 2018, 4:42 PM
jakehehrlich committed rL323484: Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects".
Reland "[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects"
Jan 25 2018, 4:22 PM
jakehehrlich committed rL323480: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.
[llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects
Jan 25 2018, 2:47 PM
jakehehrlich closed D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.
Jan 25 2018, 2:47 PM
jakehehrlich committed rL323477: [llvm-objcopy] Add --add-gnu-debuglink.
[llvm-objcopy] Add --add-gnu-debuglink
Jan 25 2018, 2:17 PM
jakehehrlich committed rL323463: tmp.
tmp
Jan 25 2018, 12:26 PM

Jan 24 2018

jakehehrlich added a comment to D42516: [llvm-objcopy] Add support for large indexes.

As is there are a few problems but I didn't want to miss another day of review just because I didn't finish this today

Jan 24 2018, 6:50 PM
jakehehrlich updated the diff for D42516: [llvm-objcopy] Add support for large indexes.

forgot context

Jan 24 2018, 6:35 PM
jakehehrlich created D42516: [llvm-objcopy] Add support for large indexes.
Jan 24 2018, 6:32 PM
jakehehrlich added a comment to D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.

One small inline comment. Otherwise, I'm happy with this as-is. Are you still planning on splitting it up? It'll make it somewhat easier, I hope to spot any problems, but if it's a lot of extra work, may no longer be worth it.

Jan 24 2018, 12:25 PM

Jan 23 2018

jakehehrlich updated the diff for D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.

Added test to check one of the error messages that BianrySectionWriter can generate. I only test the symtab case. The other two cases are hard to test without a way to edit the sections after they've been read in (with like --set-section-flags or something). Relocations are read in as DynamicRelocationSections when allocated so this whole issue is bypassed. Since GnuDebuglinkSection is never read in, only added, there isn't a way to make a binary that will trigger that code path. Once --set-section-flags exists it will be able to dynamically change these values and trigger these cases.

Jan 23 2018, 3:01 PM
jakehehrlich updated the diff for D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.
  1. Moved BinarySectionWriter to after ELFWriter
  2. Fixed bianry/binary typos
  3. Added section names to error messages
Jan 23 2018, 11:59 AM

Jan 22 2018

jakehehrlich updated the diff for D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.

Updated code to handle data ownership in a better way. Objects now own all their data using a shared_ptr. This eliminates the potential for dangling references if the Reader is not left open.

Jan 22 2018, 1:53 PM
jakehehrlich updated the diff for D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.

Added BinarySectionWriter to avoid always using ELFWriter<ELF64LE> for writing binaries. Errors are now thrown for certain input we don't know how to handle (like allocated SHT_SYMTAB, allocated relcoations, and allocated .gnudebuglink)

Jan 22 2018, 1:27 PM
jakehehrlich added inline comments to D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.
Jan 22 2018, 11:56 AM
jakehehrlich committed rL323144: [llvm-objcopy] Use physical instead of virtual address when aligning and….
[llvm-objcopy] Use physical instead of virtual address when aligning and…
Jan 22 2018, 11:29 AM
jakehehrlich closed D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.
Jan 22 2018, 11:29 AM
jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

Just wanted to check in on this one since it hasn't landed yet. Is there anything else I need to do?

Jan 22 2018, 11:03 AM

Jan 18 2018

jakehehrlich accepted D42275: [Fuchsia] Enable Fuzzer as a supported sanitizer on Fuchsia.

LGTM

Jan 18 2018, 5:41 PM
jakehehrlich updated the diff for D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.
  1. Fixed BufPtr duplication in Writers
  2. Moved Writer class to below SectionWriter
  3. Removed using namespace object in favor of using specific types
  4. Removed protected members (made them private)
  5. Move SectionVisitor destructor to above the first SectionWriter call
  6. Removed curly braces on if-stmt for WhiteSectionHeaders
  7. Put code for SplitDWOToFile back in a function
  8. Removed unused variable for section return
  9. Removed TODO, whoops
Jan 18 2018, 3:58 PM
jakehehrlich added a comment to D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.

As to how to split it up, could the SectionWriter/SectionVisitor related changes be done first? After that a logical split would be to do the Reader-related classes, then the Writer classes, if it's possible without having to make too many intermediate changes that are just going to be thrown away.

Jan 18 2018, 2:47 PM
jakehehrlich added a comment to D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.

Have you tried extending this with new input types, to make sure this design works?

Jan 18 2018, 2:26 PM

Jan 17 2018

jakehehrlich created D42222: [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects.
Jan 17 2018, 5:55 PM

Jan 11 2018

jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

Thanks for the help getting this one sorted out! I don't have commit access.

Jan 11 2018, 12:04 PM
jakehehrlich accepted D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

LGTM

Jan 11 2018, 11:50 AM
jakehehrlich added inline comments to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.
Jan 11 2018, 10:46 AM

Jan 10 2018

jakehehrlich accepted D41930: [Fuchsia] Use llvm-objcopy as objcopy on non-Apple hosts.
Jan 10 2018, 8:03 PM
jakehehrlich accepted D41929: [Fuchsia] Disable LLDB from the toolchain distribution.
Jan 10 2018, 8:00 PM
jakehehrlich added inline comments to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.
Jan 10 2018, 5:19 PM
jakehehrlich added a comment to D41687: [llvm-objcopy] Add support for input types and the -I and -B flags.

I plan on adding a refactoring to use an InputReader and possibly a Writer object and detemplating Object to make the refactoring work. I think that's a) quite doable and b) a very good idea. I'm going to post the refactoring in another change and put this one on hold for a bit and then rebase the refactor into this change so there isn't one giant change all at once.

Jan 10 2018, 10:26 AM
jakehehrlich closed D41731: [llvm-objcopy] Add --add-gnu-debuglink.
Jan 10 2018, 10:22 AM
jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

Also IRC gave the greenlight on pointer to members. I'm not I really care *that* much but using pointers to members would allow for a generic "compareSegmentsBy" when used in conjunction with std::bind.

Jan 10 2018, 10:18 AM
jakehehrlich added inline comments to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.
Jan 10 2018, 10:16 AM

Jan 9 2018

jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

So Roland looked at this and said this seems reasonable to him. It should agree with our personal use case as well. Between my testing, Owen looking and linking us to the BFD code, and Roland's approval I'm confident this approach is correct. This code LGTM but as always I'd like to wait for James for the final LGTM. Also I'm waiting for feed back on use of member pointers in llvm. Using rare little known features is generally frowned on so I wanted to make sure first. If I don't hear back we can just have a bit of duplicated code.

Jan 9 2018, 5:51 PM
jakehehrlich added inline comments to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.
Jan 9 2018, 5:07 PM
jakehehrlich added inline comments to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.
Jan 9 2018, 3:46 PM
jakehehrlich committed rL322132: temp.
temp
Jan 9 2018, 3:01 PM
jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

After some further testing (read, writing strange assembly files and linker scripts) it seems like segments are indeed layed out to create a proper memory image (Owen's current recommendation) however allocated sections that are not in segments are pushed to alignment regardless of address. So I believe your change would be consistent with that. I'm not sure how I got the idea that these were being pushed to alignment especially considering that I explicitly checked to see if it was creating a memory image or if it was pushing to alignment. I believe at the time of writing that test (was like the second non-trivial feature added) I was using yaml2obj to produce sections to test that on and I must not have used program headers.

Jan 9 2018, 12:19 PM
jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

two-seg-remove-* tests having the same physical on different segments was a mistake that didn't matter until now. I'll fix those. The alignment behavior was 100% intended and I should be able to reproduce the results with objcopy if memory serves. I'll post an example. Perhaps I just messed that up though.

Jan 9 2018, 11:14 AM

Jan 8 2018

jakehehrlich added a comment to D41687: [llvm-objcopy] Add support for input types and the -I and -B flags.

On the topic of removing the implicit "giant if" I'm not sure there's a great way to solve this. I've considered solutions involving macros (which are simple but should work) to some rather overly complicated dynamic solutions that check a condition for each ELF type for you and then dispatch to the correct template correspondingly but a) I wasn't able to get them to work properly and b) they were super complicated. In general you're going to have at least 8 branches because a) There are 4 templates and you need to dispatch to the correct one and b) There are two fundamentally different sources of information that need to be considered to decide which of those 4 should be used. Removing the templates we can from Object dosn't help either because how we read in the object and how we decide to write out the object still require that we have the same number of branches. Using macros to ensure uniformity of branches is one idea that a) works and b) is simple but I think I'd rather know explicitly what's going on.

Jan 8 2018, 3:27 PM
jakehehrlich updated the diff for D41687: [llvm-objcopy] Add support for input types and the -I and -B flags.
  1. Removed comment and include for StringSaver stuff
  2. Tweaked test to show that stemming and removing of alpha numeric characters exists
Jan 8 2018, 3:02 PM
jakehehrlich updated the diff for D41731: [llvm-objcopy] Add --add-gnu-debuglink.
  1. Used numeric limits max instead of a cast and bitwise hack
  2. Modified comment
  3. Clang formated add-gnu-debuglink
  4. Updated error message to display the specific error not just the vague "could not be opened" message.
Jan 8 2018, 2:24 PM

Jan 5 2018

jakehehrlich closed D41684: [llvm-objcopy] Add --localize-hidden option.
Jan 5 2018, 4:07 PM
jakehehrlich committed rL321884: [llvm-objcopy] Add --localize-hidden option.
[llvm-objcopy] Add --localize-hidden option
Jan 5 2018, 11:20 AM

Jan 4 2018

jakehehrlich updated the diff for D41684: [llvm-objcopy] Add --localize-hidden option.
  1. Added hidden global symbol
  2. Fixed "indexes" typo
Jan 4 2018, 5:52 PM
jakehehrlich created D41731: [llvm-objcopy] Add --add-gnu-debuglink.
Jan 4 2018, 9:43 AM

Jan 3 2018

jakehehrlich updated the diff for D41684: [llvm-objcopy] Add --localize-hidden option.
  1. Moved RemovePred decl as recommended
  2. Added spaces around a bit of code
  3. Made some big changes to the test. I added weak and local hidden symbols. I changed their names because I couldn't keep track of anything. I changed a symbol to be protected. I believe it should meet the requirements originally desired.
Jan 3 2018, 4:08 PM
jakehehrlich added a comment to D41619: [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary.

I assume that the virtual address alignment requirement for binary output is not the same as for ELF output

Jan 3 2018, 3:33 PM
jakehehrlich updated the diff for D41687: [llvm-objcopy] Add support for input types and the -I and -B flags.

I haven't figured out a solution to the "giant nested if-statment" problem yet. There's a sense in which it's largely intractable because we have to use dynamic information to dispatch to 1 of 4 statically known functions of different types. I'm still thinking about it.

Jan 3 2018, 3:02 PM
jakehehrlich added a comment to D41687: [llvm-objcopy] Add support for input types and the -I and -B flags.

I just did some experimenting with GNU objcopy with this, and I'm getting a binary copy of the input, when using -I binary, even with -B i386:x86-64. I can workaround this using -O elf64-x86-64, i.e. "objcopy text.txt text.o -B i386:x86-64 -I binary -O elf64-x86-64". If I drop the -B, I get an EM_NONE machine type, and if I drop the -O, I get a text file. Not sure how you want to handle this!

Jan 3 2018, 11:39 AM

Jan 2 2018

jakehehrlich created D41687: [llvm-objcopy] Add support for input types and the -I and -B flags.
Jan 2 2018, 5:09 PM
jakehehrlich closed D41682: [llvm-objcopy] Add support for visibility.

Committed this in r321681

Jan 2 2018, 4:55 PM