* subsegs.c (subseg_change): allow and handle a change into SEG_BSS.

* 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
This commit is contained in:
Steve Chamberlain 1992-06-09 14:57:42 +00:00
parent 90d4945716
commit a1765cf0fe
2 changed files with 17 additions and 7 deletions

View File

@ -1,3 +1,11 @@
Tue Jun 9 07:50:46 1992 Steve Chamberlain (sac@thepub.cygnus.com)
* 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 May 28 11:20:27 1992 Jim Wilson (wilson@sphagnum.cygnus.com) Thu May 28 11:20:27 1992 Jim Wilson (wilson@sphagnum.cygnus.com)
* tc-sparc.c: Use new ARCHITECTURES_CONFLICT_P macro. Mention new * tc-sparc.c: Use new ARCHITECTURES_CONFLICT_P macro. Mention new

View File

@ -1708,7 +1708,7 @@ char *instring;
&& !subs(opP->con1) && !subs(opP->con1)
&& seg(opP->con1) == SEG_TEXT && seg(opP->con1) == SEG_TEXT
&& now_seg == SEG_TEXT && now_seg == SEG_TEXT
&& cpu_of_arch(current_architecture) < m68020 && cpu_of_arch(current_architecture) >= m68020
&& !flagseen['S'] && !flagseen['S']
&& !strchr("~%&$?", s[0])) { && !strchr("~%&$?", s[0])) {
tmpreg=0x3A; /* 7.2 */ tmpreg=0x3A; /* 7.2 */
@ -3203,8 +3203,8 @@ segT segment;
} else { } else {
fragP->fr_opcode[1] = 0x06; /* branch offset = 6 */ fragP->fr_opcode[1] = 0x06; /* branch offset = 6 */
/* JF: these were fr_opcode[2,3] */ /* JF: these were fr_opcode[2,3] */
buffer_address[2] = 0x4e; /* put in jmp long (0x4ef9) */ buffer_address[0] = 0x4e; /* put in jmp long (0x4ef9) */
buffer_address[3] = 0xf9; buffer_address[1] = 0xf9;
fragP->fr_fix += 2; /* account for jmp instruction */ fragP->fr_fix += 2; /* account for jmp instruction */
subseg_change(SEG_TEXT,0); subseg_change(SEG_TEXT,0);
fix_new(fragP, fragP->fr_fix, 4, fragP->fr_symbol, 0, fix_new(fragP, fragP->fr_fix, 4, fragP->fr_symbol, 0,
@ -3598,10 +3598,12 @@ static void s_data2() {
demand_empty_rest_of_line(); demand_empty_rest_of_line();
} /* s_data2() */ } /* s_data2() */
static void s_bss() { static void s_bss()
/* We don't support putting frags in the BSS segment, but we {
can put them into initialized data for now... */ /* We don't support putting frags in the BSS segment, we fake it
subseg_new(SEG_DATA,255); /* FIXME-SOON */ by marking in_bss, then looking at s_skip for clues */
subseg_new(SEG_BSS, 0);
demand_empty_rest_of_line(); demand_empty_rest_of_line();
} /* s_bss() */ } /* s_bss() */