mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:12:45 +00:00 
			
		
		
		
	LibDebug: Make use of the newly supported data forms
With this change, our DWARF 5 support is nearly feature-complete.
This commit is contained in:
		
							parent
							
								
									8278039105
								
							
						
					
					
						commit
						622d408d82
					
				
					 2 changed files with 31 additions and 4 deletions
				
			
		|  | @ -31,6 +31,12 @@ void AddressRanges::for_each_range(Function<void(Range)> callback) | |||
|             current_base_address = base; | ||||
|             break; | ||||
|         } | ||||
|         case RangeListEntryType::BaseAddressX: { | ||||
|             FlatPtr index; | ||||
|             m_range_lists_stream.read_LEB128_unsigned(index); | ||||
|             current_base_address = m_compilation_unit.get_address(index); | ||||
|             break; | ||||
|         } | ||||
|         case RangeListEntryType::OffsetPair: { | ||||
|             Optional<FlatPtr> base_address = current_base_address; | ||||
|             if (!base_address.has_value()) { | ||||
|  | @ -56,6 +62,21 @@ void AddressRanges::for_each_range(Function<void(Range)> callback) | |||
|             callback(Range { start, start + length }); | ||||
|             break; | ||||
|         } | ||||
|         case RangeListEntryType::StartXEndX: { | ||||
|             size_t start, end; | ||||
|             m_range_lists_stream.read_LEB128_unsigned(start); | ||||
|             m_range_lists_stream.read_LEB128_unsigned(end); | ||||
|             callback(Range { m_compilation_unit.get_address(start), m_compilation_unit.get_address(end) }); | ||||
|             break; | ||||
|         } | ||||
|         case RangeListEntryType::StartXLength: { | ||||
|             size_t start, length; | ||||
|             m_range_lists_stream.read_LEB128_unsigned(start); | ||||
|             m_range_lists_stream.read_LEB128_unsigned(length); | ||||
|             auto start_addr = m_compilation_unit.get_address(start); | ||||
|             callback(Range { start_addr, start_addr + length }); | ||||
|             break; | ||||
|         } | ||||
|         case RangeListEntryType::EndOfList: | ||||
|             return; | ||||
|         default: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Daniel Bertalan
						Daniel Bertalan