[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