diff options
-rw-r--r-- | lld/ELF/OutputSections.cpp | 3 | ||||
-rw-r--r-- | lld/test/elf2/dt_flags.s | 8 |
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 |