[Scummvm-git-logs] scummvm master -> 95ad63e9922976c1d2ecd97d1fce03bdc023189c
zeldin
marcus at mc.pp.se
Tue Sep 27 13:06:53 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:
9c235b3d6e DC: Update versions of dependencies in README
4aacc41fff DC: Implement atexit handling for plugins
95ad63e992 DC: Ignore case for VM filenames
Commit: 9c235b3d6e543ab880c0d506d8cf6cfe2871051b
https://github.com/scummvm/scummvm/commit/9c235b3d6e543ab880c0d506d8cf6cfe2871051b
Author: Marcus Comstedt (marcus at mc.pp.se)
Date: 2016-09-27T13:06:15+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: 4aacc41fff5f96b3e318e99d036796424dadff7f
https://github.com/scummvm/scummvm/commit/4aacc41fff5f96b3e318e99d036796424dadff7f
Author: Marcus Comstedt (marcus at mc.pp.se)
Date: 2016-09-27T13:06:15+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: 95ad63e9922976c1d2ecd97d1fce03bdc023189c
https://github.com/scummvm/scummvm/commit/95ad63e9922976c1d2ecd97d1fce03bdc023189c
Author: Marcus Comstedt (marcus at mc.pp.se)
Date: 2016-09-27T13:06:15+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