[Bug gas/6926] Macro number feature \@ conflicting with @ in line_separator_chars

2008-10-06 Thread nickc at redhat dot com

--- Additional Comments From nickc at redhat dot com  2008-10-06 08:18 
---
Patch checked in along with this changelog entry.

gas/ChangeLog
PR 6926
* read.c (get_line_sb): Renamed to get_non_macro_line_sb.
(_find_end_of_line): Add extra parameter indicating if the line is
inside a macro.  If it is then do not allow the @ character to be
treated as a line separator character.
(read_a_source): Update use of _find_end_of_line.
(find_end_of_line): Likewise.
(s_irp): Update use of get_line_sb.
(s_macro): Likewise.
(do_repeat): Likewise.
(get_line_sb): New function.  Like the old version of get_line_sb
except that it takes an extra parameter indicating whether the
line is inside a macro.
(get_macro_line_sb): New function.


-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


http://sourceware.org/bugzilla/show_bug.cgi?id=6926

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug ld/6945] New: ld -r severely broken on 64-bit mingw / pe-x86-64

2008-10-06 Thread mikpe at it dot uu dot se
x86_64-pc-mingw32-ld -r runs without warnings, but gcc jump tables in the
resulting .o file are broken. At runtime a switch() that references a jump table
now branches off to la-la land and the process crashes.

My x86_64-pc-mingw32 cross toolchain is composed of binutils-2.19.50.20081006
and gcc-4.4.0 20080926, with runtime libs from mingw-w64-snapshot-20080917.
The cross toolchain was compiled by a i686-pc-cygwin native toolchain composed
of binutils-2.18.91 and gcc-4.3.2. The host runs Win XP 64 Pro.

To reproduce, compile and link the file below (bug.c):
1. x86_64-pc-mingw32-gcc -O -c bug.c
2. x86_64-pc-mingw32-ld -r -o bug2.o bug.o
3. x86_64-pc-mingw32-gcc -o bug bug.o
4. x86_64-pc-mingw32-gcc -o bug2 bug2.o

Running ./bug works and produces output like:
L90 == 0040165A
L95 == 00403000
L95.L90_minus_L95 == -6566, L95 + -6566 == 0040165A

However, running ./bug2 instead fails with:
L90 == 0040165A
L95 == 00403000
L95.L90_minus_L95 == -6406, L95 + -6406 == 004016FA
ERROR

This error does not occur when compiling for 32-bit mingw, or when compiling for
Linux or Solaris (32- or 64-bit x86).

The source code for bug.c follows below. The inline asm() block constructs a gcc
switch() jump table in "pic" mode: entries aren't code lables but the
differences from the table itself to the code labels. The rest of the code just
verifies the contents of the jump table.

#include 

struct L95 {/* mimics a gcc -fpic jump table */
int L90_minus_L95;
};
extern const struct L95 L95;

struct L95info {/* provides the actual target labels */
void *L90;
};
struct L95info L95info;

void __attribute__((noinline)) foo(void)
{
asm(
"leaq _L95info(%rip), %rax\n\t"
"leaq L90(%rip), %rdx\n\t"
"movq %rdx, 0(%rax)\n\t"
".section .rdata,\"dr\"\n\t"
".align 4\n"
"_L95:\n\t"
".long L90-_L95\n\t"
".text\n\t"
"movl $1, %eax\n"
"L90:\n\t"
"addl %eax, %eax");
}

int main(void)
{
int diff;
void *result;

foo();
printf("L90 == %p\n", L95info.L90);
printf("L95 == %p\n", &L95);
diff = L95.L90_minus_L95;
result = (char*)&L95 + diff;
printf("L95.L90_minus_L95 == %d, L95 + %d == %p\n",
   diff, diff, result);
if (result != L95info.L90) {
printf("ERROR\n");
return 1;
}
return 0;
}

-- 
   Summary: ld -r severely broken on 64-bit mingw / pe-x86-64
   Product: binutils
   Version: 2.19
Status: NEW
  Severity: critical
  Priority: P2
 Component: ld
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: mikpe at it dot uu dot se
CC: bug-binutils at gnu dot org
  GCC host triplet: i686-pc-cygwin
GCC target triplet: x86_64-pc-mingw32


http://sourceware.org/bugzilla/show_bug.cgi?id=6945

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug binutils/6948] New: [Regression] Uninitialised variables in cp-demangle.c

2008-10-06 Thread hjl dot tools at gmail dot com
[EMAIL PROTECTED] binutils]$ valgrind --tool=memcheck  ./cxxfilt -i _ZTIPDi
==22075== Memcheck, a memory error detector.
==22075== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==22075== Using LibVEX rev 1575, a library for dynamic binary translation.
==22075== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==22075== Using valgrind-3.1.1, a dynamic binary instrumentation framework.
==22075== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==22075== For more details, rerun with: -v
==22075== 
==22075== Conditional jump or move depends on uninitialised value(s)
==22075==at 0x4C4ECD: d_make_comp (cp-demangle.c:814)
==22075==by 0x4C6975: cplus_demangle_type (cp-demangle.c:2027)
==22075==by 0x4C60AD: d_special_name (cp-demangle.c:1649)
==22075==by 0x4C5330: d_encoding (cp-demangle.c:1053)
==22075==by 0x4C51E9: cplus_demangle_mangled_name (cp-demangle.c:986)
==22075==by 0x4CA37E: d_demangle_callback (cp-demangle.c:4276)
==22075==by 0x4CA433: d_demangle (cp-demangle.c:4312)
==22075==by 0x4CA498: cplus_demangle_v3 (cp-demangle.c:4469)
==22075==by 0x4BE0AF: cplus_demangle (cplus-dem.c:862)
==22075==by 0x40242B: demangle_it (cxxfilt.c:63)
==22075==by 0x4026C2: main (cxxfilt.c:227)
==22075== 
==22075== Conditional jump or move depends on uninitialised value(s)
==22075==at 0x4C821A: d_print_comp (cp-demangle.c:3076)
==22075==by 0x4C8BC3: d_print_comp (cp-demangle.c:3425)
==22075==by 0x4C895E: d_print_comp (cp-demangle.c:3327)
==22075==by 0x4C80BC: cplus_demangle_print_callback (cp-demangle.c:3033)
==22075==by 0x4CA3C4: d_demangle_callback (cp-demangle.c:4289)
==22075==by 0x4CA433: d_demangle (cp-demangle.c:4312)
==22075==by 0x4CA498: cplus_demangle_v3 (cp-demangle.c:4469)
==22075==by 0x4BE0AF: cplus_demangle (cplus-dem.c:862)
==22075==by 0x40242B: demangle_it (cxxfilt.c:63)
==22075==by 0x4026C2: main (cxxfilt.c:227)
==22075== 
==22075== Use of uninitialised value of size 8
==22075==at 0x4C824E: d_print_comp (cp-demangle.c:3084)
==22075==by 0x4C8BC3: d_print_comp (cp-demangle.c:3425)
==22075==by 0x4C895E: d_print_comp (cp-demangle.c:3327)
==22075==by 0x4C80BC: cplus_demangle_print_callback (cp-demangle.c:3033)
==22075==by 0x4CA3C4: d_demangle_callback (cp-demangle.c:4289)
==22075==by 0x4CA433: d_demangle (cp-demangle.c:4312)
==22075==by 0x4CA498: cplus_demangle_v3 (cp-demangle.c:4469)
==22075==by 0x4BE0AF: cplus_demangle (cplus-dem.c:862)
==22075==by 0x40242B: demangle_it (cxxfilt.c:63)
==22075==by 0x4026C2: main (cxxfilt.c:227)
_ZTIPDi
==22075== 
==22075== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 4 from 1)
==22075== malloc/free: in use at exit: 0 bytes in 0 blocks.
==22075== malloc/free: 1 allocs, 1 frees, 16 bytes allocated.
==22075== For counts of detected errors, rerun with: -v
==22075== All heap blocks were freed -- no leaks are possible.
[EMAIL PROTECTED] binutils]$

-- 
   Summary: [Regression] Uninitialised variables in cp-demangle.c
   Product: binutils
   Version: 2.20 (HEAD)
Status: NEW
  Severity: normal
  Priority: P2
 Component: binutils
AssignedTo: unassigned at sources dot redhat dot com
ReportedBy: hjl dot tools at gmail dot com
CC: bug-binutils at gnu dot org


http://sourceware.org/bugzilla/show_bug.cgi?id=6948

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug binutils/6948] [Regression] Uninitialised variables in cp-demangle.c

2008-10-06 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org


http://sourceware.org/bugzilla/show_bug.cgi?id=6948

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils


[Bug binutils/6948] [Regression] Uninitialised variables in cp-demangle.c

2008-10-06 Thread hjl dot tools at gmail dot com

--- Additional Comments From hjl dot tools at gmail dot com  2008-10-07 
03:59 ---
Fixed by cp-demangle.c update.

-- 
   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


http://sourceware.org/bugzilla/show_bug.cgi?id=6948

--- You are receiving this mail because: ---
You are on the CC list for the bug, or are watching someone who is.


___
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils