mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-25 13:09:48 +00:00
Some cleanup.
Deleted some unused code. Fixed some declarations to use PARAMS macro. Fixed up configure.in for new targets. Some whitespace/comment fixes. Merged config/ChangeLog.
This commit is contained in:
parent
c5dd66a13a
commit
7f2cb2702a
354
gas/ChangeLog
354
gas/ChangeLog
@ -1,10 +1,113 @@
|
||||
Thu Dec 3 01:24:07 1992 Ken Raeburn (raeburn@kr-pc.cygnus.com)
|
||||
|
||||
* config/ho-generic.h (malloc, realloc): Declare.
|
||||
|
||||
* Lots of comment/whitespace changes.
|
||||
|
||||
* write.h (struct fix): Some fields reordered, narrowed.
|
||||
|
||||
* read.c (MASK_CHAR): Define using C types, not magic number.
|
||||
|
||||
* as.c, input-file.c: Deleted some unused code.
|
||||
|
||||
* app.c, as.h: Doc fix.
|
||||
|
||||
* flonum-konst.c, flonum-mult.c: Include ansidecl.h.
|
||||
|
||||
* as.h (xmalloc): Argument is long.
|
||||
|
||||
* xmalloc.c (error): Remove declaration; as.h takes care of it.
|
||||
|
||||
Mon Nov 30 11:42:11 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* configure.in: Accept target OS "vms".
|
||||
|
||||
* symbols.c: Merged ANSI and non-ANSI function decls, using
|
||||
PARAMS macro.
|
||||
|
||||
* xmalloc.c: Just include as.h, don't bother trying to figure out
|
||||
other header files.
|
||||
|
||||
* strstr.c, strerror.c: Deleted.
|
||||
* Makefile.in: Deleted references.
|
||||
|
||||
* config/tc-ns32k.c: Don't include header file for string
|
||||
declarations; leave that to ho-*.h.
|
||||
|
||||
Fri Nov 27 04:11:36 1992 Ken Raeburn (raeburn at cambridge-laptop.cygnus.com)
|
||||
|
||||
* config/coff_gnu.h [TC_I860]: Guesses for reloc type values,
|
||||
imported from FSF sources.
|
||||
|
||||
* messages.c (strerror): Declare unconditionally.
|
||||
|
||||
* as.h: Delete alloca and register definitions.
|
||||
|
||||
* config/atof-ieee.c (mask): Now const.
|
||||
|
||||
* obstack.c, obstack.h: Deleted.
|
||||
|
||||
* as.h (flag_readonly_data_in_text): New flag.
|
||||
* as.c (main): Set it for -R.
|
||||
|
||||
* as.h (flag_suppress_warnings): New flag.
|
||||
* as.c (main): Set it for -W.
|
||||
* messages.c (as_warn): Check it instead of flagseen['W'].
|
||||
|
||||
* as.h (flag_always_generate_output): New flag.
|
||||
* as.c (main): Set it for -Z.
|
||||
|
||||
* config/tc-sparc.h: Define NEED_FX_R_TYPE.
|
||||
* config/tc-a29k.h: Ditto.
|
||||
* write.h (struct fix): Don't conditionalize fx_r_type field on TC
|
||||
macros.
|
||||
|
||||
* as.h: Merged ANSI and non-ANSI function decls, using PARAMS
|
||||
macro.
|
||||
* bignum.h, expr.h, flonum.h, frags.h, input-file.h, listing.h,
|
||||
obj.h, output-file.h, read.h, struc-symbol.h, symbols.h, tc.h,
|
||||
write.h: Likewise.
|
||||
* read.c: Likewise.
|
||||
|
||||
* xmalloc.c: Conditionalize on HAVE_MALLOC_H, not USG. Fold in
|
||||
xrealloc from xrealloc.c.
|
||||
* xrealloc.c: Deleted.
|
||||
* Makefile.in (REAL_SOURCES, OBJS): Adjusted.
|
||||
|
||||
* configure.in: For host CPU a29k, rs6000, vax, consider using bsd
|
||||
or vms ho- files.
|
||||
|
||||
* config/ho-sysv.h (setbuffer, HO_USG): Deleted.
|
||||
|
||||
* config/atof-ieee.c (atof_ieee): Exponent field isn't a pointer;
|
||||
don't initialize it with NULL.
|
||||
|
||||
* config/ho-vax.h (M_VAX): Deleted; was unused.
|
||||
|
||||
* README-vms, config/ho-vms.h, config/obj-vms.c, config/obj-vms.h:
|
||||
New files imported from FSF version, contributed by Eric Youngdale.
|
||||
* README-vms-dbg, config/vms: Deleted.
|
||||
|
||||
* ChangeLog, config/ChangeLog: Merged.
|
||||
|
||||
* config/*tahoe*, configure.in: Tahoe support brought in from FSF
|
||||
version.
|
||||
|
||||
* input-file.c (input_file_open): Eliminate call to setvbuf.
|
||||
[USG] (setbuffer): Deleted macro.
|
||||
|
||||
Mon Nov 23 11:00:16 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* all files: Whitespace changes for GNU indentation style, done by
|
||||
GNU `indent'. Some cleanup still needed.
|
||||
GNU `indent'. Some cleanup still needed, especially of comments.
|
||||
|
||||
* configure.in: No te-386bsd.h file exists; don't try to use it.
|
||||
|
||||
* obj-coff.c (obj_coff_endef): Use as_warn, not fprintf.
|
||||
|
||||
* tc-m68k.c (md_assemble): Don't complain about 68000 with 68881;
|
||||
could be doing emulation.
|
||||
|
||||
Tue Nov 10 09:49:24 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* Makefile.in (as.o, obj-format.o): added dependency on subsegs.h.
|
||||
@ -16,6 +119,47 @@ Tue Nov 10 09:49:24 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
read.c, app.c: removed definitions of comment_chars,
|
||||
line_comment_chars, and line_separator_chars.
|
||||
|
||||
* tc-m68k.c (m68k_reg_parse): If REGISTER_PREFIX isn't defined,
|
||||
still accept (but don't require) OPTIONAL_REGISTER_PREFIX before
|
||||
the register name.
|
||||
(insert_reg): put REGISTER_PREFIX before register names before
|
||||
putting them in the symbol table.
|
||||
* tc-m68k.h (OPTIONAL_REGISTER_PREFIX): Define to be "%", if not
|
||||
M68KCOFF.
|
||||
|
||||
* obj-coffbfd.c (fill_section): set STYP_NOLOAD bit for .bss
|
||||
section.
|
||||
|
||||
* atof-ieee.c, atof-ns32k.c, tc-*.c: made EXP_CHARS, FLT_CHARS,
|
||||
comment_chars, line_comment_chars and line_seperator_chars
|
||||
consistently const, and always initialized them. Included read.h.
|
||||
|
||||
Thu Nov 5 17:55:41 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
|
||||
|
||||
* tc-sparc.c (sparc_ip): Add code to flag error if an absolute
|
||||
constant will not fit in an immediate field.
|
||||
(md_apply_fix, RELOC_BASE13 case): Check for relocation overflow.
|
||||
|
||||
Wed Nov 4 07:50:46 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* obj-coff.c (callj_table): Delete global variable.
|
||||
(obj_emit_relocations): Define it locally here, and only if
|
||||
TC_I960 is defined.
|
||||
|
||||
* tc-m68k.c (m68k_reg_parse): Underscore is part of a symbol name.
|
||||
(m68k_ip): Don't warn about bignum used as float bit-pattern.
|
||||
|
||||
* obj-coff.c: Replaced ANSI and non-ANSI function declarations
|
||||
with a single set using PARAMS macro.
|
||||
|
||||
* tc-i960.c (tc_bout_fix_to_chars): Bit-field fixups want a length
|
||||
of 2.
|
||||
|
||||
* tc-i960.c: Missed a couple of 0->NO_RELOC conversions.
|
||||
|
||||
* tc-i960.h (N_BALNAME, N_CALLNAME): Define as char-type values,
|
||||
so widening works consistently.
|
||||
|
||||
Wed Oct 28 08:52:34 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* version.c: Put conditional "const" before version_string, not
|
||||
@ -24,8 +168,22 @@ Wed Oct 28 08:52:34 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
* app.c (do_scrub_next_char): Need double-\ before `000' to show
|
||||
printed rep of null character.
|
||||
|
||||
Fri Oct 23 14:40:38 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* obj-coffbfd.c (write_object_file): check return value of
|
||||
bfd_close_all_done.
|
||||
|
||||
Tue Oct 20 12:18:08 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* Support for i386-sysv.
|
||||
obj-coffbfd.c (do_relocs_for, write_object_file): set segment
|
||||
addresses to reasonable sizes. New define ZERO_BASED_SEGMENTS can
|
||||
be used to set them all to zero as was done before.
|
||||
(fill_section): segment addresses now set in write_object_file.
|
||||
(fill_section): Don't set STYP_NOLOAD for .bss section.
|
||||
(fixup_segment): 386 uses strange common symbol format.
|
||||
tc-i386.c (tc_coff_fix2rtype): use R_DIR32, not R_RELLONG, for
|
||||
compatibility with SVR3.2 linker.
|
||||
* configure.in: i386-sysv and i386-sco use coffbfd.
|
||||
|
||||
* app.c (do_scrub_next_char): discard whitespace after a label.
|
||||
@ -35,6 +193,16 @@ Sat Oct 10 12:33:45 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
|
||||
* configure.in: differentiate between SunOS 4 and Solaris2 for Sun4
|
||||
hosts, use the sysv configuration for solaris2
|
||||
|
||||
Mon Oct 5 09:28:57 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
fix i960+non-bfd coff bit rot.
|
||||
* obj-coff.c (c_dot_file_symbol, obj_coff_ln, obj_coff_line):
|
||||
support for C source listings. (obj_coff_endef): look in the right
|
||||
part of the symbol for the symbol name
|
||||
|
||||
* tc-m68k.c (get_num): make it work for all segments, not just the
|
||||
first three.
|
||||
|
||||
Mon Oct 5 03:30:36 1992 Mark Eichin (eichin at tweedledumber.cygnus.com)
|
||||
|
||||
* configure.in: recognize i386-*-bsd emulation.
|
||||
@ -43,10 +211,30 @@ Thu Oct 1 23:05:12 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
|
||||
|
||||
* configure.in: use the cpu-vendor-os triple for host and target
|
||||
|
||||
Tue Sep 29 12:22:52 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* obj-coffbfd.c (write_object_file): don't fixup for the z8k
|
||||
* tc-z8k.c: lots of bug fixes
|
||||
|
||||
Tue Sep 29 10:51:55 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* tc-i960.h, tc-i960.c: avoid the ANSI preprocessor addition
|
||||
#elif, since it is not supported by old compilers.
|
||||
ho-rs6000.h, tc-m68k.c: the native RS/6000 compiler miscompiles a
|
||||
couple of expressions in tc-m68k.c.
|
||||
|
||||
Mon Sep 28 21:18:24 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* read.c (cons): If NO_RELOC is defined, use it.
|
||||
|
||||
* tc-i960.c (get_cdisp): Use NO_RELOC, not 0, in call to fix_new.
|
||||
|
||||
Fri Sep 25 18:18:52 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* tc-m68k.h: if M68KCOFF, define DOT_LABEL_PREFIX (to require
|
||||
local labels to start with a .) and set REGISTER_PREFIX to %.
|
||||
tc-m68k.c (m68k_reg_parse): accept REGISTER_PREFIX if defined.
|
||||
|
||||
Fri Sep 25 17:53:43 1992 John Gilmore (gnu@cygnus.com)
|
||||
|
||||
* messages.c: Comment changes.
|
||||
@ -61,6 +249,29 @@ Thu Sep 24 12:42:32 1992 Brendan Kehoe (brendan@rtl.cygnus.com)
|
||||
* listing.c (debugging_pseudo): Add stabs and stabn as things to
|
||||
ignore.
|
||||
|
||||
Tue Sep 22 13:02:07 1992 Sean Eric Fagan (sef@cygnus.com)
|
||||
|
||||
* obj-coffbfd.c (do_relocs_for,fill_section): now allocate all
|
||||
sections starting from zero, rather than making them consecutive.
|
||||
This makes subsequent reloc calculations easier, esp if the object
|
||||
format doesn't understand addends. (obj_coff_lcomm): (maybe temporarily)
|
||||
allocate lcomm in .data rather than in .bss. It seems that some
|
||||
tools can't cope with a non-zero sized bss before linkage.
|
||||
|
||||
Tue Sep 22 15:10:51 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* tc-m68k.c: Replace "enum m68k_architecture" with "int"
|
||||
throughout. That enum no longer means what we thought it meant.
|
||||
|
||||
* tc-m68k.c (md_assemble, md_parse_option): Handle new
|
||||
"-mno-688[58]1" options.
|
||||
|
||||
* tc-m68k.c: Added CPU32 support.
|
||||
|
||||
Fri Sep 18 08:02:18 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* tc-m68k.c (m68k_ip): An(disp) is not pc relative.
|
||||
|
||||
Tue Sep 15 17:25:05 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
|
||||
|
||||
* Makefile.in (as.new): Remove dependence on LOCAL_LOADLIBES.
|
||||
@ -84,6 +295,20 @@ Sun Sep 13 20:30:10 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
* write.c (fixup_segment): fixed missing parens in expression
|
||||
checking for byte or word overflow.
|
||||
|
||||
* obj-coffbfd.h: define WARN_SIGNED_OVERFLOW_WORD.
|
||||
obj-coffbfd.c (fixup_segment): check for signed .word overflow if
|
||||
WARN_SIGNED_OVERFLOW_WORD.
|
||||
|
||||
* obj-coffbfd.c (fixup_segment): fixed missing parens in
|
||||
expression checking for byte or word overflow.
|
||||
|
||||
Fri Sep 11 10:21:04 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
Support for i386 coff
|
||||
* obj-coffbfd.h : added stuff
|
||||
* tc-i386.c (tc_coff_fix2rtype): new function
|
||||
* tc-i386.h : new coff defines
|
||||
|
||||
Thu Sep 10 09:23:15 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* input-scrub.c (input_scrub_push): call input_file_begin, not
|
||||
@ -98,6 +323,22 @@ Wed Sep 9 11:06:25 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
Makefile.in: Handle m68*-*-coff*.
|
||||
read.c, read.h: add mult argument to s_space
|
||||
|
||||
* tc-m68k.c (m68k_ip, m68k_ip_op, get_num, try_moto_index): merge
|
||||
Motorola and MIT syntax; gas can now assemble either type of
|
||||
file.
|
||||
tc-m68kmote.c, tc-m68kmote.h: removed now superfluous files.
|
||||
From Steve Chamberlain:
|
||||
m68kcoff.mt: for m68k COFF.
|
||||
obj-coffbfd.c: (fixup_mdeps) added
|
||||
(size_section) removed bad sanity check
|
||||
(fill_section) added rs_machine_dependent case
|
||||
(write_object_file) call fixup_mdeps
|
||||
(fixup_segment) set fx_subsy to 0.
|
||||
obj-coffbfd.h: define WORKING_DOT_WORD (too hard to support) and
|
||||
handle m68k.
|
||||
tc-m68k.c, config/tc-m68k.h: added m68k COFF support and Motorala
|
||||
pseudo ops.
|
||||
|
||||
Tue Sep 8 17:10:58 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* Makefile.in (LIBS): Include opcode library.
|
||||
@ -116,6 +357,12 @@ Sat Aug 29 12:11:12 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
|
||||
|
||||
* Makefile.in (as.new): Depend on LOCAL_LOADLIBES.
|
||||
|
||||
Fri Aug 28 16:25:22 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* obj-bout.h, obj-bout.c (obj_header_append, obj_symbol_to_chars),
|
||||
tc-i960.c (md_ri_to_chars): Always output bout object file in
|
||||
little endian byte order (used to use endianness of host).
|
||||
|
||||
Tue Aug 25 15:50:48 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* config/tc-m68k.c (init_table): Now const. Always include 68851
|
||||
@ -136,17 +383,32 @@ Tue Aug 25 15:13:48 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
* listing.c (buffer_line): rewind to the start of include
|
||||
files, they might be included twice.
|
||||
|
||||
* z8k.c, z8k.h, z8k.mt: z8000 support stuff
|
||||
|
||||
Mon Aug 24 12:45:43 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* Makefile.in: defined TARGET_CPU for C code so that it can choose
|
||||
one element of a family.
|
||||
|
||||
* tc-m68k.c: use TARGET_CPU to choose default cpu type.
|
||||
|
||||
* te-generic.h: default to LOCAL_LABELS_DOLLAR and LOCAL_LABELS_FB
|
||||
so that we can assemble hand-written libgcc code.
|
||||
|
||||
Fri Aug 21 14:38:44 1992 Ken Raeburn (raeburn@cambridge.cygnus.com)
|
||||
|
||||
* messages.c (as_warn): Use fputs, not fprintf, with a buffer that
|
||||
has already been formatted (but may still contain %-characters).
|
||||
(as_bad): Likewise.
|
||||
|
||||
Wed Aug 19 11:20:59 1992 Ian Lance Taylor (ian@cygnus.com)
|
||||
|
||||
* tc-m68k.c, tc-m68kmote.c: the cas2 instruction is supposed to be
|
||||
written with indirection on the last two operands, which can be
|
||||
either data or address registers. Added a new operand type 'r'
|
||||
which accepts either register type. Added '(' to notend stuff in
|
||||
tc-m68kmote.c to accept (a0):(a2) in cas2 instruction.
|
||||
|
||||
Wed Aug 19 09:25:09 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* as.h (enum _relax_state): Start off at one, not zero, to better
|
||||
@ -213,16 +475,33 @@ Thu Aug 13 13:53:19 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
(free): Declare it.
|
||||
(BROKEN_ASSERT): Define it if not __STDC__.
|
||||
|
||||
Tue Aug 11 12:58:14 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* sparc.mt: New file.
|
||||
|
||||
Mon Aug 10 14:37:08 1992 Per Bothner (bothner@cygnus.com)
|
||||
|
||||
* tc-m68k.c: ".align N" means align to N-byte boundary *only*
|
||||
if TN_SUN3; otherwise align to 2**N-byte bounary.
|
||||
|
||||
Thu Aug 6 12:10:39 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* read.c (s_fill): make the .fill size clamped error a warn and
|
||||
fix bug where 0's were always placed.
|
||||
|
||||
* config/tc-h8300.c: if a :8 is seen after an operand, fill top
|
||||
two bytes of any constant with 0xff:
|
||||
|
||||
Wed Aug 5 12:02:40 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* config/tc-m68k.c (md_pseudo_table): fix the .align thing
|
||||
the right way; for just the 68k. Sun 3 .align is nbytes, not ptwo.
|
||||
|
||||
Wed Aug 5 01:54:34 1992 John Gilmore (gnu at cygnus.com)
|
||||
|
||||
* tc-m68k.c (try_index): Error if index scaling specified and
|
||||
assembling for an older CPU than a 68020.
|
||||
|
||||
Sat Aug 1 19:10:13 1992 Ken Raeburn (raeburn@cygnus.com)
|
||||
|
||||
* config/tc-sparc.c (tc_aout_fix_to_chars): If pc-relative, take
|
||||
@ -269,6 +548,10 @@ Mon Jul 13 14:11:36 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
(relax_segment): SEG_BSS is ok now
|
||||
* config/tc-m68k.c (m68k_ip_op): can now parse more @( modes
|
||||
|
||||
Mon Jul 6 17:09:32 1992 Steve Chamberlain (sac@cygnus.com)
|
||||
|
||||
* obj-coffbfd.c (fill_section): mark .lit sections as STYP_LIT
|
||||
|
||||
Mon Jun 1 16:20:22 1992 Michael Tiemann (tiemann@cygnus.com)
|
||||
|
||||
* configure.in: recognize m680x0 as having sun3 emulation mode for
|
||||
@ -296,6 +579,11 @@ Tue Jun 9 07:54:54 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
* write.c (write_object_file): various changes to handle data in
|
||||
the BSS segment in much the same was as stuff in the DATA segment.
|
||||
|
||||
* tc-m68k.c (m68kip): Fix typo so that only arch's >=68020 do
|
||||
pcrel data stuff. (md_estimate_size_before_relax): when relaxing a
|
||||
68010 bxx into a bra+6 jmpxx, put the bytes of the jmp opcode into
|
||||
the right place. (s_bss): Don't put .bss stuff into SEG_DATA, put
|
||||
it into SEG_BSS
|
||||
|
||||
Thu Jun 4 11:59:13 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
@ -350,11 +638,20 @@ Thu May 28 11:22:02 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
|
||||
|
||||
* configure.in: Recognize sparclite as a sparc variant.
|
||||
|
||||
* tc-sparc.c: Use new ARCHITECTURES_CONFLICT_P macro. Mention new
|
||||
-Asparclite flag.
|
||||
|
||||
Tue May 26 16:47:56 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* config/tc-a29k.c: lint
|
||||
* listing.c, expr.c: patches from Andrew Smith
|
||||
|
||||
Mon May 4 18:56:19 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
|
||||
* obj-coffbfd.c: use is a synonym for section, (do_relocs_for):
|
||||
calc the base of relocs correctly.
|
||||
* tc-a29k.c (parse_operand): allow expressions to be in any section.
|
||||
|
||||
Mon Apr 27 13:13:31 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* as.c, write.c: use -K rather than -k for the broken word warning
|
||||
@ -403,6 +700,11 @@ Fri Mar 13 08:03:03 1992 Steve Chamberlain (sac@thepub.cygnus.com)
|
||||
* flonum-const.c: renamed flonum-konst.c to stop dos name
|
||||
conflict.
|
||||
|
||||
Thu Mar 12 04:42:38 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* tc-m68k.h, te-sun3.h: moved LOCAL_LABELS_FB definition from
|
||||
tc-m68k.h to te-sun3.h.
|
||||
|
||||
Wed Mar 11 23:32:42 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* configure.in: vxworks68 gets te-sun3.h.
|
||||
@ -413,6 +715,8 @@ Wed Mar 11 23:32:42 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
* symbols.c: remove local_labels_dollar, replace with a function
|
||||
interface for a sparse array. All users adjusted.
|
||||
|
||||
* te-sun3.h: add LOCAL_LABELS_DOLLAR.
|
||||
|
||||
Fri Mar 6 21:57:18 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* Makefile.in: added check target.
|
||||
@ -488,6 +792,12 @@ Fri Feb 21 06:21:07 1992 K. Richard Pixley (rich@rtl.cygnus.com)
|
||||
|
||||
* read.c, write.c subsegs.c: back out the .bss changes.
|
||||
|
||||
* obj-aout.c: do not include stab.gnu.h if NO_LISTING.
|
||||
|
||||
* tc-i860.c, a.out.gnu.h: move i860 relocs to a proper place.
|
||||
|
||||
* a.out.h: removed.
|
||||
|
||||
Fri Feb 21 01:08:48 1992 Minh Tran-Le (TRANLE@INTELLICORP.COM)
|
||||
|
||||
* symbols.c (local_label_name): symbols now start with ^A.
|
||||
@ -503,6 +813,33 @@ Fri Feb 21 01:08:48 1992 Minh Tran-Le (TRANLE@INTELLICORP.COM)
|
||||
|
||||
* as.c (perform_an_assembly_pass): zero bss_fix_root, too.
|
||||
|
||||
* tc-i386.c: tc-i386.c: added handling of the following opcodes:
|
||||
i/o opcodes - inb, inw, outb and outw. string manipulation with
|
||||
att syntax - scmp, slod, smov, ssca, ssto.
|
||||
|
||||
* obj-coff.c: (for aix386) Moved the symbols .text, .data and .bss
|
||||
to just after .file .
|
||||
|
||||
In obj_crawl_symbol_chain() where it tries to put the external
|
||||
symbols apart, with the condition:
|
||||
(!S_IS_DEFINED(symbolP) &&
|
||||
!S_IS_DEBUG(symbolP) &&
|
||||
!SF_GET_STATICS(symbolP))
|
||||
it was moving too many symbols out. So I switch it back to the
|
||||
condition:
|
||||
(S_GET_STORAGE_CLASS(symbolP) == C_EXT && !SF_GET_FUNCTION(symbolP))
|
||||
|
||||
In obj_emit_relocations() added the conditional on KEEP_RELOC_INFO
|
||||
so that we don't use the F_RELFLG which make the linker complain
|
||||
that somebody has stripped the relocation info.
|
||||
|
||||
Also, the AIX ld program require that the relocation table
|
||||
is sorted by r_vaddr like the standard ATT assembler does.
|
||||
|
||||
[he also changed the sizeof(struct ...)'s into the coff
|
||||
style FOOSZ macros. I'm not sure this is right, but I can't
|
||||
remember why. xoxorich.]
|
||||
|
||||
Fri Feb 21 01:08:48 1992 K. Richard Pixley (rich@cygnus.com)
|
||||
|
||||
* Makefile.in, configure.in, doc: use the doc. Build it, install
|
||||
@ -516,6 +853,21 @@ Tue Feb 18 02:21:25 1992 K. Richard Pixley (rich at cygnus.com)
|
||||
|
||||
* write.c: comment change only.
|
||||
|
||||
* tc-m88k.[hc]: pulled in from hack's unfinished work. These
|
||||
aren't yet integrated.
|
||||
|
||||
* tc-i860.[hc]: blew off the dust. Something must still be done
|
||||
about conflicting relocation types.
|
||||
|
||||
* tc-ns32k.c: Replaced previous tc_aout_fix_to_chars stub with the
|
||||
real thing.
|
||||
|
||||
* tc-i960.c, tc-sparc.c: white space and comments only.
|
||||
|
||||
* tc-a29k.h: delete duplicate macro definition.
|
||||
|
||||
* new file atof-ns32k.c copied from hack's last unreleased gas.
|
||||
|
||||
Mon Feb 17 07:51:06 1992 K. Richard Pixley (rich at cygnus.com)
|
||||
|
||||
* config/tc-ns32k.c: actually make tc_aout_fix_to_chars work
|
||||
|
@ -98,18 +98,14 @@ REAL_SOURCES = \
|
||||
$(srcdir)/input-file.c \
|
||||
$(srcdir)/input-scrub.c \
|
||||
$(srcdir)/messages.c \
|
||||
$(srcdir)/obstack.c \
|
||||
$(srcdir)/output-file.c \
|
||||
$(srcdir)/read.c \
|
||||
$(srcdir)/strerror.c \
|
||||
$(srcdir)/strstr.c \
|
||||
$(srcdir)/subsegs.c \
|
||||
$(srcdir)/symbols.c \
|
||||
$(srcdir)/version.c \
|
||||
$(srcdir)/write.c \
|
||||
$(srcdir)/listing.c \
|
||||
$(srcdir)/xmalloc.c \
|
||||
$(srcdir)/xrealloc.c
|
||||
$(srcdir)/xmalloc.c
|
||||
|
||||
# in an expedient order
|
||||
LINKED_SOURCES = \
|
||||
@ -130,7 +126,6 @@ REAL_HEADERS = \
|
||||
$(srcdir)/listing.h \
|
||||
$(srcdir)/tc.h \
|
||||
$(srcdir)/obj.h \
|
||||
$(srcdir)/obstack.h \
|
||||
$(srcdir)/read.h \
|
||||
$(srcdir)/struc-symbol.h \
|
||||
$(srcdir)/subsegs.h \
|
||||
@ -167,18 +162,14 @@ OBJS = \
|
||||
input-file.o \
|
||||
input-scrub.o \
|
||||
messages.o \
|
||||
obstack.o \
|
||||
output-file.o \
|
||||
read.o \
|
||||
strerror.o \
|
||||
strstr.o \
|
||||
subsegs.o \
|
||||
symbols.o \
|
||||
version.o \
|
||||
write.o \
|
||||
listing.o \
|
||||
xmalloc.o \
|
||||
xrealloc.o
|
||||
xmalloc.o
|
||||
|
||||
#### host, target, and site specific Makefile frags come in here.
|
||||
|
||||
@ -222,7 +213,7 @@ SUBDIR_INCLUDES = -I.. -I$(srcdir) -I$(srcdir)/config
|
||||
# Files to be copied away after each stage in building.
|
||||
STAGESTUFF = *.o as.new
|
||||
|
||||
as.new: $(OBJS) $(LIBDEPS) $(LOCAL_LOADLIBES)
|
||||
as.new: $(OBJS) $(LIBS)
|
||||
[ ! -f as.new ] || mv as.new as.old
|
||||
$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o as.new $(OBJS) $(LIBS) $(LOADLIBES)
|
||||
|
||||
@ -239,7 +230,8 @@ app.o : app.c as.h host.h targ-env.h obj-format.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h
|
||||
as.o : as.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h subsegs.h \
|
||||
tc.h obj.h
|
||||
atof-generic.o : atof-generic.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h
|
||||
@ -287,7 +279,6 @@ listing.o : listing.c as.h host.h targ-env.h flonum.h bignum.h \
|
||||
messages.o : messages.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h
|
||||
obstack.o : obstack.c
|
||||
output-file.o : output-file.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h \
|
||||
@ -295,9 +286,6 @@ output-file.o : output-file.c as.h host.h targ-env.h obj-format.h \
|
||||
read.o : read.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h
|
||||
|
||||
strerror.o : strerror.c
|
||||
strstr.o : strstr.c
|
||||
subsegs.o : subsegs.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h \
|
||||
@ -312,7 +300,6 @@ write.o : write.c as.h host.h targ-env.h obj-format.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h symbols.h tc.h obj.h \
|
||||
subsegs.h output-file.h
|
||||
xmalloc.o : xmalloc.c
|
||||
xrealloc.o : xrealloc.c
|
||||
atof-targ.o : atof-targ.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h \
|
||||
@ -320,7 +307,7 @@ atof-targ.o : atof-targ.c as.h host.h targ-env.h obj-format.h \
|
||||
obj-format.o : obj-format.c as.h host.h targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h \
|
||||
symbols.h tc.h obj.h
|
||||
subsegs.h symbols.h tc.h obj.h
|
||||
targ-cpu.o : targ-cpu.c targ-env.h obj-format.h \
|
||||
targ-cpu.h struc-symbol.h \
|
||||
write.h flonum.h bignum.h expr.h frags.h hash.h read.h \
|
||||
|
249
gas/as.h
249
gas/as.h
@ -29,11 +29,6 @@
|
||||
#endif /* const */
|
||||
#endif /* __STDC__ */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define alloca __builtin_alloca
|
||||
#define register
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
#ifndef __LINE__
|
||||
#define __LINE__ "unknown"
|
||||
#endif /* __LINE__ */
|
||||
@ -92,7 +87,10 @@
|
||||
#define DEBUG /* temporary */
|
||||
|
||||
#ifdef BROKEN_ASSERT
|
||||
/* turn off all assertion checks */
|
||||
/* Turn off all assertion checks, on machines where the assert macro
|
||||
is buggy. (For example, on the RS/6000, Reiser-cpp substitution is
|
||||
done to put the condition into a string, so if the condition contains
|
||||
a string, parse errors result.) */
|
||||
#undef DEBUG
|
||||
#define NDEBUG
|
||||
#endif
|
||||
@ -182,14 +180,12 @@ typedef enum _segT
|
||||
|
||||
typedef int subsegT;
|
||||
|
||||
COMMON subsegT now_subseg;
|
||||
/* What subseg we are accreting now? */
|
||||
COMMON subsegT now_subseg;
|
||||
|
||||
|
||||
COMMON segT now_seg;
|
||||
/* Segment our instructions emit to. */
|
||||
/* Only OK values are SEG_TEXT or SEG_DATA. */
|
||||
|
||||
COMMON segT now_seg;
|
||||
|
||||
extern char *const seg_name[];
|
||||
extern int section_alignment[];
|
||||
@ -199,20 +195,23 @@ extern int section_alignment[];
|
||||
|
||||
typedef enum _relax_state
|
||||
{
|
||||
rs_fill = 1, /* Variable chars to be repeated fr_offset times.
|
||||
Fr_symbol unused. Used with fr_offset == 0 for a
|
||||
constant length frag. */
|
||||
/* Variable chars to be repeated fr_offset times.
|
||||
Fr_symbol unused. Used with fr_offset == 0 for a
|
||||
constant length frag. */
|
||||
rs_fill = 1,
|
||||
|
||||
rs_align, /* Align: Fr_offset: power of 2. 1 variable char: fill
|
||||
character. */
|
||||
/* Align: Fr_offset: power of 2. 1 variable char: fill character. */
|
||||
rs_align,
|
||||
|
||||
rs_org, /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
|
||||
character. */
|
||||
/* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
|
||||
character. */
|
||||
rs_org,
|
||||
|
||||
rs_machine_dependent,
|
||||
|
||||
#ifndef WORKING_DOT_WORD
|
||||
rs_broken_word, /* JF: gunpoint */
|
||||
/* JF: gunpoint */
|
||||
rs_broken_word,
|
||||
#endif
|
||||
} relax_stateT;
|
||||
|
||||
@ -221,8 +220,9 @@ typedef enum _relax_state
|
||||
boundry. Be very careful with this. */
|
||||
typedef unsigned long relax_substateT;
|
||||
|
||||
typedef unsigned long relax_addressT; /* Enough bits for address. */
|
||||
/* Still an integer type. */
|
||||
/* Enough bits for address, but still an integer type.
|
||||
Could be a problem, cross-assembling for 64-bit machines. */
|
||||
typedef unsigned long relax_addressT;
|
||||
|
||||
|
||||
/* frags.c */
|
||||
@ -244,27 +244,37 @@ typedef unsigned long relax_addressT; /* Enough bits for address. */
|
||||
*/
|
||||
struct frag /* a code fragment */
|
||||
{
|
||||
unsigned long fr_address; /* Object file address. */
|
||||
struct frag *fr_next; /* Chain forward; ascending address order. */
|
||||
/* Object file address. */
|
||||
unsigned long fr_address;
|
||||
/* Chain forward; ascending address order. */
|
||||
/* Rooted in frch_root. */
|
||||
struct frag *fr_next;
|
||||
|
||||
long fr_fix; /* (Fixed) number of chars we know we have. */
|
||||
/* (Fixed) number of chars we know we have. */
|
||||
/* May be 0. */
|
||||
long fr_var; /* (Variable) number of chars after above. */
|
||||
long fr_fix;
|
||||
/* (Variable) number of chars after above. */
|
||||
/* May be 0. */
|
||||
struct symbol *fr_symbol; /* For variable-length tail. */
|
||||
long fr_offset; /* For variable-length tail. */
|
||||
char *fr_opcode; /*->opcode low addr byte,for relax()ation*/
|
||||
relax_stateT fr_type; /* What state is my tail in? */
|
||||
long fr_var;
|
||||
/* For variable-length tail. */
|
||||
struct symbol *fr_symbol;
|
||||
/* For variable-length tail. */
|
||||
long fr_offset;
|
||||
/*->opcode low addr byte,for relax()ation*/
|
||||
char *fr_opcode;
|
||||
/* What state is my tail in? */
|
||||
relax_stateT fr_type;
|
||||
relax_substateT fr_subtype;
|
||||
|
||||
/* These are needed only on the NS32K machines */
|
||||
char fr_pcrel_adjust;
|
||||
char fr_bsr;
|
||||
#ifndef NO_LISTING
|
||||
struct list_info_struct *line;
|
||||
#endif
|
||||
char fr_literal[1]; /* Chars begin here. */
|
||||
/* One day we will compile fr_literal[0]. */
|
||||
/* Chars begin here.
|
||||
One day we will compile fr_literal[0]. */
|
||||
char fr_literal[1];
|
||||
};
|
||||
|
||||
#define SIZEOF_STRUCT_FRAG \
|
||||
@ -273,43 +283,54 @@ struct frag /* a code fragment */
|
||||
|
||||
typedef struct frag fragS;
|
||||
|
||||
COMMON fragS *frag_now; /* -> current frag we are building. */
|
||||
/* This frag is incomplete. */
|
||||
/* It is, however, included in frchain_now. */
|
||||
/* Frag_now->fr_fix is bogus. Use: */
|
||||
/* Virtual frag_now->fr_fix==obstack_next_free(&frags)-frag_now->fr_literal.*/
|
||||
/* Current frag we are building. This frag is incomplete. It is, however,
|
||||
included in frchain_now. The fr_fix field is bogus; instead, use:
|
||||
obstack_next_free(&frags)-frag_now->fr_literal. */
|
||||
COMMON fragS *frag_now;
|
||||
|
||||
COMMON fragS zero_address_frag; /* For foreign-segment symbol fixups. */
|
||||
COMMON fragS bss_address_frag; /* For local common (N_BSS segment) fixups. */
|
||||
/* For foreign-segment symbol fixups. */
|
||||
COMMON fragS zero_address_frag;
|
||||
/* For local common (N_BSS segment) fixups. */
|
||||
COMMON fragS bss_address_frag;
|
||||
|
||||
/* main program "as.c" (command arguments etc) */
|
||||
|
||||
COMMON char flagseen[128]; /* ['x'] TRUE if "-x" seen. */
|
||||
/* ['x'] TRUE if "-x" seen. */
|
||||
COMMON char flagseen[128];
|
||||
COMMON unsigned char flag_readonly_data_in_text;
|
||||
COMMON unsigned char flag_suppress_warnings;
|
||||
COMMON unsigned char flag_always_generate_output;
|
||||
|
||||
COMMON char *out_file_name; /* name of emitted object file */
|
||||
/* name of emitted object file */
|
||||
COMMON char *out_file_name;
|
||||
|
||||
COMMON int need_pass_2; /* TRUE if we need a second pass. */
|
||||
/* TRUE if we need a second pass. */
|
||||
COMMON int need_pass_2;
|
||||
|
||||
COMMON int linkrelax; /* TRUE if we should do no relaxing, and
|
||||
leave lots of padding. */
|
||||
/* TRUE if we should do no relaxing, and
|
||||
leave lots of padding. */
|
||||
COMMON int linkrelax;
|
||||
|
||||
typedef struct
|
||||
struct _pseudo_type
|
||||
{
|
||||
char *poc_name; /* assembler mnemonic, lower case, no '.' */
|
||||
void (*poc_handler) (); /* Do the work */
|
||||
int poc_val; /* Value to pass to handler */
|
||||
}
|
||||
/* assembler mnemonic, lower case, no '.' */
|
||||
char *poc_name;
|
||||
/* Do the work */
|
||||
void (*poc_handler) ();
|
||||
/* Value to pass to handler */
|
||||
int poc_val;
|
||||
};
|
||||
|
||||
pseudo_typeS;
|
||||
typedef struct _pseudo_type pseudo_typeS;
|
||||
|
||||
#ifdef __STDC__
|
||||
#ifndef NO_STDARG
|
||||
|
||||
int had_errors (void);
|
||||
int had_warnings (void);
|
||||
void as_bad (const char *Format,...);
|
||||
void as_fatal (const char *Format,...);
|
||||
void as_tsktsk (const char *Format,...);
|
||||
void as_warn (const char *Format,...);
|
||||
int had_errors PARAMS ((void));
|
||||
int had_warnings PARAMS ((void));
|
||||
void as_bad PARAMS ((const char *Format,...));
|
||||
void as_fatal PARAMS ((const char *Format,...));
|
||||
void as_tsktsk PARAMS ((const char *Format,...));
|
||||
void as_warn PARAMS ((const char *Format,...));
|
||||
|
||||
#else
|
||||
|
||||
@ -322,88 +343,47 @@ void as_warn ();
|
||||
|
||||
#endif /* __STDC__ & !NO_STDARG */
|
||||
|
||||
#ifdef __STDC__
|
||||
|
||||
char *app_push (void);
|
||||
char *atof_ieee (char *str, int what_kind, LITTLENUM_TYPE * words);
|
||||
char *input_scrub_include_file (char *filename, char *position);
|
||||
char *input_scrub_new_file (char *filename);
|
||||
char *input_scrub_next_buffer (char **bufp);
|
||||
char *strstr (const char *s, const char *wanted);
|
||||
char *xmalloc (int size);
|
||||
char *xrealloc (char *ptr, long n);
|
||||
int do_scrub_next_char (int (*get) (), void (*unget) ());
|
||||
int gen_to_words (LITTLENUM_TYPE * words, int precision, long exponent_bits);
|
||||
int had_err (void);
|
||||
int had_errors (void);
|
||||
int had_warnings (void);
|
||||
int ignore_input (void);
|
||||
int scrub_from_file (void);
|
||||
int scrub_from_file (void);
|
||||
int scrub_from_string (void);
|
||||
int seen_at_least_1_file (void);
|
||||
void app_pop (char *arg);
|
||||
void as_howmuch (FILE * stream);
|
||||
void as_perror (char *gripe, char *filename);
|
||||
void as_where (void);
|
||||
void bump_line_counters (void);
|
||||
void do_scrub_begin (void);
|
||||
void input_scrub_begin (void);
|
||||
void input_scrub_close (void);
|
||||
void input_scrub_end (void);
|
||||
void int_to_gen (long x);
|
||||
void new_logical_line (char *fname, int line_number);
|
||||
void scrub_to_file (int ch);
|
||||
void scrub_to_string (int ch);
|
||||
void subseg_change (segT seg, int subseg);
|
||||
void subseg_new (segT seg, subsegT subseg);
|
||||
void subsegs_begin (void);
|
||||
|
||||
#else /* not __STDC__ */
|
||||
|
||||
char *app_push ();
|
||||
char *atof_ieee ();
|
||||
char *input_scrub_include_file ();
|
||||
char *input_scrub_new_file ();
|
||||
char *input_scrub_next_buffer ();
|
||||
char *strstr ();
|
||||
char *xmalloc ();
|
||||
char *xrealloc ();
|
||||
int do_scrub_next_char ();
|
||||
int gen_to_words ();
|
||||
int had_err ();
|
||||
int had_errors ();
|
||||
int had_warnings ();
|
||||
int ignore_input ();
|
||||
int scrub_from_file ();
|
||||
int scrub_from_file ();
|
||||
int scrub_from_string ();
|
||||
int seen_at_least_1_file ();
|
||||
void app_pop ();
|
||||
void as_howmuch ();
|
||||
void as_perror ();
|
||||
void as_where ();
|
||||
void bump_line_counters ();
|
||||
void do_scrub_begin ();
|
||||
void input_scrub_begin ();
|
||||
void input_scrub_close ();
|
||||
void input_scrub_end ();
|
||||
void int_to_gen ();
|
||||
void new_logical_line ();
|
||||
void scrub_to_file ();
|
||||
void scrub_to_string ();
|
||||
void subseg_change ();
|
||||
void subseg_new ();
|
||||
void subsegs_begin ();
|
||||
|
||||
#endif /* not __STDC__ */
|
||||
char *app_push PARAMS ((void));
|
||||
char *atof_ieee PARAMS ((char *str, int what_kind, LITTLENUM_TYPE * words));
|
||||
char *input_scrub_include_file PARAMS ((char *filename, char *position));
|
||||
char *input_scrub_new_file PARAMS ((char *filename));
|
||||
char *input_scrub_next_buffer PARAMS ((char **bufp));
|
||||
char *strstr PARAMS ((const char *s, const char *wanted));
|
||||
char *xmalloc PARAMS ((long size));
|
||||
char *xrealloc PARAMS ((char *ptr, long n));
|
||||
int do_scrub_next_char PARAMS ((int (*get) (), void (*unget) ()));
|
||||
int gen_to_words PARAMS ((LITTLENUM_TYPE * words, int precision,
|
||||
long exponent_bits));
|
||||
int had_err PARAMS ((void));
|
||||
int had_errors PARAMS ((void));
|
||||
int had_warnings PARAMS ((void));
|
||||
int ignore_input PARAMS ((void));
|
||||
int scrub_from_file PARAMS ((void));
|
||||
int scrub_from_file PARAMS ((void));
|
||||
int scrub_from_string PARAMS ((void));
|
||||
int seen_at_least_1_file PARAMS ((void));
|
||||
void app_pop PARAMS ((char *arg));
|
||||
void as_howmuch PARAMS ((FILE * stream));
|
||||
void as_perror PARAMS ((char *gripe, char *filename));
|
||||
void as_where PARAMS ((void));
|
||||
void bump_line_counters PARAMS ((void));
|
||||
void do_scrub_begin PARAMS ((void));
|
||||
void input_scrub_begin PARAMS ((void));
|
||||
void input_scrub_close PARAMS ((void));
|
||||
void input_scrub_end PARAMS ((void));
|
||||
void int_to_gen PARAMS ((long x));
|
||||
void new_logical_line PARAMS ((char *fname, int line_number));
|
||||
void scrub_to_file PARAMS ((int ch));
|
||||
void scrub_to_string PARAMS ((int ch));
|
||||
void subseg_change PARAMS ((segT seg, int subseg));
|
||||
void subseg_new PARAMS ((segT seg, subsegT subseg));
|
||||
void subsegs_begin PARAMS ((void));
|
||||
|
||||
/* this one starts the chain of target dependant headers */
|
||||
#include "targ-env.h"
|
||||
|
||||
/* these define types needed by the interfaces */
|
||||
#include "struc-symbol.h"
|
||||
/*#include "aout/reloc.h"*/
|
||||
|
||||
#include "write.h"
|
||||
#include "expr.h"
|
||||
@ -417,11 +397,4 @@ void subsegs_begin ();
|
||||
|
||||
#include "listing.h"
|
||||
|
||||
/*
|
||||
* Local Variables:
|
||||
* comment-column: 0
|
||||
* fill-column: 131
|
||||
* End:
|
||||
*/
|
||||
|
||||
/* end of as.h */
|
||||
|
320
gas/write.c
320
gas/write.c
@ -175,11 +175,11 @@ write_object_file ()
|
||||
{
|
||||
#ifdef VMS
|
||||
/*
|
||||
* Under VAX/VMS, the linker (and PSECT specifications)
|
||||
* take care of correctly aligning the segments.
|
||||
* Doing the alignment here (on initialized data) can
|
||||
* mess up the calculation of global data PSECT sizes.
|
||||
*/
|
||||
* Under VAX/VMS, the linker (and PSECT specifications)
|
||||
* take care of correctly aligning the segments.
|
||||
* Doing the alignment here (on initialized data) can
|
||||
* mess up the calculation of global data PSECT sizes.
|
||||
*/
|
||||
#undef SUB_SEGMENT_ALIGN
|
||||
#define SUB_SEGMENT_ALIGN ((frchainP->frch_seg != SEG_DATA) ? 2 : 0)
|
||||
#endif /* VMS */
|
||||
@ -188,9 +188,9 @@ write_object_file ()
|
||||
/* frag_align will have left a new frag. */
|
||||
/* Use this last frag for an empty ".fill". */
|
||||
/*
|
||||
* For this segment ...
|
||||
* Create a last frag. Do not leave a "being filled in frag".
|
||||
*/
|
||||
* For this segment ...
|
||||
* Create a last frag. Do not leave a "being filled in frag".
|
||||
*/
|
||||
frag_wane (frag_now);
|
||||
frag_now->fr_fix = 0;
|
||||
know (frag_now->fr_next == NULL);
|
||||
@ -199,21 +199,21 @@ write_object_file ()
|
||||
} /* walk the frag chain */
|
||||
|
||||
/*
|
||||
* From now on, we don't care about sub-segments.
|
||||
* Build one frag chain for each segment. Linked thru fr_next.
|
||||
* We know that there is at least 1 text frchain & at least 1 data
|
||||
* frchain.
|
||||
*/
|
||||
* From now on, we don't care about sub-segments.
|
||||
* Build one frag chain for each segment. Linked thru fr_next.
|
||||
* We know that there is at least 1 text frchain & at least 1 data
|
||||
* frchain.
|
||||
*/
|
||||
|
||||
remove_subsegs (frchain_root, SEG_TEXT, &text_frag_root, &text_last_frag);
|
||||
remove_subsegs (data0_frchainP, SEG_DATA, &data_frag_root, &data_last_frag);
|
||||
remove_subsegs (bss0_frchainP, SEG_BSS, &bss_frag_root, &bss_last_frag);
|
||||
|
||||
/*
|
||||
* We have two segments. If user gave -R flag, then we must put the
|
||||
* data frags into the text segment. Do this before relaxing so
|
||||
* we know to take advantage of -R and make shorter addresses.
|
||||
*/
|
||||
* We have two segments. If user gave -R flag, then we must put the
|
||||
* data frags into the text segment. Do this before relaxing so
|
||||
* we know to take advantage of -R and make shorter addresses.
|
||||
*/
|
||||
#ifndef OBJ_AOUT
|
||||
if (flagseen['R'])
|
||||
{
|
||||
@ -238,20 +238,20 @@ write_object_file ()
|
||||
relax_segment (data_frag_root, SEG_DATA);
|
||||
relax_segment (bss_frag_root, SEG_BSS);
|
||||
/*
|
||||
* Now the addresses of frags are correct within the segment.
|
||||
*/
|
||||
* Now the addresses of frags are correct within the segment.
|
||||
*/
|
||||
|
||||
know (text_last_frag->fr_type == rs_fill && text_last_frag->fr_offset == 0);
|
||||
H_SET_TEXT_SIZE (&headers, text_last_frag->fr_address);
|
||||
text_last_frag->fr_address = H_GET_TEXT_SIZE (&headers);
|
||||
|
||||
/*
|
||||
* Join the 2 segments into 1 huge segment.
|
||||
* To do this, re-compute every rn_address in the SEG_DATA frags.
|
||||
* Then join the data frags after the text frags.
|
||||
*
|
||||
* Determine a_data [length of data segment].
|
||||
*/
|
||||
* Join the 2 segments into 1 huge segment.
|
||||
* To do this, re-compute every rn_address in the SEG_DATA frags.
|
||||
* Then join the data frags after the text frags.
|
||||
*
|
||||
* Determine a_data [length of data segment].
|
||||
*/
|
||||
if (data_frag_root)
|
||||
{
|
||||
register relax_addressT slide;
|
||||
@ -264,10 +264,10 @@ write_object_file ()
|
||||
#ifdef OBJ_BOUT
|
||||
#define RoundUp(N,S) (((N)+(S)-1)&-(S))
|
||||
/* For b.out: If the data section has a strict alignment
|
||||
requirement, its load address in the .o file will be
|
||||
rounded up from the size of the text section. These
|
||||
two values are *not* the same! Similarly for the bss
|
||||
section.... */
|
||||
requirement, its load address in the .o file will be
|
||||
rounded up from the size of the text section. These
|
||||
two values are *not* the same! Similarly for the bss
|
||||
section.... */
|
||||
slide = RoundUp (slide, 1 << section_alignment[SEG_DATA]);
|
||||
#endif
|
||||
|
||||
@ -320,26 +320,26 @@ write_object_file ()
|
||||
H_SET_BSS_SIZE (&headers, local_bss_counter);
|
||||
|
||||
/*
|
||||
*
|
||||
* Crawl the symbol chain.
|
||||
*
|
||||
* For each symbol whose value depends on a frag, take the address of
|
||||
* that frag and subsume it into the value of the symbol.
|
||||
* After this, there is just one way to lookup a symbol value.
|
||||
* Values are left in their final state for object file emission.
|
||||
* We adjust the values of 'L' local symbols, even if we do
|
||||
* not intend to emit them to the object file, because their values
|
||||
* are needed for fix-ups.
|
||||
*
|
||||
* Unless we saw a -L flag, remove all symbols that begin with 'L'
|
||||
* from the symbol chain. (They are still pointed to by the fixes.)
|
||||
*
|
||||
* Count the remaining symbols.
|
||||
* Assign a symbol number to each symbol.
|
||||
* Count the number of string-table chars we will emit.
|
||||
* Put this info into the headers as appropriate.
|
||||
*
|
||||
*/
|
||||
*
|
||||
* Crawl the symbol chain.
|
||||
*
|
||||
* For each symbol whose value depends on a frag, take the address of
|
||||
* that frag and subsume it into the value of the symbol.
|
||||
* After this, there is just one way to lookup a symbol value.
|
||||
* Values are left in their final state for object file emission.
|
||||
* We adjust the values of 'L' local symbols, even if we do
|
||||
* not intend to emit them to the object file, because their values
|
||||
* are needed for fix-ups.
|
||||
*
|
||||
* Unless we saw a -L flag, remove all symbols that begin with 'L'
|
||||
* from the symbol chain. (They are still pointed to by the fixes.)
|
||||
*
|
||||
* Count the remaining symbols.
|
||||
* Assign a symbol number to each symbol.
|
||||
* Count the number of string-table chars we will emit.
|
||||
* Put this info into the headers as appropriate.
|
||||
*
|
||||
*/
|
||||
know (zero_address_frag.fr_address == 0);
|
||||
string_byte_count = sizeof (string_byte_count);
|
||||
|
||||
@ -353,11 +353,11 @@ write_object_file ()
|
||||
H_SET_STRING_SIZE (&headers, string_byte_count);
|
||||
|
||||
/*
|
||||
* Addresses of frags now reflect addresses we use in the object file.
|
||||
* Symbol values are correct.
|
||||
* Scan the frags, converting any ".org"s and ".align"s to ".fill"s.
|
||||
* Also converting any machine-dependent frags using md_convert_frag();
|
||||
*/
|
||||
* Addresses of frags now reflect addresses we use in the object file.
|
||||
* Symbol values are correct.
|
||||
* Scan the frags, converting any ".org"s and ".align"s to ".fill"s.
|
||||
* Also converting any machine-dependent frags using md_convert_frag();
|
||||
*/
|
||||
subseg_change (SEG_TEXT, 0);
|
||||
|
||||
for (fragP = text_frag_root; fragP; fragP = fragP->fr_next)
|
||||
@ -387,10 +387,10 @@ write_object_file ()
|
||||
know ((fragP->fr_next == NULL) || ((fragP->fr_next->fr_address - fragP->fr_address) == fragP->fr_fix));
|
||||
|
||||
/*
|
||||
* After md_convert_frag, we make the frag into a ".space 0".
|
||||
* Md_convert_frag() should set up any fixSs and constants
|
||||
* required.
|
||||
*/
|
||||
* After md_convert_frag, we make the frag into a ".space 0".
|
||||
* Md_convert_frag() should set up any fixSs and constants
|
||||
* required.
|
||||
*/
|
||||
frag_wane (fragP);
|
||||
break;
|
||||
|
||||
@ -691,10 +691,8 @@ relax_segment (segment_frag_root, segment)
|
||||
/* In case md_estimate_size_before_relax() wants to make fixSs. */
|
||||
subseg_change (segment, 0);
|
||||
|
||||
/*
|
||||
* For each frag in segment: count and store (a 1st guess of)
|
||||
* fr_address.
|
||||
*/
|
||||
/* For each frag in segment: count and store (a 1st guess of)
|
||||
fr_address. */
|
||||
address = 0;
|
||||
for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next)
|
||||
{
|
||||
@ -712,10 +710,7 @@ relax_segment (segment_frag_root, segment)
|
||||
break;
|
||||
|
||||
case rs_org:
|
||||
/*
|
||||
* Assume .org is nugatory. It will grow with 1st
|
||||
* relax.
|
||||
*/
|
||||
/* Assume .org is nugatory. It will grow with 1st relax. */
|
||||
break;
|
||||
|
||||
case rs_machine_dependent:
|
||||
@ -734,39 +729,34 @@ relax_segment (segment_frag_root, segment)
|
||||
} /* switch(fr_type) */
|
||||
} /* for each frag in the segment */
|
||||
|
||||
/*
|
||||
* Do relax().
|
||||
*/
|
||||
/* Do relax(). */
|
||||
{
|
||||
register long stretch; /* May be any size, 0 or negative. */
|
||||
long stretch; /* May be any size, 0 or negative. */
|
||||
/* Cumulative number of addresses we have */
|
||||
/* relaxed this pass. */
|
||||
/* We may have relaxed more than one address. */
|
||||
register long stretched; /* Have we stretched on this pass? */
|
||||
/* This is 'cuz stretch may be zero, when,
|
||||
in fact some piece of code grew, and
|
||||
another shrank. If a branch instruction
|
||||
doesn't fit anymore, we could be scrod */
|
||||
long stretched; /* Have we stretched on this pass? */
|
||||
/* This is 'cuz stretch may be zero, when, in fact some piece of code
|
||||
grew, and another shrank. If a branch instruction doesn't fit anymore,
|
||||
we could be scrod. */
|
||||
|
||||
do
|
||||
{
|
||||
stretch = stretched = 0;
|
||||
for (fragP = segment_frag_root; fragP; fragP = fragP->fr_next)
|
||||
{
|
||||
register long growth = 0;
|
||||
register unsigned long was_address;
|
||||
/* register long var; */
|
||||
register long offset;
|
||||
register symbolS *symbolP;
|
||||
register long target;
|
||||
register long after;
|
||||
register long aim;
|
||||
long growth = 0;
|
||||
unsigned long was_address;
|
||||
long offset;
|
||||
symbolS *symbolP;
|
||||
long target;
|
||||
long after;
|
||||
long aim;
|
||||
|
||||
was_address = fragP->fr_address;
|
||||
address = fragP->fr_address += stretch;
|
||||
symbolP = fragP->fr_symbol;
|
||||
offset = fragP->fr_offset;
|
||||
/* var = fragP->fr_var; */
|
||||
|
||||
switch (fragP->fr_type)
|
||||
{
|
||||
@ -776,9 +766,9 @@ relax_segment (segment_frag_root, segment)
|
||||
|
||||
#ifndef WORKING_DOT_WORD
|
||||
/* JF: This is RMS's idea. I do *NOT* want to be blamed
|
||||
for it I do not want to write it. I do not want to have
|
||||
anything to do with it. This is not the proper way to
|
||||
implement this misfeature. */
|
||||
for it I do not want to write it. I do not want to have
|
||||
anything to do with it. This is not the proper way to
|
||||
implement this misfeature. */
|
||||
case rs_broken_word:
|
||||
{
|
||||
struct broken_word *lie;
|
||||
@ -787,9 +777,9 @@ relax_segment (segment_frag_root, segment)
|
||||
extern int md_long_jump_size;
|
||||
|
||||
/* Yes this is ugly (storing the broken_word pointer
|
||||
in the symbol slot). Still, this whole chunk of
|
||||
code is ugly, and I don't feel like doing anything
|
||||
about it. Think of it as stubbornness in action */
|
||||
in the symbol slot). Still, this whole chunk of
|
||||
code is ugly, and I don't feel like doing anything
|
||||
about it. Think of it as stubbornness in action. */
|
||||
growth = 0;
|
||||
for (lie = (struct broken_word *) (fragP->fr_symbol);
|
||||
lie && lie->dispfrag == fragP;
|
||||
@ -799,8 +789,11 @@ relax_segment (segment_frag_root, segment)
|
||||
if (lie->added)
|
||||
continue;
|
||||
|
||||
offset = lie->add->sy_frag->fr_address + S_GET_VALUE (lie->add) + lie->addnum -
|
||||
(lie->sub->sy_frag->fr_address + S_GET_VALUE (lie->sub));
|
||||
offset = (lie->add->sy_frag->fr_address
|
||||
+ S_GET_VALUE (lie->add)
|
||||
+ lie->addnum
|
||||
- (lie->sub->sy_frag->fr_address
|
||||
+ S_GET_VALUE (lie->sub)));
|
||||
if (offset <= -32768 || offset >= 32767)
|
||||
{
|
||||
if (flagseen['K'])
|
||||
@ -814,7 +807,9 @@ relax_segment (segment_frag_root, segment)
|
||||
fragP->fr_subtype++;
|
||||
growth += md_short_jump_size;
|
||||
}
|
||||
for (untruth = lie->next_broken_word; untruth && untruth->dispfrag == lie->dispfrag; untruth = untruth->next_broken_word)
|
||||
for (untruth = lie->next_broken_word;
|
||||
untruth && untruth->dispfrag == lie->dispfrag;
|
||||
untruth = untruth->next_broken_word)
|
||||
if ((untruth->add->sy_frag == lie->add->sy_frag)
|
||||
&& S_GET_VALUE (untruth->add) == S_GET_VALUE (lie->add))
|
||||
{
|
||||
@ -829,8 +824,8 @@ relax_segment (segment_frag_root, segment)
|
||||
} /* case rs_broken_word */
|
||||
#endif
|
||||
case rs_align:
|
||||
growth = relax_align ((relax_addressT) (address + fragP->fr_fix), offset)
|
||||
- relax_align ((relax_addressT) (was_address + fragP->fr_fix), offset);
|
||||
growth = (relax_align ((relax_addressT) (address + fragP->fr_fix), offset)
|
||||
- relax_align ((relax_addressT) (was_address + fragP->fr_fix), offset));
|
||||
break;
|
||||
|
||||
case rs_org:
|
||||
@ -851,21 +846,21 @@ relax_segment (segment_frag_root, segment)
|
||||
know (fragP->fr_next);
|
||||
after = fragP->fr_next->fr_address;
|
||||
growth = ((target - after) > 0) ? (target - after) : 0;
|
||||
/* Growth may be -ve, but variable part */
|
||||
/* of frag cannot have < 0 chars. */
|
||||
/* That is, we can't .org backwards. */
|
||||
/* Growth may be -ve, but variable part of frag cannot have
|
||||
fewer than 0 chars. That is, we can't .org backwards. */
|
||||
|
||||
growth -= stretch; /* This is an absolute growth factor */
|
||||
break;
|
||||
|
||||
case rs_machine_dependent:
|
||||
{
|
||||
register const relax_typeS *this_type;
|
||||
register const relax_typeS *start_type;
|
||||
register relax_substateT next_state;
|
||||
register relax_substateT this_state;
|
||||
const relax_typeS *this_type;
|
||||
const relax_typeS *start_type;
|
||||
relax_substateT next_state;
|
||||
relax_substateT this_state;
|
||||
|
||||
start_type = this_type = md_relax_table + (this_state = fragP->fr_subtype);
|
||||
this_state = fragP->fr_subtype;
|
||||
start_type = this_type = md_relax_table + this_state;
|
||||
target = offset;
|
||||
|
||||
if (symbolP)
|
||||
@ -880,47 +875,45 @@ relax_segment (segment_frag_root, segment)
|
||||
+ symbolP->sy_frag->fr_address;
|
||||
|
||||
/* If frag has yet to be reached on this pass,
|
||||
assume it will move by STRETCH just as we did.
|
||||
If this is not so, it will be because some frag
|
||||
between grows, and that will force another pass. */
|
||||
assume it will move by STRETCH just as we did.
|
||||
If this is not so, it will be because some frag
|
||||
between grows, and that will force another pass. */
|
||||
|
||||
/* JF was just address */
|
||||
/* JF also added is_dnrange hack */
|
||||
/* There's gotta be a better/faster/etc way
|
||||
to do this. . . */
|
||||
to do this. . . */
|
||||
/* gnu@cygnus.com: I changed this from > to >=
|
||||
because I ran into a zero-length frag (fr_fix=0)
|
||||
which was created when the obstack needed a new
|
||||
chunk JUST AFTER the opcode of a branch. Since
|
||||
fr_fix is zero, fr_address of this frag is the same
|
||||
as fr_address of the next frag. This
|
||||
zero-length frag was variable and jumped to .+2
|
||||
(in the next frag), but since the > comparison
|
||||
below failed (the two were =, not >), "stretch"
|
||||
was not added to the target. Stretch was 178, so
|
||||
the offset appeared to be .-176 instead, which did
|
||||
not fit into a byte branch, so the assembler
|
||||
relaxed the branch to a word. This didn't compare
|
||||
with what happened when the same source file was
|
||||
assembled on other machines, which is how I found it.
|
||||
You might want to think about what other places have
|
||||
trouble with zero length frags... */
|
||||
because I ran into a zero-length frag (fr_fix=0)
|
||||
which was created when the obstack needed a new
|
||||
chunk JUST AFTER the opcode of a branch. Since
|
||||
fr_fix is zero, fr_address of this frag is the same
|
||||
as fr_address of the next frag. This
|
||||
zero-length frag was variable and jumped to .+2
|
||||
(in the next frag), but since the > comparison
|
||||
below failed (the two were =, not >), "stretch"
|
||||
was not added to the target. Stretch was 178, so
|
||||
the offset appeared to be .-176 instead, which did
|
||||
not fit into a byte branch, so the assembler
|
||||
relaxed the branch to a word. This didn't compare
|
||||
with what happened when the same source file was
|
||||
assembled on other machines, which is how I found it.
|
||||
You might want to think about what other places have
|
||||
trouble with zero length frags... */
|
||||
|
||||
if (symbolP->sy_frag->fr_address >= was_address
|
||||
&& is_dnrange (fragP, symbolP->sy_frag))
|
||||
{
|
||||
target += stretch;
|
||||
} /* */
|
||||
|
||||
}
|
||||
} /* if there's a symbol attached */
|
||||
|
||||
aim = target - address - fragP->fr_fix;
|
||||
/* The displacement is affected by the instruction size
|
||||
* for the 32k architecture. I think we ought to be able
|
||||
* to add fragP->fr_pcrel_adjust in all cases (it should be
|
||||
* zero if not used), but just in case it breaks something
|
||||
* else we'll put this inside #ifdef NS32K ... #endif
|
||||
*/
|
||||
for the 32k architecture. I think we ought to be able
|
||||
to add fragP->fr_pcrel_adjust in all cases (it should be
|
||||
zero if not used), but just in case it breaks something
|
||||
else we'll put this inside #ifdef NS32K ... #endif */
|
||||
#ifdef TC_NS32K
|
||||
aim += fragP->fr_pcrel_adjust;
|
||||
#endif /* TC_NS32K */
|
||||
@ -929,52 +922,39 @@ relax_segment (segment_frag_root, segment)
|
||||
{
|
||||
/* Look backwards. */
|
||||
for (next_state = this_type->rlx_more; next_state;)
|
||||
{
|
||||
if (aim >= this_type->rlx_backward)
|
||||
{
|
||||
next_state = 0;
|
||||
}
|
||||
else
|
||||
{ /* Grow to next state. */
|
||||
this_type = md_relax_table + (this_state = next_state);
|
||||
next_state = this_type->rlx_more;
|
||||
}
|
||||
}
|
||||
if (aim >= this_type->rlx_backward)
|
||||
next_state = 0;
|
||||
else
|
||||
{
|
||||
/* Grow to next state. */
|
||||
this_state = next_state;
|
||||
this_type = md_relax_table + this_state;
|
||||
next_state = this_type->rlx_more;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef DONTDEF
|
||||
/* JF these next few lines of code are for the mc68020 which can't handle short
|
||||
offsets of zero in branch instructions. What a kludge! */
|
||||
if (aim == 0 && this_state == (1 << 2 + 0))
|
||||
{ /* FOO hard encoded from m.c */
|
||||
aim = this_type->rlx_forward + 1; /* Force relaxation into word mode */
|
||||
}
|
||||
#endif
|
||||
#ifdef M68K_AIM_KLUDGE
|
||||
M68K_AIM_KLUDGE (aim, this_state, this_type);
|
||||
#endif
|
||||
/* JF end of 68020 code */
|
||||
/* Look forwards. */
|
||||
for (next_state = this_type->rlx_more; next_state;)
|
||||
{
|
||||
if (aim <= this_type->rlx_forward)
|
||||
{
|
||||
next_state = 0;
|
||||
}
|
||||
else
|
||||
{ /* Grow to next state. */
|
||||
this_type = md_relax_table + (this_state = next_state);
|
||||
next_state = this_type->rlx_more;
|
||||
}
|
||||
}
|
||||
if (aim <= this_type->rlx_forward)
|
||||
next_state = 0;
|
||||
else
|
||||
{
|
||||
/* Grow to next state. */
|
||||
this_state = next_state;
|
||||
this_type = md_relax_table + this_state;
|
||||
next_state = this_type->rlx_more;
|
||||
}
|
||||
}
|
||||
|
||||
if ((growth = this_type->rlx_length - start_type->rlx_length) != 0)
|
||||
growth = this_type->rlx_length - start_type->rlx_length;
|
||||
if (growth != 0)
|
||||
fragP->fr_subtype = this_state;
|
||||
|
||||
break;
|
||||
} /* case rs_machine_dependent */
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
BAD_CASE (fragP->fr_type);
|
||||
@ -991,13 +971,13 @@ relax_segment (segment_frag_root, segment)
|
||||
} /* do_relax */
|
||||
|
||||
/*
|
||||
* We now have valid fr_address'es for each frag.
|
||||
*/
|
||||
* We now have valid fr_address'es for each frag.
|
||||
*/
|
||||
|
||||
/*
|
||||
* All fr_address's are correct, relative to their own segment.
|
||||
* We have made all the fixS we will ever make.
|
||||
*/
|
||||
* All fr_address's are correct, relative to their own segment.
|
||||
* We have made all the fixS we will ever make.
|
||||
*/
|
||||
} /* relax_segment() */
|
||||
|
||||
/*
|
||||
|
@ -40,17 +40,8 @@
|
||||
malloc()
|
||||
|
||||
*/
|
||||
#include <stdio.h>
|
||||
|
||||
#if __STDC__ == 1
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
#ifdef USG
|
||||
#include <malloc.h>
|
||||
#else
|
||||
char *malloc ();
|
||||
#endif /* USG */
|
||||
#endif /* not __STDC__ */
|
||||
#include "as.h"
|
||||
|
||||
#define error as_fatal
|
||||
|
||||
@ -59,13 +50,21 @@ xmalloc (n)
|
||||
long n;
|
||||
{
|
||||
char *retval;
|
||||
void error ();
|
||||
|
||||
if ((retval = malloc ((unsigned) n)) == NULL)
|
||||
{
|
||||
error ("virtual memory exceeded");
|
||||
}
|
||||
retval = malloc ((unsigned) n);
|
||||
if (retval == NULL)
|
||||
error ("virtual memory exceeded");
|
||||
return (retval);
|
||||
}
|
||||
|
||||
char *
|
||||
xrealloc (ptr, n)
|
||||
register char *ptr;
|
||||
long n;
|
||||
{
|
||||
ptr = realloc (ptr, (unsigned) n);
|
||||
if (ptr == 0)
|
||||
error ("virtual memory exceeded");
|
||||
return (ptr);
|
||||
}
|
||||
/* end of xmalloc.c */
|
||||
|
Loading…
Reference in New Issue
Block a user