You write that
LDFLAGS+= -Xlinker -Bstatic
no more needed, but you have
CFLAGS += -static -I$(.CURDIR) -I$(.CURDIR)/$(MACHINE)
This -static doesn't make any sense in your version,
because it not passed to linker's state (LDFLAGS),
so we have SHARED /usr/bin/ld in this case.
(Older Makefile produce non-shared ld).
I suppose, that -static in CFLAGS was introduced to
make non-shared ld, so I restore previous LDFLAGS
to have non-shared ld. If we want to have shared ld
we need to remove -static from CFLAGS too, not only LDFLAGS,
but this need special issue and corresponding
commit log. Your current version hang into intermediate
state (beetween two sides), so I move it to one side.
Second, I restore NOPIC dependance again from older Makefile:
.if !defined(NOPIC)
SUBDIR+= rtld
.endif
We don't need ld.so, if NOPIC
P.S. I don't see any purpose to commit new makefile, old version
is better.
commented out in #ifdef DEBUG
As Paul told me, it is only informational, nothing more.
I don't want several screens of this information
on each linking (netstat f.e.)
On any other system -z means "standard" ZMAGIC format and is the
default. Therefore I've made -z be standard ZMAGIC and -Z be ZMAGIC
stored in the new a_midmag format.
The "standard" ZMAGIC format is now the default as well.
lib.c:
Pull in archives containing definitions needed by shared objects.
warnings.c:
Less spurious "undefined symbol" msgs for shared library defined
symbols.
ld.c:
Do a better job of recognising data in text segments, eg. `const char []'.
shlib.c,ld/rtld/{Makefile rtld.c}
Use strsep() in stead of strtok() and restore colons in eg. env. vars.
Subject: man pages for diff et al.
I finally got tired of not having man pages for diff and friends, so I
edited the appropriate sections of the texinfo manual into man format.
to output the same QMAGIC format as BSDI does. This is triggered by
a new '-q' flag ('-Xlinker -q' in gcc). The default can be changed from
ZMAGIC to QMAGIC by defining DEFAULT_MAGIC=QMAGIC when building ld.
if any are referenced.
libc's malloc.o contains malloc(), free() and realloc(). And libc
refers to realloc which will cause the linker to pull in redundant
malloc() and free() definitions from malloc.o if it isn't already
linked in from GNU malloc. Rich