[PATCH 2/2] z80-elf: support complex relocation symbols
H. Peter Anvin
hpa@zytor.com
Mon Oct 27 22:37:30 GMT 2025
More information about the Binutils mailing list
Mon Oct 27 22:37:30 GMT 2025
- Previous message (by thread): [PATCH 2/2] z80-elf: support complex relocation symbols
- Next message (by thread): [PATCH 2/2] z80-elf: support complex relocation symbols
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 2025-10-26 15:06, Maciej W. Rozycki wrote: > On Sun, 26 Oct 2025, H. Peter Anvin wrote: > >>> Possibly, though as usually with BFD I suspect there's a catch; also I >>> guess a lot of complication in the MIPS backend comes from the use of said >>> odd n64 encoding (triple relocs in a single Elf64_Rela entry). >> >> I have done it as a prototype, it is trivial, at least for i386. No problems >> at all. >> >> It is literally a matter of moving the zeroing of a variable out of a loop. > > Does it work as expected, i.e. identical output section contents, when > you link to a srec output (such as with `ld --oformat=srec ...')? > I just tried it, and it does not; it errors out: /opt/z80/bin/z80-none-elf-ld: expreloc.o: in function `_start': (.text+0x1): undefined reference to `*:s15:CONSOLE_COLUMNS:+:s12:CONSOLE_ROWS:#ffffffff' /opt/z80/bin/z80-none-elf-ld: (.text+0x5): undefined reference to `-:s3:foo:s11:__IY_BASE__' /opt/z80/bin/z80-none-elf-ld: (.text+0x7): undefined reference to `+:s5:pizza:*:s15:CONSOLE_COLUMNS:+:s12:CONSOLE_ROWS:#ffffffff' /opt/z80/bin/z80-none-elf-ld: (.text+0xa): undefined reference to `+:s5:pizza:s13:CONSOLE_BYTES' /opt/z80/bin/z80-none-elf-ld: (.text+0x16): undefined reference to `+:+:s5:pizza:*:#00000002:s15:CONSOLE_COLUMNS:<<:+:s12:CONSOLE_ROWS:#ffffffff:#00000002' Linking to ELF and then using objcopy to srec works correctly, even with stock binutils ld (no modifications whatsoever). There are , in fact, no R_RELC anywhere in the object file. The relocations are all R_Z80_* but of course the type is set to SHT_RELC. Relocation section '.rela.text' at offset 0x270 contains 7 entries: Offset Info Type Sym.Value Sym. Name + Addend 00000001 00000c04 R_Z80_16 00000000 *:s15:CONSOLE_COL[...] + 0 00000005 00000d02 R_Z80_8_DIS 00000000 -:s3:foo:s11:__IY[...] + 0 00000007 00000e04 R_Z80_16 00000000 +:s5:pizza:*:s15:[...] + 0 0000000a 00000f04 R_Z80_16 00000000 +:s5:pizza:s13:CO[...] + 0 0000000d 00000a04 R_Z80_16 00000000 pizza + 730 00000010 00000b04 R_Z80_16 00000000 CONSOLE_BYTES + 0 00000016 00001004 R_Z80_16 00000000 +:+:s5:pizza:*:#0[...] + 0 I have attached a tarball with assembly source, object output, linker output, readelf output, and disassembly of the post-link ELF file. -hpa -------------- next part -------------- A non-text attachment was scrubbed... Name: z80-expreloc.tar.gz Type: application/gzip Size: 3195 bytes Desc: not available URL: <https://sourceware.org/pipermail/binutils/attachments/20251027/c48e1623/attachment.gz>
- Previous message (by thread): [PATCH 2/2] z80-elf: support complex relocation symbols
- Next message (by thread): [PATCH 2/2] z80-elf: support complex relocation symbols
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list