From 8a8a822a96f68189b0fc0209188961146ae716c3 Mon Sep 17 00:00:00 2001 From: Eugene Leviant Date: Thu, 21 Jul 2016 16:13:54 +0000 Subject: [PATCH] [ELF] Fix bug in program header FLAGS processing + test case update (found by grimar) llvm-svn: 276301 --- lld/ELF/LinkerScript.cpp | 1 - lld/test/ELF/linkerscript-phdrs-flags.s | 8 +++----- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp index a5712f9..4431010 100644 --- a/lld/ELF/LinkerScript.cpp +++ b/lld/ELF/LinkerScript.cpp @@ -413,7 +413,6 @@ LinkerScript::createPhdrs(ArrayRef *> Sections) { Phdrs[Id].add(Sec); if (Opt.PhdrsCommands[Id].Flags == UINT_MAX) Phdrs[Id].H.p_flags |= toPhdrFlags(Sec->getFlags()); - Phdrs[Id].H.p_flags |= toPhdrFlags(Sec->getFlags()); } } else { // If we have no load segment or flags've changed then we want new load diff --git a/lld/test/ELF/linkerscript-phdrs-flags.s b/lld/test/ELF/linkerscript-phdrs-flags.s index 4d301fe..f198d85 100644 --- a/lld/test/ELF/linkerscript-phdrs-flags.s +++ b/lld/test/ELF/linkerscript-phdrs-flags.s @@ -1,6 +1,6 @@ # REQUIRES: x86 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t -# RUN: echo "PHDRS {all PT_LOAD FILEHDR PHDRS FLAGS (7);} \ +# RUN: echo "PHDRS {all PT_LOAD FILEHDR PHDRS FLAGS (1);} \ # RUN: SECTIONS { \ # RUN: . = 0x10000200; \ # RUN: .text : {*(.text.*)} :all \ @@ -17,9 +17,7 @@ # CHECK-NEXT: PhysicalAddress: 0x10000000 # CHECK-NEXT: FileSize: 521 # CHECK-NEXT: MemSize: 521 -# CHECK-NEXT: Flags [ (0x7) -# CHECK-NEXT: PF_R (0x4) -# CHECK-NEXT: PF_W (0x2) +# CHECK-NEXT: Flags [ (0x1) # CHECK-NEXT: PF_X (0x1) # CHECK-NEXT: ] @@ -31,6 +29,6 @@ _start: foo1: .long 0 -.section .foo.2,"a" +.section .foo.2,"aw" foo2: .long 0 -- 2.7.4