Make sure llee can deal with compressed bytecode too.
authorReid Spencer <rspencer@reidspencer.com>
Tue, 9 Nov 2004 20:21:25 +0000 (20:21 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 9 Nov 2004 20:21:25 +0000 (20:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17652 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llee/ExecveHandler.c

index 89d1536538505c58d500945ef8abe0fd02b0c61c..c15c1465f7018603479dd6fa67b60816904a485d 100644 (file)
 #include <string.h>
 
 /*
- * This is the expected header for all valid LLVM bytecode files.
- * The first four characters must be exactly this.
+ * These are the expected headers for all valid LLVM bytecode files.
+ * The first four characters must be one of these.
  */
-static const char llvmHeader[] = "llvm";
+static const char llvmHeaderUncompressed[] = "llvm";
+static const char llvmHeaderCompressed[] = "llvc";
 
 /*
  * This replacement execve() function first checks the file to be executed
@@ -34,7 +35,7 @@ static const char llvmHeader[] = "llvm";
 int execve(const char *filename, char *const argv[], char *const envp[])
 {
   /* Open the file, test to see if first four characters are "llvm" */
-  size_t headerSize = strlen(llvmHeader);
+  size_t headerSize = strlen(llvmHeaderCompressed);
   char header[headerSize];
   char* realFilename = 0;
   /* 
@@ -57,7 +58,8 @@ int execve(const char *filename, char *const argv[], char *const envp[])
   ssize_t bytesRead = read(file, header, headerSize);
   close(file);
   if (bytesRead != (ssize_t)headerSize) return EIO;
-  if (!memcmp(llvmHeader, header, headerSize)) {
+  if (!memcmp(llvmHeaderCompressed, header, headerSize) || 
+      !memcmp(llvmHeaderUncompressed, header, headerSize)) {
     /* 
      * This is a bytecode file, so execute the JIT with the program and
      * parameters.