[llvm] [llvm-objcopy] Add change-section-lma *+/-offset (PR #95431)
James Henderson via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 26 01:06:44 PDT 2024
================
@@ -552,6 +552,38 @@ static Error loadNewSectionData(StringRef ArgValue, StringRef OptionName,
return Error::success();
}
+static Expected<int64_t> parseChangeSectionLMA(StringRef ArgValue,
+ StringRef OptionName) {
+ StringRef StringValue;
+ if (ArgValue.starts_with("*+")) {
+ StringValue = ArgValue.slice(2, StringRef::npos);
+ } else if (ArgValue.starts_with("*-")) {
+ StringValue = ArgValue.slice(1, StringRef::npos);
+ } else if (ArgValue.contains("=")) {
+ return createStringError(errc::invalid_argument,
+ "bad format for " + OptionName +
+ ": changing LMA to a specific value is not "
+ "supported. Use *+val or *-val instead");
+ } else if (ArgValue.contains("+") || ArgValue.contains("-")) {
+ return createStringError(errc::invalid_argument,
+ "bad format for " + OptionName +
+ ": changing a specific section LMA is not "
+ "supported. Use *+val or *-val instead");
+ }
+ if (StringValue.empty())
+ return createStringError(errc::invalid_argument,
+ "bad format for " + OptionName +
+ ": missing LMA offset");
+
+ auto LMAValue = getAsInteger<int64_t>(StringValue);
+ if (!LMAValue)
+ return createStringError(LMAValue.getError(),
+ "bad format for " + OptionName + ": value after " +
+ ArgValue.slice(0, 2) + " is " + StringValue +
+ " when it should be integer");
----------------
jh7370 wrote:
"an integer"
https://github.com/llvm/llvm-project/pull/95431
More information about the llvm-commits
mailing list