Skip to content

Commit 696c108

Browse files
authored
[LLD][MinGW] Add support for --functionpadmin option (#116511)
This introduces the MinGW counterpart of `lld-link`'s `-functionpadmin`.
1 parent 4c4a413 commit 696c108

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
@@ -330,6 +330,14 @@ bool link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS,
330330
add("-build-id");
331331
}
332332

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