summaryrefslogtreecommitdiffstats
path: root/sbin/ldconfig
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2004-03-21 01:21:26 +0000
committerpeter <peter@FreeBSD.org>2004-03-21 01:21:26 +0000
commitccd389b7a3813a60939dfe53407367fc91ef3df8 (patch)
treeded17068c1bf0dea014f27d5b6b5ccda995841f0 /sbin/ldconfig
parent14202432d8f8324b424c7568b2a142567d110dfb (diff)
downloadFreeBSD-src-ccd389b7a3813a60939dfe53407367fc91ef3df8.zip
FreeBSD-src-ccd389b7a3813a60939dfe53407367fc91ef3df8.tar.gz
Add initial support for compiling a special 32 bit version of
ld-elf.so.1 on 64 bit systems. Most of this involves using alternate paths, environment variables and diagnostic messages. The build glue is seperate.
Diffstat (limited to 'sbin/ldconfig')
-rw-r--r--sbin/ldconfig/ldconfig.c38
1 files changed, 26 insertions, 12 deletions
diff --git a/sbin/ldconfig/ldconfig.c b/sbin/ldconfig/ldconfig.c
index 23516a8..5c0eb1d 100644
--- a/sbin/ldconfig/ldconfig.c
+++ b/sbin/ldconfig/ldconfig.c
@@ -63,6 +63,9 @@ static const char rcsid[] =
#define _PATH_ELF_HINTS "./ld-elf.so.hints"
#endif
+#define _PATH_LD32_HINTS "/var/run/ld32.so.hints"
+#define _PATH_ELF32_HINTS "/var/run/ld-elf32.so.hints"
+
#undef major
#undef minor
@@ -102,20 +105,31 @@ char *argv[];
{
int i, c;
int rval = 0;
- int is_aout;
-
- is_aout = 0;
- if (argc > 1 && strcmp(argv[1], "-aout") == 0) {
- is_aout = 1;
- argc--;
- argv++;
- } else if (argc > 1 && strcmp(argv[1], "-elf") == 0) {
- /* skip over legacy -elf arg */
- argc--;
- argv++;
+ int is_aout = 0;
+ int is_32 = 0;
+
+ while (argc > 1) {
+ if (strcmp(argv[1], "-aout") == 0) {
+ is_aout = 1;
+ argc--;
+ argv++;
+ } else if (strcmp(argv[1], "-elf") == 0) {
+ is_aout = 0;
+ argc--;
+ argv++;
+ } else if (strcmp(argv[1], "-32") == 0) {
+ is_32 = 1;
+ argc--;
+ argv++;
+ } else {
+ break;
+ }
}
- hints_file = is_aout ? _PATH_LD_HINTS : _PATH_ELF_HINTS;
+ if (is_32)
+ hints_file = is_aout ? _PATH_LD32_HINTS : _PATH_ELF32_HINTS;
+ else
+ hints_file = is_aout ? _PATH_LD_HINTS : _PATH_ELF_HINTS;
if (argc == 1)
rescan = 1;
else while((c = getopt(argc, argv, "Rf:imrsv")) != -1) {
OpenPOWER on IntegriCloud