|
7 | 7 | using LibObjectFile.Diagnostics; |
8 | 8 | using LibObjectFile.Dwarf; |
9 | 9 | using LibObjectFile.Elf; |
| 10 | +using LibObjectFile.Tests.Elf; |
10 | 11 |
|
11 | 12 | namespace LibObjectFile.Tests.Dwarf; |
12 | 13 |
|
13 | 14 | [TestClass] |
14 | | -public class DwarfTests |
| 15 | +public class DwarfTests : ElfTestBase |
15 | 16 | { |
16 | 17 | [DataTestMethod] |
17 | 18 | [DataRow(0UL)] |
@@ -81,17 +82,7 @@ public void TestSignedLEB128(long value) |
81 | 82 | [TestMethod] |
82 | 83 | public void TestDebugLineHelloWorld() |
83 | 84 | { |
84 | | - var cppName = "helloworld"; |
85 | | - var cppExe = $"{cppName}_debug"; |
86 | | - LinuxUtil.RunLinuxExe("gcc", $"{cppName}.cpp -gdwarf-4 -o {cppExe}"); |
87 | | - |
88 | | - ElfFile elf; |
89 | | - using (var inStream = File.OpenRead(cppExe)) |
90 | | - { |
91 | | - Console.WriteLine($"ReadBack from {cppExe}"); |
92 | | - elf = ElfFile.Read(inStream); |
93 | | - elf.Print(Console.Out); |
94 | | - } |
| 85 | + ElfFile elf = LoadElf("helloworld_debug"); |
95 | 86 |
|
96 | 87 | var elfContext = new DwarfElfContext(elf); |
97 | 88 | var inputContext = new DwarfReaderContext(elfContext); |
@@ -140,17 +131,7 @@ public void TestDebugLineHelloWorld() |
140 | 131 | [TestMethod] |
141 | 132 | public void TestDebugLineLibMultipleObjs() |
142 | 133 | { |
143 | | - var cppName = "lib"; |
144 | | - var libShared = $"{cppName}_debug.so"; |
145 | | - LinuxUtil.RunLinuxExe("gcc", $"{cppName}_a.cpp {cppName}_b.cpp -gdwarf-4 -shared -o {libShared}"); |
146 | | - |
147 | | - ElfFile elf; |
148 | | - using (var inStream = File.OpenRead(libShared)) |
149 | | - { |
150 | | - Console.WriteLine($"ReadBack from {libShared}"); |
151 | | - elf = ElfFile.Read(inStream); |
152 | | - elf.Print(Console.Out); |
153 | | - } |
| 134 | + ElfFile elf = LoadElf("lib_debug.so"); |
154 | 135 |
|
155 | 136 | var elfContext = new DwarfElfContext(elf); |
156 | 137 | var inputContext = new DwarfReaderContext(elfContext); |
@@ -199,16 +180,7 @@ public void TestDebugLineLibMultipleObjs() |
199 | 180 | [TestMethod] |
200 | 181 | public void TestDebugLineSmall() |
201 | 182 | { |
202 | | - var cppName = "small"; |
203 | | - var cppObj = $"{cppName}_debug.o"; |
204 | | - LinuxUtil.RunLinuxExe("gcc", $"{cppName}.cpp -gdwarf-4 -c -o {cppObj}"); |
205 | | - ElfFile elf; |
206 | | - using (var inStream = File.OpenRead(cppObj)) |
207 | | - { |
208 | | - Console.WriteLine($"ReadBack from {cppObj}"); |
209 | | - elf = ElfFile.Read(inStream); |
210 | | - elf.Print(Console.Out); |
211 | | - } |
| 183 | + ElfFile elf = LoadElf("small_debug.o"); |
212 | 184 |
|
213 | 185 | var elfContext = new DwarfElfContext(elf); |
214 | 186 | var inputContext = new DwarfReaderContext(elfContext); |
@@ -257,17 +229,7 @@ public void TestDebugLineSmall() |
257 | 229 | [TestMethod] |
258 | 230 | public void TestDebugLineMultipleFunctions() |
259 | 231 | { |
260 | | - var cppName = "multiple_functions"; |
261 | | - var cppObj = $"{cppName}_debug.o"; |
262 | | - LinuxUtil.RunLinuxExe("gcc", $"{cppName}.cpp -gdwarf-4 -c -o {cppObj}"); |
263 | | - |
264 | | - ElfFile elf; |
265 | | - using (var inStream = File.OpenRead(cppObj)) |
266 | | - { |
267 | | - Console.WriteLine($"ReadBack from {cppObj}"); |
268 | | - elf = ElfFile.Read(inStream); |
269 | | - elf.Print(Console.Out); |
270 | | - } |
| 232 | + ElfFile elf = LoadElf("multiple_functions_debug.o"); |
271 | 233 |
|
272 | 234 | var elfContext = new DwarfElfContext(elf); |
273 | 235 | var inputContext = new DwarfReaderContext(elfContext); |
@@ -315,16 +277,7 @@ public void TestDebugLineMultipleFunctions() |
315 | 277 | [TestMethod] |
316 | 278 | public void TestDebugInfoSmall() |
317 | 279 | { |
318 | | - var cppName = "small"; |
319 | | - var cppObj = $"{cppName}_debug.o"; |
320 | | - LinuxUtil.RunLinuxExe("gcc", $"{cppName}.cpp -gdwarf-4 -c -o {cppObj}"); |
321 | | - |
322 | | - ElfFile elf; |
323 | | - using (var inStream = File.OpenRead(cppObj)) |
324 | | - { |
325 | | - elf = ElfFile.Read(inStream); |
326 | | - elf.Print(Console.Out); |
327 | | - } |
| 280 | + ElfFile elf = LoadElf("small_debug.o"); |
328 | 281 |
|
329 | 282 | var elfContext = new DwarfElfContext(elf); |
330 | 283 | var inputContext = new DwarfReaderContext(elfContext); |
@@ -361,13 +314,13 @@ public void TestDebugInfoSmall() |
361 | 314 |
|
362 | 315 | dwarf.WriteToElf(elfContext); |
363 | 316 |
|
364 | | - var cppObj2 = $"{cppName}_debug2.o"; |
365 | | - using (var outStream = new FileStream(cppObj2, FileMode.Create)) |
366 | | - { |
367 | | - elf.Write(outStream); |
368 | | - } |
| 317 | + //var cppObj2 = $"{cppName}_debug2.o"; |
| 318 | + //using (var outStream = new FileStream(cppObj2, FileMode.Create)) |
| 319 | + //{ |
| 320 | + // elf.Write(outStream); |
| 321 | + //} |
369 | 322 |
|
370 | | - PrintStreamLength(outputContext); |
| 323 | + //PrintStreamLength(outputContext); |
371 | 324 | } |
372 | 325 |
|
373 | 326 |
|
@@ -516,9 +469,9 @@ public void CreateDwarf() |
516 | 469 | Console.WriteLine(); |
517 | 470 | dwarfFile.InfoSection.Print(Console.Out); |
518 | 471 |
|
519 | | - Console.WriteLine("ReadBack --debug-dump=rawline"); |
520 | | - var readelf = LinuxUtil.ReadElf(outputFileName, "--debug-dump=rawline").TrimEnd(); |
521 | | - Console.WriteLine(readelf); |
| 472 | + //Console.WriteLine("ReadBack --debug-dump=rawline"); |
| 473 | + //var readelf = LinuxUtil.ReadElf(outputFileName, "--debug-dump=rawline").TrimEnd(); |
| 474 | + //Console.WriteLine(readelf); |
522 | 475 | } |
523 | 476 |
|
524 | 477 | private static void PrintStreamLength(DwarfReaderWriterContext context) |
|
0 commit comments