aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2001-01-14 11:12:53 +0000
committerAlan Modra <amodra@gmail.com>2001-01-14 11:12:53 +0000
commitd952f17a9d09977cb55327f87ec5f83e7c242320 (patch)
tree665f81e3ae3c1603f0d5767b4a86200e88db03fa /bfd
parentffd6e9debc6605c354105f04b62de622e8458645 (diff)
downloadfsf-binutils-gdb-d952f17a9d09977cb55327f87ec5f83e7c242320.zip
fsf-binutils-gdb-d952f17a9d09977cb55327f87ec5f83e7c242320.tar.gz
fsf-binutils-gdb-d952f17a9d09977cb55327f87ec5f83e7c242320.tar.bz2
Linux target variants for elfxx-hppa.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog180
-rw-r--r--bfd/config.bfd11
-rwxr-xr-xbfd/configure30
-rw-r--r--bfd/configure.in6
-rw-r--r--bfd/elf32-hppa.c33
-rw-r--r--bfd/elf64-hppa.c19
-rw-r--r--bfd/targets.c6
7 files changed, 181 insertions, 104 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3fb1a51..5d4e202 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,19 @@
2001-01-14 Alan Modra <alan@linuxcare.com.au>
+ * config.bfd: Add linux target variant for elfxx-hppa.
+ * configure.in: Recognize bfd_elf32_hppa_linux_vec and
+ bfd_elf64_hppa_linux_vec.
+ * configure: Regenerate.
+ * elf64-hppa.c: Include elf64-target.h again to support linux
+ target variant.
+ (elf64_hppa_post_process_headers): Set ELFOSABI_LINUX for linux.
+ * elf32-hppa.c: Include elf32-target.h again to support linux
+ target variant.
+ (elf32_hppa_post_process_headers): New function.
+ (elf_backend_post_process_headers): Define.
+ * targets.c (bfd_target_vector): Add bfd_elf64_hppa_linux_vec and
+ bfd_elf32_hppa_linux_vec.
+
* elf32-hppa.c (elf32_hppa_link_hash_table): Add text_segment_base,
and data_segment_base fields.
(elf32_hppa_link_hash_table_create ): Init them.
@@ -226,8 +240,8 @@
2000-12-10 Fred Fish <fnf@be.com>
- * elflink.h (elf_link_output_extsym): Don't complain about undefined
- symbols in shared objects if allow_shlib_undefined is true.
+ * elflink.h (elf_link_output_extsym): Don't complain about undefined
+ symbols in shared objects if allow_shlib_undefined is true.
2000-12-12 Nick Clifton <nickc@redhat.com>
@@ -257,7 +271,7 @@
* configure: Regenerate.
* libcoff-in.h (coff_tdata): Add pointer dwarf2_find_line_info.
* libcoff.h: Regenerate.
- * coffgen.c (coff_find_nearest_line): Call
+ * coffgen.c (coff_find_nearest_line): Call
_bfd_dwarf2_find_nearest_line.
* dwarf2.c (_bfd_dwarf2_find_nearest_line): Add parameter. Update
accordingly.
@@ -277,7 +291,7 @@
to _bfd_find_nearest_line.
* elf32-mips.c (_bfd_mips_elf_find_nearest_line): Add parameter to
call to _bfd_find_nearest_line.
-
+
2000-12-08 Kazu Hirata <kazu@hxi.com>
* coffgen.c: Fix formatting.
@@ -340,75 +354,75 @@
2000-12-01 Chris Demetriou <cgd@sibyte.com>
- * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mips32 and
- bfd_mach_mips32_4k. Update FIXME comment.
- * archures.c (bfd_mach_mips32): New constant.
- (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to
- the latter, renumber it.
- * bfd-in2.h (bfd_mach_mips32): New constant.
- (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to
- the latter, renumber it.
- * cpu-mips.c (I_mips32): New constant.
- (I_mips4K, I_mips32_4k): Rename the former to the latter.
- (arch_info_struct): Add bfd_mach_mips32 entry, replace
- bfd_mach_mips4K entry with bfd_mach_mips32_4k entry.
- * elf32-mips.c (elf_mips_isa): Add E_MIPS_ARCH_32 case.
- (elf_mips_mach): Likewise. Also, replace E_MIPS_MACH_MIPS32
- with E_MIPS_MACH_MIPS32_4K.
- (_bfd_mips_elf_final_write_processing): Replace
- bfd_mach_mips4K with bfd_mach_mips32_4k case, add
- bfd_mach_mips32 case.
- (_bfd_mips_elf_merge_private_bfd_data): Generalize ISA mixing
- comparison with support for MIPS32.
- (_bfd_mips_elf_print_private_bfd_data): Print ISA name for
- MIPS32.
-
- * aoutx.h (NAME(aout,machine_type)): Add cases for
- bfd_mach_mips5 and bfd_mach_mips64.
- * archures.c (bfd_mach_mips5, bfd_mach_mips64): New constants.
- * bfd-in2.h (bfd_mach_mips5, bfd_mach_mips64): Likewise.
- * cpu_mips.c (I_mips5, I_mips64): New definitions.
- (arch_info_struct): Add entries for bfd_mach_mips5 and
- bfd_mach_mips64.
- * elf32-mips.c (elf_mips_isa, elf_mips_mach,
- _bfd_mips_elf_print_private_bfd_data): Add cases for
- E_MIPS_ARCH_5 and E_MIPS_ARCH_64.
- (_bfd_mips_elf_final_write_processing): Add cases for
- bfd_mach_mips5 and bfd_mach_mips64.
-
- * bfd/aoutx.h (NAME(aout,machine_type)): Add a
- bfd_mach_mips_sb1 case.
- * bfd/archures.c (bfd_mach_mips_sb1): New constant.
- * bfd/bfd-in2.h (bfd_mach_mips_sb1): New constant.
- * bfd/cpu-mips.c (I_sb1): New constant.
- (arch_info_struct): Add entry for bfd_mach_mips_sb1.
- * bfd/elf32-mips.c (elf_mips_mach): Add case for
- E_MIPS_MACH_SB1.
- (_bfd_mips_elf_final_write_processing): Add case for
- bfd_mach_mips_sb1.
-
-2000-12-01 Joel Sherrill <joel@OARcorp.com>
+ * aoutx.h (NAME(aout,machine_type)): Add bfd_mach_mips32 and
+ bfd_mach_mips32_4k. Update FIXME comment.
+ * archures.c (bfd_mach_mips32): New constant.
+ (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to
+ the latter, renumber it.
+ * bfd-in2.h (bfd_mach_mips32): New constant.
+ (bfd_mach_mips4K, bfd_mach_mips32_4k) Rename the former to
+ the latter, renumber it.
+ * cpu-mips.c (I_mips32): New constant.
+ (I_mips4K, I_mips32_4k): Rename the former to the latter.
+ (arch_info_struct): Add bfd_mach_mips32 entry, replace
+ bfd_mach_mips4K entry with bfd_mach_mips32_4k entry.
+ * elf32-mips.c (elf_mips_isa): Add E_MIPS_ARCH_32 case.
+ (elf_mips_mach): Likewise. Also, replace E_MIPS_MACH_MIPS32
+ with E_MIPS_MACH_MIPS32_4K.
+ (_bfd_mips_elf_final_write_processing): Replace
+ bfd_mach_mips4K with bfd_mach_mips32_4k case, add
+ bfd_mach_mips32 case.
+ (_bfd_mips_elf_merge_private_bfd_data): Generalize ISA mixing
+ comparison with support for MIPS32.
+ (_bfd_mips_elf_print_private_bfd_data): Print ISA name for
+ MIPS32.
+
+ * aoutx.h (NAME(aout,machine_type)): Add cases for
+ bfd_mach_mips5 and bfd_mach_mips64.
+ * archures.c (bfd_mach_mips5, bfd_mach_mips64): New constants.
+ * bfd-in2.h (bfd_mach_mips5, bfd_mach_mips64): Likewise.
+ * cpu_mips.c (I_mips5, I_mips64): New definitions.
+ (arch_info_struct): Add entries for bfd_mach_mips5 and
+ bfd_mach_mips64.
+ * elf32-mips.c (elf_mips_isa, elf_mips_mach,
+ _bfd_mips_elf_print_private_bfd_data): Add cases for
+ E_MIPS_ARCH_5 and E_MIPS_ARCH_64.
+ (_bfd_mips_elf_final_write_processing): Add cases for
+ bfd_mach_mips5 and bfd_mach_mips64.
+
+ * bfd/aoutx.h (NAME(aout,machine_type)): Add a
+ bfd_mach_mips_sb1 case.
+ * bfd/archures.c (bfd_mach_mips_sb1): New constant.
+ * bfd/bfd-in2.h (bfd_mach_mips_sb1): New constant.
+ * bfd/cpu-mips.c (I_sb1): New constant.
+ (arch_info_struct): Add entry for bfd_mach_mips_sb1.
+ * bfd/elf32-mips.c (elf_mips_mach): Add case for
+ E_MIPS_MACH_SB1.
+ (_bfd_mips_elf_final_write_processing): Add case for
+ bfd_mach_mips_sb1.
+
+2000-12-01 Joel Sherrill <joel@OARcorp.com>
* config.bfd (arm-*-rtems*, a29k-*rtems*): New targets.
(sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets.
(sparc*-*-rtems*): Switched from a.out to ELF.
2000-11-30 Jan Hubicka <jh@suse.cz>
-
- * Makefile.am (BFD64_BACKENDS): Add elf64-x86-64.lo
- BFD64_BACKENDS_CFILES): Add elf64-x86-64.c
- (elf64-x86-64.lo): Add dependencies.
- * archures.c (DESCRIPTION): Add bfd_mach_x86_64,
- bfd_mach_x86_64_intel_syntax.
- * elf.c (prep_headers): Use EM_x86_64 for 64bit output.
- * config.bfd (x86_64): Add.
- * configure.in: Add support for bfd_elf64_x86_64_vec.
- * cpu-i386.c (bfd_x86_64_arch_intel_syntax, bfd_x86_64_arch): Add.
- (bfd_i386_arch, i8086_ar): Link in.
- * elf64-x86-64.c: New file.
- * reloc.c (ENUMDOC): Add BFD_RELOC_X86_64*.
- * targets.c (bfd_elf64_x86_64_vec): Add.
- (bfd_target_vect): Add bfd_elf64_x86_64_vec.
+
+ * Makefile.am (BFD64_BACKENDS): Add elf64-x86-64.lo
+ BFD64_BACKENDS_CFILES): Add elf64-x86-64.c
+ (elf64-x86-64.lo): Add dependencies.
+ * archures.c (DESCRIPTION): Add bfd_mach_x86_64,
+ bfd_mach_x86_64_intel_syntax.
+ * elf.c (prep_headers): Use EM_x86_64 for 64bit output.
+ * config.bfd (x86_64): Add.
+ * configure.in: Add support for bfd_elf64_x86_64_vec.
+ * cpu-i386.c (bfd_x86_64_arch_intel_syntax, bfd_x86_64_arch): Add.
+ (bfd_i386_arch, i8086_ar): Link in.
+ * elf64-x86-64.c: New file.
+ * reloc.c (ENUMDOC): Add BFD_RELOC_X86_64*.
+ * targets.c (bfd_elf64_x86_64_vec): Add.
+ (bfd_target_vect): Add bfd_elf64_x86_64_vec.
2000-11-30 Kazu Hirata <kazu@hxi.com>
@@ -446,7 +460,7 @@
2000-11-22 Philip Blundell <pb@futuretv.com>
- * cofflink.c (_bfd_coff_generic_relocate_section): Don't object to
+ * cofflink.c (_bfd_coff_generic_relocate_section): Don't object to
weak undefined symbols.
2000-11-24 Nick Clifton <nickc@redhat.com>
@@ -491,7 +505,7 @@
(get_got): Delete unused local srel.
(elfNN_ia64_check_relocs): Initialize dynrel_type when declared.
(elfNN_ia64_relocate_section): Delete unused local dynindx.
-
+
2000-11-21 Kazu Hirata <kazu@hxi.com>
* coff-a29k.c: Fix formatting.
@@ -727,7 +741,7 @@
* configure.in: Recognize alpha-*-freebsd*.
* configure: Regenerate.
-2000-11-02 Luciano Gemme <ishitawa@yahoo.com>
+2000-11-02 Luciano Gemme <ishitawa@yahoo.com>
* srec.c (CHUNK): Rename to DEFAULT_CHUNK.
(Chunk): New global variable set by a parameter in objcopy.c.
@@ -744,7 +758,7 @@
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* po/bfd.pot: Regenerate.
-
+
2000-10-31 Philip Blundell <philb@gnu.org>
* elf32-arm.h (elf32_arm_merge_private_bfd_data): Only handle
@@ -755,10 +769,10 @@
* elf32-arm.h (elf32_arm_copy_private_bfd_data): Don't refuse
attempts to mix PIC code with non-PIC, just mark the output as
being position dependent.
- (elf32_arm_merge_private_bfd_data): Likewise. Print an error
- message for EF_SOFT_FLOAT mismatches. Display diagnostics for
+ (elf32_arm_merge_private_bfd_data): Likewise. Print an error
+ message for EF_SOFT_FLOAT mismatches. Display diagnostics for
all mismatches, not just the first one.
-
+
2000-10-25 Chris Demetriou <cgd@sibyte.com>
* ieee.c (ieee_archive_p): Plug one of many possible
@@ -803,7 +817,7 @@
local_p. Add symbol value only for non-R_MIPS_REL32 relocations
against local symbols.
(_bfd_mips_elf_finish_dynamic_sections): Undo patch from 2000-10-01.
-
+
2000-10-12 Alan Modra <alan@linuxcare.com.au>
* section.c (struct sec): Add kept_section.
@@ -814,7 +828,7 @@
* bfd-in2.h: Regenerate.
* elflink.h (elf_link_add_object_symbols): Remove unnecessary
- zeroing of `flags'.
+ zeroing of `flags'.
(elf_link_input_bfd): Set all asection->symbol->value's here, and
fudge values for discarded link-once section symbols.
@@ -832,7 +846,7 @@
2000-10-10 Tom Rix <trix@redhat.com>
- * section.c (bfd_make_section_anyway): Release newsect ptr when
+ * section.c (bfd_make_section_anyway): Release newsect ptr when
newsect->symbol fails to alloc. Use bfd_release instead of free.
2000-10-09 Richard Henderson <rth@cygnus.com
@@ -982,7 +996,7 @@
2000-09-26 Hans-Peter Nilsson <hp@axis.com>
* elfcode.h (elf_object_p): Preserve and clear abfd section
- information. Restore at error.
+ information. Restore at error.
2000-09-26 Paul Sokolovsky <Paul.Sokolovsky@technologist.com>
@@ -1168,10 +1182,10 @@
2000-09-13 Anders Norlander <anorland@acc.umu.se>
- * cpu-mips.c (arch_info_struct): Add mips:4K
- * bfd-in2.h (bfd_mach_mips4K): New define.
- * archures.c: Add bfd_mach_mips4K to comment.
- * elf32-mips.c (_bfd_mips_elf_final_write_processing): Return
+ * cpu-mips.c (arch_info_struct): Add mips:4K
+ * bfd-in2.h (bfd_mach_mips4K): New define.
+ * archures.c: Add bfd_mach_mips4K to comment.
+ * elf32-mips.c (_bfd_mips_elf_final_write_processing): Return
E_MIPS_ARCH_2 for bfd_mach_mips4K.
2000-09-13 Marco Franzen <marcof@thyron.com>
@@ -4003,7 +4017,7 @@ Thu Feb 10 20:07:50 GMT 2000 Toshiyasu Morita (toshi.morita@sega.com)
* coffcode.h: Use bfd_coff_xxx instead of the macro XXX (where xxx
= scnhsz, filhsz, relsz, aoutsz, etc)
- * coffswap.h: Ditto.
+ * coffswap.h: Ditto.
2000-01-13 Nick Clifton <nickc@cygnus.com>
diff --git a/bfd/config.bfd b/bfd/config.bfd
index f420b7e..ed55107 100644
--- a/bfd/config.bfd
+++ b/bfd/config.bfd
@@ -257,16 +257,23 @@ case "${targ}" in
#ifdef BFD64
hppa*64*-*-linux-gnu*)
- targ_defvec=bfd_elf64_hppa_vec
+ targ_defvec=bfd_elf64_hppa_linux_vec
+ targ_selvecs=bfd_elf64_hppa_vec
;;
hppa*64*-*-hpux11*)
targ_defvec=bfd_elf64_hppa_vec
+ targ_selvecs=bfd_elf64_hppa_linux_vec
targ_cflags=-DHPUX_LARGE_AR_IDS
;;
#endif
- hppa*-*-*elf* | hppa*-*-linux-gnu* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems*)
+ hppa*-*-linux-gnu*)
+ targ_defvec=bfd_elf32_hppa_linux_vec
+ targ_selvecs=bfd_elf32_hppa_vec
+ ;;
+ hppa*-*-*elf* | hppa*-*-lites* | hppa*-*-sysv4* | hppa*-*-rtems*)
targ_defvec=bfd_elf32_hppa_vec
+ targ_selvecs=bfd_elf32_hppa_linux_vec
;;
#if defined (HOST_HPPAHPUX) || defined (HOST_HPPABSD) || defined (HOST_HPPAOSF) || defined (HOST_HPPAMPEIX)
diff --git a/bfd/configure b/bfd/configure
index 7092544..d65a378 100755
--- a/bfd/configure
+++ b/bfd/configure
@@ -5932,7 +5932,8 @@ do
target64=true ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"
target64=true ;;
- bfd_elf64_hppa_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"
+ bfd_elf64_hppa_vec | bfd_elf64_hppa_linux_vec)
+ tb="$tb elf64-hppa.lo elf64.lo $elf"
target64=true ;;
bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
target64=true ;;
@@ -5955,7 +5956,8 @@ do
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
- bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
+ bfd_elf32_hppa_vec | bfd_elf32_hppa_linux_vec)
+ tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;;
bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf32.lo $elf" ;;
bfd_elf64_x86_64_vec) tb="$tb elf64-x86-64.lo elf64.lo $elf"
@@ -6177,17 +6179,17 @@ for ac_hdr in unistd.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6181: checking for $ac_hdr" >&5
+echo "configure:6183: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6186 "configure"
+#line 6188 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -6216,12 +6218,12 @@ done
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6220: checking for $ac_func" >&5
+echo "configure:6222: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6225 "configure"
+#line 6227 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6244,7 +6246,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6248: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -6269,7 +6271,7 @@ fi
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:6273: checking for working mmap" >&5
+echo "configure:6275: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -6277,7 +6279,7 @@ else
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <<EOF
-#line 6281 "configure"
+#line 6283 "configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
@@ -6417,7 +6419,7 @@ main()
}
EOF
-if { (eval echo configure:6421: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -6442,12 +6444,12 @@ fi
for ac_func in madvise mprotect
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6446: checking for $ac_func" >&5
+echo "configure:6448: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 6451 "configure"
+#line 6453 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -6470,7 +6472,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:6474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6476: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
diff --git a/bfd/configure.in b/bfd/configure.in
index 0cdf539..d643b97 100644
--- a/bfd/configure.in
+++ b/bfd/configure.in
@@ -481,7 +481,8 @@ do
target64=true ;;
bfd_elf64_alpha_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"
target64=true ;;
- bfd_elf64_hppa_vec) tb="$tb elf64-hppa.lo elf64.lo $elf"
+ bfd_elf64_hppa_vec | bfd_elf64_hppa_linux_vec)
+ tb="$tb elf64-hppa.lo elf64.lo $elf"
target64=true ;;
bfd_elf64_ia64_little_vec) tb="$tb elf64-ia64.lo elf64.lo $elf"
target64=true ;;
@@ -504,7 +505,8 @@ do
bfd_elf32_d10v_vec) tb="$tb elf32-d10v.lo elf32.lo $elf" ;;
bfd_elf32_d30v_vec) tb="$tb elf32-d30v.lo elf32.lo $elf" ;;
bfd_elf32_fr30_vec) tb="$tb elf32-fr30.lo elf32.lo $elf" ;;
- bfd_elf32_hppa_vec) tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
+ bfd_elf32_hppa_vec | bfd_elf32_hppa_linux_vec)
+ tb="$tb elf32-hppa.lo elf32.lo $elf" ;;
bfd_elf32_i370_vec) tb="$tb elf32-i370.lo elf32.lo $elf" ;;
bfd_elf32_i386_vec) tb="$tb elf32-i386.lo elf32.lo $elf" ;;
bfd_elf64_x86_64_vec) tb="$tb elf64-x86-64.lo elf64.lo $elf"
diff --git a/bfd/elf32-hppa.c b/bfd/elf32-hppa.c
index 10253fe..13f1e5a 100644
--- a/bfd/elf32-hppa.c
+++ b/bfd/elf32-hppa.c
@@ -399,6 +399,9 @@ static boolean elf32_hppa_finish_dynamic_symbol
static boolean elf32_hppa_finish_dynamic_sections
PARAMS ((bfd *, struct bfd_link_info *));
+static void elf32_hppa_post_process_headers
+ PARAMS ((bfd *, struct bfd_link_info *));
+
static int elf32_hppa_elf_get_symbol_type
PARAMS ((Elf_Internal_Sym *, int));
@@ -4233,6 +4236,27 @@ elf32_hppa_finish_dynamic_sections (output_bfd, info)
return true;
}
+/* Tweak the OSABI field of the elf header. */
+
+static void
+elf32_hppa_post_process_headers (abfd, link_info)
+ bfd *abfd;
+ struct bfd_link_info *link_info ATTRIBUTE_UNUSED;
+{
+ Elf_Internal_Ehdr * i_ehdrp;
+
+ i_ehdrp = elf_elfheader (abfd);
+
+ if (strcmp (bfd_get_target (abfd), "elf32-hppa-linux") == 0)
+ {
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_LINUX;
+ }
+ else
+ {
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_HPUX;
+ }
+}
+
/* Called when writing out an object file to decide the type of a
symbol. */
static int
@@ -4269,6 +4293,7 @@ elf32_hppa_elf_get_symbol_type (elf_sym, type)
#define elf_backend_gc_sweep_hook elf32_hppa_gc_sweep_hook
#define elf_backend_object_p elf32_hppa_object_p
#define elf_backend_final_write_processing elf_hppa_final_write_processing
+#define elf_backend_post_process_headers elf32_hppa_post_process_headers
#define elf_backend_get_symbol_type elf32_hppa_elf_get_symbol_type
#define elf_backend_can_gc_sections 1
@@ -4285,3 +4310,11 @@ elf32_hppa_elf_get_symbol_type (elf_sym, type)
#define ELF_MAXPAGESIZE 0x1000
#include "elf32-target.h"
+
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf32_hppa_linux_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME "elf32-hppa-linux"
+
+#define INCLUDED_TARGET_FILE 1
+#include "elf32-target.h"
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c
index 42dbf60..465a2db 100644
--- a/bfd/elf64-hppa.c
+++ b/bfd/elf64-hppa.c
@@ -1166,8 +1166,15 @@ elf64_hppa_post_process_headers (abfd, link_info)
i_ehdrp = elf_elfheader (abfd);
- i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_HPUX;
- i_ehdrp->e_ident[EI_ABIVERSION] = 1;
+ if (strcmp (bfd_get_target (abfd), "elf64-hppa-linux") == 0)
+ {
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_LINUX;
+ }
+ else
+ {
+ i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_HPUX;
+ i_ehdrp->e_ident[EI_ABIVERSION] = 1;
+ }
}
/* Create function descriptor section (.opd). This section is called .opd
@@ -2657,3 +2664,11 @@ const struct elf_size_info hppa64_elf_size_info =
#define elf_backend_type_change_ok true
#include "elf64-target.h"
+
+#undef TARGET_BIG_SYM
+#define TARGET_BIG_SYM bfd_elf64_hppa_linux_vec
+#undef TARGET_BIG_NAME
+#define TARGET_BIG_NAME "elf64-hppa-linux"
+
+#define INCLUDED_TARGET_FILE 1
+#include "elf64-target.h"
diff --git a/bfd/targets.c b/bfd/targets.c
index 589ba23..dac9ce6 100644
--- a/bfd/targets.c
+++ b/bfd/targets.c
@@ -1,5 +1,5 @@
/* Generic target-file-type support for the BFD library.
- Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+ Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001
Free Software Foundation, Inc.
Written by Cygnus Support.
@@ -508,6 +508,7 @@ extern const bfd_target bfd_efi_app_ia32_vec;
extern const bfd_target bfd_efi_app_ia64_vec;
extern const bfd_target bfd_elf64_alpha_vec;
extern const bfd_target bfd_elf64_hppa_vec;
+extern const bfd_target bfd_elf64_hppa_linux_vec;
extern const bfd_target bfd_elf64_ia64_little_vec;
extern const bfd_target bfd_elf64_ia64_big_vec;
extern const bfd_target bfd_elf32_ia64_big_vec;
@@ -526,6 +527,7 @@ extern const bfd_target bfd_elf32_us_cris_vec;
extern const bfd_target bfd_elf32_d10v_vec;
extern const bfd_target bfd_elf32_d30v_vec;
extern const bfd_target bfd_elf32_hppa_vec;
+extern const bfd_target bfd_elf32_hppa_linux_vec;
extern const bfd_target bfd_elf32_i370_vec;
extern const bfd_target bfd_elf32_i386_vec;
extern const bfd_target bfd_elf32_i860_vec;
@@ -719,6 +721,7 @@ const bfd_target * const bfd_target_vector[] = {
#ifdef BFD64
&bfd_elf64_alpha_vec,
&bfd_elf64_hppa_vec,
+ &bfd_elf64_hppa_linux_vec,
&bfd_elf64_ia64_little_vec,
&bfd_elf64_ia64_big_vec,
#endif
@@ -735,6 +738,7 @@ const bfd_target * const bfd_target_vector[] = {
&bfd_elf32_d10v_vec,
&bfd_elf32_d30v_vec,
&bfd_elf32_hppa_vec,
+ &bfd_elf32_hppa_linux_vec,
&bfd_elf32_i370_vec,
&bfd_elf32_i386_vec,
#ifdef BFD64