[ELF] Fix bug in program header FLAGS processing + test case update (found by grimar)
authorEugene Leviant <evgeny.leviant@gmail.com>
Thu, 21 Jul 2016 16:13:54 +0000 (16:13 +0000)
committerEugene Leviant <evgeny.leviant@gmail.com>
Thu, 21 Jul 2016 16:13:54 +0000 (16:13 +0000)
llvm-svn: 276301

lld/ELF/LinkerScript.cpp
lld/test/ELF/linkerscript-phdrs-flags.s

index a5712f9..4431010 100644 (file)
@@ -413,7 +413,6 @@ LinkerScript<ELFT>::createPhdrs(ArrayRef<OutputSectionBase<ELFT> *> 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
index 4d301fe..f198d85 100644 (file)
@@ -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