[PATCH] D42054: [ELF] - Stop mixing order of -defsym/-script commands.
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 17 02:26:15 PST 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL322625: [ELF] - Stop mixing order of -defsym/-script commands. (authored by grimar, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D42054?vs=129820&id=130114#toc
Repository:
rL LLVM
https://reviews.llvm.org/D42054
Files:
lld/trunk/ELF/Driver.cpp
lld/trunk/test/ELF/linkerscript/defsym.s
Index: lld/trunk/test/ELF/linkerscript/defsym.s
===================================================================
--- lld/trunk/test/ELF/linkerscript/defsym.s
+++ lld/trunk/test/ELF/linkerscript/defsym.s
@@ -0,0 +1,19 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
+# RUN: echo "foo = 0x22;" > %t.script
+
+## This testcase checks that we apply -defsym and linker script
+## in the same order are they specified in a command line.
+
+## Check that linker script can override -defsym assignments.
+# RUN: ld.lld %t.o -defsym=foo=0x11 -script %t.script -o %t
+# RUN: llvm-readobj -t %t | FileCheck %s
+# CHECK: Name: foo
+# CHECK-NEXT: Value: 0x22
+
+## Check that -defsym can override linker script. Check that multiple
+## -defsym commands for the same symbol are allowed.
+# RUN: ld.lld %t.o -script %t.script -defsym=foo=0x11 -defsym=foo=0x33 -o %t
+# RUN: llvm-readobj -t %t | FileCheck %s --check-prefix=REORDER
+# REORDER: Name: foo
+# REORDER-NEXT: Value: 0x33
Index: lld/trunk/ELF/Driver.cpp
===================================================================
--- lld/trunk/ELF/Driver.cpp
+++ lld/trunk/ELF/Driver.cpp
@@ -830,6 +830,13 @@
case OPT_INPUT:
addFile(Arg->getValue(), /*WithLOption=*/false);
break;
+ case OPT_defsym: {
+ StringRef From;
+ StringRef To;
+ std::tie(From, To) = StringRef(Arg->getValue()).split('=');
+ readDefsym(From, MemoryBufferRef(To, "-defsym"));
+ break;
+ }
case OPT_script:
if (Optional<std::string> Path = searchLinkerScript(Arg->getValue())) {
if (Optional<MemoryBufferRef> MB = readFile(*Path))
@@ -1011,14 +1018,6 @@
for (InputFile *F : Files)
Symtab->addFile<ELFT>(F);
- // Process -defsym option.
- for (auto *Arg : Args.filtered(OPT_defsym)) {
- StringRef From;
- StringRef To;
- std::tie(From, To) = StringRef(Arg->getValue()).split('=');
- readDefsym(From, MemoryBufferRef(To, "-defsym"));
- }
-
// Now that we have every file, we can decide if we will need a
// dynamic symbol table.
// We need one if we were asked to export dynamic symbols or if we are
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42054.130114.patch
Type: text/x-patch
Size: 2173 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180117/9b3cfb3d/attachment.bin>
More information about the llvm-commits
mailing list