[systemd-devel] Build error with 218 - undefined reference to `__start_BUS_ERROR_MAP'

Lennart Poettering lennart at poettering.net
Thu Dec 11 15:24:32 PST 2014

On Thu, 11.12.14 23:01, Umut Tezduyar Lindskog (umut at tezduyar.com) wrote:

> Trying to build 218 but I am getting undefined reference error. The
> source code of bus-error.c mentions that gcc magically maps these
> variables but not for me.
> What is doing the mapping? __attribute__ ((__section__("BUS_ERROR_MAP"))) ?
> Could it be that mentioned "gcc magic" is not supported on cross compiling?
> Also, why do we need to use elf section instead of iterating over
> bus_standard_errors[]?

The idea is that any .c file linked into a binary can define
additional maps, and we collect them all simply by iterating through
__start_BUS_ERROR_MAP to __stop_BUS_ERROR_MAP.

The __start_XYZ/__stop_XYZ magic is pretty old ld/gold stuff, support
since a long time. 

Is there something fishy with your toolchain? Any particular build
time options you turned on or off? Some really old ld
versions would end up dropping these sections a bit too eagerly:


But that's 4y old... Or is your toolchain that old?

>   CCLD     libnss_resolve.la
> libsystemd_shared_la-hashmap.o (symbol from plugin): warning: memset
> used with constant zero length parameter; this could be due to
> transposed parameters
> /tmp/ccHr0vVt.ltrans13.ltrans.o: In function `bus_error_name_to_errno.14134':
> ccHr0vVt.ltrans13.o:(.text+0x7b0): undefined reference to
> `__start_BUS_ERROR_MAP'
> ccHr0vVt.ltrans13.o:(.text+0x7b4): undefined reference to `__stop_BUS_ERROR_MAP'
> collect2: error: ld returned 1 exit status
> Umut
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Lennart Poettering, Red Hat

More information about the systemd-devel mailing list