PIC enhancements just checked in (based on work of Paul Kranenburg and Eric

Youngdale).

New debugging code for .gdbinit.  "this file generated..." msg in config.h.
This commit is contained in:
Ken Raeburn 1994-09-13 02:20:55 +00:00
parent f0b37b4ad6
commit c570d36139

View File

@ -1,3 +1,67 @@
Mon Sep 12 20:56:38 1994 Ken Raeburn (raeburn@kr-laptop.cygnus.com)
* .gdbinit (pe, ps): Define new commands.
* symbols.c (indent_level): New static variable.
(indent, print_expr_1, print_symbol_value_1, print_symbol_value,
print_expr): New functions.
* Makefile.in (config-stamp): Add a "this file generated by make"
message to config.h.
PIC implementation for i386-linux, based on code from Eric
Youngdale and Paul Kranenburg, with some work of my own:
* write.c (fixup_segment): Test TC_RELOC_RTSYM_LOC_FIXUP on fixup
before processing same-section pcrel relocations.
(TC_RELOC_RTSYM_LOC_FIXUP): Default to 1.
* expr.c (make_expr_symbol): If operator is O_symbol and
X_add_number is zero, just return the symbol. If operator is
O_constant, resolve the symbol's value before returning.
(operand): Permit use of "[]" for grouping.
(clean_up_expression): For difference of two symbols in the same
frag, add the difference of their offsets into X_add_number.
(expr): Reduce difference of two symbols in same frag to their
difference.
* config/tc-i386.c (TC_RELOC): New macro.
(struct _i386_insn): New field disp_reloc.
(GOT_symbol): New variable.
(operand_special_chars): Added square-brackets and at-sign.
(reloc) [BFD_ASSEMBLER]: Added new argument OTHER; if it is not
NO_RELOC, just return it.
(reloc) [! BFD_ASSEMBLER]: Add third argument to dummy macro.
(BFD_RELOC_386_PLT32, _GOT32, _GOTOFF) [! BFD_ASSEMBLER]: More
dummy macros.
(tc_i386_fix_adjustable): New function. Returns zero if symbol in
fixup is not local, to prevent relocations against externals from
being dropped.
(md_assemble): Initialize disp_reloc field to NO_RELOC. Pass
disp_reloc field to reloc() function, and use TC_RELOC to generate
value to pass to fix_new_exp.
(md_assemble): Change 32-bit reloc against GOT_symbol into a GOTPC
reloc.
(i386_operand): Initialize disp_reloc field to NO_RELOC. Handle
@GOTOFF, @PLT, @GOT operands. For GOTOFF relocations with local
symbols, force generation of the section symbol.
(md_estimate_size_before_relax): If GOT_symbol exists, decide
we're generating PIC code, and convert relocations against
undefined symbols from PCREL to PLT32.
(md_apply_fix_1) [OBJ_ELF]: Fix up values for dynamic-linking
relocs.
(md_undefined_symbol): Notice GLOBAL_OFFSET_TABLE_NAME and set
and return GOT_symbol if it matches.
(F, MAP): Move macro definitions outside function.
(tc_gen_reloc): Only switch on size and pcrel if code wasn't
already supplied as PLT32. GOT32, GOTOFF, or GOTPC. Convert
BFD_RELOC_32 using GOT_symbol into GOTPC.
* config/tc-i386.h (TC_RELOC, tc_fix_adjustable,
TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): New
macros.
(NEED_FX_R_TYPE): Define.
(LOCAL_LABEL): Accept ".X" prefix too.
(GLOBAL_OFFSET_TABLE_NAME): Default to "_GLOBAL_OFFSET_TABLE_".
Mon Sep 12 17:51:39 1994 Ian Lance Taylor (ian@sanguine.cygnus.com)
* config/obj-elf.c (obj_elf_type): Rewrite to accept syntax