I ran into this issue in the process of moving away from devkitARM to a vanilla ARM GNU Toolchain.

It boils down to a library called libsysbase, which was at proposed for merging into Newlib all the way back in 2006, but never made it in, so it remains a devkitARM addition.

In Newlib, the way to implement one’s own STDOUT handler for functions like printf is to implement a set of low-level, “syscall-like” functions; the most important of those is _write. On the other hand, libsysbase already implements these, providing a layer of abstraction on top, having the concept of devices for dealing with the file system.

If you only care about STDOUT, it’s quite easy to migrate from libsysbase to vanilla Newlib. Instead of declaring devoptab_t entries, implement the _write function directly.