[llvm-objcopy][ELF] Allow --set-section-flags src=... and --rename-section src=tst
authorFangrui Song <i@maskray.me>
Mon, 11 Jul 2022 16:04:45 +0000 (09:04 -0700)
committerFangrui Song <i@maskray.me>
Mon, 11 Jul 2022 16:04:45 +0000 (09:04 -0700)
commit7c03b7d668dcc0c6937d41e131fa0a07b62f907b
tree045e4d89beabec7058e9a3071de17ca79c8aaeac
parent0af268059636647798b00bd85dc4faecf537ce52
[llvm-objcopy][ELF] Allow --set-section-flags src=... and --rename-section src=tst

* GNU objcopy supports --set-section-flags src=... --rename-section src=tst and --set-section-flags runs first.
* GNU objcopy processes --update-section before --rename-section.

To match the two behaviors, postpone --rename-section and allow its use together
with --set-section-flags.

As a side effect, --rename-section=.foo1=.foo2 --add-section=.foo1=/dev/null
leads to .foo2 while GNU objcopy surprisingly produces .foo1 (so
--set-section-flags --add-section --rename-section do not form a total order).
I think the deviation is fine as a total order makes more sense.

Rename set-section-flags-and-rename.test to
set-section-attr-and-rename.test and additionally test --set-section-alignment

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D129336
llvm/docs/ReleaseNotes.rst
llvm/lib/ObjCopy/ELF/ELFObjcopy.cpp
llvm/test/tools/llvm-objcopy/ELF/rename-section-and-update.test [new file with mode: 0644]
llvm/test/tools/llvm-objcopy/ELF/set-section-attr-and-rename.test [new file with mode: 0644]
llvm/test/tools/llvm-objcopy/ELF/set-section-flags-and-rename.test [deleted file]
llvm/tools/llvm-objcopy/ObjcopyOptions.cpp