mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-16 15:40:16 +00:00
* emultempl/elf32.em (gld${EMULATION_NAME}_check_ld_so_conf): New
static function, if ${host} = ${target}. (gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a needed shared library if ${host} = $[target}.
This commit is contained in:
parent
13e4a17e76
commit
6cc7365e2b
@ -1,5 +1,14 @@
|
|||||||
Fri Apr 5 14:30:14 1996 Ian Lance Taylor <ian@cygnus.com>
|
Fri Apr 5 14:30:14 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* emultempl/elf32.em (gld${EMULATION_NAME}_check_ld_so_conf): New
|
||||||
|
static function, if ${host} = ${target}.
|
||||||
|
(gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a
|
||||||
|
needed shared library if ${host} = $[target}.
|
||||||
|
|
||||||
|
* configure.host (i[345]86-*-linux*): Add -dynamic-linker to
|
||||||
|
HOSTING_CRT0. Search -lgcc both before and after -lc in
|
||||||
|
HOSTING_LIBS.
|
||||||
|
|
||||||
* configure.tgt: Add i[345]86-*-freebsdelf* target; from John
|
* configure.tgt: Add i[345]86-*-freebsdelf* target; from John
|
||||||
Polstra <jdp@polstra.com>.
|
Polstra <jdp@polstra.com>.
|
||||||
|
|
||||||
|
@ -131,6 +131,93 @@ gld${EMULATION_NAME}_open_dynamic_archive (arch, search, entry)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOF
|
||||||
|
if [ "x${host}" = "x${target}" ] ; then
|
||||||
|
cat >>e${EMULATION_NAME}.c <<EOF
|
||||||
|
|
||||||
|
/* For a native linker, check the file /etc/ld.so.conf for directories
|
||||||
|
in which we may find shared libraries. /etc/ld.so.conf is really
|
||||||
|
only meaningful on Linux, but we check it on other systems anyhow. */
|
||||||
|
|
||||||
|
static boolean gld${EMULATION_NAME}_check_ld_so_conf PARAMS ((const char *));
|
||||||
|
|
||||||
|
static boolean
|
||||||
|
gld${EMULATION_NAME}_check_ld_so_conf (name)
|
||||||
|
const char *name;
|
||||||
|
{
|
||||||
|
static boolean initialized;
|
||||||
|
static char *ld_so_conf;
|
||||||
|
|
||||||
|
if (! initialized)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
|
||||||
|
f = fopen ("/etc/ld.so.conf", FOPEN_RT);
|
||||||
|
if (f != NULL)
|
||||||
|
{
|
||||||
|
char *b;
|
||||||
|
size_t len, alloc;
|
||||||
|
int c;
|
||||||
|
|
||||||
|
len = 0;
|
||||||
|
alloc = 100;
|
||||||
|
b = (char *) xmalloc (alloc);
|
||||||
|
|
||||||
|
while ((c = getc (f)) != EOF)
|
||||||
|
{
|
||||||
|
if (len + 1 >= alloc)
|
||||||
|
{
|
||||||
|
alloc *= 2;
|
||||||
|
b = (char *) xrealloc (b, alloc);
|
||||||
|
}
|
||||||
|
if (c != ':'
|
||||||
|
&& c != ' '
|
||||||
|
&& c != '\t'
|
||||||
|
&& c != '\n'
|
||||||
|
&& c != ',')
|
||||||
|
{
|
||||||
|
b[len] = c;
|
||||||
|
++len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (len > 0 && b[len - 1] != ':')
|
||||||
|
{
|
||||||
|
b[len] = ':';
|
||||||
|
++len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (len > 0 && b[len - 1] == ':')
|
||||||
|
--len;
|
||||||
|
|
||||||
|
if (len > 0)
|
||||||
|
b[len] = '\0';
|
||||||
|
else
|
||||||
|
{
|
||||||
|
free (b);
|
||||||
|
b = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose (f);
|
||||||
|
|
||||||
|
ld_so_conf = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ld_so_conf == NULL)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return gld${EMULATION_NAME}_search_needed (ld_so_conf, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
cat >>e${EMULATION_NAME}.c <<EOF
|
||||||
|
|
||||||
/* These variables are required to pass information back and forth
|
/* These variables are required to pass information back and forth
|
||||||
between after_open and check_needed and stat_needed. */
|
between after_open and check_needed and stat_needed. */
|
||||||
|
|
||||||
@ -222,6 +309,14 @@ cat >>e${EMULATION_NAME}.c <<EOF
|
|||||||
}
|
}
|
||||||
if (search != NULL)
|
if (search != NULL)
|
||||||
continue;
|
continue;
|
||||||
|
EOF
|
||||||
|
if [ "x${host}" = "x${target}" ] ; then
|
||||||
|
cat >>e${EMULATION_NAME}.c <<EOF
|
||||||
|
if (gld${EMULATION_NAME}_check_ld_so_conf (l->name))
|
||||||
|
continue;
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
cat >>e${EMULATION_NAME}.c <<EOF
|
||||||
|
|
||||||
einfo ("%P: warning: %s, needed by %B, not found\n",
|
einfo ("%P: warning: %s, needed by %B, not found\n",
|
||||||
l->name, l->by);
|
l->name, l->by);
|
||||||
@ -596,7 +691,7 @@ gld${EMULATION_NAME}_find_exp_assignment (exp)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case etree_trinary:
|
case etree_trinary:
|
||||||
gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.lhs);
|
gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.cond);
|
||||||
gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.lhs);
|
gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.lhs);
|
||||||
gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.rhs);
|
gld${EMULATION_NAME}_find_exp_assignment (exp->trinary.rhs);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user