[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] Mehrfachvergabe von Symbolnamen für TMS



* Wenn das Symbol bereits vergeben wurde, ignoriert TMS den Eintrag, im
  Endeffekt wird also der bereits vorhande String genutzt. Die Meldung
  "ignoring symbol 'TMS_SNAME(sym)' due to duplication" wird ausgegeben,
  um auf ein eventuell versehentliches Verwenden eines bereits benutzten
  Symbols hinzuweisen.

Signed-off-by: Patrick Pokatilo <shyxormz@xxxxxxxxxx>
---
 src/modules/include/tms.h |   14 +++++++++-----
 1 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/modules/include/tms.h b/src/modules/include/tms.h
index 7e46c9d..4de11ed 100644
--- a/src/modules/include/tms.h
+++ b/src/modules/include/tms.h
@@ -76,11 +76,15 @@ struct tms_lang {
 #define TMS(sym, string) \
     ({ \
         asm volatile( \
-            ".section tmsstring,\"aw\",@progbits\n" \
-            ".global " TMS_SNAME(sym) "\n" \
-            TMS_SNAME(sym)":\n"\
-            ".int %P0\n" \
-            ".section .text" : : "i" (string)); \
+            ".ifndef " TMS_SNAME(sym) "\n\t" \
+            ".section tmsstring,\"aw\",@progbits\n\t" \
+            ".global " TMS_SNAME(sym) "\n\t" \
+            TMS_SNAME(sym)":\n\t"\
+            ".int %P0\n\t" \
+            ".section .text\n\t" \
+            ".else\n\t" \
+            ".print \"ignoring symbol '" TMS_SNAME(sym) "' due to duplication\\n\"\n\t" \
+            ".endif\n" : : "i" (string)); \
         extern const char* TMS_NAME(sym); \
         TMS_NAME(sym); \
     })
-- 
1.7.0.4