Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: components/nacl/loader/nonsfi/elf_loader.h

Issue 100373005: Initial implementation of Bare Metal Mode for NaCl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_NACL_LOADER_NONSFI_ELF_LOADER_H_
6 #define COMPONENTS_NACL_LOADER_NONSFI_ELF_LOADER_H_
7
8 #include <elf.h>
Mark Seaborn 2013/12/10 19:56:44 It would be better if these didn't appear in the h
hidehiko 2013/12/11 07:56:14 Removed the include directive. Instead of having s
9 #include <link.h>
10
11 #include "base/basictypes.h"
12 #include "components/nacl/loader/nonsfi/nonsfi_error_code.h"
13 #include "native_client/src/include/portability.h"
14
15 #if !defined(OS_LINUX)
16 #error Non SFI mode is currently supported only on linux.
17 #endif
18
19 struct NaClDesc;
20
21 namespace nacl {
22 namespace nonsfi {
23
24 class ElfImage {
25 public:
26 // Limit of elf program headers allowed.
27 enum {
28 MAX_PROGRAM_HEADERS = 128
29 };
30
31 ElfImage();
32 ~ElfImage();
33
34 // Available only after Load() is called.
35 uintptr_t entry_point() const {
36 return ehdr_.e_entry + load_bias_;
37 }
38
39 // Reads the ELF file from the descriptor and stores the header information
40 // into this instance.
41 NonSfiErrorCode Read(struct NaClDesc* descriptor);
42
43 // Loads the ELF executable to the memory.
44 NonSfiErrorCode Load(struct NaClDesc* descriptor);
45
46 private:
47 ElfW(Ehdr) ehdr_;
48 ElfW(Phdr) phdrs_[MAX_PROGRAM_HEADERS];
49 ElfW(Addr) load_bias_;
50
51 DISALLOW_COPY_AND_ASSIGN(ElfImage);
52 };
53
54 } // namespace nonsfi
55 } // namespace nacl
56
57 #endif // COMPONENTS_NACL_LOADER_NONSFI_ELF_LOADER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698