summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar David Marcec2018-12-19 12:52:32 +1100
committerGravatar David Marcec2018-12-19 12:52:32 +1100
commitfdd649e2ef56ea473e253511d35fe6c10e0fb241 (patch)
tree82bf8e6a7cd1dd344c9bb0b3a728fc17c38de629 /src
parentMerge pull request #1913 from MerryMage/default-fpcr (diff)
downloadyuzu-fdd649e2ef56ea473e253511d35fe6c10e0fb241.tar.gz
yuzu-fdd649e2ef56ea473e253511d35fe6c10e0fb241.tar.xz
yuzu-fdd649e2ef56ea473e253511d35fe6c10e0fb241.zip
Fixed uninitialized memory due to missing returns in canary
Functions which are suppose to crash on non canary builds usually don't return anything which lead to uninitialized memory being used.
Diffstat (limited to 'src')
-rw-r--r--src/core/file_sys/savedata_factory.cpp1
-rw-r--r--src/core/hle/kernel/object.cpp1
-rw-r--r--src/core/memory.cpp1
-rw-r--r--src/video_core/engines/maxwell_3d.h2
-rw-r--r--src/video_core/engines/shader_bytecode.h2
-rw-r--r--src/video_core/gpu.cpp2
-rw-r--r--src/video_core/macro_interpreter.cpp2
-rw-r--r--src/video_core/morton.cpp1
-rw-r--r--src/video_core/renderer_opengl/gl_shader_cache.h1
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp11
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp2
-rw-r--r--src/video_core/surface.cpp7
-rw-r--r--src/video_core/textures/decoders.cpp2
-rw-r--r--src/yuzu/debugger/graphics/graphics_surface.cpp1
14 files changed, 33 insertions, 3 deletions
diff --git a/src/core/file_sys/savedata_factory.cpp b/src/core/file_sys/savedata_factory.cpp
index bd50fedc7..d63b7f19b 100644
--- a/src/core/file_sys/savedata_factory.cpp
+++ b/src/core/file_sys/savedata_factory.cpp
@@ -128,6 +128,7 @@ std::string SaveDataFactory::GetFullPath(SaveDataSpaceId space, SaveDataType typ
128 return fmt::format("{}save/cache/{:016X}", out, title_id); 128 return fmt::format("{}save/cache/{:016X}", out, title_id);
129 default: 129 default:
130 ASSERT_MSG(false, "Unrecognized SaveDataType: {:02X}", static_cast<u8>(type)); 130 ASSERT_MSG(false, "Unrecognized SaveDataType: {:02X}", static_cast<u8>(type));
131 return fmt::format("{}save/unknown_{:X}/{:016X}", out, static_cast<u8>(type), title_id);
131 } 132 }
132} 133}
133 134
diff --git a/src/core/hle/kernel/object.cpp b/src/core/hle/kernel/object.cpp
index 0ea851a74..806078638 100644
--- a/src/core/hle/kernel/object.cpp
+++ b/src/core/hle/kernel/object.cpp
@@ -32,6 +32,7 @@ bool Object::IsWaitable() const {
32 } 32 }
33 33
34 UNREACHABLE(); 34 UNREACHABLE();
35 return false;
35} 36}
36 37
37} // namespace Kernel 38} // namespace Kernel
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 643afdee8..e9166dbd9 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -187,6 +187,7 @@ T Read(const VAddr vaddr) {
187 default: 187 default:
188 UNREACHABLE(); 188 UNREACHABLE();
189 } 189 }
190 return {};
190} 191}
191 192
192template <typename T> 193template <typename T>
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index 25bb7604a..0faff6fdf 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -164,6 +164,7 @@ public:
164 return 3; 164 return 3;
165 default: 165 default:
166 UNREACHABLE(); 166 UNREACHABLE();
167 return 1;
167 } 168 }
168 } 169 }
169 170
@@ -871,6 +872,7 @@ public:
871 return 4; 872 return 4;
872 } 873 }
873 UNREACHABLE(); 874 UNREACHABLE();
875 return 1;
874 } 876 }
875 877
876 GPUVAddr StartAddress() const { 878 GPUVAddr StartAddress() const {
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 2efeb6e1a..eb703bb5a 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -1065,6 +1065,7 @@ union Instruction {
1065 LOG_CRITICAL(HW_GPU, "Unhandled texture_info: {}", 1065 LOG_CRITICAL(HW_GPU, "Unhandled texture_info: {}",
1066 static_cast<u32>(texture_info.Value())); 1066 static_cast<u32>(texture_info.Value()));
1067 UNREACHABLE(); 1067 UNREACHABLE();
1068 return TextureType::Texture1D;
1068 } 1069 }
1069 1070
1070 TextureProcessMode GetTextureProcessMode() const { 1071 TextureProcessMode GetTextureProcessMode() const {
@@ -1145,6 +1146,7 @@ union Instruction {
1145 LOG_CRITICAL(HW_GPU, "Unhandled texture_info: {}", 1146 LOG_CRITICAL(HW_GPU, "Unhandled texture_info: {}",
1146 static_cast<u32>(texture_info.Value())); 1147 static_cast<u32>(texture_info.Value()));
1147 UNREACHABLE(); 1148 UNREACHABLE();
1149 return TextureType::Texture1D;
1148 } 1150 }
1149 1151
1150 TextureProcessMode GetTextureProcessMode() const { 1152 TextureProcessMode GetTextureProcessMode() const {
diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp
index 88c45a423..08cf6268f 100644
--- a/src/video_core/gpu.cpp
+++ b/src/video_core/gpu.cpp
@@ -102,6 +102,7 @@ u32 RenderTargetBytesPerPixel(RenderTargetFormat format) {
102 return 1; 102 return 1;
103 default: 103 default:
104 UNIMPLEMENTED_MSG("Unimplemented render target format {}", static_cast<u32>(format)); 104 UNIMPLEMENTED_MSG("Unimplemented render target format {}", static_cast<u32>(format));
105 return 1;
105 } 106 }
106} 107}
107 108
@@ -119,6 +120,7 @@ u32 DepthFormatBytesPerPixel(DepthFormat format) {
119 return 2; 120 return 2;
120 default: 121 default:
121 UNIMPLEMENTED_MSG("Unimplemented Depth format {}", static_cast<u32>(format)); 122 UNIMPLEMENTED_MSG("Unimplemented Depth format {}", static_cast<u32>(format));
123 return 1;
122 } 124 }
123} 125}
124 126
diff --git a/src/video_core/macro_interpreter.cpp b/src/video_core/macro_interpreter.cpp
index 9c55e9f1e..64f75db43 100644
--- a/src/video_core/macro_interpreter.cpp
+++ b/src/video_core/macro_interpreter.cpp
@@ -171,6 +171,7 @@ u32 MacroInterpreter::GetALUResult(ALUOperation operation, u32 src_a, u32 src_b)
171 171
172 default: 172 default:
173 UNIMPLEMENTED_MSG("Unimplemented ALU operation {}", static_cast<u32>(operation)); 173 UNIMPLEMENTED_MSG("Unimplemented ALU operation {}", static_cast<u32>(operation));
174 return 0;
174 } 175 }
175} 176}
176 177
@@ -268,6 +269,7 @@ bool MacroInterpreter::EvaluateBranchCondition(BranchCondition cond, u32 value)
268 return value != 0; 269 return value != 0;
269 } 270 }
270 UNREACHABLE(); 271 UNREACHABLE();
272 return true;
271} 273}
272 274
273} // namespace Tegra 275} // namespace Tegra
diff --git a/src/video_core/morton.cpp b/src/video_core/morton.cpp
index a310491a8..47e76d8fe 100644
--- a/src/video_core/morton.cpp
+++ b/src/video_core/morton.cpp
@@ -192,6 +192,7 @@ static MortonCopyFn GetSwizzleFunction(MortonSwizzleMode mode, Surface::PixelFor
192 return linear_to_morton_fns[static_cast<std::size_t>(format)]; 192 return linear_to_morton_fns[static_cast<std::size_t>(format)];
193 } 193 }
194 UNREACHABLE(); 194 UNREACHABLE();
195 return morton_to_linear_fns[static_cast<std::size_t>(format)];
195} 196}
196 197
197/// 8x8 Z-Order coordinate from 2D coordinates 198/// 8x8 Z-Order coordinate from 2D coordinates
diff --git a/src/video_core/renderer_opengl/gl_shader_cache.h b/src/video_core/renderer_opengl/gl_shader_cache.h
index b4ef6030d..de3671acf 100644
--- a/src/video_core/renderer_opengl/gl_shader_cache.h
+++ b/src/video_core/renderer_opengl/gl_shader_cache.h
@@ -67,6 +67,7 @@ public:
67 6, "ShaderTrianglesAdjacency"); 67 6, "ShaderTrianglesAdjacency");
68 default: 68 default:
69 UNREACHABLE_MSG("Unknown primitive mode."); 69 UNREACHABLE_MSG("Unknown primitive mode.");
70 return LazyGeometryProgram(geometry_programs.points, "points", 1, "ShaderPoints");
70 } 71 }
71 } 72 }
72 73
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
index bd61af463..836865e14 100644
--- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
+++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp
@@ -364,6 +364,7 @@ public:
364 return value; 364 return value;
365 default: 365 default:
366 UNREACHABLE_MSG("Unimplemented conversion size: {}", static_cast<u32>(size)); 366 UNREACHABLE_MSG("Unimplemented conversion size: {}", static_cast<u32>(size));
367 return value;
367 } 368 }
368 } 369 }
369 370
@@ -626,6 +627,7 @@ public:
626 return "floatBitsToInt(" + value + ')'; 627 return "floatBitsToInt(" + value + ')';
627 } else { 628 } else {
628 UNREACHABLE(); 629 UNREACHABLE();
630 return value;
629 } 631 }
630 } 632 }
631 633
@@ -2064,6 +2066,8 @@ private:
2064 std::to_string(instr.alu.GetSignedImm20_20())}; 2066 std::to_string(instr.alu.GetSignedImm20_20())};
2065 default: 2067 default:
2066 UNREACHABLE(); 2068 UNREACHABLE();
2069 return {regs.GetRegisterAsInteger(instr.gpr39, 0, false),
2070 std::to_string(instr.alu.GetSignedImm20_20())};
2067 } 2071 }
2068 }(); 2072 }();
2069 const std::string offset = '(' + packed_shift + " & 0xff)"; 2073 const std::string offset = '(' + packed_shift + " & 0xff)";
@@ -3314,6 +3318,7 @@ private:
3314 return std::to_string(instr.r2p.immediate_mask); 3318 return std::to_string(instr.r2p.immediate_mask);
3315 default: 3319 default:
3316 UNREACHABLE(); 3320 UNREACHABLE();
3321 return std::to_string(instr.r2p.immediate_mask);
3317 } 3322 }
3318 }(); 3323 }();
3319 const std::string mask = '(' + regs.GetRegisterAsInteger(instr.gpr8, 0, false) + 3324 const std::string mask = '(' + regs.GetRegisterAsInteger(instr.gpr8, 0, false) +
@@ -3777,7 +3782,9 @@ private:
3777 } 3782 }
3778 break; 3783 break;
3779 } 3784 }
3780 default: { UNIMPLEMENTED_MSG("Unhandled instruction: {}", opcode->get().GetName()); } 3785 default: {
3786 UNIMPLEMENTED_MSG("Unhandled instruction: {}", opcode->get().GetName());
3787 }
3781 } 3788 }
3782 3789
3783 break; 3790 break;
@@ -3932,4 +3939,4 @@ std::optional<ProgramResult> DecompileProgram(const ProgramCode& program_code, u
3932 return {}; 3939 return {};
3933} 3940}
3934 3941
3935} // namespace OpenGL::GLShader::Decompiler \ No newline at end of file 3942} // namespace OpenGL::GLShader::Decompiler
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index 4fd0d66c5..f02415139 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -427,6 +427,7 @@ static const char* GetSource(GLenum source) {
427 RET(OTHER); 427 RET(OTHER);
428 default: 428 default:
429 UNREACHABLE(); 429 UNREACHABLE();
430 return "Unknown source";
430 } 431 }
431#undef RET 432#undef RET
432} 433}
@@ -445,6 +446,7 @@ static const char* GetType(GLenum type) {
445 RET(MARKER); 446 RET(MARKER);
446 default: 447 default:
447 UNREACHABLE(); 448 UNREACHABLE();
449 return "Unknown type";
448 } 450 }
449#undef RET 451#undef RET
450} 452}
diff --git a/src/video_core/surface.cpp b/src/video_core/surface.cpp
index 9582dd2ca..a97b1562b 100644
--- a/src/video_core/surface.cpp
+++ b/src/video_core/surface.cpp
@@ -65,6 +65,7 @@ PixelFormat PixelFormatFromDepthFormat(Tegra::DepthFormat format) {
65 default: 65 default:
66 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format)); 66 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
67 UNREACHABLE(); 67 UNREACHABLE();
68 return PixelFormat::S8Z24;
68 } 69 }
69} 70}
70 71
@@ -141,6 +142,7 @@ PixelFormat PixelFormatFromRenderTargetFormat(Tegra::RenderTargetFormat format)
141 default: 142 default:
142 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format)); 143 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
143 UNREACHABLE(); 144 UNREACHABLE();
145 return PixelFormat::RGBA8_SRGB;
144 } 146 }
145} 147}
146 148
@@ -327,6 +329,7 @@ PixelFormat PixelFormatFromTextureFormat(Tegra::Texture::TextureFormat format,
327 LOG_CRITICAL(HW_GPU, "Unimplemented format={}, component_type={}", static_cast<u32>(format), 329 LOG_CRITICAL(HW_GPU, "Unimplemented format={}, component_type={}", static_cast<u32>(format),
328 static_cast<u32>(component_type)); 330 static_cast<u32>(component_type));
329 UNREACHABLE(); 331 UNREACHABLE();
332 return PixelFormat::ABGR8U;
330 } 333 }
331} 334}
332 335
@@ -346,6 +349,7 @@ ComponentType ComponentTypeFromTexture(Tegra::Texture::ComponentType type) {
346 default: 349 default:
347 LOG_CRITICAL(HW_GPU, "Unimplemented component type={}", static_cast<u32>(type)); 350 LOG_CRITICAL(HW_GPU, "Unimplemented component type={}", static_cast<u32>(type));
348 UNREACHABLE(); 351 UNREACHABLE();
352 return ComponentType::UNorm;
349 } 353 }
350} 354}
351 355
@@ -393,6 +397,7 @@ ComponentType ComponentTypeFromRenderTarget(Tegra::RenderTargetFormat format) {
393 default: 397 default:
394 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format)); 398 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
395 UNREACHABLE(); 399 UNREACHABLE();
400 return ComponentType::UNorm;
396 } 401 }
397} 402}
398 403
@@ -403,6 +408,7 @@ PixelFormat PixelFormatFromGPUPixelFormat(Tegra::FramebufferConfig::PixelFormat
403 default: 408 default:
404 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format)); 409 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
405 UNREACHABLE(); 410 UNREACHABLE();
411 return PixelFormat::ABGR8U;
406 } 412 }
407} 413}
408 414
@@ -418,6 +424,7 @@ ComponentType ComponentTypeFromDepthFormat(Tegra::DepthFormat format) {
418 default: 424 default:
419 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format)); 425 LOG_CRITICAL(HW_GPU, "Unimplemented format={}", static_cast<u32>(format));
420 UNREACHABLE(); 426 UNREACHABLE();
427 return ComponentType::UNorm;
421 } 428 }
422} 429}
423 430
diff --git a/src/video_core/textures/decoders.cpp b/src/video_core/textures/decoders.cpp
index bbae9285f..5db75de22 100644
--- a/src/video_core/textures/decoders.cpp
+++ b/src/video_core/textures/decoders.cpp
@@ -226,7 +226,7 @@ u32 BytesPerPixel(TextureFormat format) {
226 return 8; 226 return 8;
227 default: 227 default:
228 UNIMPLEMENTED_MSG("Format not implemented"); 228 UNIMPLEMENTED_MSG("Format not implemented");
229 break; 229 return 1;
230 } 230 }
231} 231}
232 232
diff --git a/src/yuzu/debugger/graphics/graphics_surface.cpp b/src/yuzu/debugger/graphics/graphics_surface.cpp
index 707747422..209798521 100644
--- a/src/yuzu/debugger/graphics/graphics_surface.cpp
+++ b/src/yuzu/debugger/graphics/graphics_surface.cpp
@@ -30,6 +30,7 @@ static Tegra::Texture::TextureFormat ConvertToTextureFormat(
30 return Tegra::Texture::TextureFormat::A2B10G10R10; 30 return Tegra::Texture::TextureFormat::A2B10G10R10;
31 default: 31 default:
32 UNIMPLEMENTED_MSG("Unimplemented RT format"); 32 UNIMPLEMENTED_MSG("Unimplemented RT format");
33 return Tegra::Texture::TextureFormat::A8R8G8B8;
33 } 34 }
34} 35}
35 36