Hallo Leute, Folgendes Problem (C++, Newlib vorkompiliert, LPCXpresso, -fno-exceptions ): erstelle ich ein Objekt mit "new" (oder ich definiere eine abstrakte Funktion -> mit Workaround gelöst) so erhöht sich die Codegröße um ca. 70kB. Anscheinend werden Routinen für eine Fehlerausgabe(Exceptions) eingebunden (printf, strcmp, __write, etc.) Ich bräuchte Tipps, die Fehlerausgabe umzuleiten und selber zu behandeln, sodass der Code sich nicht so aufbläht? Insbesondere "__cxa_demangle" ist über 40kB groß. Danke Felix Auszüge aus dem map-File (hoffentlich habe ich was verwertbares rausgesucht):
1 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(bad_alloc.o) (std::exception::~exception()) |
2 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(del_op.o) |
3 | |
4 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(vterminate.o) (__cxa_current_exception_type) |
5 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(pointer_type_info.o) |
6 | |
7 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(cp-demangle.o) |
8 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(vterminate.o) (__cxa_demangle) |
9 | |
10 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(cp-demangle.o) (realloc) |
11 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-strncmp.o) |
12 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(cp-demangle.o) (strncmp) |
13 | |
14 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(cp-demangle.o) (memcmp) |
15 | c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libc.a(lib_a-putc.o) |
16 | |
17 | |
18 | |
19 | .text 0x00008200 0x9940 c:/nxp/lpcxpresso_5.2.4_2122/lpcxpresso/tools/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libstdc++.a(cp-demangle.o) |
20 | 0x00011a58 __cxa_demangle |
21 | 0x00011b1c __gcclibcxx_demangle_callback |