<ClCompile Include="..\src\file.cpp" />\r
<ClCompile Include="..\src\gui\keybindingstab.cpp" />\r
<ClCompile Include="..\src\gui\modelsbiostab.cpp" />\r
+ <ClCompile Include="..\src\LEB128.cpp" />\r
<ClCompile Include="..\src\log.cpp" />\r
<ClCompile Include="..\src\settings.cpp" />\r
<ClCompile Include="..\src\unzip.cpp" />\r
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>\r
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -D__GCCWIN32__ -DQT_NO_DEBUG -DQT_OPENGL_LIB -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -D_UNICODE "-I." "-I.\..\src" "-I.\..\src\gui" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtOpenGL" "-IC:\SDK\OpenGL\include" "-IC:\SDK\SDL\SDL-1.2.15\include" "-IC:\SDK\DWARF\libdwarf-VS2015\include" "-IC:\SDK\Elf\libelf-0.8.13\include" "-IC:\SDK\zlib\zlib-1.2.11\include" "-I.\GeneratedFiles\$(ConfigurationName)\."</Command>\r
</CustomBuild>\r
+ <ClInclude Include="..\src\LEB128.h" />\r
<ClInclude Include="..\src\log.h" />\r
<ClInclude Include="..\src\settings.h" />\r
<ClInclude Include="..\src\unzip.h" />\r
<ClCompile Include="..\src\gui\modelsbiostab.cpp">\r
<Filter>Source Files\gui\tab</Filter>\r
</ClCompile>\r
+ <ClCompile Include="..\src\LEB128.cpp">\r
+ <Filter>Source Files</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="..\src\debugger\DWARFManager.h">\r
<ClInclude Include="..\src\settings.h">\r
<Filter>Header Files</Filter>\r
</ClInclude>\r
+ <ClInclude Include="..\src\LEB128.h">\r
+ <Filter>Header Files</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<None Include="..\res\alpine-file.png">\r
--- /dev/null
+
+
+// Decode an unsigned LEB128
+// Algorithm from Appendix C of the DWARF 2, and 3, spec section "7.6"
+unsigned long ReadULEB128(char *addr)
+{
+ unsigned long result = 0;
+ size_t shift = 0;
+ unsigned char byte;
+
+ do
+ {
+ byte = *addr++;
+ result |= (byte & 0x7f) << shift;
+ shift += 7;
+ }
+ while ((byte & 0x80));
+
+ return result;
+}
+
+
+// Decode a signed LEB128
+// Algorithm from Appendix C of the DWARF 2, and 3, spec section "7.6"
+long ReadLEB128(char *addr)
+{
+ long result = 0;
+ size_t shift = 0;
+ unsigned char byte;
+
+ do
+ {
+ byte = *addr++;
+ result |= (byte & 0x7f) << shift;
+ shift += 7;
+ }
+ while ((byte & 0x80));
+
+ if ((shift < (8 * sizeof(result))) && (byte & 0x40))
+ {
+ result |= (~0 << shift);
+ }
+
+ return result;
+}
+
--- /dev/null
+
+// LEB128 handler
+
+//
+extern unsigned long ReadULEB128(char *addr);
+extern long ReadLEB128(char *addr);
src/crc32.h \\r
src/settings.h \\r
src/modelsBIOS.h \\r
- src/file.h\r
+ src/file.h \\r
+ src/LEB128.h\r
\r
SOURCES = \\r
src/gui/about.cpp \\r
src/crc32.cpp \\r
src/settings.cpp \\r
src/modelsBIOS.cpp \ \r
- src/file.cpp\r
+ src/file.cpp \\r
+ src/LEB128.cpp\r
\ No newline at end of file