diff --git a/opentelemetry/proto/profiles/v1development/profiles.proto b/opentelemetry/proto/profiles/v1development/profiles.proto
index f10ebea2..54cd1602 100644
--- a/opentelemetry/proto/profiles/v1development/profiles.proto
+++ b/opentelemetry/proto/profiles/v1development/profiles.proto
@@ -423,6 +423,54 @@ message Label {
   int64 num_unit = 4;  // Index into string table
 }
 
+// Specifies the availability of the function and file names, line numbers and
+// inline frames for a mapping.
+enum SymbolizationLevel {
+  // Unknown or unassigned. Clients can try to determine the actual level
+  // heuristically from the presence of function and file names, line numbers
+  // and inline frames.
+  SYMBOLIZATION_LEVEL_UNSPECIFIED = 0;
+  // No symbolization was attempted for the mapping and it's known to be a
+  // native mapping with no pre-populated symbol information. Function and file
+  // names, line numbers and inline frames are absent for all locations for the
+  // mapping.
+  //
+  // This level is common for a native (e.g. C++) mapping in a profile emitted
+  // by a production profiling collector since no symbolization is typically
+  // attempted on the host as debug information is usually not shipped to
+  // production machines.
+  //
+  // The level is rarely used with managed language mappings like Java since
+  // symbolization for those languages is typically done on the host.
+  SYMBOLIZATION_LEVEL_NONE = 1;
+  // Limited symbol information is available: function names are assigned but
+  // may be imprecise; file names, line numbers and inline frames are missing.
+  //
+  // This level is encountered when the symbolization is performed for a C++
+  // binary that has symbol table (.symtab) present, but no DWARF. Such a symbol
+  // table records top-level symbol names, but it won't have the more granular
+  // function and line breakdown.
+  //
+  // The level is rarely used with managed languages like Java since their
+  // symbolization information is typically more complete.
+  SYMBOLIZATION_LEVEL_SYMBOLS = 2;
+  // Limited debug information is available: function / file names and line
+  // numbers are assigned but the inline frames are not available.
+  //
+  // This is a somewhat exotic case specific to C++ binaries with split DWARF
+  // information. When symbolization is done against such a binary and the *.dwp
+  // file is not available, the DWARF is available only partially which results
+  // in this more complete but still partial symbolization level.
+  //
+  // This level is never practically useful for managed languages.
+  SYMBOLIZATION_LEVEL_LINES_NOINLINE = 3;
+  // Full, most-desired level of symbolization. All of function and file names,
+  // line numbers and inline frames are available. This level indicates that
+  // full debug information was available for the binary. It is also what
+  // managed languages like Java provide.
+  SYMBOLIZATION_LEVEL_LINES_INLINE = 4;
+}
+
 // Describes the mapping of a binary in memory, including its address range,
 // file offset, and metadata like build ID
 message Mapping {
@@ -440,11 +488,13 @@ message Mapping {
   int64 filename = 5;  // Index into string table
   // References to attributes in Profile.attribute_table. [optional]
   repeated uint64 attributes = 12;
-  // The following fields indicate the resolution of symbolic info.
-  bool has_functions = 7;
-  bool has_filenames = 8;
-  bool has_line_numbers = 9;
-  bool has_inline_frames = 10;
+  bool has_functions = 7;  // Deprecated, to be removed.
+  bool has_filenames = 8;  // Deprecated, to be removed.
+  bool has_line_numbers = 9;  // Deprecated, to be removed.
+  bool has_inline_frames = 10;  // Deprecated, to be removed.
+  // The level of availability of the function and file names, line numbers and
+  // inline frames for the mapping. [optional]
+  SymbolizationLevel symbolization_level = 13;
 }
 
 // Describes function and line table debug information.