* as.c: Include sb.h and macro.h.
(max_macro_next): New global variable.
(main): Call macro_init.
(macro_expr): New static function.
* as.h (max_macro_nest): Declare.
* read.c (line_label): Rename from mri_line_label. Change all
uses.
(potable): Add exitm, irp, irpc, macro, mexit, rept.
(read_a_source_file): Always clear line_label at the start of a
line, not just when flag_mri or LABELS_WITHOUT_COLONS. Fixup
MRI/LABELS_WITHOUT_COLONS handling. In MRI mode, permit label:
equ val. Set line_label when calling colon. In MRI mode, a
leading '.' does not imply a pseudo-op. Check for macro expansion
before calling md_assemble.
(s_irp): New function.
(get_line_sb): New static function.
(s_macro): New function.
(s_mexit): New function.
(s_rept): New function.
* read.h (line_label): Rename from mri_line_label.
(s_irp, s_rept): Declare.
(s_macro, s_mexit): Declare.
* input-scrub.c: Include sb.h.
(sb_index, from_sb): New static variables.
(macro_nest): New static variable.
(struct input_save): Add sb_index and from_sb fields. Change
next_saved_file field to be struct input_save *.
(next_saved_file): Changed to be struct input_save *.
(input_scrub_push): Change to return type struct input_save *.
Save sb_index and from_sb.
(input_scrub_pop): Change parameter type to struct input_save *.
Restore sb_index and from_sb.
(input_scrub_include_sb): New function.
(input_scrub_next_buffer): Handle reading from from_sb.
(bump_line_counters): Only increment lines if not using from_sb.
* config/tc-m68k.c (opt_table): Add nest.
(opt_nest): New static function.
* gasp.c: Include sb.h and macro.h. Move all sb related functions
and definitions to sb.h and sb.c. Move all macro related
functions and definitions to macro.h and macro.c.
* sb.h, sb.c: New files, extracted from gasp.c.
* macro.h, macro.c: Likewise.
* Makefile.in (OBJS): Add sb.o and macro.o
(GASPOBJS): Define.
(gasp.new): Depend upon $(GASPOBJS). Use $(GASPOBJS) to link.
(TARG_CPU_DEP_m68k): Depend upon subsegs.h.
(gasp.o): Depend upon sb.h and macro.h.
(sb.o): New target.
(macro.o): New target.
(as.o): Depend upon sb.h and macro.h.
(input-scrub.o): Depend upon sb.h.
(read.o): Depend upon sb.h and macro.h.
undefined weak reference, change the type to undefined.
* elflink.h (elf_link_add_archive_symbols): Don't record an
undefined weak reference as defined, in case it turns into a real
undefined reference later in the same archive.
Modified to generate archives and objects rather than .s files.
* dlltool.c (run) New function.
(gen_exp_file, gen_lib_file): Use run.
(workout_prefix): New.
(usage): Document new options.
(main): Parse new options.
* gdb.base/callfuncs.c (main): Use struct_val1 to inhibit xlc
from optimizing it away.
* gdb.base/callfuncs.exp: Remove rs6000-*-* xfails for
"call inferior func with struct".
linecount before printing it.
(process_file): In MRI mode, lines beginning with '*' or '!' are
comments.
(do_reg): In MRI mode, don't require parentheses.
(do_include): In MRI mode, don't requires quotes. If the file can
not be found in the include path, try opening it in the current
directory. Print the file name correctly in the error message.
(chartype_init): In MRI mode, set FIRSTBIT for '.'.
(main): Set comment_char to ';' when entering MRI mode.
(m68k_ip): Pass 64 rather than -1 to add_Fix in 'B' 'B' case.
(md_pcrel_from): If fx_pcrel_adjust is 64, use -1 instead.
You can't portably store negative numbers in a char.
* emultempl/{armpe.sc, i386pe.sc}: Deleted.
* emultempl/pe.sc: New file performs generic PE support and sorts
archive members.
* emulparams/{armpe.sh,i386pe.sh}: Use new file.
* scripttempl/{armpe.sc, i386pe.sc}: Deleted
* scripttempl/pe.sc: New.
* Makefile.in: Use new files.
b
* sunos.c (SPARC_PLT_PIC_WORD0): Define.
(SPARC_PLT_PIC_WORD1, SPARC_PLT_PIC_WORD2): Define.
(struct sunos_link_hash_entry): Add got_offset and plt_offset
fields.
(struct sunos_link_hash_table): Add dynamic_sections_created and
dynamic_sections_needed fields.
(sunos_link_hash_newfunc): Initialize new fields.
(sunos_link_hash_table_create): Initialize new fields.
(sunos_create_dynamic_sections): New static function, broken out
of sunos_add_dynamic_symbols.
(sunos_add_dynamic_symbols): Call sunos_create_dynamic_sections.
(sunos_add_one_symbol): Call sunos_create_dynamic_sections.
(bfd_sunos_size_dynamic_sections): Call sunos_scan_relocs before
checking whether we need to set up the dynamic link information.
Define __GLOBAL_OFFSET_TABLE if anything referred to it.
(sunos_scan_std_relocs): Call sunos_create_dynamic_sections. Use
plt_offset field; only put symbol in .plt if it is not defined by
a regular object.
(sunos_scan_ext_relocs): Likewise. Handle base relative relocs.
(sunos_scan_dynamic_symbol): Store dynobj in local variable.
(sunos_write_dynamic_symbol): Check plt_offset rather than
checking whether symbol is in .plt section. If symbol is defined
in a regular object file, use SPARC_PLT_PIC_WORD[012], and don't
add a JMP_TBL reloc.
(sunos_check_dynamic_reloc): Add contents and relocationp fields.
If plt_offset is set, redirect relocation to PLT. If this is a
base relative reloc, redirect relocation to GOT. Check
dynamic_sections_needed field rather than whether dynobj is set.
(sunos_finish_dynamic_link): Check dynamic_sections_needed field
rather than whether dynobj is set. Don't die if .need and .rules
sections were not created.
* aoutx.h (howto_table_ext): Mark PC10, PC22, and JMP_TBL entries
PC relative. Mark PC10 complain_overflow_dont. Mark PC22 and
JMP_TBL complain_overflow_signed.
(NAME(aout,final_link)): If info->shared is set, set DYNAMIC.
(aout_link_input_section_std): Call check_dynamic_reloc for all
relocs. Pass contents and &relocation. Don't warn about an
undefined symbol until check_dynamic_reloc has been called. Don't
warn about an undefined symbol for a base relative reloc.
(aout_link_input_section_ext): Likewise. For a base relative
reloc, always treat r_index as an index into the symbol table.
* libaout.h (struct aout_backend_data): Add contents and
relocation argument to check_dynamic_reloc entry point.
(struct aoutdata): Add local_got_offsets field.
* scripttempl/armpe.sc: Always start code at 0x401000, even
if -r.
* ldwrite.c (strdup): New extern declaration.
* ldgram.y (atype): New rule to clarify type parsing.
* ldlang.c (init_os): Remove commented out code.
(lang_size_sections): Set SEC_ALLOC and SEC_LOAD bits
unless told not to by the link script.
rule that generates a .ci file for each .o file and remove
explicit .c.o rules except for callfuncs.o.
* gdb.c++/Makefile.in: Add .cc.o transformation rule that
generates a .ci file for each .o file and remove explicit
.cc.o rules.
(clean): Remove *.tmp *.ci files.
(EXECUTABLES): Remove templ-info.exp.
* gdb.base/compiler.c: New file.
* gdb.c++/compiler.cc: New file
* gdb.base/scope.exp: Source gdb.base/scope.ci.
Change rs6000-*-* xfail for
"print 'scope0.c'::filelocal_ro" and
"print 'scope1.c'::filelocal" and
"print 'scope1.c'::filelocal_bss" and
"print 'scope1.c'::filelocal_ro" and
"print 'scope1.c'::foo::funclocal" and
"print 'scope1.c'::foo::funclocal_ro" and
"print 'scope1.c'::bar::funclocal" and
"print 'scope0.c'::filelocal_ro" and
"print 'scope1.c'::filelocal at foo" and
"print 'scope1.c'::filelocal_bss at foo" and
"print 'scope1.c'::filelocal_ro at foo" and
"print 'scope1.c'::foo::funclocal at foo" and
"print 'scope1.c'::foo::funclocal_bss at foo" and
"print 'scope1.c'::foo::funclocal_ro at foo" and
"print 'scope1.c'::bar::funclocal at foo" and
"print 'scope0.c'::filelocal_ro" and
"print 'scope1.c'::filelocal" and
"print 'scope1.c'::filelocal_bss" and
"print 'scope1.c'::filelocal_ro" and
"print 'scope1.c'::foo::funclocal" and
"print 'scope1.c'::foo::funclocal_bss" and
"print 'scope1.c'::foo::funclocal_ro" and
"print 'scope1.c'::bar::funclocal" and
"print 'scope1.c'::bar::funclocal_bss"
to only be xfail'd when not compiled with gcc.
Add rs6000-*-* xfail for
"print 'scope0.c'::filelocal_bss before run"
when compiled with gcc.
(test_at_main): Add rs6000-*-* xfail for
"print filelocal_ro in test_at_main"
when compiled with gcc.
* gdb.base/ptype.exp: Source gdb.base/ptype.ci.
Add rs6000-*-aix* xfail for
"whatis unnamed typedef'd enum (compiler bug in IBM's xlc)" and
"ptype t_char_array", not compiled with gcc.
* gdb.base/list.exp (test_list_function): Add rs6000-*-*
xfail for "list foo (in include file)" when gcc compiled.
* gdb.base/funcargs.exp: Source gdb.base/funcargs.ci
(integral_args): Add rs6000-*-* xfail for
"run to call0a" if not compiled with gcc.
(unsigned_integral_args): Add rs6000-*-* xfail for
"run to call1a" if not compiled with gcc.
(float_and_integral_args): Add rs6000-*-* xfail for
"run to call2a" if not compiled with gcc and for
"continue to call2b" for any compiler.
Add rs6000-*-* xfail to
"print f1 after run to call2a" for gcc compiled.
(discard_and_shuffle): Add rs6000-*-* xfail for
"run to call6a".
(shuffle_round_robin): Add rs6000-*-* xfail for
"backtrace from call7a" if not compiled with gcc.
Add rs6000-*-* xfail for
"backtrace from call7b" if compiled with gcc.
(call_after_alloca): Add rs6000-*-* xfail for
"print c in call_after_alloca" and
"print s in call_after_alloca" and
"backtrace from call_after_alloca_subr"
if not compiled with gcc.
(localvars_in_indirect_call): Add rs6000-*-* xfail for
"print c in localvars_in_indirect_call" and
"print c in localvars_in_indirect_call" and
"backtrace in indirectly called function" and
"stepping into indirectly called function"
if not compiled with gcc.
(localvars_after_alloca): Add rs6000-*-* xfail for
"print c after runto localvars_after_alloca" and
"print s after runto localvars_after_alloca" and
"print i after runto localvars_after_alloca" and
"print l after runto localvars_after_alloca"
for all compilers.
* gdb.base/whatis.exp: Source gdb.base/whatis.ci rather
than whatis-info.exp.
* gdb.base/opaque.exp: Source gdb.base/opaque0.ci rather
than opaque-info.exp.
Setup rs6000-*-* xfail for
"ptype on opaque struct pointer (statically)" and
"ptype on opaque struct pointer (dynamically)" when
not compiled with gcc.
* gdb.base/callfuncs.exp: Source gdb.base/callfuncs.ci
rather than callf-info.exp.
(do_function_calls): Add clear_xfail for rs6000-*-* for
"p t_float_values2(3.14159,float_val2)". Seems to work
fine there, both with xlc and gcc. Need to find out what
it is doing right and fix other platforms.
* gdb.base/callfuncs.exp: Add rs6000-*-* xfail for
"call inferior func with struct - returns int",
"call inferior func with struct - returns long",
"call inferior func with struct - returns float",
"call inferior func with struct - returns double",
"call inferior func with struct - returns char *",
but only if not gcc compiled (presumes xlc compiled).
Change rs6000-*-* xfails for
"call inferior func with struct - returns char" and
" call inferior func with struct - returns short" to only
xfail if not using gcc.
(clean mostlyclean): Remove *.ci and *.tmp files.
* gdb.c++/templates.exp: Source gdb.c++/templates.ci rather
than templ-info.exp.
* gdb.base/langs.exp: Source gdb.base/langs.ci.
Add rs6000-*-* xfail for "up to foo in langs.exp"
"up to cppsub_ in langs.exp" and "up to fsub in langs.exp"
when not gcc compiled.
(CASE, EXTERN, START): New tokens.
(mri_script_command): Handle CASE, EXTERN, INCLUDE, START.
(casesymlist): New nonterminal.
(extern_name_list): New nonterminal.
* ldlex.l: Accept lower case trailing base specifiers. Don't
ignore the first digit when the base is a suffix. Accept many
EXPRESSION state tokens in MRI state. Support MRI continuation
lines and MRI semicolon comments. Accept all MRI keywords in
lower case. Add CASE, EXTERN, and START MRI keywords.
* gas/mri/if.d, gas/mri/if.s: New test.
* gas/mri/repeat.d, gas/mri/repeat.s: New test.
* gas/mri/while.d, gas/mri/while.s: New test.
* gas/mri/mri.exp: Run the new tests.