public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Sedat Dilek <sedat.dilek@googlemail.com>
To: Stephen Rothwell <sfr@canb.auug.org.au>,
	Matthias Klose <doko@debian.org>
Cc: linux-next <linux-next@vger.kernel.org>,
	debian-gcc <debian-gcc@lists.debian.org>,
		binutils <binutils@sourceware.org>,
	amodra@gmail.com, "H.J. Lu" <hjl.tools@gmail.com>
Subject: Re: linux-next: Tree for March 8 (BROKEN: arch/x86/kernel/entry_32.S? Debian's binutils/as?)
Date: Wed, 09 Mar 2011 11:54:00 -0000	[thread overview]
Message-ID: <AANLkTikH-Q5jnLfwNVFi2wmDOeddgo6Aq8fndVRSGj7Y@mail.gmail.com> (raw)
In-Reply-To: <AANLkTin2H9=NWp5G6N6_e=bxBTh2eS1dbUxOjT6xX98C@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3053 bytes --]

On Tue, Mar 8, 2011 at 11:44 AM, Sedat Dilek <sedat.dilek@googlemail.com> wrote:
> Hi,
>
> my build of linux-next (next-20110308, the same with the one from
> yesterday) is broken.
> (I translated the German output.)
>
> [ build.log ]
>  AS      arch/x86/kernel/entry_32.o
> /home/sd/src/linux-2.6/linux-2.6.38-rc7/debian/build/source_i386_none/arch/x86/kernel/entry_32.S:
> Assembler messages:
> /home/sd/src/linux-2.6/linux-2.6.38-rc7/debian/build/source_i386_none/arch/x86/kernel/entry_32.S:1421:
> Error: .size expression does not evaluate to a constant
> make[6]: *** [arch/x86/kernel/entry_32.o] Fehler 1 (Error 1)
> make[5]: *** [arch/x86/kernel] Fehler 2 (Error 2)
> make[4]: *** [arch/x86] Fehler 2 (Error 2)
> make[4]: *** Warte auf noch nicht beendete Prozesse... (Waiting for
> unfinished jobs...)
>
> I am not sure if this is a problem of Debian's binutils snapshot from
> binutils-2_21-branch (Debian-version: 2.21.0.20110302-1) from sid/i386
> or this is only a problem for x86, but I just want to let you know.
>
> FYI: The previous binutils (2.21.0.20110216-2) works fine.
>
> I have tried with reverting the last two changes to
> arch/x86/kernel/entry_32.S in linux-next:
>
> "x86: Use {push,pop}_cfi in more places" (see [1])
> "x86, asm: Cleanup unnecssary macros in asm-offsets.c" (see [2])
>
> Reverting both or [1] or [2] breaks with Debians as (2.21.0.20110302-1).
>
> BTW, [3] has a complete GIT history for the above file.
>
> So, I am unsure from where the problem exactly aroses.
> If this a known issue (and a fix around) or rings a bell to you, let
> me and others know.
>
> Thanks in advance.
>
> Regards,
> - Sedat -
>
> [1] http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commit;h=60cf637a13932a4750da6746efd0199e8a4c341b
>
> [2] http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commit;h=7bf04be8f48ceeeffa5b5a79734d6d6e0d59e5f8
>
> [3] http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=history;f=arch/x86/kernel/entry_32.S;h=2878821cb8c1da1d7147b26271114fa9546afe03;hb=HEAD
>

Just FYI (for the "dropped" MLs while finding the "brain bug"):
Finally, with the help of x86 folks and H.J. Lu a fix for the
linux-kernel can now be found in [1].

Commits [2] and [3] from binutils master GIT helped to dig deeper into
the right places.
So I would appreciated both to be backported to binutils-2_21-branch GIT.

@Matthias:
If you like you can use the two backported patches (see file
attachments) for a next binutils upload to Debian/sid.
As usually (and you demanded once from me) I dropped any ChangeLog
entries from the code, but kept the history in the commit-text. Also,
I documented my changes.
So the patches should cleanly apply.

Thanks.

- Sedat -

[1] https://patchwork.kernel.org/patch/621001/
[2] http://sourceware.org/git/?p=binutils.git;a=commit;h=b9521fc0be7945fc842ce1197e241a023378125d
[3] http://sourceware.org/git/?p=binutils.git;a=commit;h=cbd141bb69f791de7ea1581abe7afb34f0c61288

[-- Attachment #2: 0001-Mention-symbol-name-in-non-constant-.size-expression.patch --]
[-- Type: text/plain, Size: 3085 bytes --]

From 3708bdd06792e812acd9da711b51482c0b4b2797 Mon Sep 17 00:00:00 2001
From: Sedat Dilek <sedat.dilek@gmail.com>
Date: Tue, 8 Mar 2011 14:59:35 +0100
Subject: [PATCH 1/2] Mention symbol name in non-constant .size expression.

gas/

2011-03-05  H.J. Lu  <hongjiu.lu@intel.com>

	* config/obj-elf.c (elf_frob_symbol): Mention symbol name in
	non-constant .size expression.

gas/testsuite/

2011-03-05  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/elf/bad-size.err: Updated.

Conflicts:

	gas/ChangeLog
	gas/testsuite/ChangeLog
	gas/testsuite/gas/elf/bad-size.err

2011-03-08  Sedat Dilek  <sedat.dilek@gmail.com>

	* Cherry-picked from commit b9521fc0be7945fc842ce1197e241a023378125d
	* Drop changes in gas/ChangeLog and gas/testsuite/ChangeLog
---
 gas/config/obj-elf.c               |   48 ++++++++++++++++++++++++++++++++---
 gas/testsuite/gas/elf/bad-size.err |    2 +
 2 files changed, 45 insertions(+), 5 deletions(-)
 create mode 100644 gas/testsuite/gas/elf/bad-size.err

diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
index 969a509..d43409a 100644
--- a/gas/config/obj-elf.c
+++ b/gas/config/obj-elf.c
@@ -1879,6 +1879,7 @@ void
 elf_frob_symbol (symbolS *symp, int *puntp)
 {
   struct elf_obj_sy *sy_obj;
+  expressionS *size;
 
 #ifdef NEED_ECOFF_DEBUG
   if (ECOFF_DEBUGGING)
@@ -1887,13 +1888,50 @@ elf_frob_symbol (symbolS *symp, int *puntp)
 
   sy_obj = symbol_get_obj (symp);
 
-  if (sy_obj->size != NULL)
+  size = sy_obj->size;
+  if (size != NULL)
     {
-      if (resolve_expression (sy_obj->size)
-	  && sy_obj->size->X_op == O_constant)
-	S_SET_SIZE (symp, sy_obj->size->X_add_number);
+      if (resolve_expression (size)
+	  && size->X_op == O_constant)
+	S_SET_SIZE (symp, size->X_add_number);
       else
-	as_bad (_(".size expression does not evaluate to a constant"));
+	{
+	  const char *op_name = NULL;
+	  const char *add_name = NULL;
+
+	  if (size->X_op == O_subtract)
+	    {
+	      op_name = S_GET_NAME (size->X_op_symbol);
+	      add_name = S_GET_NAME (size->X_add_symbol);
+	      if (strcmp (op_name, FAKE_LABEL_NAME) == 0)
+		op_name = NULL;
+	      if (strcmp (add_name, FAKE_LABEL_NAME) == 0)
+		add_name = NULL;
+
+	      if (op_name && add_name)
+		as_bad (_(".size expression with symbols `%s' and `%s' "
+			  "does not evaluate to a constant"),
+			op_name, add_name);
+	      else
+		{
+		  const char *name;
+
+		  if (op_name)
+		    name = op_name;
+		  else if (add_name)
+		    name = add_name;
+		  else
+		    name = NULL;
+
+		  if (name)
+		    as_bad (_(".size expression with symbol `%s' "
+			      "does not evaluate to a constant"), name);
+		}
+	    }
+	  
+	  if (!op_name && !add_name)
+	    as_bad (_(".size expression does not evaluate to a constant"));
+	}
       free (sy_obj->size);
       sy_obj->size = NULL;
     }
diff --git a/gas/testsuite/gas/elf/bad-size.err b/gas/testsuite/gas/elf/bad-size.err
new file mode 100644
index 0000000..a5bfc31
--- /dev/null
+++ b/gas/testsuite/gas/elf/bad-size.err
@@ -0,0 +1,2 @@
+.*bad-size\.s: Assembler messages:
+.*bad-size\.s:6: Error:.*`_test_nop'.*
-- 
1.7.4.1


[-- Attachment #3: 0002-Revert-the-last-change-on-gas-elf-bad-size.err.patch --]
[-- Type: text/plain, Size: 947 bytes --]

From eff5315213e5ad4cf255e3ec536f629a015100ee Mon Sep 17 00:00:00 2001
From: Sedat Dilek <sedat.dilek@gmail.com>
Date: Tue, 8 Mar 2011 15:05:45 +0100
Subject: [PATCH 2/2] Revert the last change on gas/elf/bad-size.err.

2011-03-06  H.J. Lu  <hongjiu.lu@intel.com>

	* gas/elf/bad-size.err: Revert the last change.

Conflicts:

	gas/testsuite/ChangeLog

2011-03-08  Sedat Dilek  <sedat.dilek@gmail.com>

	* Cherry-picked from commit cbd141bb69f791de7ea1581abe7afb34f0c61288
	* Drop changes in gas/testsuite/ChangeLog
---
 gas/testsuite/gas/elf/bad-size.err |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gas/testsuite/gas/elf/bad-size.err b/gas/testsuite/gas/elf/bad-size.err
index a5bfc31..5e01ef2 100644
--- a/gas/testsuite/gas/elf/bad-size.err
+++ b/gas/testsuite/gas/elf/bad-size.err
@@ -1,2 +1,2 @@
 .*bad-size\.s: Assembler messages:
-.*bad-size\.s:6: Error:.*`_test_nop'.*
+.*bad-size\.s:6: Error: .*
-- 
1.7.4.1


      parent reply	other threads:[~2011-03-09 11:54 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-08 10:44 Sedat Dilek
2011-03-08 12:44 ` Sedat Dilek
2011-03-08 14:55 ` H.J. Lu
2011-03-08 15:28   ` Sedat Dilek
2011-03-08 15:42     ` Sedat Dilek
2011-03-09 11:54 ` Sedat Dilek [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=AANLkTikH-Q5jnLfwNVFi2wmDOeddgo6Aq8fndVRSGj7Y@mail.gmail.com \
    --to=sedat.dilek@googlemail.com \
    --cc=amodra@gmail.com \
    --cc=binutils@sourceware.org \
    --cc=debian-gcc@lists.debian.org \
    --cc=doko@debian.org \
    --cc=hjl.tools@gmail.com \
    --cc=linux-next@vger.kernel.org \
    --cc=sedat.dilek@gmail.com \
    --cc=sfr@canb.auug.org.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).