Bug#880023: polyml: FTBFS on hppa - error linking poly

Alan Modra amodra at gmail.com
Thu Nov 2 10:27:42 UTC 2017


On Sat, 28 Oct 2017 10:51:01 -0400 John David Anglin <dave.anglin at bell.net> wrote:
> Source: polyml
> Version: 5.7
> Severity: normal
> 
> Dear Maintainer,
> 
> Build fails here:
> 
> Making STRUCT_CONVERSIONALS
> Created functor STRUCT_CONVERSIONALS
> Created structure StructConversionals
> Created structure CInterface
> /bin/bash ./libtool  --tag=CC   --mode=link gcc   -Wall -fno-strict-aliasing -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security   -Wl,--as-needed -o poly  polyexport.o  libpolymain/libpolymain.la libpolyml/libpolyml.la  -lpthread -lffi -lm -ldl -lstdc++ -lgcc_s -lgcc 
> libtool: link: gcc -Wall -fno-strict-aliasing -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -Wl,--as-needed -o .libs/poly polyexport.o  libpolymain/.libs/libpolymain.a libpolyml/.libs/libpolyml.so -lpthread -lffi -lm -ldl -lstdc++ -lgcc_s -lgcc
> /usr/bin/ld: BFD (GNU Binutils for Debian) 2.29.1 internal error, aborting at ../../bfd/elf32-hppa.c:4054 in elf32_hppa_relocate_section
> 
> /usr/bin/ld: Please report this bug.
> 
> collect2: error: ld returned 1 exit status
> Makefile:588: recipe for target 'poly' failed
> 
> Full build log is here:
> https://buildd.debian.org/status/fetch.php?pkg=polyml&arch=hppa&ver=5.7-2&stamp=1507223380&raw=0
> 
> The error was reported to binutils:
> https://sourceware.org/bugzilla/show_bug.cgi?id=22300
> 
> See "bug 1: polyimport, the producer of polyexport.o is using the wrong os/abi for hppa-linux." in comment 4.
> 
> The binutils part of this bug should now be fixed by commit c0e331c794d6bd75d9be9bea6145513074c33f39.

Even when this has been worked around by the binutils change, polyml
still fails to build.

echo "use \"/home/amodra/src/polyml/modules/IntInfAsInt/ROOT.sml\";" |
../../poly -q -error-exit
Segmentation fault

Some debugging shows this is due to a NULL function pointer, traceable
back to this relocation in polyexport.o

00000134  00001301 R_PARISC_DIR32    00000000   PolyProcessEnvGeneral + 0

That's also an ABI violation.  Function pointers on hppa32 require
plabel relocations.

$ cat funcp.c
extern void foo(void);
void (*fp)(void) = foo;
$ hppa-linux-gcc -O -c -save-temps funcp.c
$ cat funcp.s
	.LEVEL 1.1
.globl fp
	.section	.data.rel,"aw", at progbits
	.align 4
	.type	fp, @object
	.size	fp, 4
fp:
	.word	P%foo
	.ident	"GCC: (GNU) 8.0.0 20171018 (experimental)"
	.section	.note.GNU-stack,"", at progbits
$ readelf -r funcp.o

Relocation section '.rela.data.rel' at offset 0xfc contains 1 entries:
 Offset     Info    Type            Sym.Value  Sym. Name + Addend
00000000  00000841 R_PARISC_PLABEL32 00000000   foo + 0


-- 
Alan Modra
Australia Development Lab, IBM



More information about the debian-science-maintainers mailing list