aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Quintela <quintela@redhat.com>2009-07-22 22:37:40 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-07-27 14:10:56 -0500
commit4bf6b55b346d33ff16dd25f75bbea8e21f95dfa6 (patch)
tree14989fe5b367b33be294adca04fc342203c76be4
parentfa282484b373f4c5751cb46fb2daa8ba0245fe5c (diff)
set SEARCH_PATH for the linker script from output of ld --verbose -v
Signed-off-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--Makefile2
-rw-r--r--alpha.ld1
-rw-r--r--arm.ld1
-rwxr-xr-xconfigure23
-rw-r--r--hppa.ld1
-rw-r--r--i386.ld1
-rw-r--r--ia64.ld4
-rw-r--r--m68k.ld4
-rw-r--r--mips.ld1
-rw-r--r--ppc.ld1
-rw-r--r--ppc64.ld8
-rw-r--r--s390.ld4
-rw-r--r--sparc.ld1
-rw-r--r--sparc64.ld1
-rw-r--r--x86_64.ld1
15 files changed, 23 insertions, 31 deletions
diff --git a/Makefile b/Makefile
index ed9a08d6e9..c510ff3fea 100644
--- a/Makefile
+++ b/Makefile
@@ -225,7 +225,7 @@ clean:
done
distclean: clean
- rm -f config-host.mak config-host.h $(DOCS) qemu-options.texi qemu-img-cmds.texi
+ rm -f config-host.mak config-host.h config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi
rm -f qemu-{doc,tech}.{info,aux,cp,dvi,fn,info,ky,log,pg,toc,tp,vr}
for d in $(TARGET_DIRS) libhw32 libhw64; do \
rm -rf $$d || exit 1 ; \
diff --git a/alpha.ld b/alpha.ld
index 0975443066..906d76bba1 100644
--- a/alpha.ld
+++ b/alpha.ld
@@ -2,7 +2,6 @@ OUTPUT_FORMAT("elf64-alpha", "elf64-alpha",
"elf64-alpha")
OUTPUT_ARCH(alpha)
ENTRY(__start)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib);
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/arm.ld b/arm.ld
index 93285d6979..12b3edb5bb 100644
--- a/arm.ld
+++ b/arm.ld
@@ -2,7 +2,6 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm",
"elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(_start)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib);
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/configure b/configure
index 02cf9e7744..8160bed173 100755
--- a/configure
+++ b/configure
@@ -1477,6 +1477,7 @@ fi
config_host_mak="config-host.mak"
config_host_h="config-host.h"
+config_host_ld="config-host.ld"
#echo "Creating $config_host_mak and $config_host_h"
@@ -1784,6 +1785,18 @@ if test -f ${config_host_h}~ ; then
fi
fi
+# generate list of library paths for linker script
+
+$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
+
+if test -f ${config_host_ld}~ ; then
+ if cmp -s $config_host_ld ${config_host_ld}~ ; then
+ mv ${config_host_ld}~ $config_host_ld
+ else
+ rm ${config_host_ld}~
+ fi
+fi
+
for target in $target_list; do
target_dir="$target"
config_mak=$target_dir/config.mak
@@ -2049,7 +2062,7 @@ if test "$target_linux_user" = "yes" -o "$target_linux_user" = "yes" ; then
case "$ARCH" in
i386)
if test "$gprof" = "yes" -o "$static" = "yes" ; then
- ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld'
+ ldflags='-Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld'
else
# WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object
# that the kernel ELF loader considers as an executable. I think this
@@ -2059,20 +2072,20 @@ if test "$target_linux_user" = "yes" -o "$target_linux_user" = "yes" ; then
;;
sparc)
# -static is used to avoid g1/g3 usage by the dynamic linker
- ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
+ ldflags='-Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
;;
ia64)
- ldflags='-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
+ ldflags='-Wl,-G0 -Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
;;
x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64)
- ldflags='-Wl,-T,$(SRC_PATH)/$(ARCH).ld'
+ ldflags='-Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld'
;;
esac
fi
if test "$target_softmmu" = "yes" ; then
case "$ARCH" in
ia64)
- ldflags='-Wl,-G0 -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
+ ldflags='-Wl,-G0 -Wl,-T../config-host.ld -Wl,-T,$(SRC_PATH)/$(ARCH).ld -static'
;;
esac
fi
diff --git a/hppa.ld b/hppa.ld
index 8ef7fa5728..9a4b22c022 100644
--- a/hppa.ld
+++ b/hppa.ld
@@ -3,7 +3,6 @@ OUTPUT_FORMAT("elf32-hppa-linux", "elf32-hppa-linux",
"elf32-hppa-linux")
OUTPUT_ARCH(hppa:hppa1.1)
ENTRY(_start)
-SEARCH_DIR("/usr/hppa-linux-gnu/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/i386.ld b/i386.ld
index 9f4cb5b136..f2dafecc1a 100644
--- a/i386.ld
+++ b/i386.ld
@@ -3,7 +3,6 @@
*/
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib);
ENTRY(_start)
SECTIONS
{
diff --git a/ia64.ld b/ia64.ld
index 8d2ede2d3d..0c377967cd 100644
--- a/ia64.ld
+++ b/ia64.ld
@@ -3,9 +3,7 @@ OUTPUT_FORMAT("elf64-ia64-little", "elf64-ia64-little",
"elf64-ia64-little")
OUTPUT_ARCH(ia64)
ENTRY(_start)
-SEARCH_DIR("/usr/ia64-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib");
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
+/* __DYNAMIC = 0; */
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/m68k.ld b/m68k.ld
index 28da902fd5..0e3d9deb5a 100644
--- a/m68k.ld
+++ b/m68k.ld
@@ -3,9 +3,7 @@ OUTPUT_FORMAT("elf32-m68k", "elf32-m68k",
"elf32-m68k")
OUTPUT_ARCH(m68k)
ENTRY(_start)
-SEARCH_DIR("/usr/local/m68k-linux/lib");
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
+/* __DYNAMIC = 0; */
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/mips.ld b/mips.ld
index 94fa63be4b..4294761c19 100644
--- a/mips.ld
+++ b/mips.ld
@@ -3,7 +3,6 @@ OUTPUT_FORMAT("elf32-tradbigmips", "elf32-tradbigmips",
"elf32-tradlittlemips")
OUTPUT_ARCH(mips)
ENTRY(__start)
-SEARCH_DIR("/usr/mips-linux-gnu/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/ppc.ld b/ppc.ld
index 1e6bbe9a62..5248ef15a5 100644
--- a/ppc.ld
+++ b/ppc.ld
@@ -3,7 +3,6 @@
*/
OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc", "elf32-powerpc")
OUTPUT_ARCH(powerpc:common)
-SEARCH_DIR(/usr/powerpc-linux-gnu/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib)
ENTRY(_start)
SECTIONS
{
diff --git a/ppc64.ld b/ppc64.ld
index 1ba8883015..dea0dbda21 100644
--- a/ppc64.ld
+++ b/ppc64.ld
@@ -3,13 +3,7 @@ OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc",
"elf64-powerpc")
OUTPUT_ARCH(powerpc:common64)
ENTRY(_start)
-SEARCH_DIR("/usr/powerpc64-unknown-linux-gnu/lib64");
-SEARCH_DIR("/usr/lib/binutils/powerpc64-unknown-linux-gnu/2.16.164");
-SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64");
-SEARCH_DIR("/usr/powerpc64-unknown-linux-gnu/lib");
-SEARCH_DIR("/usr/lib/binutils/powerpc64-unknown-linux-gnu/2.16.1");
-SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); /* Do we
-need any of these for elf? + __DYNAMIC = 0; */
+/* __DYNAMIC = 0; */
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/s390.ld b/s390.ld
index ccae2e71df..a9c53707f1 100644
--- a/s390.ld
+++ b/s390.ld
@@ -2,9 +2,7 @@ OUTPUT_FORMAT("elf32-s390", "elf32-s390",
"elf32-s390")
OUTPUT_ARCH(s390:31-bit)
ENTRY(_start)
-SEARCH_DIR("/usr/s390-redhat-linux/lib"); SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib");
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
+/* __DYNAMIC = 0; */
SECTIONS
{
/* Read-only sections, merged into text segment: */
diff --git a/sparc.ld b/sparc.ld
index 26ab4151fe..5aed1c2aaf 100644
--- a/sparc.ld
+++ b/sparc.ld
@@ -1,7 +1,6 @@
OUTPUT_FORMAT("elf32-sparc", "elf32-sparc",
"elf32-sparc")
OUTPUT_ARCH(sparc)
-SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib);
ENTRY(_start)
SECTIONS
{
diff --git a/sparc64.ld b/sparc64.ld
index f7286346c3..9ea41431e8 100644
--- a/sparc64.ld
+++ b/sparc64.ld
@@ -1,7 +1,6 @@
OUTPUT_FORMAT("elf64-sparc", "elf64-sparc",
"elf64-sparc")
OUTPUT_ARCH(sparc:v9)
-SEARCH_DIR(/lib64); SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib64); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib64); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/alpha-unknown-linux-gnu/lib);
ENTRY(_start)
SECTIONS
{
diff --git a/x86_64.ld b/x86_64.ld
index 878dafbe79..24ea77dadf 100644
--- a/x86_64.ld
+++ b/x86_64.ld
@@ -2,7 +2,6 @@
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
OUTPUT_ARCH(i386:x86-64)
ENTRY(_start)
-SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib64");
SECTIONS
{
/* Read-only sections, merged into text segment: */