bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug ld/15389] New: [avr] section '.note.gnu.build-id' allocated at addr


From: justin at jgottula dot com
Subject: [Bug ld/15389] New: [avr] section '.note.gnu.build-id' allocated at address zero
Date: Tue, 23 Apr 2013 06:25:20 +0000

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

             Bug #: 15389
           Summary: [avr] section '.note.gnu.build-id' allocated at
                    address zero
           Product: binutils
           Version: 2.23
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: address@hidden
        ReportedBy: address@hidden
    Classification: Unclassified


If gcc is configured with --enable-linker-build-id (as became the case for Arch
Linux's avr-gcc package recently when it was bumped to 4.8.0), then it passes
--build-id to the linker, and a '.note.gnu.build-id' section is allocated in
avr executables at address zero (where the interrupt vector table should be).

(See http://gcc.gnu.org/ml/gcc-patches/2010-10/msg00332.html for more on this,
in the context of making --enable-linker-build-id the default behavior, which
apparently didn't happen.)

Strictly speaking, this is a configuration problem, so I will report it to my
distribution's package maintainers. However, I suggest that the linker scripts
should explicitly shove this section into a black hole, or at least handle it
similarly to the '.comment' or debug information sections (i.e., don't allocate
any memory for it). Peeking into the avr linker scripts, there doesn't seem to
be any any particular handling for it right now. ld's default behavior is
apparently just to drop sections it doesn't know about at address zero; and
then to dutifully shift the .text section (including the vector table, of
course) and all of the jump addresses over by 36 bytes so you can't just strip
out the problem section.


Steps to reproduce:
1. configure avr-gcc with --enable-linker-build-id
2. compile and link pretty much any avr program
3. run 'avr-objdump -h' or 'readelf -S'
(You could also use -Wl,--build-id when linking, but that would just be
idiotic.)



broken.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .note.gnu.build-id 00000024  00000000  00000000  00000094  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  1 .data         00000000  00800100  000000ca  0000015e  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .text         000000a6  00000024  00000024  000000b8  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  3 .stab         00000738  00000000  00000000  00000160  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      000000a1  00000000  00000000  00000898  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .comment      00000011  00000000  00000000  00000939  2**0
                  CONTENTS, READONLY

Disassembly of section .note.gnu.build-id:

00000000 <.note.gnu.build-id>:
   0:   04 00           .word   0x0004  ; ????
   2:   00 00           nop
   4:   14 00           .word   0x0014  ; ????
   6:   00 00           nop
   8:   03 00           .word   0x0003  ; ????
   a:   00 00           nop
   c:   47 4e           sbci    r20, 0xE7       ; 231
   e:   55 00           .word   0x0055  ; ????
  10:   c5 c7           rjmp    .+3978          ; 0xf9c <__stack+0x69d>
  12:   03 77           andi    r16, 0x73       ; 115
  14:   fc 8d           ldd     r31, Y+28       ; 0x1c
  16:   c6 07           cpc     r28, r22
  18:   7f d8           rcall   .-3842          ; 0xfffff118
<__eeprom_end+0xff7ef118>
  1a:   61 e8           ldi     r22, 0x81       ; 129
  1c:   68 32           cpi     r22, 0x28       ; 40
  1e:   49 38           cpi     r20, 0x89       ; 137
  20:   c5 69           ori     r28, 0x95       ; 149
  22:   c4 85           ldd     r28, Z+12       ; 0x0c

Disassembly of section .text:

00000024 <__vectors>:
  24:   0c 94 50 00     jmp     0xa0    ; 0xa0 <__ctors_end>
  28:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  2c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  30:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  34:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  38:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  3c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  40:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  44:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  48:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  4c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  50:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  54:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  58:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  5c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  60:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  64:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  68:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  6c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  70:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  74:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  78:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  7c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  80:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  84:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  88:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  8c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  90:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  94:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  98:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>
  9c:   0c 94 5a 00     jmp     0xb4    ; 0xb4 <__bad_interrupt>

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]