On 06/24/2014 11:37 AM, Andy Lutomirski wrote:
>>
>> diff --git a/arch/x86/vdso/vdso2c.h b/arch/x86/vdso/vdso2c.h
>> index f42e2ddc663d..94158e100f26 100644
>> --- a/arch/x86/vdso/vdso2c.h
>> +++ b/arch/x86/vdso/vdso2c.h
>> @@ -99,8 +99,9 @@ static void BITSFUNC(copy_section)(struct
>> BITSFUNC(fake_sections) *out,
>>         if (!copy)
>>                 return;
>>
>> -       if (out->count >= out->max_count)
>> -               fail("too many copied sections (max = %d)\n",
>> out->max_count);
>> +       if (out->count > out->max_count)
>> +               fail("too many copied sections (max = %d, need = %d)\n",
>> +                    out->max_count, out->count);
>>
> 
> I think the old test was correct: we haven't incremented count yet
> (it's a couple lines below), so count is the zero-based index to which
> we're writing.
> 
> I thought of doing the need = %d thing, but I think that the output is
> a foregone conclusion: count == max_count + 1 when this fails.  A list
> of all the section names would be more interesting, but eu-readelf -S
> will tell is that.
> 

Well, I have reproduced this failure.  eu-readelf output included.

        -hpa

o.test/arch/x86/vdso/vdso32-int80.so.dbg
There are 27 section headers, starting at offset 0x9774:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .hash                HASH         000000b4 0000b4 000038  4 A      2   0  4
[ 2] .dynsym              DYNSYM       000000ec 0000ec 000090 16 A      3   1  4
[ 3] .dynstr              STRTAB       0000017c 00017c 000095  0 A      0   0  1
[ 4] .gnu.version         GNU_versym   00000212 000212 000012  2 A      2   0  2
[ 5] .gnu.version_d       GNU_verdef   00000224 000224 000054  0 A      3   3  4
[ 6] .dynamic             DYNAMIC      00000278 000278 000080  8 WA     3   0  4
[ 7] .rodata              PROGBITS     000002f8 0002f8 000228  4 WA     0   0  4
[ 8] .fake_shstrtab       PROGBITS     00000520 000520 000076  0 A      0   0 32
[ 9] .note                NOTE         00000598 000598 000060  0 A      0   0  4
[10] .eh_frame_hdr        PROGBITS     000005f8 0005f8 000024  0 A      0   0  4
[11] .eh_frame            PROGBITS     0000061c 00061c 0000f4  0 A      0   0  4
[12] .text                PROGBITS     00000710 000710 000633  0 AX     0   0 16
[13] .altinstructions     PROGBITS     00000d43 000d43 000018  0 A      0   0  1
[14] .altinstr_replacement PROGBITS     00000d5b 000d5b 000006  0 AX     0   0  
1
[15] .debug_info          PROGBITS     00000000 000d61 004a84  0        0   0  1
[16] .debug_abbrev        PROGBITS     00000000 0057e5 000519  0        0   0  1
[17] .debug_loc           PROGBITS     00000000 005cfe 00064f  0        0   0  1
[18] .debug_aranges       PROGBITS     00000000 006350 000058  0        0   0  8
[19] .debug_ranges        PROGBITS     00000000 0063a8 000208  0        0   0  1
[20] .debug_line          PROGBITS     00000000 0065b0 00077b  0        0   0  1
[21] .debug_str           PROGBITS     00000000 006d2b 0027f2  1 MS     0   0  1
[22] .comment             PROGBITS     00000000 00951d 00002c  1 MS     0   0  1
[23] .debug_frame         PROGBITS     00000000 00954c 000100  0        0   0  4
[24] .shstrtab            STRTAB       00000000 00964c 000127  0        0   0  1
[25] .symtab              SYMTAB       00000000 009bac 000380 16       26  48  4
[26] .strtab              STRTAB       00000000 009f2c 000226  0        0   0  1

o.test/arch/x86/vdso/vdso32-syscall.so.dbg
There are 27 section headers, starting at offset 0x979c:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .hash                HASH         000000b4 0000b4 000038  4 A      2   0  4
[ 2] .dynsym              DYNSYM       000000ec 0000ec 000090 16 A      3   1  4
[ 3] .dynstr              STRTAB       0000017c 00017c 000095  0 A      0   0  1
[ 4] .gnu.version         GNU_versym   00000212 000212 000012  2 A      2   0  2
[ 5] .gnu.version_d       GNU_verdef   00000224 000224 000054  0 A      3   3  4
[ 6] .dynamic             DYNAMIC      00000278 000278 000080  8 WA     3   0  4
[ 7] .rodata              PROGBITS     000002f8 0002f8 000220  4 WA     0   0  4
[ 8] .fake_shstrtab       PROGBITS     00000520 000520 000076  0 A      0   0 32
[ 9] .note                NOTE         00000598 000598 000060  0 A      0   0  4
[10] .eh_frame_hdr        PROGBITS     000005f8 0005f8 000024  0 A      0   0  4
[11] .eh_frame            PROGBITS     0000061c 00061c 0000fc  0 A      0   0  4
[12] .text                PROGBITS     00000720 000720 000640  0 AX     0   0 16
[13] .altinstructions     PROGBITS     00000d60 000d60 000018  0 A      0   0  1
[14] .altinstr_replacement PROGBITS     00000d78 000d78 000006  0 AX     0   0  
1
[15] .debug_info          PROGBITS     00000000 000d7e 004a84  0        0   0  1
[16] .debug_abbrev        PROGBITS     00000000 005802 000519  0        0   0  1
[17] .debug_loc           PROGBITS     00000000 005d1b 00064f  0        0   0  1
[18] .debug_aranges       PROGBITS     00000000 006370 000058  0        0   0  8
[19] .debug_ranges        PROGBITS     00000000 0063c8 000208  0        0   0  1
[20] .debug_line          PROGBITS     00000000 0065d0 000783  0        0   0  1
[21] .debug_str           PROGBITS     00000000 006d53 0027f2  1 MS     0   0  1
[22] .comment             PROGBITS     00000000 009545 00002c  1 MS     0   0  1
[23] .debug_frame         PROGBITS     00000000 009574 000100  0        0   0  4
[24] .shstrtab            STRTAB       00000000 009674 000127  0        0   0  1
[25] .symtab              SYMTAB       00000000 009bd4 000380 16       26  48  4
[26] .strtab              STRTAB       00000000 009f54 000228  0        0   0  1

o.test/arch/x86/vdso/vdso32-sysenter.so.dbg
There are 27 section headers, starting at offset 0x97ac:

Section Headers:
[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk Inf Al
[ 0]                      NULL         00000000 000000 000000  0        0   0  0
[ 1] .hash                HASH         000000b4 0000b4 000038  4 A      2   0  4
[ 2] .dynsym              DYNSYM       000000ec 0000ec 000090 16 A      3   1  4
[ 3] .dynstr              STRTAB       0000017c 00017c 000095  0 A      0   0  1
[ 4] .gnu.version         GNU_versym   00000212 000212 000012  2 A      2   0  2
[ 5] .gnu.version_d       GNU_verdef   00000224 000224 000054  0 A      3   3  4
[ 6] .dynamic             DYNAMIC      00000278 000278 000080  8 WA     3   0  4
[ 7] .rodata              PROGBITS     000002f8 0002f8 000214  4 WA     0   0  4
[ 8] .fake_shstrtab       PROGBITS     00000520 000520 000076  0 A      0   0 32
[ 9] .note                NOTE         00000598 000598 000060  0 A      0   0  4
[10] .eh_frame_hdr        PROGBITS     000005f8 0005f8 000024  0 A      0   0  4
[11] .eh_frame            PROGBITS     0000061c 00061c 000108  0 A      0   0  4
[12] .text                PROGBITS     00000730 000730 000644  0 AX     0   0 16
[13] .altinstructions     PROGBITS     00000d74 000d74 000018  0 A      0   0  1
[14] .altinstr_replacement PROGBITS     00000d8c 000d8c 000006  0 AX     0   0  
1
[15] .debug_info          PROGBITS     00000000 000d92 004a84  0        0   0  1
[16] .debug_abbrev        PROGBITS     00000000 005816 000519  0        0   0  1
[17] .debug_loc           PROGBITS     00000000 005d2f 00064f  0        0   0  1
[18] .debug_aranges       PROGBITS     00000000 006380 000058  0        0   0  8
[19] .debug_ranges        PROGBITS     00000000 0063d8 000208  0        0   0  1
[20] .debug_line          PROGBITS     00000000 0065e0 000784  0        0   0  1
[21] .debug_str           PROGBITS     00000000 006d64 0027f2  1 MS     0   0  1
[22] .comment             PROGBITS     00000000 009556 00002c  1 MS     0   0  1
[23] .debug_frame         PROGBITS     00000000 009584 000100  0        0   0  4
[24] .shstrtab            STRTAB       00000000 009684 000127  0        0   0  1
[25] .symtab              SYMTAB       00000000 009be4 000390 16       26  49  4
[26] .strtab              STRTAB       00000000 009f74 000240  0        0   0  1

o.test/arch/x86/vdso/vdso64.so.dbg
There are 28 section headers, starting at offset 0xfb38:

Section Headers:
[Nr] Name                 Type         Addr             Off      Size     ES 
Flags Lk Inf Al
[ 0]                      NULL         0000000000000000 00000000 00000000  0    
    0   0  0
[ 1] .hash                HASH         0000000000000120 00000120 00000040  4 A  
    2   0  8
[ 2] .dynsym              DYNSYM       0000000000000160 00000160 00000108 24 A  
    3   2  8
[ 3] .dynstr              STRTAB       0000000000000268 00000268 0000005e  0 A  
    0   0  1
[ 4] .gnu.version         GNU_versym   00000000000002c6 000002c6 00000016  2 A  
    2   0  2
[ 5] .gnu.version_d       GNU_verdef   00000000000002e0 000002e0 00000038  0 A  
    3   2  8
[ 6] .dynamic             DYNAMIC      0000000000000318 00000318 00000130 16 WA 
    3   0  8
[ 7] .rodata              PROGBITS     0000000000000448 00000448 0000039c  8 WA 
    0   0  8
[ 8] _ftrace_branch       PROGBITS     00000000000007e4 000007e4 00000078  0 WA 
    0   0  4
[ 9] .fake_shstrtab       PROGBITS     0000000000000860 00000860 00000076  0 A  
    0   0 32
[10] .note                NOTE         00000000000008d8 000008d8 0000003c  0 A  
    0   0  4
[11] .eh_frame_hdr        PROGBITS     0000000000000914 00000914 0000002c  0 A  
    0   0  4
[12] .eh_frame            PROGBITS     0000000000000940 00000940 000000e8  0 A  
    0   0  8
[13] .text                PROGBITS     0000000000000a30 00000a30 000008bc  0 AX 
    0   0 16
[14] .altinstructions     PROGBITS     00000000000012ec 000012ec 000000d8  0 A  
    0   0  1
[15] .altinstr_replacement PROGBITS     00000000000013c4 000013c4 00000036  0 
AX     0   0  1
[16] .rela.dyn            RELA         0000000000001400 00001400 00000090 24 A  
    2   0  8
[17] .debug_info          PROGBITS     0000000000000000 00001490 0000719f  0    
    0   0  1
[18] .debug_abbrev        PROGBITS     0000000000000000 0000862f 0000083c  0    
    0   0  1
[19] .debug_loc           PROGBITS     0000000000000000 00008e6b 0000296c  0    
    0   0  1
[20] .debug_aranges       PROGBITS     0000000000000000 0000b7d7 00000080  0    
    0   0  1
[21] .debug_ranges        PROGBITS     0000000000000000 0000b857 00000bb0  0    
    0   0  1
[22] .debug_line          PROGBITS     0000000000000000 0000c407 00000afd  0    
    0   0  1
[23] .debug_str           PROGBITS     0000000000000000 0000cf04 00002ad2  1 MS 
    0   0  1
[24] .comment             PROGBITS     0000000000000000 0000f9d6 0000002c  1 MS 
    0   0  1
[25] .shstrtab            STRTAB       0000000000000000 0000fa02 00000133  0    
    0   0  1
[26] .symtab              SYMTAB       0000000000000000 00010238 000004f8 24    
   27  44  8
[27] .strtab              STRTAB       0000000000000000 00010730 0000018f  0    
    0   0  1

Reply via email to