[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