Skip to content

Commit c13f631

Browse files
committed
[LLD][MinGW] Add support for --functionpadmin option
This introduces the MinGW counterpart of lld-link's -functionpadmin.
1 parent 816c975 commit c13f631

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

lld/MinGW/Driver.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,14 @@ bool link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS,
329329
add("-build-id");
330330
}
331331

332+
if (auto *a = args.getLastArg(OPT_functionpadmin)) {
333+
StringRef v = a->getValue();
334+
if (v.empty())
335+
add("-functionpadmin");
336+
else
337+
add("-functionpadmin:" + v);
338+
}
339+
332340
if (args.hasFlag(OPT_fatal_warnings, OPT_no_fatal_warnings, false))
333341
add("-WX");
334342
else

lld/MinGW/Options.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,9 @@ defm error_limit:
215215
def build_id: J<"build-id=">, HelpText<"Generate build ID note (pass none to disable)">,
216216
MetaVarName<"<arg>">;
217217
def : F<"build-id">, Alias<build_id>, HelpText<"Alias for --build-id=">;
218+
def functionpadmin: J<"functionpadmin=">, HelpText<"Prepares an image for hotpatching">,
219+
MetaVarName<"<arg>">;
220+
def : F<"functionpadmin">, Alias<functionpadmin>, HelpText<"Alias for --functionpadmin=">;
218221

219222
// Alias
220223
def alias_Bdynamic_call_shared: Flag<["-"], "call_shared">, Alias<Bdynamic>;

lld/test/MinGW/driver.test

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,13 @@ RUN: ld.lld -### foo.o -m i386pep --build-id=fast 2>&1 | FileCheck -check-prefix
445445
BUILD_ID_WARN: unsupported build id hashing: fast, using default hashing.
446446
BUILD_ID_WARN: -build-id{{ }}
447447

448+
RUN: ld.lld -### foo.o -m i386pep --functionpadmin= 2>&1 | FileCheck -check-prefix=FUNCTIONPADMIN %s
449+
RUN: ld.lld -### foo.o -m i386pep --functionpadmin 2>&1 | FileCheck -check-prefix=FUNCTIONPADMIN %s
450+
FUNCTIONPADMIN: -functionpadmin{{ }}
451+
452+
RUN: ld.lld -### foo.o -m i386pep --functionpadmin=2 2>&1 | FileCheck -check-prefix=FUNCTIONPADMIN2 %s
453+
FUNCTIONPADMIN2: -functionpadmin:2{{ }}
454+
448455
RUN: ld.lld -### foo.o -m i386pep --build-id=none 2>&1 | FileCheck -check-prefix=NO_BUILD_ID %s
449456
RUN: ld.lld -### foo.o -m i386pep -s 2>&1 | FileCheck -check-prefix=NO_BUILD_ID %s
450457
RUN: ld.lld -### foo.o -m i386pep -S 2>&1 | FileCheck -check-prefix=NO_BUILD_ID %s

0 commit comments

Comments
 (0)