<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - STB_LOCAL symbol found at index >= .symtab's sh_info"
href="https://bugs.llvm.org/show_bug.cgi?id=48062">48062</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>STB_LOCAL symbol found at index >= .symtab's sh_info
</td>
</tr>
<tr>
<th>Product</th>
<td>lld
</td>
</tr>
<tr>
<th>Version</th>
<td>unspecified
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>OS</th>
<td>other
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>release blocker
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>ELF
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>xavi.dcr@tutanota.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org, smithp352@googlemail.com
</td>
</tr></table>
<p>
<div>
<pre>I am using llvm-project commit 8fc424f26bf1ea1471bd770a1b4eee4545c2bc96 with
two additional patches for preliminary MIPS I support (see
<a href="https://github.com/llvm/llvm-project/compare/release/11.x...XaviDCR92:release/11.x">https://github.com/llvm/llvm-project/compare/release/11.x...XaviDCR92:release/11.x</a>)
and zig (<a href="https://github.com/ziglang/zig">https://github.com/ziglang/zig</a>) commit
b30a765b95cf666409c1e5324718a7c8c60af4af for an application targeted to the
FPU-less MIPS R3000A featured on the original Sony PlayStation.
The application uses mipsel-unknown-elf-as for the assembly files, which are
later linked by lld when calling zig. The application used to build on
llvm-10.x (plus the experimental patches) and older versions of zig, but does
no longer build on llvm-11.x and latest zig. After some discussion on the #zig
channel, I was encouraged to report this issue here based on the "lld:error: "
messages shown below.
As an alternative, I have tried to assemble the assembly files directly from
zig, but unfortunately the assembler does not recognize the "rfe" (return from
exception) MIPS I instruction for some unknown reason:
This is the output when building everything from zig:
-----------------------------------------------------------------------------------------------
$ make
zig build-exe src/main.zig -Ddprintf=printf -L.
-I/home/xavier/psxsdk-src/libpsx/include
-I/home/xavier/psxsdk-src/libpsx/include/sys
/home/xavier/psxsdk-src/libpsx/src/atexit.c
/home/xavier/psxsdk-src/libpsx/src/cdrom.c
/home/xavier/psxsdk-src/libpsx/src/cop.c
/home/xavier/psxsdk-src/libpsx/src/exception.c
/home/xavier/psxsdk-src/libpsx/src/gpu.c
/home/xavier/psxsdk-src/libpsx/src/libc.c
/home/xavier/psxsdk-src/libpsx/src/memcard.c
/home/xavier/psxsdk-src/libpsx/src/memory.c
/home/xavier/psxsdk-src/libpsx/src/pad.c
/home/xavier/psxsdk-src/libpsx/src/psxsdk.c
/home/xavier/psxsdk-src/libpsx/src/setup.c
/home/xavier/psxsdk-src/libpsx/src/sio.c
/home/xavier/psxsdk-src/libpsx/src/spu.c
/home/xavier/psxsdk-src/libpsx/src/util.c
/home/xavier/psxsdk-src/libpsx/src/libc/error.c
/home/xavier/psxsdk-src/libpsx/src/libc/misc.c
/home/xavier/psxsdk-src/libpsx/src/libc/printf.c
/home/xavier/psxsdk-src/libpsx/src/libc/qsort.c
/home/xavier/psxsdk-src/libpsx/src/libc/scanf.c
/home/xavier/psxsdk-src/libpsx/src/libc/stat.c
/home/xavier/psxsdk-src/libpsx/src/libc/string.c
/home/xavier/psxsdk-src/libpsx/src/libc/strings.c
/home/xavier/psxsdk-src/libpsx/src/libc/unistd.c
/home/xavier/psxsdk-src/libpsx/src/cdromh.s
/home/xavier/psxsdk-src/libpsx/src/exc1.s
/home/xavier/psxsdk-src/libpsx/src/syscalls.s
/home/xavier/psxsdk-src/libpsx/src/start/start.s
/home/xavier/psxsdk-src/libpsx/src/runexe/stage2.s -target
mipsel-freestanding-none --single-threaded -mcpu mips1+soft_float -Tpsx.ld
error(compilation): clang failed with stderr: zig: warning: argument unused
during compilation: '-fno-caret-diagnostics' [-Wunused-command-line-argument]
zig: warning: argument unused during compilation: '-ffreestanding'
[-Wunused-command-line-argument]
zig: warning: argument unused during compilation: '-D dprintf=printf'
[-Wunused-command-line-argument]
/home/xavier/psxsdk-src/libpsx/src/exc1.s:95:2: error: unknown instruction, did
you mean: rem?
rfe
^
/home/xavier/psxsdk-src/libpsx/src/exc1.s:1:1: error: unable to build C object:
clang exited with code 1
/home/xavier/psxsdk/bin/elf2exe main cdimg/main.exe -mark_eur
mipsel-unknown-elf-objcopy: 'main': No such file
Could not open objcopy output at main.bin. Check your permissions. Aborting.
make: *** [Makefile:32: cdimg/main.exe] Error 255
-----------------------------------------------------------------------------------------------
And this is the output when assembling with mipsel-unknown-elf-as and compiling
and linking from zig:
-----------------------------------------------------------------------------------------------
$ make
mipsel-unknown-elf-as /home/xavier/psxsdk-src/libpsx/src/cdromh.s -o
obj/cdromh.o -msoft-float -march=mips1 -mabi=32
mipsel-unknown-elf-as /home/xavier/psxsdk-src/libpsx/src/exc1.s -o obj/exc1.o
-msoft-float -march=mips1 -mabi=32
mipsel-unknown-elf-as /home/xavier/psxsdk-src/libpsx/src/syscalls.s -o
obj/syscalls.o -msoft-float -march=mips1 -mabi=32
mipsel-unknown-elf-as /home/xavier/psxsdk-src/libpsx/src/start/start.s -o
obj/start.o -msoft-float -march=mips1 -mabi=32
mipsel-unknown-elf-as /home/xavier/psxsdk-src/libpsx/src/runexe/stage2.s -o
obj/stage2.o -msoft-float -march=mips1 -mabi=32
zig build-exe src/main.zig -Ddprintf=printf -L.
-I/home/xavier/psxsdk-src/libpsx/include
-I/home/xavier/psxsdk-src/libpsx/include/sys
/home/xavier/psxsdk-src/libpsx/src/atexit.c
/home/xavier/psxsdk-src/libpsx/src/cdrom.c
/home/xavier/psxsdk-src/libpsx/src/cop.c
/home/xavier/psxsdk-src/libpsx/src/exception.c
/home/xavier/psxsdk-src/libpsx/src/gpu.c
/home/xavier/psxsdk-src/libpsx/src/libc.c
/home/xavier/psxsdk-src/libpsx/src/memcard.c
/home/xavier/psxsdk-src/libpsx/src/memory.c
/home/xavier/psxsdk-src/libpsx/src/pad.c
/home/xavier/psxsdk-src/libpsx/src/psxsdk.c
/home/xavier/psxsdk-src/libpsx/src/setup.c
/home/xavier/psxsdk-src/libpsx/src/sio.c
/home/xavier/psxsdk-src/libpsx/src/spu.c
/home/xavier/psxsdk-src/libpsx/src/util.c
/home/xavier/psxsdk-src/libpsx/src/libc/error.c
/home/xavier/psxsdk-src/libpsx/src/libc/misc.c
/home/xavier/psxsdk-src/libpsx/src/libc/printf.c
/home/xavier/psxsdk-src/libpsx/src/libc/qsort.c
/home/xavier/psxsdk-src/libpsx/src/libc/scanf.c
/home/xavier/psxsdk-src/libpsx/src/libc/stat.c
/home/xavier/psxsdk-src/libpsx/src/libc/string.c
/home/xavier/psxsdk-src/libpsx/src/libc/strings.c
/home/xavier/psxsdk-src/libpsx/src/libc/unistd.c obj/cdromh.o obj/exc1.o
obj/syscalls.o obj/start.o obj/stage2.o -target mipsel-freestanding-none
--single-threaded -mcpu mips1+soft_float -ffunction-sections -Tpsx.ld
warning: MIPS-I support is experimental
lld: error: obj/cdromh.o: STB_LOCAL symbol (9) found at index >= .symtab's
sh_info (8)
lld: error: obj/cdromh.o: STB_LOCAL symbol (10) found at index >= .symtab's
sh_info (8)
lld: error: obj/cdromh.o: STB_LOCAL symbol (12) found at index >= .symtab's
sh_info (8)
lld: error: obj/cdromh.o: STB_LOCAL symbol (14) found at index >= .symtab's
sh_info (8)
lld: error: obj/syscalls.o: STB_LOCAL symbol (13) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (24) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (25) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (27) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (28) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (29) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (30) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (31) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (32) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (33) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (34) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (35) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (36) found at index >= .symtab's
sh_info (8)
lld: error: obj/start.o: STB_LOCAL symbol (37) found at index >= .symtab's
sh_info (8)
lld: error: obj/stage2.o: STB_LOCAL symbol (10) found at index >= .symtab's
sh_info (8)
lld: error: obj/stage2.o: STB_LOCAL symbol (11) found at index >= .symtab's
sh_info (8)
lld: error: obj/stage2.o: STB_LOCAL symbol (12) found at index >= .symtab's
sh_info (8)
attempt to unwrap error: LLDReportedFailure
/home/xavier/zig/src/link/Elf.zig:716:9: 0x5621554252e6 in link.Elf.flush
(zig1)
return self.linkWithLLD(comp);
^
/home/xavier/zig/src/link.zig:354:21: 0x5621553e1d37 in link.File.flush (zig1)
.elf => return @fieldParentPtr(Elf, "base", base).flush(comp),
^
/home/xavier/zig/src/Compilation.zig:1100:5: 0x5621553dac4a in
Compilation.update (zig1)
try self.bin_file.flush(self);
^
/home/xavier/zig/src/main.zig:1843:5: 0x562155392314 in main.updateModule
(zig1)
try comp.update();
^
/home/xavier/zig/src/main.zig:1710:5: 0x5621552e99a2 in main.buildOutputType
(zig1)
try updateModule(gpa, comp, zir_out_path, hook);
^
/home/xavier/zig/src/main.zig:159:9: 0x5621552c30e5 in main.mainArgs (zig1)
return buildOutputType(gpa, arena, args, .{ .build = .Exe });
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/mem/Allocator.zig:319:16: 0x5621554cf809 in
std.mem.Allocator.resize (zig1)
const rc = try self.resizeFn(self, old_byte_slice, Slice.alignment,
new_byte_count, 0, @returnAddress());
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/mem/Allocator.zig:319:16: 0x5621554cf809 in
std.mem.Allocator.resize (zig1)
const rc = try self.resizeFn(self, old_byte_slice, Slice.alignment,
new_byte_count, 0, @returnAddress());
^
/home/xavier/zig/lib/std/heap.zig:83:5: 0x5621552bf2f9 in std.heap.cResize
(zig1)
return error.OutOfMemory;
^
/home/xavier/zig/lib/std/mem/Allocator.zig:319:16: 0x5621554cf809 in
std.mem.Allocator.resize (zig1)
const rc = try self.resizeFn(self, old_byte_slice, Slice.alignment,
new_byte_count, 0, @returnAddress());
^
/home/xavier/zig/src/link/Elf.zig:1652:9: 0x562155435c4a in
link.Elf.linkWithLLD (zig1)
return error.LLDReportedFailure;
^
???:?:?: 0x5621552c4305 in ??? (???)
/home/xavier/zig/src/stage1.zig:45:43: 0x5621552c2c2d in main (zig1)
stage2.mainArgs(gpa, arena, args) catch unreachable;
^
???:?:?: 0x7f9a89b2c0b2 in ??? (???)
make: *** [Makefile:35: main] Aborted (core dumped)
-----------------------------------------------------------------------------------------------</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>