blob: 10771595c99d7ea4c53a14e8e1dabe7b7734d1a6 [file] [log] [blame]
Andreas Gampef9a35612018-01-04 14:22:50 -08001/*
2 *
3 * Copyright 2018, The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef SYSTEM_EXTRAS_PERFPROFD_SYMBOLIZER_H_
19#define SYSTEM_EXTRAS_PERFPROFD_SYMBOLIZER_H_
20
Andreas Gampea6c39132018-01-08 12:39:38 -080021#include <memory>
22
Andreas Gampef9a35612018-01-04 14:22:50 -080023namespace perfprofd {
24
25struct Symbolizer {
26 virtual ~Symbolizer() {}
27 virtual std::string Decode(const std::string& dso, uint64_t address) = 0;
Andreas Gampecbc02bc2018-03-21 16:05:26 -070028 virtual bool GetMinExecutableVAddr(const std::string& dso, uint64_t* addr) = 0;
Andreas Gampef9a35612018-01-04 14:22:50 -080029};
30
Andreas Gampea6c39132018-01-08 12:39:38 -080031std::unique_ptr<Symbolizer> CreateELFSymbolizer();
32
Andreas Gampef9a35612018-01-04 14:22:50 -080033} // namespace perfprofd
34
35#endif // SYSTEM_EXTRAS_PERFPROFD_SYMBOLIZER_H_