elf_object.hh (9641:2285b98847d7) elf_object.hh (10037:5cac77888310)
1/*
1/*
2 * Copyright (c) 2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated
11 * unmodified and in its entirety in all distributions of the software,
12 * modified or unmodified, in source code or in binary form.
13 *
2 * Copyright (c) 2003-2005 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;
9 * redistributions in binary form must reproduce the above copyright

--- 51 unchanged lines hidden (view full) ---

61 bool sectionExists(std::string sec);
62
63 std::vector<Segment> extraSegments;
64
65 public:
66 virtual ~ElfObject() {}
67
68 bool loadSections(PortProxy& memProxy,
14 * Copyright (c) 2003-2005 The Regents of The University of Michigan
15 * All rights reserved.
16 *
17 * Redistribution and use in source and binary forms, with or without
18 * modification, are permitted provided that the following conditions are
19 * met: redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer;
21 * redistributions in binary form must reproduce the above copyright

--- 51 unchanged lines hidden (view full) ---

73 bool sectionExists(std::string sec);
74
75 std::vector<Segment> extraSegments;
76
77 public:
78 virtual ~ElfObject() {}
79
80 bool loadSections(PortProxy& memProxy,
69 Addr addrMask = std::numeric_limits<Addr>::max());
81 Addr addrMask = std::numeric_limits<Addr>::max(),
82 Addr offset = 0);
70 virtual bool loadGlobalSymbols(SymbolTable *symtab, Addr addrMask =
71 std::numeric_limits<Addr>::max());
72 virtual bool loadLocalSymbols(SymbolTable *symtab, Addr addrMask =
73 std::numeric_limits<Addr>::max());
74 virtual bool loadWeakSymbols(SymbolTable *symtab, Addr addrMask =
75 std::numeric_limits<Addr>::max());
76
77 virtual bool isDynamic() { return sectionExists(".interp"); }
78 virtual bool hasTLS() { return sectionExists(".tbss"); }
79
80 static ObjectFile *tryFile(const std::string &fname, int fd,
81 size_t len, uint8_t *data);
82 Addr programHeaderTable() {return _programHeaderTable;}
83 uint16_t programHeaderSize() {return _programHeaderSize;}
84 uint16_t programHeaderCount() {return _programHeaderCount;}
85};
86
87#endif // __ELF_OBJECT_HH__
83 virtual bool loadGlobalSymbols(SymbolTable *symtab, Addr addrMask =
84 std::numeric_limits<Addr>::max());
85 virtual bool loadLocalSymbols(SymbolTable *symtab, Addr addrMask =
86 std::numeric_limits<Addr>::max());
87 virtual bool loadWeakSymbols(SymbolTable *symtab, Addr addrMask =
88 std::numeric_limits<Addr>::max());
89
90 virtual bool isDynamic() { return sectionExists(".interp"); }
91 virtual bool hasTLS() { return sectionExists(".tbss"); }
92
93 static ObjectFile *tryFile(const std::string &fname, int fd,
94 size_t len, uint8_t *data);
95 Addr programHeaderTable() {return _programHeaderTable;}
96 uint16_t programHeaderSize() {return _programHeaderSize;}
97 uint16_t programHeaderCount() {return _programHeaderCount;}
98};
99
100#endif // __ELF_OBJECT_HH__