[PATCH v1] GAS: Keep symbols in their own section [PR27566]
Xiao Zeng
zengxiao@eswincomputing.com
Wed Oct 23 06:45:40 GMT 2024
2024-10-23 12:43 Alan Modra <amodra@gmail.com> wrote:
>
>On Tue, Oct 22, 2024 at 05:43:18PM +0800, Xiao Zeng wrote:
>> PR27566 is categorized under ld:
>> <https://sourceware.org/bugzilla/show_bug.cgi?id=27566>
>> but the root cause of this issue is in gas.
>>
>> The following assembly example is provided:
>> .section .rodata
>> .globl Sym
>> .type Sym, @object
>> .set Sym, . + 0x1200
>> .size Sym, 8
>>
>> readelf reads ELF information:
>> Section Headers:
>> [Nr] Name Type Address Off Size ES Flg Lk Inf Al
>> [ 4] .rodata PROGBITS 0000000000000000 000040 000000 00 A 0 0 1
>>
>> Symbol table '.symtab' contains 7 entries:
>> Num: Value Size Type Bind Vis Ndx Name
>> 6: 0000000000001200 8 OBJECT GLOBAL DEFAULT 4 Sym
>>
>> The Sym belongs to the .rodata section, but the size of .rodata is 0.
>
>It is not unreasonable to define a symbol relative to some section
>with a value outside of the section. Automatically extending a
>section to enclose a symbol should only happen in special cases.
>Patch rejected.
>
>--
>Alan Modra
Dear maintainer, thank you for your reply. I think I should provide more detailed information:
The test case <abs-run.c> is in:
<https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=gcc/testsuite/gcc.target/riscv/rvv/autovec/unop/abs-run.c;h=f3be58ec4938e1ae8b125da3e6796f8e448b04df;hb=ee030b28004eade3da872e7ae62a526a2940a705>
1 Compilation command:
riscv64-unknown-elf-gcc \
-fno-schedule-insns -mcmodel=medlow -march=rv64gcv_zvfh -mabi=lp64d \
-O3 -mrvv-max-lmul=m4 -mrvv-vector-bits=zvl -ffast-math \
-fdata-sections abs-run.c -S -o abs-run.c.upstream.s
Compiler version information:
Supported LTO compression algorithms: zlib
gcc version 15.0.0 20240912 (experimental) (g3f212eabbba-dirty)
2 Assembly command:
riscv64-unknown-elf-as abs-run.c.upstream.s -o abs-run.c.upstream.s.o
3 readelf outputs the information:
riscv64-unknown-elf-readelf -SsW abs-run.c.upstream.o > abs-run.c.upstream.o.txt
Section Headers:
[Nr] Name Type Address Off Size ES Flg Lk Inf Al
[ 9] .rodata PROGBITS 0000000000000000 000c78 000d80 00 A 0 0 8
Symbol table '.symtab' contains 110 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000000000 0 FILE LOCAL DEFAULT ABS abs-run.c
12: 0000000000000000 0 NOTYPE LOCAL DEFAULT 9 .LANCHOR0
13: 0000000000001000 0 NOTYPE LOCAL DEFAULT 9 .LANCHOR1
This situation, where a symbol is in a section but the section's size is insufficient to contain the symbol, does exist.
Thanks
Xiao Zeng
More information about the Binutils
mailing list