summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Welche <prlw1@cam.ac.uk>2016-07-28 16:26:10 (GMT)
committerBrad King <brad.king@kitware.com>2016-08-02 14:04:31 (GMT)
commit16a3a73508e8109e453e35288c37fe545a8ab59e (patch)
treeeb5bf5efbdcbd5e81006827a3d8165f0927b64e1
parentfd59f9ad519c1c311c54569133797d9061e90558 (diff)
downloadCMake-16a3a73508e8109e453e35288c37fe545a8ab59e.zip
CMake-16a3a73508e8109e453e35288c37fe545a8ab59e.tar.gz
CMake-16a3a73508e8109e453e35288c37fe545a8ab59e.tar.bz2
cmELF: Port to SCO OpenServer 5.0.7/3.2
Take changes used by pkgsrc [1]: * SCO OpenServer 5.0.7/3.2 does not support 64-bit ELF. [1] http://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/devel/cmake/patches/
-rw-r--r--Source/cmELF.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/Source/cmELF.cxx b/Source/cmELF.cxx
index 15755cb..266b786 100644
--- a/Source/cmELF.cxx
+++ b/Source/cmELF.cxx
@@ -46,6 +46,9 @@ typedef struct Elf32_Rela Elf32_Rela;
#if defined(__sun)
#include <sys/link.h> // For dynamic section information
#endif
+#ifdef _SCO_DS
+#include <link.h> // For DT_SONAME etc.
+#endif
// Low-level byte swapping implementation.
template <size_t s>
@@ -214,6 +217,7 @@ struct cmELFTypes32
};
// Configure the implementation template for 64-bit ELF files.
+#ifndef _SCO_DS
struct cmELFTypes64
{
typedef Elf64_Ehdr ELF_Ehdr;
@@ -223,6 +227,7 @@ struct cmELFTypes64
typedef KWIML_INT_uint64_t tagtype;
static const char* GetName() { return "64-bit"; }
};
+#endif
// Parser implementation template.
template <class Types>
@@ -800,10 +805,14 @@ cmELF::cmELF(const char* fname)
if (ident[EI_CLASS] == ELFCLASS32) {
// 32-bit ELF
this->Internal = new cmELFInternalImpl<cmELFTypes32>(this, fin, order);
- } else if (ident[EI_CLASS] == ELFCLASS64) {
+ }
+#ifndef _SCO_DS
+ else if (ident[EI_CLASS] == ELFCLASS64) {
// 64-bit ELF
this->Internal = new cmELFInternalImpl<cmELFTypes64>(this, fin, order);
- } else {
+ }
+#endif
+ else {
this->ErrorMessage = "ELF file class is not 32-bit or 64-bit.";
return;
}