This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
[PATCH] Fix s390{,x} ld-size-1 failures (take 2)
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Alan Modra <amodra at bigpond dot net dot au>, Martin Schwidefsky <schwidefsky at de dot ibm dot com>
- Cc: binutils at sources dot redhat dot com
- Date: Wed, 5 May 2004 07:05:30 +0200
- Subject: [PATCH] Fix s390{,x} ld-size-1 failures (take 2)
- References: <20040504124125.GM5191@sunsite.ms.mff.cuni.cz> <20040505062353.GQ2565@bubble.modra.org>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Wed, May 05, 2004 at 03:53:53PM +0930, Alan Modra wrote:
> On Tue, May 04, 2004 at 02:41:25PM +0200, Jakub Jelinek wrote:
> > * config/tc-s390.h (md_do_align): Pass (1 << n) - 1 instead of 15
> > as max_chars to frag_var.
>
> I don't think this is the right fix. It looks to me that s390 shouldn't
> be defining md_do_align or HANDLE_ALIGN, as s390 gas doesn't do special
> nop fill patterns.
Like this?
2004-05-05 Jakub Jelinek <jakub@redhat.com>
* tc-s390.h (md_do_align, HANDLE_ALIGN): Remove.
(NOP_OPCODE): Define.
(s390_align_code): Remove prototype.
* tc-s390.c (s390_align_code): Remove.
--- gas/config/tc-s390.h.jj 2003-07-10 15:03:13.000000000 +0200
+++ gas/config/tc-s390.h 2004-05-05 09:09:53.083575145 +0200
@@ -1,5 +1,5 @@
/* tc-s390.h -- Header file for tc-s390.c.
- Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
+ Copyright 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Written by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of GAS, the GNU Assembler.
@@ -76,23 +76,7 @@ extern int target_big_endian;
#define md_number_to_chars number_to_chars_bigendian
-#define md_do_align(n, fill, len, max, around) \
-if ((n) && !need_pass_2 && (fill == 0) && \
- (bfd_get_section_flags (stdoutput, now_seg) & SEC_CODE) != 0) { \
- char *p; \
- p = frag_var (rs_align_code, 15, 1, (relax_substateT) max, \
- (symbolS *) 0, (offsetT) (n), (char *) 0); \
- *p = 0x07; \
- goto around; \
-}
-
-extern void s390_align_code PARAMS ((fragS *, int));
-
-#define HANDLE_ALIGN(fragP) \
-if (fragP->fr_type == rs_align_code) \
- s390_align_code (fragP, (fragP->fr_next->fr_address \
- - fragP->fr_address \
- - fragP->fr_fix));
+#define NOP_OPCODE 0x07
/* call md_pcrel_from_section, not md_pcrel_from */
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section(FIX, SEC)
--- gas/config/tc-s390.c.jj 2004-03-03 18:44:03.000000000 +0100
+++ gas/config/tc-s390.c 2004-05-05 09:10:17.651172312 +0200
@@ -1,5 +1,5 @@
/* tc-s390.c -- Assemble for the S390
- Copyright 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of GAS, the GNU Assembler.
@@ -540,19 +540,6 @@ s390_md_end ()
bfd_set_arch_mach (stdoutput, bfd_arch_s390, bfd_mach_s390_31);
}
-void
-s390_align_code (fragP, count)
- fragS *fragP;
- int count;
-{
- /* We use nop pattern 0x0707. */
- if (count > 0)
- {
- memset (fragP->fr_literal + fragP->fr_fix, 0x07, count);
- fragP->fr_var = count;
- }
-}
-
/* Insert an operand value into an instruction. */
static void
Jakub