jh7370 wrote:

> > Rather than a new option, I'd rather you just add support for 
> > `--only-section` and `--dump-section`, which can then be specified in 
> > conjunction with each other to achieve the same result. IIRC, a while back, 
> > `--split-dwo` was considered a mistake, because the same effect could be 
> > achieved by specifying `--extract-dwo` and `--strip-dwo` and `--split-dwo` 
> > doesn't exist in GNU objcopy (which we aim for broad compatibility with).
> 
> I assume you mean `--remove-section` and `--dump-section`. The issue for our 
> use-case is that `--dump-section` only outputs the section contents, it does 
> not output a valid object with just one section specified.

No, I mean `--only-section`, which you'd use in one run, and then a separate 
`--remove-section` invocation removing that same section.

> We thought it best not to have a different implementation of `dump-section` 
> for `DXContainer` that outputs more than just the contents.

Yes, agreed with this.

> The concern that I have with this is that if we want to take an input file 
> that has 8 sections, pull 3 out into their own files and leave the remaining 
> 5, can we do that without invoking `objcopy` 4 times?
> 
> My reading of the current options is that to do what I described above we 
> would need to invoke objcopy multiple times like:
> 
> ```
> llvm-objcopy <input object> --only-section=RTS0 <path to new signature>
> llvm-objcopy <input object> --only-section=STAT <path to new reflection>
> llvm-objcopy <input object> --only-section=ILDB <path to new debug info>
> llvm-objcopy <input object> --remove-section=RTS0 --remove-section=STAT 
> --remove-section=ILDB <path to stripped file>
> ```

Thanks for the further explanation. Yes, that is what you'd need to do.

> It does seem like we should support the `--only-section` and 
> `--remove-section` options (and maybe that's where we should start), but it 
> would be really nice if we could reduce the number of process launches and 
> times reading the input object file.

Fair enough. My instinct is that a more "objcopy" way of doing things would be 
to have an option similar to `--dump-section`, which wraps it in the necessary 
object metadata, without removing the section from the file, which can be 
combined with `--remove-section` to also remove it. So the above becomes 
something like:
```
llvm-objcopy <input object> --split-section=RTS0=rts0.o 
--split-section=STAT=stat.o --split-section=ILDB=ildb.o --remove-section=RTS0 
--remove-section=STAT --remove-section=ILDB
```

I've used `--split-section` as the name here, but I'd probably actually 
consider `--extract-section` as the name, since it's more akin to 
`--extract-dwo` than `--split-dwo` at this point, but I'm open to suggestions.

@MaskRay, do you have any thoughts on the best way to approach this?

https://github.com/llvm/llvm-project/pull/153265
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to