plain 0 should be used. This happens to work because we #define
NULL to 0, but is stylistically wrong and can cause problems
for people trying to port bits of code to other environments.
PR: 2752
Submitted by: Arne Henrik Juul <arnej@imf.unit.no>
Bring the style of sods.c into better conformance. Add code to
print the contents of each datum being relocated. Correct the logic
that distinguishes between programs, shared libraries, and object
files. Make the entire program "-Wall" clean.
file based on the previous list of directories stored there which
should overcome a weakness of the '-m' switch which can only add
libs. This is an ideal way of updating the hints list after adding
or removing a shlib since it will remove entries that are gone and
doesn't need to have all the directories spelled out each time.
(eg: rm -f /usr/lib/libtcl75*; ldconfig -R) This only works for
version 2 hints files (which we've been generating for a year or
so) which store the path.
reference to the programming manual. Use this near-copy of the version
of hsuser.texinfo in contrib/libreadline instead of the stale near-copy
in contrib/gdb.
Add a -Bforcedynamic option which generates a dynamic object even
if no shared libraries were given in the link.
Make RRS in text section warnings conditional on "-assert pure-text"
so that I can link non-PIC kernel modules without tons of link
errors. Changes to bsd.lib.mk to follow.
Fix a couple of bugs exposed by the fact that the kernel is not
linked at zero.
Reviewed by: jdp
take the easy way out and implement the beginnings of something similar.
Don't worry, the code here is *dormant* so far, some "help" from cvs is
required. This is going in now so that jdp can see what I'm working on.
This is an extension of the previous existing skeleton $FreeBSD$ code.
because 2 references to _initialize_kcorelow (the other one
from kvm-fbsd.c) resulted. This prevented gdb from working correectly.
delete kcorelow.c from XSRCS in the Makefile.
punning the pcb to an array of ints and using magic indices to
access values in it. This should prevent silent breakage from
changes in the pcb.
Supply 0 for unavailable registers instead of punning the tss to
an array of ints and using magic indices to access garbage values
in it. (The registers are in the pcb; there is nothing interesting
in the tss. This should change someday. At least for dumps, all
the registers should be saved, and common_tss is a good place to
put them.)
Removed ancient wrong (disabled) method for reading eip.
sense to have a weak symbol that is not externally visible. This
fixes many of the "relocation burb" warnings produced when compiling
C++ code with "-fpic". Beyond eliminating warnings, it also makes
some things work that didn't work before.
(ignored :-() errors for `make depend' in /sys/i386/boot/*. It's
natural for there to be no libraries there and inconvenient to check
for this in bsd.prog.mk.
ld-specific flags. LDFLAGS is really for ld-related flags for cc,
not for ld, and some flags, e.g., -Bshareable, mean completely
different things to cc and ld. Having the wrong things in LDFLAGS
also broke the standard ${PROG} target. This was kludged around
by using a special rule that depended on LDFLAGS being bogus.
Fixing `make depend' broke the special rule but fixed the standard
rule (except in the DESTDIR case, which was handled more strictly
here than elsewhere).
dependency on `bar' is very unlikely to be correct.
This is a quick fix for broken dependencies in gdb and many other
places. The dependencies on internal libraries are now missing
instead of wrong when `make depend' is run before the libraries
are created.
directory. config.h is always in the current (= object) directory,
so don't search for it.
config.h is not a source for the library, so don't put it in SRCS and
don't make the library depend on it.
Don't put unused flags in CFLAGS.
Simplify using INTERNALLIB*.
- LDADD was wrong for non-uniform obj trees.
- DPADD was wrong for separate obj tres.
Cleaned up nearby messes, mostly ones invoving paths:
- ../libtxi was useless.
- there were too many redefinitions and too many different names for the
same paths.
- use INTERNALLIB* to simplify libtxi/Makefile.
- LDADD was wrong for non-uniform obj trees.
- DPADD was wrong for separate obj tres.
Cleaned up nearby messes, mostly ones invoving paths:
- -I../libtxi was useless.
- there were too many redefinitions and too many different names for the
same paths.
- use INTERNALLIB* to simplify libtxi/Makefile.
UPAGES layout.. it was entirely too comfortable with reading and writing
the U area before. I've changed it to use PT_GETREGS/PT_PUTREGS
ptrace ops instead of READ_U etc. The code to read the registers from
core dumps is a bandaid at best. It seems to have problems reading
core dumps from dynamic linked executables still, but at least static
dumps work.
I desperately need help from a gdb/bfd expert. :-) HELP!!
of binutils. For all architectures and object file formats,
".p2align n" aligns to the next multiple of 2**n. Thus for FreeBSD,
it does exactly the same thing as the traditional ".align".
The old ".align" directive has different meanings in different
object formats, and even in different variants of a.out. Sometimes
is aligns to a multiple of n, and other times it aligns to a multiple
of 2**n. ".p2align" is preferable for use in assembly language
sources, since it makes them more portable to object formats other
than a.out.
Strong 2.2 and 2.1.x candidate. Someone should review the patch before,
however.
The maintainer of the Perl5 port should probably introduce a similar patch
there.
"%%" in format strings and tends to dump core for "%%st". I needed
"%%st" to fix the new gdb ...
Don't use the private version of strerror() either.
Use INTERNALLIB and INTERNALSTATICLIB instead of a private install
rules NOPROFILE and NOPIC. This is only slightly cleaner.
INTERNALLIB was previously only used in compatibility libraries
(libgnumalloc etc.) and INTERNALSTATICLIB was previously unused.
INTERNAL*LIB probably should be replaced by something like NOSTATICO
together with NO{STATICO,PROFILE,PIC}INSTALL.
controlling terminal is closed. Now the function ask() will return 1 when th
input is known to come from a file or terminal, or it will return 0 when ther
was a read error.
Modified the question "Skip patch?" so that on an error from ask it will skip
the patch instead of looping.
Closes PR#777
2.2 candidate
library with a shared object dependency that contained alias symbols,
the linker incorrectly counted the number of symbols that would be
written, resulting in a fatal internal error. Since our libc now
contains some alias symbols (in "net/res_stubs.c"), this was
sufficient to tickle the bug: "ld -Bshareable foo.so -lc". To
fix it, I moved the accounting of alias symbols to a later point
in the processing, where it is possible to count only those symbols
that will actually be written to the output file.
This fix is well-confined to affect alias symbols only. I have
tested it with a full "make world". I am going to merge it into
-2.2 after a few more days of living with it in -current.
If it is set to a nonempty string, then simply skip any missing
shared libraries. This came up in a discussion long ago as a
potentially useful feature at sysinstall time. For example, an
X11 utility could be used without the X libraries being present,
provided the utility had a mode in which no X functions were actually
called.
by the -DNO_MMALLOC flag in gdb/Makefile.
The one thing we lose by doing this, AFAIK, is the possibility of using
mmap. Does anyone use that feature at all ?
2.2 candidate ?
files using the texi sources in /usr/src/contrib/gdb/gdb/doc.
I put a pointer to /usr/src/contrib/libreadline/doc into
Makefile.inc in the hope that the appropriate files would be
picked up.
This is based on /usr/ports/devel/gdb.
2.2 candidate ?
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.
nonempty string, then function calls are relocated at program start-up
rather than lazily. This variable is standard on Sun and SVR4 systems.
The dlopen() function now supports both lazy and immediate binding, as
determined by its "mode" argument, which can be either 1 (RTLD_LAZY) or
2 (RTLD_NOW). I will add defines of these symbols to <dlfcn.h> as soon
as I've done a little more checking to make sure they won't cause
collisions or bootstrapping problems that would break "make world".
The "LD_*" environment variables which alter dynamic linker behavior are
now treated as unset if they are set to the empty string. This agrees
with the standard SVR4 conventions for the dynamic linker.
Add a work-around for programs compiled with certain buggy versions of
crt0.o. The buggy versions failed to set the "crt_ldso" member of the
interface structure. This caused certain error messages from the
dynamic linker to begin with "(null)" instead of the pathname of the
dynamic linker.
nonempty string, then function calls are relocated at program start-up
rather than lazily. This variable is standard on Sun and SVR4 systems.
The dlopen() function now supports both lazy and immediate binding, as
determined by its "mode" argument, which can be either 1 (RTLD_LAZY) or
2 (RTLD_NOW). I will add defines of these symbols to <dlfcn.h> as soon
as I've done a little more checking to make sure they won't cause
collisions or bootstrapping problems that would break "make world".
Change CATMODE to 0644, because group man not used
Add immutable sbit to man binary, so if user even got man uid,
he can't replace man binary with fake one
Should go to 2.2
Submitted by: Marc Slemko <marcs@znep.com> with small editing by me
the system with these (and the mh port doesn't install there either).
Comment out /usr/X386/bin in MANPATH_MAP, it is already commented out
in MANDATORY_MANPATH.
2.2 candidate, I guess. I can't even imagine why these stuff were
still there!
peeking inside of Chris Torek's stdio library internals. This is
similar to the code used for other systems, but didn't work on CT's new
implementation.
Submitted by: Gary Kline <kline@tera.com>
link to another file which has a long (>=100 char) name. When listing such
an archive, the name of the link is truncated to 99 characters, and when
extracting such an archive, an error is reported because it is trying to
create a hard link to a file which doesn't exist. This patch fixes that
problem and has also been sent to the GNU maintainers.
Closes PR#1992
Submitted-By: David Dawes <dawes@landfill.physics.usyd.edu.au>
that is stored in the hints file. If that search path contained
a non-existent directory (one, say, that had been removed), and
"ldconfig -m /a/perfectly/good/directory" was run, ldconfig returned
an error status without printing an error message. This caused
some confusing bombs when installing ports, in particular.
I changed it so that non-existent directories from the stored search
path are silently ignored. Only non-existent directories named
explicitly on the command line are treated as errors. Also, a
diagnostic is printed if and only if an error status is returned.
In an unrelated fix, ldconfig now silently ignores any directories
named on the command line when the "-r" option is given. Formerly,
these directories incorrectly made their way into the "search
directories" line of the listing. It really should be an error to
specify directories together with "-r", but I don't have time to
fix the manual page in that way right now.
2.2 Candidate.
Reinstate the ability to use directories as input files
and make dc print an error message when trying to
lookup/set the value of an invalid register.
Suggested by: bde
instead of decimal. Also, don't use the `l' modifier for something
that has just been cast to `int' anyway.
Remove various bogus pathnames to look up rsh(1) at. Our rsh is in
/usr/bin, but never in /usr/usb, nor would it ever be called remsh...
Also, if it hasn't been found there, use execlp() to look it up. the
latter is required for `weird' environments like a fixit floppy where
the regular /usr/bin hiearrchy is not avaiable. tar should probably
do it similar to dump/restore, and use rcmd(3) instead of forking an
external process.
1) add Garrett Wollman's trap frame resolving mods
2) make the `proc' command (kernel debugging) really work
3) allow use of a pid with the `proc' command (previously you had to
provide the address of the proc structure)
Unfortunately, the `proc' command won't work while doing remote debugging.
the main program, report them directly from the dynamic linker and die
there, rather than returning an error message to crt0.o. This enables
the printing of error messages even for old executables, whose version
of crt0.o is not able to print them.
This fix closes PR bin/1869.
The code in crt0.o for printing error messages from the dynamic linker
is no longer used, because of this change. But it must remain, for
backward compatibility with older dynamic linkers.
. remove the blubber about `submitter-id's from the man page, we don't
use them,
. use REPLY_TO or REPLYTO in preference over LOGNAME as the value for
the Reply-To address (closes PRs 1471 and its duplicates 1472 and 1823),
. don't abuse ~/.signature as ORGANIZATION, this is almost always
useless blunder,
. actually list the Categories again, instead of xrefing to ``see
above'' (closes PR 1835),
. check the Synopsis field for being not empty,
. make the mail Subject the same as Synopsis if left blank (closes
PR 1209).
The remaining open send-pr related PRs (184 and its duplicate 1047,
and 1415) are pilot errors or local hardware problems.
it's and useful. (Ever tried to read 'nm' and 'ldd -v' output on a c++
object or library? :-) This filter decodes the mangled symbol names.)
Requested by: Chuck Robey <chuckr@glue.umd.edu>
opened. After that, the directories are already present, and there is
no point in adding them again. This doesn't fix any bugs; it's just for
efficiency.
libg++'s exception code causes gcc to generate (ahem!) non-conventional
assembler code in -fpic mode that gas and ld choke on. Basically, gas
and ld require than symbols referenced in the GOT (global offset table)
are actually global (as the name implies). It attempted to work around
it before, but didn't quite go far enough to prevent a core dump in ld.
This hack causes GOT referenced symbols to be forced global. This
probably breaks the __EXCEPTION_TABLE__ stuff in pic mode, but heck, it
wasn't even possible to compile with a shared library before at all.
I'm not 100% sure what the bug is. There's two possibilities:
1: gcc/cp/exception.c has to be fixed to stop doing GOT references to
local symbols, or
2: as/ld/symorder/ld.so etc need to be taught about how to keep local
symbols around so that they can be dealt with in GOT references.
John Polstra's elfkit stuff seems to deal with this fine though, which is
why I think it's a "missing feature" in our hacked gas and ld..
since rt_readenv() already takes care of not setting unsafe variables.
This was part of the changes I submitted to Peter and John during the
review which must have gotten missed.
how I managed to get this out of sync, but I did. I guess that's what I
get for directly committing from different machines that I was testing on.
Pointed out by: Paul Traina <pst@freebsd.org>
a (now) defunct routine that no longer exists (causing an empty .o file),
and were missing some others. Some of the ones we were missing are no-ops
on the i386, so there are now 4 empty .o files.
(It seems that libc/quad has got some defunct functions now)
configurable fallback search paths, as well as new crt interface version.
Also:
- even faster getenv(), get all environment variable settings in a single
pass.
- ldd printf-like format specifications
- minor code cleanups, one vsprintf -> vsnprintf (harmless)
The library search sequence is a little more complete now. Before,
it'd search $LD_LIBRARY_PATH (by opendir/readdir/closedir), then read
the hints file, then read /usr/lib (again by scanning thr directory). It
would then fail if there was no "found" library.
Now, it does LD_LIBRARY_PATH and the hints file the same, but then uses
a longer fallback path. The -R path is fetched from the executable if
specified at build time, the ldconfig path is appended, and /usr/lib is
appended to that. Duplicates are suppressed. This means that simply
placing a new library in /usr/local/lib will work (the same as it did in
/usr/lib) without needing ldconfig -m. It will find it quicker if the
ldconfig is run though.
Similar changes have been made to the NetBSD ld.so, but ours is rather
different now due to John Polstra's speedups and fixes from a while back.
The ldd printf-like format support came direct from NetBSD.
Reviewed by: nate, jdp
ldconfig path (from NetBSD). I added code to make sure there were no
duplicates in the path when multiple ldconfig -m's were used.
Reviewed by: nate, jdp
Obtained from: NetBSD (partly)
with the -R option and store the path in the dynamic header when specified.
The $LD_RUN_PATH environment variable is not checked yet.
While here, split up the code a bit more to enable more selective replacing
of GPL'ed components that are linked with ld.so with others.
Obtained from: NetBSD (mostly, the breakup is my fault)
.weak as gcc and g++ would like to use.
This includes changes to other architectures mostly for completeness,
I don't expect cross-assemblink would work but I could be wrong.
Obtained from: NetBSD