On 08/15/2018 03:02 PM, Martin Sebor wrote: > On 08/15/2018 06:07 AM, Joseph Myers wrote: >> On Tue, 14 Aug 2018, Martin Sebor wrote: >> >>>> This is with Bison 3.0.4, should the version used to produce >>>> intl/plural.c >>>> prove relevant. >>> >>> Can you send me the translation unit and the options it was compiled >>> with that triggered the errors? >> >> I've attached plural.i. The error is a static link error linking sln, >> but >> maybe comparing results of compiling plural.i before and after the >> changes >> may be enlightening (unless it's actually a difference in code elsewhere >> in glibc causing a link error reported in plural.o). >> >> Compiled with: >> >> alpha-glibc-linux-gnu-gcc >> /scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu/intl/plural.c >> >> -c -std=gnu11 -fgnu89-inline -O2 -Wall -Werror -Wundef -Wwrite-strings >> -fmerge-all-constants -fno-stack-protector -frounding-math -g >> -Wstrict-prototypes -Wold-style-definition -fno-math-errno >> -mlong-double-128 -mieee -mfp-rounding-mode=d >> -ftls-model=initial-exec >> -I../include >> -I/scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu/intl >> >> -I/scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu >> >> -I../sysdeps/unix/sysv/linux/alpha/alpha >> -I../sysdeps/unix/sysv/linux/alpha/fpu -I../sysdeps/alpha/fpu >> -I../sysdeps/unix/sysv/linux/alpha -I../sysdeps/alpha/nptl >> -I../sysdeps/unix/sysv/linux/wordsize-64 >> -I../sysdeps/ieee754/ldbl-64-128 >> -I../sysdeps/ieee754/ldbl-opt -I../sysdeps/unix/sysv/linux/include >> -I../sysdeps/unix/sysv/linux -I../sysdeps/nptl -I../sysdeps/pthread >> -I../sysdeps/gnu -I../sysdeps/unix/inet -I../sysdeps/unix/sysv >> -I../sysdeps/unix/alpha -I../sysdeps/unix -I../sysdeps/posix >> -I../sysdeps/alpha -I../sysdeps/wordsize-64 >> -I../sysdeps/ieee754/ldbl-128 -I../sysdeps/ieee754/dbl-64/wordsize-64 >> -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 >> -I../sysdeps/ieee754 -I../sysdeps/generic -I.. -I../libio -I. >> -D_LIBC_REENTRANT -include >> /scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu/libc-modules.h >> >> -DMODULE_NAME=libc -include ../include/libc-symbols.h >> -DTOP_NAMESPACE=glibc -D'LOCALEDIR="/usr/share/locale"' >> -D'LOCALE_ALIAS_PATH="/usr/share/locale"' -o >> /scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu/intl/plural.o >> >> -MD -MP -MF >> /scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu/intl/plural.o.dt >> >> -MT >> /scratch/jmyers/glibc/many9/build/compilers/alpha-linux-gnu/glibc/alpha-linux-gnu/intl/plural.o >> >> > > Thanks. I don't see anything obviously wrong but I don't know > much about Alpha assembly. Attached are the two .s files, with > (plural-new.s) and without (plural-old.s) the array-to-string > transformation. I'd focus on these insns which correspond to the error from the linker:
They're in plural.o within the fucntion gettextparse ldah $2,yypgoto+2305843009213693936($29) !gprelhigh Something certainly doesn't look right... At the .o level this turns into: 218: 00 00 5d 24 ldah t1,0(gp) 218: GPRELHIGH .sdata+0x1ffffffffffffff3 300: 00 00 5d 24 ldah t1,0(gp) 300: GPRELHIGH .sdata+0x1ffffffffffffff3 It's not really a matter of what the instruction does, but a matter of the relocation. You'd have to look at the definition of GPRELHIGH which you can find in BFD. Jeff