build problem - invalid operand in memset.S
Carlos O'Donell
carlos@systemhalted.org
Tue Aug 4 17:27:00 GMT 2009
On Mon, Aug 3, 2009 at 10:08 AM, Woods, David M. Dr.<woodsdm2@muohio.edu> wrote:
>
>
> I'm trying to build glibc 2.10.1 on a x86_64 system running Redhat 4u2 using gcc 4.3.1 and binutils 2.15.
>
> Make reports the following error:
>
> ../sysdeps/x86_64/memset.S: Assembler messages:
> ../sysdeps/x86_64/memset.S:706: Error: suffix or operands invalid for `movnti'
>
>
> Looking at memset.S, I see code using the movntiq instruction, but looking at the Intel instruction set reference, I don't see this instruction. There are movnti (store doubleword) and movntq (store quadword) instructions.
Often the assembler may support more than just the ISA, sometimes it
supports special instruction names that assemble to different machine
code depending on the selected target cpu. Theses are "shortcuts" that
help in writing a single function that works across different cpus.
> The code will build if I replace movntiq with movntq in memset.S and memcpy.S, but I would be surprised if I have to edit the code to build glibc, so I'm wondering if I missed a configuration step.
>
> What I've done is extract the archive to /software/glibc/glibc-2.10.1, make a build directory at /software/glibc/glibc-build, change to the build directory, run "../glibc-2.10.1/configure -prefix=/software/glibc/2.10.1", and then "make".
>
> Any suggestions on how to get this to build without changing these calls to "movntiq"?
Look into the version of your assembler (binutils project) to
determine if you need a newer assembler.
Cheers,
Carlos.
More information about the Libc-help
mailing list