hotspot/src/share/vm/utilities/elfFile.cpp
changeset 15926 8e87d545195f
parent 13963 e5b53c306fb5
child 22857 2167396cfc83
child 22234 da823d78ad65
equal deleted inserted replaced
15925:6a17dd9e92ac 15926:8e87d545195f
   195     p = p->m_next;
   195     p = p->m_next;
   196   }
   196   }
   197   return NULL;
   197   return NULL;
   198 }
   198 }
   199 
   199 
       
   200 #ifdef LINUX
       
   201 bool ElfFile::specifies_noexecstack() {
       
   202   Elf_Phdr phdr;
       
   203   if (!m_file)  return true;
       
   204 
       
   205   if (!fseek(m_file, m_elfHdr.e_phoff, SEEK_SET)) {
       
   206     for (int index = 0; index < m_elfHdr.e_phnum; index ++) {
       
   207       if (fread((void*)&phdr, sizeof(Elf_Phdr), 1, m_file) != 1) {
       
   208         m_status = NullDecoder::file_invalid;
       
   209         return false;
       
   210       }
       
   211       if (phdr.p_type == PT_GNU_STACK) {
       
   212         if (phdr.p_flags == (PF_R | PF_W))  {
       
   213           return true;
       
   214         } else {
       
   215           return false;
       
   216         }
       
   217       }
       
   218     }
       
   219   }
       
   220   return false;
       
   221 }
       
   222 #endif
       
   223 
   200 #endif // _WINDOWS
   224 #endif // _WINDOWS