[lld] 703d3f2 - [lld-macho] Make lld::getInteger() tolerate leading "0x"/"0X" when base is 16
Greg McGary via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 22 08:56:31 PDT 2020
Author: Greg McGary
Date: 2020-09-22T08:56:20-07:00
New Revision: 703d3f25976c98bcf0e4717087c5a51b92c5f51a
URL: https://github.com/llvm/llvm-project/commit/703d3f25976c98bcf0e4717087c5a51b92c5f51a
DIFF: https://github.com/llvm/llvm-project/commit/703d3f25976c98bcf0e4717087c5a51b92c5f51a.diff
LOG: [lld-macho] Make lld::getInteger() tolerate leading "0x"/"0X" when base is 16
ld64 is cool with leading `0x` for hex command-line args, and we should be also.
Reviewed By: #lld-macho, int3
Differential Revision: https://reviews.llvm.org/D88065
Added:
Modified:
lld/Common/Args.cpp
lld/test/MachO/headerpad.s
Removed:
################################################################################
diff --git a/lld/Common/Args.cpp b/lld/Common/Args.cpp
index 507830f9da346..afc57822c5c33 100644
--- a/lld/Common/Args.cpp
+++ b/lld/Common/Args.cpp
@@ -33,7 +33,10 @@ static int64_t getInteger(opt::InputArgList &args, unsigned key,
return Default;
int64_t v;
- if (to_integer(a->getValue(), v, base))
+ StringRef s = a->getValue();
+ if (base == 16 && (s.startswith("0x") || s.startswith("0X")))
+ s = s.drop_front(2);
+ if (to_integer(s, v, base))
return v;
StringRef spelling = args.getArgString(a->getIndex());
diff --git a/lld/test/MachO/headerpad.s b/lld/test/MachO/headerpad.s
index a5e6ceda86577..a8e1dbad6777e 100644
--- a/lld/test/MachO/headerpad.s
+++ b/lld/test/MachO/headerpad.s
@@ -21,8 +21,13 @@
# RUN: lld -flavor darwinnew -o %t %t.o -headerpad 11
# RUN: llvm-objdump --macho --all-headers %t | FileCheck %s --check-prefix=PAD11
-# PAD11: magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
-# PAD11-NEXT: MH_MAGIC_64 X86_64 ALL LIB64 EXECUTE 9 [[#%u, CMDSIZE:]] {{.*}}
+# RUN: lld -flavor darwinnew -o %t %t.o -headerpad 0x11
+# RUN: llvm-objdump --macho --all-headers %t | FileCheck %s --check-prefix=PAD11
+# RUN: lld -flavor darwinnew -o %t %t.o -headerpad 0X11
+# RUN: llvm-objdump --macho --all-headers %t | FileCheck %s --check-prefix=PAD11
+
+# PAD11: magic {{.+}} ncmds sizeofcmds flags
+# PAD11-NEXT: MH_MAGIC_64 {{.+}} 9 [[#%u, CMDSIZE:]] {{.*}}
# PAD11: sectname __text
# PAD11-NEXT: segname __TEXT
# PAD11-NEXT: addr
More information about the llvm-commits
mailing list