[Scummvm-git-logs] scummvm branch-1-9 -> 418eec8c09ab2a19a8c183388953b587afe0349e

zeldin marcus at mc.pp.se
Tue Sep 27 13:05:29 CEST 2016


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
bd36d73f7b DC: Update versions of dependencies in README
47653445ae DC: Implement atexit handling for plugins
418eec8c09 DC: Ignore case for VM filenames


Commit: bd36d73f7bfa1c0f6d5cb0fc0fe3f94d64a9ca66
    https://github.com/scummvm/scummvm/commit/bd36d73f7bfa1c0f6d5cb0fc0fe3f94d64a9ca66
Author: Marcus Comstedt (marcus at mc.pp.se)
Date: 2016-09-27T13:04:41+02:00

Commit Message:
DC: Update versions of dependencies in README

The new GCC and Newlib are required for correct atexit handling
in plugins.  The new Ronin is required to support the Newlib upgrade,
and also for custom filename handling on VM saves.

Changed paths:
    backends/platform/dc/README



diff --git a/backends/platform/dc/README b/backends/platform/dc/README
index e26df50..3524f57 100644
--- a/backends/platform/dc/README
+++ b/backends/platform/dc/README
@@ -4,13 +4,13 @@ Compiling ScummVM for SEGA Dreamcast
 If you want to compile ScummVM for your Dreamcast,
 you'll need the following:
 
-* gcc-3.4.2 configured as a cross-compiler for `sh-elf'
+* gcc-4.6.3 configured as a cross-compiler for `sh-elf'
 
 * binutils-2.18 configured likewise
 
-* newlib for sh-elf : <URL:http://mc.pp.se/dc/files/newlib-1.12.0.tar.gz>
+* newlib for sh-elf : <URL:http://mc.pp.se/dc/files/newlib-1.19.0.tar.gz>
 
-* libronin-0.5 : <URL:http://peter.bortas.org/scumm/libronin-0.5.tar.gz>
+* libronin-0.6 : <URL:http://peter.bortas.org/scumm/libronin-0.6.tar.gz>
 
 * libmad : <URL:http://mc.pp.se/dc/files/libmad-0.15.1b.tar.gz>
 


Commit: 47653445ae8c9fa01b7aa1f637f109354a81bf23
    https://github.com/scummvm/scummvm/commit/47653445ae8c9fa01b7aa1f637f109354a81bf23
Author: Marcus Comstedt (marcus at mc.pp.se)
Date: 2016-09-27T13:04:41+02:00

Commit Message:
DC: Implement atexit handling for plugins

Changed paths:
    backends/platform/dc/dcloader.cpp
    backends/platform/dc/dcloader.h
    backends/platform/dc/plugin.syms
    backends/platform/dc/plugin.x



diff --git a/backends/platform/dc/dcloader.cpp b/backends/platform/dc/dcloader.cpp
index bc5e3a7..2627773 100644
--- a/backends/platform/dc/dcloader.cpp
+++ b/backends/platform/dc/dcloader.cpp
@@ -26,6 +26,8 @@
 
 #include "dcloader.h"
 
+#include <cxxabi.h>
+
 #ifdef DL_DEBUG
 #define DBG(x) reportf x
 #else
@@ -345,6 +347,7 @@ bool DLObject::open(const char *path)
   ctors_end = symbol("__plugin_ctors_end");
   dtors_start = symbol("__plugin_dtors");
   dtors_end = symbol("__plugin_dtors_end");
+  dso_handle = symbol("__dso_handle");
 
   if (ctors_start == NULL || ctors_end == NULL || dtors_start == NULL ||
      dtors_end == NULL) {
@@ -364,6 +367,10 @@ bool DLObject::open(const char *path)
 
 bool DLObject::close()
 {
+  if (dso_handle != NULL) {
+    __cxxabiv1::__cxa_finalize(dso_handle);
+    dso_handle = NULL;
+  }
   if (dtors_start != NULL && dtors_end != NULL)
     for (void (**f)(void) = (void (**)(void))dtors_start; f != dtors_end; f++)
       (**f)();
diff --git a/backends/platform/dc/dcloader.h b/backends/platform/dc/dcloader.h
index 074ae7a..daa2802 100644
--- a/backends/platform/dc/dcloader.h
+++ b/backends/platform/dc/dcloader.h
@@ -34,7 +34,7 @@ class DLObject {
   void *segment, *symtab;
   char *strtab;
   int symbol_cnt;
-  void *dtors_start, *dtors_end;
+  void *dtors_start, *dtors_end, *dso_handle;
 
   void seterror(const char *fmt, ...);
   void unload();
diff --git a/backends/platform/dc/plugin.syms b/backends/platform/dc/plugin.syms
index 2cab08c..9340ca2 100644
--- a/backends/platform/dc/plugin.syms
+++ b/backends/platform/dc/plugin.syms
@@ -6,3 +6,4 @@ ___plugin_ctors
 ___plugin_ctors_end
 ___plugin_dtors
 ___plugin_dtors_end
+___dso_handle
diff --git a/backends/platform/dc/plugin.x b/backends/platform/dc/plugin.x
index 2c8469a..039fca8 100644
--- a/backends/platform/dc/plugin.x
+++ b/backends/platform/dc/plugin.x
@@ -9,6 +9,7 @@ SECTIONS
   . = 0;
   .text           :
   {
+    ___dso_handle = .;
     *(.text .stub .text.* .gnu.linkonce.t.*)
     *(.gnu.warning)
   } :plugin =0


Commit: 418eec8c09ab2a19a8c183388953b587afe0349e
    https://github.com/scummvm/scummvm/commit/418eec8c09ab2a19a8c183388953b587afe0349e
Author: Marcus Comstedt (marcus at mc.pp.se)
Date: 2016-09-27T13:04:41+02:00

Commit Message:
DC: Ignore case for VM filenames

Changed paths:
    backends/platform/dc/vmsave.cpp



diff --git a/backends/platform/dc/vmsave.cpp b/backends/platform/dc/vmsave.cpp
index 5e8f50c..b4f8e20 100644
--- a/backends/platform/dc/vmsave.cpp
+++ b/backends/platform/dc/vmsave.cpp
@@ -292,11 +292,20 @@ public:
 };
 
 class VMSaveManager : public Common::SaveFileManager {
+private:
+  static int nameCompare(const unsigned char *entry, const char *match) {
+	return !scumm_strnicmp(reinterpret_cast<const char *>(entry), match, 12);
+  }
+
 public:
 	virtual void updateSavefilesList(Common::StringArray &lockedFiles) {
 		// TODO: implement this (locks files, preventing them from being listed, saved or loaded)
 	}
 
+  VMSaveManager() {
+	vmsfs_name_compare_function = nameCompare;
+  }
+
 	virtual Common::InSaveFile *openRawFile(const Common::String &filename) {
 		InVMSave *s = new InVMSave();
 		if (s->readSaveGame(filename.c_str())) {





More information about the Scummvm-git-logs mailing list