Commit Graph

526 Commits

Author SHA1 Message Date
kristerw 980f45b693 Place EH labels on the permanent obstack. Fixes PR 18314.
Background:
Originally, the EH labels were placed on the permanent obstack, which
could end up using a lot of memory (for heavy inlining) since inlined
labels also needed to be permanent as a result of this.

This was changed in

   Wed Dec  9 09:12:40 1998  Andrew MacLeod  <amacleod@cygnus.com>

	* except.h (struct handler_info): Add handler_number field.
	* except.c (gen_exception_label): EH labels no longer need to be
	on the permanent obstack.
	(get_new_handler): Set the label number field.
	(output_exception_table_entry): Regenerate handler label reference
	from the label number field.
	(init_eh): Remove a blank line.
	* integrate.c (get_label_from_map): Labels no longer need to be
	on the permanent obstack.

by using the label numbers instead of the label structures in most cases.
The operative word here is "most" cases. Addresses to the EH RTX was still
used in (at least) flow.c, that now used freed memory. Oops.

For this to happen, the freed address of the RTX representing a EH label
must be reused for a new label that is located in dead code. delete_block()
will then see that this RTX is mentioned in the EH table, and (incorrectly)
remove the exception handler.

This might be seen when, for example, compiling
src/gnu/dist/groff/src/roff/troff/node.cc for m68k.
2002-12-16 19:33:50 +00:00
thorpej 807b74c49c Skip sys_errlist for __APPLE__. 2002-12-16 06:35:48 +00:00
tron 6c9c8b753c Fix toolchain build problem. 2002-12-13 15:37:10 +00:00
imp d1f4286bb5 FreeBSD needs the same special hacks for sys_errlist and sys_siglist during
cross building.
2002-12-10 17:39:52 +00:00
thorpej 3ff9eb92d3 Make it possible for the a.out BFD back-end to merge read-only
sections with .text if the following 3 conditions are true:

1. Section has file contents and is read-only.
2. The VMA of the section is after the end of .text and before
   the start of .data.
3. The image is demand-pageable (otherwise, a_text in the header
   will not reflect the gap between .text and .data).

Fixes PR 19164.
2002-11-25 23:15:15 +00:00
thorpej 9022b5f984 In ASM_SPEC:
* If -mhard-float is passed to the compiler, pass -mfpa10 to the assembler.
* If -msoft-float is passed to the compiler, pass -mfpu=softvfp to the
  assembler.
* If neither -mhard-float nor -msoft-float are passed to the compiler,
  pass -mfpu=softvfp to the assembler.

These changes properly mark objects as using soft-VFP, as is the default
code generation for NetBSD ARM ELF.
2002-11-21 17:57:35 +00:00
thorpej aedbc29a82 Various changes to support soft-vfp:
* FPU_MEMMULTI -- only include the FPU_FPA10 bit.
* FPU_ARCH_VFP -- define, meaning "uses VFP-format layout".
* FPU_FPA -- define short-hand for (FPU_CORE|FPU_FPA10).
* FPU_DEFAULT -- FPU_ALL -> FPU_FPA.
* Floating point instructions -- FPU_ALL -> FPU_FPA.
* Also set F_SOFT_FLOAT if FPU_ARCH_VFP.
* Set F_VFP_FLOAT if FPU_ARCH_VFP.
* md_atof: lay out bytes properly if using VFP.
* Accept -mfpu=softvfp.
* For -mall, set the FPU part of cpu_variant to FPU_FPA, instead of
  FPU_ALL.
2002-11-21 06:32:20 +00:00
thorpej fafe44f640 From bintuils-current:
In elf32_arm_merge_private_bfd_data(), if the input-bfd and output-bfd
do not have matching VFP indication, report an error.
2002-11-21 06:27:33 +00:00
thorpej efce487d2d Define the header bit indicating VFP-format floating point. 2002-11-21 06:25:57 +00:00
thorpej bdf3ddd15f Regenerate (unfortuantely, with a much later version of bison). 2002-11-20 06:57:01 +00:00
thorpej accdd8107f Fix a problem with placing orphaned sections (like the ones with
C-referenceable names, i.e. "link sets") that happens with explicit
LMAs in the linker script:

	* As orphans are sorted after sections, the effective
	  size of the section is changed.  Record a size ajustment
	  for each orphan that is sorted after the section.

...and for sections which have an explicit load address expression:

	* The first time an orphan is sorted after a section,
	  copy the load_base expression to the orphan, adding
	  the _unadjusted_ size of the parent section.  We need
	  to use the unadjusted size because by the time the
	  expression can be folded, all of the orphan size
	  adjustments will have accumulated, resulting in misplacing
	  the orphan.

	* For each subsequent orphan sorted after a section,
	  set the load_base of the orphan to the load address
	  of the previous orphan plus the size of the previous
	  orphan (actually, the unadjusted size, but for orphans,
	  size and unadjusted size are always equal).
2002-11-20 06:51:07 +00:00
thorpej ee325b474f Back-port "spec functions" from GCC 3.3. Use if "if-exists()" spec
function to include crti.o/crtn.o in the STARTFILE and ENDFILE
specs, respectively.

Corresponding GCC ChangeLog entry:

2002-11-19  Jason Thorpe  <thorpej@wasabisystems.com>

        * gcc.c (The Specs Language): Document spec functions.
        (static_spec_functions, lookup_spec_function)
        (eval_spec_function, handle_spec_function)
        (if_exists_spec_function, alloc_args): New.
        (execute): Abort if processing_spec_function is true.
        (do_spec_1): Hand off spec to handle_spec_function if %:
        is encountered.  If processing_spec_function is true,
        end any pending argument when the end of the string is reached.
        (main): Use alloc_args to allocate the initial argument vector.
        * gcc.h (struct spec_function): New.
        (lang_specific_spec_functions): New extern.

        * config/netbsd-elf.h (STARTFILE_SPEC): Add if-exists(crti%O%s).
        (ENDFILE_SPEC): Add if-exists(crtn%O%s).
        * config/alpha/netbsd.h (ENDFILE_SPEC): Likewise.
2002-11-19 04:46:12 +00:00
thorpej 260b39b0f5 Put const data in .rodata (cut-and-pasted from linux-elf.h). Pass -matpcs
to the assembler.
2002-11-17 06:03:07 +00:00
thorpej 6cdb340cbc Define __ABICALLS__ if -mno-abicalls is not specified. 2002-11-10 18:01:50 +00:00
thorpej 79a6015e7e Fix PIC handling logic in ASM_SPEC: always pass -KPIC to the assembler
unless one of the following flags are passed to the compiler:

	-mno-abicalls
	-fno-pic
	-fno-PIC

Based on the following change in gcc-current:

2002-09-22  Jason Thorpe  <thorpej@wasabisystems.com>

        * config/mips/netbsd.h (SUBTARGET_ASM_SPEC): Always pass -KPIC
        unless -fno-pic or -fno-PIC is specified.

The -mno-abicalls handling is new to this patch, and will be checked
into gcc-current shortly.
2002-11-09 08:09:21 +00:00
thorpej 8fa28a286c Bring in the following change from Binutils-current:
2002-09-28  Matt Thomas  <matt@3am-software.com>
            Jason Thorpe  <thorpej@wasabisystems.com>

        * config/tc-vax.c (md_estimate_size_before_relax): Only try to
        convert undefined references to GOT32/PLT32 if PIC code is
        requested.  Fix comment.
2002-11-05 14:33:35 +00:00
thorpej b4f17138b9 * Tidy up CC1_SPEC. Remove the -mno-pic flag, which didn't actually
work properly.
* Add a new -mno-asm-pic flag which tells the assembler to assemble
  the code non-PIC even if it was compiled PIC.
2002-11-05 14:31:58 +00:00
thorpej 64a5da6461 Revise previous to xstrdup the basename earlier; an intervening call to
basename() was occurring.

Pointed out by Matthias Drochner.
2002-11-01 16:07:37 +00:00
thorpej f8b18efd0c xstrdup the return value of basename() before recording it in the bfd
with bfd_elf_set_dt_needed_soname().  Fixes the "NEEDED crtend.o"
problem reported on tech-toolchain/current-users.

Problem spotted by Ryo HAYASAKA <ryoh@jaist.ac.jp>.
2002-10-31 23:21:17 +00:00
rafal 2fdb31c4e3 Fix a bug with list handling that caused this to abort with a "extraneous
<string>" message if the stars were aligned incorrectly due to fast-and-
loose list handling.

The list handling code didn't discriminate between list nodes and list
heads, resulting in string comparisons using memory in the "list heads
by length" array as the target of the comparison; if the string being
handled was short enough and the pointers present in the list heads
array were just the right form the tool would get spurious matches and
exit with the above message.

PR toolchain/18858
2002-10-30 18:14:37 +00:00
thorpej 1268b2dbc5 Add an x86_initialize_trampoline() function, similar to GCC 3.3,
change INITIALIZE_TRAMPOLINE() to use it, and apply the following
patch to it (which I have already submitted to GCC 3.3):

	* config/i386/i386.c (x86_initialize_trampoline): Emit a call
	to __enable_execute_stack with the address of the trampoline
	if TRANSFER_FROM_TRAMPOLINE is defined.

Define a TRANSFER_FROM_TRAMPOLINE suitable for NetBSD targets, to enable
stack execution on target machines which can separate exec permissions for
a region:

	* config/netbsd.h (NETBSD_ENABLE_EXECUTE_STACK): Define.
	* config/alpha/netbsd.h (TRANSFER_FROM_TRAMPOLINE): Define
	as NETBSD_ENABLE_EXECUTE_STACK.
	* config/i386/netbsd-elf.h (TRANSFER_FROM_TRAMPOLINE): Ditto.
	* config/i386/netbsd.h (TRANSFER_FROM_TRAMPOLINE): Ditto.
	* config/sparc/netbsd-elf-common.h (TRANSFER_FROM_TRAMPOLINE): Ditto.
	* config/sparc/netbsd.h (TRANSFER_FROM_TRAMPOLINE): Ditto.

(A similar patch will be submitted to GCC 3.3.)
2002-10-18 16:23:47 +00:00
thorpej 00b192ce18 Bring in the following fix from gcc-current:
2002-10-17  Jason Thorpe  <thorpej@wasabisystems.com>

        * config/alpha/alpha.c (alpha_initialize_trampoline): Use
        tramp, not addr, to pass the trampoline address to
        __enable_execute_stack.

Otherwise, incorrect behavior would result if the trampoline happend
to stradle a page boundary.
2002-10-17 21:01:03 +00:00
thorpej cde0a5d6aa __mcount uses jsb linkage, so there is no need to skip the (non-existent)
register save mask.  Profiling now works.

Also, use asm_fprintf() in FUNCTION_PROFILER.
2002-10-02 00:50:24 +00:00
thorpej e870e0c546 Pick up the following change from binutils-current:
2002-09-28  Jason Thorpe  <thorpej@wasabisystems.com>

        * elf32-vax.c (elf_vax_size_dynamic_section): Don't strip
        .got sections.
2002-09-28 23:19:01 +00:00
mycroft b06a300a8a Fix a bug WRT -vomit-frame-pointer -- use_return_insn() must return false if
we saved the GOT pointer register.
Note: This is already fixed in the GCC 3 sources, but GCC 3 uses a different
condition to determine whether to save and restore the register, so the patch
cannot be the same.
2002-09-26 14:21:39 +00:00
mycroft 2468728dc8 Add missing parens that caused PLT slots >=32768 to jump to the wrong place. 2002-09-25 20:05:14 +00:00
thorpej 914a9c522b -D__STRONGARM__ for -mcpu=strongarm* 2002-09-21 00:26:47 +00:00
thorpej 0604df808f Do -D__XSCALE__ -D__ARM_ARCH_5TE__ for -march=xscale, as well, as
GCC 3.x does.
2002-09-21 00:19:30 +00:00
rearnsha efc53cb5f7 Pull up the following patch from FSF GCC (fixes aborts when compiling
large functions for ARMv4):
Fri Nov 12 13:31:54 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
* config/arm/arm.h (LEGITIMIZE_RELOAD_ADDRESS): Treat QImode
addresses the same way GO_IF_LEGITIMATE_INDEX does.
2002-09-19 21:52:29 +00:00
toshii 0a4b948848 Make sure to write back correct FP state. Fixes port-i386/17927. 2002-09-17 07:05:09 +00:00
matt 25c3b57cd5 Don't emit R_VAX_GLOB_DAT for symbolic links. Eliminate all
local_got_offset cruft that's was still there.  Change the way
got_entries were assigned.  Now do it in elf_vax_size_dynamic_sections.
Add a routine elf_vax_instantiate_got_entries which assigns space in
the GOT or changes to normal PC32 references for static or symbolic links.
2002-09-12 17:51:33 +00:00
thorpej 4c30492b6c * Rename ARM_FLAG_ATPCS_STACK_ALIGN to ARM_FLAG_ATPCS.
* Rename TARGET_ATPCS_STACK_ALIGN to TARGET_ATPCS.
* Move APTCS aggregate return rules to arm_return_in_memory(), conditional
  on TARGET_ATPCS, and make it also return true for variable-sized aggregates.
2002-08-28 17:33:54 +00:00
mycroft c38b03a8c7 Fix SELECT_SECTION() so that C++ run-time type info constructors do not go in
.rodata on PIC systems, which was causing text relocations (and associated
performance loss).
2002-08-28 14:05:58 +00:00
nathanw a7a8c9a009 Not for the trunk yet. 2002-08-28 00:00:57 +00:00
nathanw 0e972f7cec Support for debugging threaded programs, with libpthread and libpthread_dbg. 2002-08-27 23:56:43 +00:00
matt e38f37f289 Make sure mips targets build properly on 64bit hosts. 2002-08-24 16:50:10 +00:00
thorpej 97f9d76ce8 arm.c, arm.h:
* Declare arm_arch5 and arm_arch5e.  Set arm_arch5 for if -mcpu=arm10tdmi,
  -mcpu=arm1020t, -mcpu=xscale, -march=armv5, -march=armv5e, -march=armv5te.
  Set arm_arch5e for -mcpu=xscale, -march=armv5e, -march=armv5te.

arm.md:

* Define the "clz" insn for arm_arch5.
* Define an "ffssi2" expander for arm_arch5 which uses "clz".
2002-08-21 01:27:14 +00:00
thorpej 0414c14b05 Changes to better support XScale, round 1, back-ported from GCC 3.2.
The GCC ChangeLog does not have a complete description to quote here,
so:

arm.c:

* arm_override_options(): Set arm_is_scale according to the the
  -mcpu=xscale option.  Set arm_constant_limit to 2 if arm_is_xscale.
* arm_adjust_cost(): If arm_is_xscale, account for stalls that can
  occur due to shifted operands.
* arm_gen_load_multiple(): Account for the cost of ldm vs. ldr if
  arm_is_xscale.
* arm_gen_store_multiple(): Likewise for stm vs. str.

arm.h:

* CONSTANT_ALIGNMENT(): Use a constant alignment factor of 2 if
  arm_is_xscale.
* MOVE_RATIO: Set to 4 if arm_is_xscale.

arm.md:

* Add XScale scheduling parameters.
* Define a "shift" attribute (used by arm_adjust_cost()) and give it
  to the appropriate operands on andsi_not_shiftsi_si, *shiftsi3,
  *shiftsi3_compare0, *shiftsi3_compare0_scratch, *notsi_shiftsi,
  *notsi_shiftsi_compare0, *not_shiftsi_compare0_scratch,
  abssi2, *neg_abssi2, extendsidi2, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
  *cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
  *arith_shiftsi_compare0_scratch, *sub_shiftsi, *sub_shiftsi_compare0,
  *sub_shiftsi_compare0_scratch, *if_shift_move, *if_move_shift,
  and *if_shift_shift.
2002-08-20 23:46:44 +00:00
thorpej 7dfd5a8bef 2002-08-16 Nick Clifton <nickc@redhat.com>
* gprof.c (main): Remove spurious test for __alpha__.
2002-08-17 03:03:53 +00:00
thorpej e83b2dfbd8 Define __ARMEL__ if little-endian, as gcc 3.x does. 2002-08-07 03:35:51 +00:00
thorpej 7a6acd854a * Add -march=armv5, -march=armv5t, -march=armv5te, which are internally
treated like -march=armv4t, but which generate __ARM_ARCH_5__,
  __ARM_ARCH_5T__, and __ARM_ARCH_5TE__ defines, respecitively.
* Add -mcpu=xscale, which is internally treated like -mcpu=strongarm,
  but which generates __ARM_ARCH_5TE__ and __XSCALE__ defines.

These command-line options and definitions are consistent with gcc 3.x,
and allow NetBSD Makefiles to use them in a forward-compatible way, and
also give hand-tuned source code (e.g. assembly) a chance of tuning for
XScale.
2002-08-07 03:27:39 +00:00
mjl 7fc6ed7c11 Correct obviously wrong memset() args. OK'd by itojun. 2002-07-20 16:51:43 +00:00
mycroft c5c651d529 If there is no PLT, do not output a DT_PLTGOT entry, as this causes the
dynamic linker to blast other things (like the second GOT entry).
2002-07-18 17:35:09 +00:00
mycroft e5b593969a Whack the atexit(_IO_cleanup), as per ../../libio/cleanup.c 1.2, for the same
reasons:
1) There is already a destructor that does this.  The atexit() is superfluous.
2) If libstdc++ is loaded dynamically by dlopen() and then is removed by
   dlclose(), the pointer is no longer valid and the program would core dump
   at exit() time.  (This caused xmms to core dump at exit when xmms-sid was
   installed, for example.)
2002-07-17 18:01:22 +00:00
itojun 5cfce202f7 wrong arg to memset. OpenBSD PR 2822 2002-07-16 23:08:04 +00:00
itojun b3f9de2ade awrong memset() arg. OpenBSD PR 2822. 2002-07-16 23:07:33 +00:00
thorpej b767b60c60 Add "(NetBSD nb3)" to the version string. 2002-07-15 15:44:53 +00:00
aymeric 1f11daa1ee Bump to nb3, following revision 1.2 of expr.c 2002-07-15 15:12:48 +00:00
aymeric 169b0eb038 Bring in diff from 1.144.4.10 to 1.144.4.11, from the gcc CVS repository.
This fixes (at least) broken compilation of xkbcomp with -O2 on powerpc.

ChangeLog entry:
2001-05-17  Bernd Schmidt  <bernds@redhat.com>

        * expr.c (protect_from_queue): Protect against subsequent calls to
        emit_queue.
        (expand_expr, case ADDR_EXPR): Prevent protect_from_queue from being
        too clever.

CVS log entry:
revision 1.144.4.11
date: 2001/05/17 17:01:06;  author: bernds;  state: Exp;  lines: +10 -3
Fix queueing-related bugs
2002-07-14 13:55:38 +00:00
itohy 8f0b7653ca a.out prologue / epilogue (from in-tree egcs) 2002-07-06 13:20:08 +00:00