aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-objcopy
diff options
context:
space:
mode:
authorserge-sans-paille <sguelton@mozilla.com>2024-04-29 13:27:04 +0200
committerserge-sans-paille <sguelton@mozilla.com>2024-07-11 17:59:19 +0200
commitfb5a38bb4930736b0aab3ce428b60245921f982f (patch)
tree53fe9703d31dc3c86618cd39eeb1bb31290ee836 /llvm/tools/llvm-objcopy
parent0431c61f6b80b4ba34e36e7763c58edafcbbf1a9 (diff)
downloadllvm-fb5a38bb4930736b0aab3ce428b60245921f982f.zip
llvm-fb5a38bb4930736b0aab3ce428b60245921f982f.tar.gz
llvm-fb5a38bb4930736b0aab3ce428b60245921f982f.tar.bz2
[llvm-objcopy] Add verification of added .note section format
Also add a --no-verify-note-sections flag to make it possible to add invalid sections if needs be. Pull Request: https://github.com/llvm/llvm-project/pull/90458
Diffstat (limited to 'llvm/tools/llvm-objcopy')
-rw-r--r--llvm/tools/llvm-objcopy/ObjcopyOptions.cpp4
-rw-r--r--llvm/tools/llvm-objcopy/ObjcopyOpts.td9
2 files changed, 13 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index eb27ba0..a54feb7 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -990,6 +990,10 @@ objcopy::parseObjcopyOptions(ArrayRef<const char *> RawArgsArr,
? DiscardType::All
: DiscardType::Locals;
}
+
+ ELFConfig.VerifyNoteSections = InputArgs.hasFlag(
+ OBJCOPY_verify_note_sections, OBJCOPY_no_verify_note_sections, true);
+
Config.OnlyKeepDebug = InputArgs.hasArg(OBJCOPY_only_keep_debug);
ELFConfig.KeepFileSymbols = InputArgs.hasArg(OBJCOPY_keep_file_symbols);
MachOConfig.KeepUndefined = InputArgs.hasArg(OBJCOPY_keep_undefined);
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOpts.td b/llvm/tools/llvm-objcopy/ObjcopyOpts.td
index f3d14ab..b26c497 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOpts.td
+++ b/llvm/tools/llvm-objcopy/ObjcopyOpts.td
@@ -1,5 +1,10 @@
include "CommonOpts.td"
+multiclass B<string name, string help1, string help2> {
+ def NAME: Flag<["--"], name>, HelpText<help1>;
+ def no_ # NAME: Flag<["--"], "no-" # name>, HelpText<help2>;
+}
+
defm binary_architecture
: Eq<"binary-architecture", "Ignored for compatibility">;
def B : JoinedOrSeparate<["-"], "B">,
@@ -176,6 +181,10 @@ def G : JoinedOrSeparate<["-"], "G">,
Alias<keep_global_symbol>,
HelpText<"Alias for --keep-global-symbol">;
+defm verify_note_sections : B<"verify-note-sections",
+ "Validate note sections",
+ "Don't validate note sections">;
+
defm keep_global_symbols
: Eq<"keep-global-symbols",
"Read a list of symbols from <filename> and run as if "