summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/ELF/OutputSections.cpp3
-rw-r--r--lld/test/elf2/dt_flags.s8
2 files changed, 8 insertions, 3 deletions
diff --git a/lld/ELF/OutputSections.cpp b/lld/ELF/OutputSections.cpp
index 1775562d9d3..8066070b243 100644
--- a/lld/ELF/OutputSections.cpp
+++ b/lld/ELF/OutputSections.cpp
@@ -369,6 +369,9 @@ template <class ELFT> void DynamicSection<ELFT>::writeTo(uint8_t *Buf) {
uint32_t Flags = 0;
if (Config->Bsymbolic)
Flags |= DF_SYMBOLIC;
+ if (Flags)
+ WriteVal(DT_FLAGS, Flags);
+ Flags = 0;
if (Config->ZNow)
Flags |= DF_1_NOW;
if (Flags)
diff --git a/lld/test/elf2/dt_flags.s b/lld/test/elf2/dt_flags.s
index b98149d5280..906c379db3a 100644
--- a/lld/test/elf2/dt_flags.s
+++ b/lld/test/elf2/dt_flags.s
@@ -2,17 +2,19 @@
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
# RUN: ld.lld2 -shared %t -o %t.so
-# RUN: ld.lld2 -z now -Bsymbolic %t %t.so -o %t1
+# RUN: ld.lld2 -z now -z nodelete -Bsymbolic %t %t.so -o %t1
# RUN: ld.lld2 %t %t.so -o %t2
# RUN: llvm-readobj -dynamic-table %t1 | FileCheck -check-prefix=FLAGS %s
# RUN: llvm-readobj -dynamic-table %t2 | FileCheck %s
# FLAGS: DynamicSection [
-# FLAGS: 0x000000006FFFFFFB FLAGS_1 NOW GLOBAL
+# FLAGS: 0x000000000000001E FLAGS SYMBOLIC
+# FLAGS: 0x000000006FFFFFFB FLAGS_1 NOW
# FLAGS: ]
# CHECK: DynamicSection [
-# CHECK-NOT: 0x000000006FFFFFFB FLAGS_1 NOW GLOBAL
+# CHECK-NOT: 0x000000000000001E FLAGS SYMBOLIC
+# CHECK-NOT: 0x000000006FFFFFFB FLAGS_1 NOW
# CHECK: ]
.globl _start
OpenPOWER on IntegriCloud