-fno-rtti (disable TypeInfo) support ready for testing

Mike via D.gnu d.gnu at puremagic.com
Mon May 11 05:20:46 PDT 2015

On Sunday, 10 May 2015 at 17:45:30 UTC, Johannes Pfau wrote:
> I've just opened a pull request for -fno-rtti at [1]. The 
> frontend part
> needs to go into DMD but I'd like some testing feedback first. 
> This is
> especially important as I had literally no time to test this
> updated code ;-) Please provide feedback here or at [1].

Thanks for doing this!

I tested my LCD demo and I get the following errors,

Compiler command
arm-none-eabi-gdc -c -O3 -nophoboslib -nostdinc -nodefaultlibs 
-nostdlib -mthumb -mcpu=cortex-m4 -fno-bounds-check 
-fno-invariants -fno-in -fno-out -fno-emit-moduleinfo -fno-rtti 
-ffunction-sections -fdata-sections {some_imports} 
{my_source_files} -o binary/firmware.o

Compiler output
source/stm32f42/trace.d:58:5: error: Can't use array literal: 
TypeInfo disabled using -fno-rtti switch.
cc1d: error: Can't use typeid: TypeInfo disabled using -fno-rtti 
source/gcc/attribute.d:10:12: error: template instance 
gcc.attribute.Attribute!string error instantiating
      return Attribute!A(args);
source/gcc/attribute.d:13:45: note: instantiated from here: 
  public enum inline = gcc.attribute.attribute("forceinline");

Here's the code causing the error

private void semihostingWrite(in void* ptr, in uint length)
   uint[3] message = [ 2, cast(uint)ptr, length];  // line 58
   semihostingInvoke(0x05, &message);

// attribute.d
private struct Attribute(A...)
   A args;

auto attribute(A...)(A args) if(A.length > 0 && is(A[0] == 
   // line 10
   return Attribute!A(args);

//line 13
public enum inline = gcc.attribute.attribute("forceinline");
public enum naked = gcc.attribute.attribute("naked");

Without the -fno-rtti switch, everything builds fine.


More information about the D.gnu mailing list