Subject: Re: Toolchain problems
To: Krister Walfridsson <firstname.lastname@example.org>
From: Simon Burge <email@example.com>
Date: 04/18/1999 16:16:41
Krister Walfridsson wrote:
> I have two problems with the toolchain and 1.4_ALPHA
> 1. I get some warnings
> Warning: No .cprestore pseudo-op used in PIC code
> when I compile the libraries (for example in the file
> src/lib/libc/arch/mips/gen/isinf.S) Is this a cause for
> consern, or just gas beeing stupid?
The warnings seem mostly harmless. Here's a few paragraphs from
> This means the assembler is seeing code compiled as PIC, that isn't
> emitting the mips svr4 PIC pseudo-ops to save and restore the [sic]
> ``segment register'' used to set up GP-relative addressing. It's
> probably part of the reason profiling is broken.
> The reason profiled libraries are compiled as PIC is because both the
> non-shared (.a) and shared (_pic.a and .so) libraries are compiled as
> PIC. They have to be, so that users can link user-code as either
> static or dynamic *without* having to recompile all the user code as
> static. (Because that's what binutils and the mips svr4 ABI insist on.)
> We could punt on the svr4 ABI, but that basically means we'd have to
> support our own toolchain back-end. Time, time...
For now, just ignore the warnings :-)
> 2. ld dies with a segmentation fault when I link 'strings'.
> I have tried it both with a system built from 8 Apr source
> and the binary snapshot, with the same result... But everything
> else links just fine...
mona:usr.bin/binutils/strings 319# make "CC=cc -v"
cc -v -o strings strings.o \
-L/usr/src/gnu/usr.bin/binutils/common/obj.pmax -lcommon \
Using builtin specs.
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
/usr/libexec/collect2 -non_shared -dynamic-linker \
/usr/libexec/ld.elf_so -e __start -dc -dp -Bdynamic -o \
strings /usr/lib/crt0.o /usr/lib/crtbegin.o \
-L/usr/src/gnu/lib/libbfd/obj.pmax -L/usr/libexec strings.o \
-lcommon -lbfd -lgcc -lc -lgcc /usr/lib/crtend.o
In function `make_tempname':
warning: mktemp() possibly used unsafely, use mkstemp() or mkdtemp()
This is on the machine building the 1.4_ALPHA snapshots. Can you try
the ld from the latest snapshot?