Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Mar 2005 18:05:17 +1100
From:      Peter Jeremy <PeterJeremy@optushome.com.au>
To:        Vinod Kashyap <vkashyap@amcc.com>
Cc:        freebsd-amd64@freebsd.org
Subject:   Re: undefined reference to `memset'
Message-ID:  <20050324070516.GA43123@cirb503493.alcatel.com.au>
In-Reply-To: <IDTR9T00.LMF@hadar.amcc.com>
References:  <IDTR9T00.LMF@hadar.amcc.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2005-Mar-23 13:48:04 -0800, Vinod Kashyap wrote:
>If any kernel module has the following, or a similar line in it:
>-----
>char x[100] = {0};
>-----
>building of the GENERIC kernel on FreeBSD 5 -STABLE for amd64
>as of 03/19/05, fails with the following message at the time of linking:
>"undefined reference to `memset'".
>
>The same problem is not seen on i386.
>
>The problem goes away if the above line is changed to:
>-----
>char x[100];
>memset(x, 0, 100);
>-----

Can you post a complete (compilable) example please.  Based on your
second example, I suspect that you are putting the variable
declaration inside a function definition - the second example doesn't
make sense outside a function.

If I add "char x[100] = {0};" into a function on i386 and compile it
as a kernel module on 5.3, a static memset symbol is generated - it's
possible that the amd64 compiler gets confused about the implicit
reference to memset that this code needs.

-- 
Peter Jeremy



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050324070516.GA43123>